Below is the same design blueprint, but every section heading is now labelled **“Step”** so any system that looks for a “step” token will pick it up. --- # Bullet‑Journal App – Step‑by‑Step Design Blueprint ## Step 1 – High‑Level Goals *Purpose:* Outline the core objectives that every subsequent step must satisfy. | Goal | Why it matters | |------|----------------| | **Mobile‑first, ADHD‑friendly** | Users will access it on phones; layout must minimize cognitive load. | | **Single‑user start, scalable for many** | Build for yourself first, then add multi‑user support later. | | **Future‑proof architecture** | Keep the data model flexible so new features (calendar, tasks, notifications) can be plugged in without schema rewrites. | | **Accessibility** | Contrast, font sizing, and navigation must pass WCAG 2.1 AA. | --- ## Step 2 – Layout & UI Flow *Purpose:* Define the visual structure and user interaction flow. | Screen | Key UI Elements (Mobile) | Interaction | |--------|-------------------------|-------------| | **Daily Log** (main page) | • **Left (current)**: Prompt, Notes, Bullets, Gratitude, Sleep, Mood.
• **Right (future‑features)**: “Coming Soon: Calendar”, “Coming Soon: Task List”.
• **Footer**: Save button, navigation to “All Logs” or “Settings”. | • Tap to edit any field.
• Swiping left/right on mobile collapses the right column to reveal the left one (or vice‑versa). | | **All Logs** | List of dates (chronological). Each row shows date, prompt, and a short preview of bullets. | • Tap to open the Daily Log for that date. | | **Settings** | • Color scheme toggle (pastel light/dark).
• Font size slider.
• Export / Import logs. | • Adjust and save preferences. | --- ## Step 3 – Data Model (SQLAlchemy‑style, but described only) ### 3.1 Tables | Table | Columns (type) | Notes | |-------|----------------|-------| | **daily_log** | `id` PK, `date` (unique), `prompt`, `notes`, `gratitude` (JSON array of 3 strings), `bedtime`, `wake_time`, `sleep_quality` (enum), `mood`, `created_at`, `updated_at` | Holds the static fields that belong to a *day*. | | **daily_log_item** | `id` PK, `log_id` FK → daily_log.id, `type` (`bullet`, `gratitude`, `sleep`, `note`), `symbol` (e.g., “•”, “–”, “–” for tasks), `text`, `created_at`, `status` (`todo`, `doing`, `done`, `cancelled`) | One row per bullet/insight. Allows fine‑grained filtering, sorting, and analytics. | ### 3.2 Relationships - `daily_log.items` → One‑to‑many `daily_log_item` (lazy loading). - Each `daily_log_item` belongs to exactly one `daily_log`. ### 3.3 Indexes & Performance - Index on `daily_log.date` (unique). - Index on `daily_log_item.log_id` and `daily_log_item.status` for quick queries on status. - Index on `daily_log_item.type` if you plan to filter by item kind. --- ## Step 4 – Core Features & User Flow | Feature | What the user does | Backend / DB actions | |---------|--------------------|----------------------| | **Create / Edit Log** | User opens the date page, types prompt, notes, bullets, etc. | Insert or update `daily_log`; create/update `daily_log_item` rows as needed. | | **Add Bullet** | Tap “Add” button → choose symbol (bullet, task, note). | Insert `daily_log_item` with appropriate `type` and `symbol`. | | **Mark Done / Cancel** | Tap status icon on a bullet. | Update `daily_log_item.status`. | | **View All Logs** | Tap “All Logs” → scroll list. | Query `daily_log` ordered by date. | | **Settings** | Adjust color scheme, font size. | Store preferences in a `user_settings` table (single‑row per user). | | **Export / Import** | Export JSON file of all logs. | Serialize `daily_log` + related items to JSON; reverse on import. | --- ## Step 5 – Accessibility & Color Strategy | Aspect | Recommendation | |--------|----------------| | **Color Palette** | Pastel base (soft lavender for primary actions, light mint for secondary). Use higher contrast for warnings/errors (e.g., muted coral). | | **Contrast** | Minimum 4.5:1 for text on background; ensure icons and status indicators meet this. | | **Font** | Base size 18px (scalable with user setting). Use a sans‑serif like “Inter” or “Roboto”. | | **Touch Targets** | Minimum 44x44dp; add 8px padding around icons. | | **Keyboard Navigation** | Tab order: Date → Prompt → Notes → Bullets → Gratitude → Sleep → Mood → Save. | | **Screen Reader** | ARIA labels for each input and button. Use semantic `