A mobile-first client-side prayer request tracker with prioritized feed cycling, "Prayed" tracking, and timestamped notes stored locally using SQL.js (SQLite compiled to WebAssembly) with persistence via IndexedDB for the raw database bytes.
- Create and edit prayer requests with priority and duration presets (10d, 1m, 3m, 6m, 1y).
- Smart expiry calculation from created date with status handling (active/answered).
- "Prayed" action appends timestamps to influence feed ordering by recency.
- Notes thread per request with add/edit/delete, displayed newest-first.
- Prayer requests focus on a single title field; add any extra context as notes.
- Infinite-style feed that cycles through active requests and surfaces a completion banner once everything is covered.
- Local persistence with SQL.js for offline-first behavior (database bytes stored in IndexedDB).
- Theme support: Light, Dark, and System (auto) modes via settings.
- Configurable defaults: Set default priority and duration for new prayer requests.
The app uses Tailwind CSS v4 with a custom theme defined in src/styles/main.css. Theme colors are defined using the @theme directive, making them available as Tailwind utility classes.
Colors are defined as CSS custom properties in the @theme block:
@theme {
--color-bg: #0d0d10;
--color-card: #15151c;
--color-text: #f8fafc;
--color-accent: #9d7bff;
/* ... */
}Light theme overrides are applied via a [data-theme="light"] selector.
| Token | Purpose |
|---|---|
bg |
Main background |
card |
Card/panel background |
card-muted |
Muted card background |
text |
Primary text |
muted |
Secondary/muted text |
accent |
Primary accent color |
border |
Border color |
priority-* |
Priority chip colors (urgent/high/medium/low) |
answered-* |
Answered button colors |
note-* |
Note styling colors |
- Add the color to
@themeinmain.css - Add the light theme override in
[data-theme="light"] - Use the color with Tailwind utilities:
bg-{name},text-{name},border-{name}
- Install dependencies:
pnpm install
- Run the dev server:
pnpm run dev
- Build for production:
pnpm run build
- Run tests:
pnpm test
The UI is mobile-friendly out of the box and uses no backend services.
- Database: SQL.js (SQLite in WebAssembly) - provides full SQL capabilities in the browser
- Persistence: Database bytes are serialized and stored in IndexedDB via
idb-keyval - State: Vue 3 Composition API with reactive refs
- Styling: Tailwind CSS v4 with custom theme configuration
- Build: Vite with Vue plugin