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 `