# Brainstorming Session Results **Session Date:** 2025-11-29 **Facilitator:** Business Analyst Mary πŸ“Š **Participant:** Greg --- ## Executive Summary **Topic:** Book Reading Follow-Up App **Session Goals:** - Design a tactical app to track daily reading progress - Meet book club deadlines - Support reading multiple books simultaneously - Calculate reading pace and pages needed to meet goals **Techniques Used:** 1. Five Whys (Deep problem exploration) - βœ… COMPLETE 2. Morphological Analysis (Systematic component exploration) - βœ… COMPLETE **Total Ideas Generated:** 9 core components fully explored with implementation decisions **Key Themes Identified:** - Book club accountability drives the core need - Avoiding spoilers while maintaining enjoyment - Need for simple, tactical progress tracking - Cost-conscious single-user solution to start - Mobile + web access required --- ## Technique Sessions ### Five Whys - 10 minutes **Description:** Deep exploration of the root problem by asking "why" five times to uncover core motivations. **Ideas Generated:** 1. **Surface need:** Track reading progress to meet book club deadlines 2. **Level 2:** Avoid being late prevents spoilers and maintains enjoyment 3. **Level 3:** Full participation enables nice, interesting discussions 4. **Level 4:** Discussions expose user to books outside normal reading preferences 5. **Level 5 (Core):** Broadens horizons, encourages thinking differently, appreciates diverse perspectives **Insights Discovered:** - The app serves book club accountability first and foremost - Spoiler avoidance is a key pain point - User values being challenged with unfamiliar books - Book club creates social/intellectual engagement - Not catastrophic to miss deadline, but diminishes experience **Notable Connections:** - Core purpose is intellectual growth, but user wants to focus on **tactical features** only - Don't over-engineer toward "learning" or "growth" features - Keep it simple: track pages, meet deadlines, stay on pace **User Decision:** Focus on tactical needs, not deeper philosophical features --- ### Morphological Analysis - βœ… COMPLETE **Description:** Systematic exploration of app components and implementation options for each. **Core Components Explored:** 1. βœ… **Book Entry** - Open Library API search 2. βœ… **Daily Page Logging** - Quick log from book list (mobile-first) 3. βœ… **Progress Calculation** - Pace-to-goal calculation 4. βœ… **Multi-Book Management** - One book at a time focus 5. βœ… **Goal/Deadline Setting** - Deadline only (simple) 6. βœ… **Progress Visualization** - Minimal text with color coding 7. βœ… **Interactive Calendar View** - Intensity heatmap + smart interactions 8. βœ… **Data Persistence** - Self-hosted database (Coolify) 9. βœ… **Platform/Interface** - PWA (React + Vite) --- ## Component #1: Book Entry - DECIDED βœ… **Options Explored:** - Manual entry (type title, author, pages) - API lookup (Google Books, Open Library) - Barcode/ISBN scan - Import from Goodreads **User Reference:** Obsidian Book Search Plugin workflow - Simple search box (title/author/ISBN) - API returns results with covers - Click to select β†’ auto-populates metadata - Fast and easy (3 clicks) **Decision Made:** **Use Open Library API** - https://openlibrary.org/search.json **Rationale:** - βœ… No API key required (user preference) - βœ… Completely free - βœ… Good book data (title, author, pages, covers) - βœ… Search by title, author, ISBN - βœ… Decent rate limits for single-user personal use - βœ… Can switch to Google Books API later if needed **Implementation Notes:** - Search box: user types book title or author - Query Open Library API - Display results with cover images - User clicks to select - Auto-fill: title, author, total page count - User adds deadline date - Book added to library --- ## Component #2: Daily Page Logging - DECIDED βœ… **Options Explored:** - Manual text entry - Number stepper/picker - Quick log from book list - Calendar-first entry - Voice/scan entry - Running total vs. daily snapshot **Decision Made:** **Quick Log from Book List** **User Flow:** 1. Open app β†’ See list of currently reading books 2. Tap book β†’ "Log Progress" button appears 3. Pop-up: "What page are you on?" with number input 4. Enter page number β†’ Save 5. Done! **Implementation Notes:** - Primary device: Phone (mobile-optimized UI) - Backfilling: User can tap any past date on calendar to log retrospectively - Timing tracking: Not needed - just capture page number, not timestamp - Quick entry: Minimize taps - tap book, enter number, save (3 actions total) - Allow backfilling for missed days **Rationale:** - βœ… Mobile-first design for quick daily logging - βœ… Minimal friction (3 taps to log) - βœ… Backfill capability for forgotten days - βœ… No complex timestamp tracking needed --- ## Component #3: Progress Calculation - DECIDED βœ… **Options Explored:** - Simple daily delta - Pace-to-goal calculation - Days remaining + pages remaining - Ahead/behind indicator - Projected finish date - Multiple metrics dashboard **Decision Made:** **Pace-to-Goal Calculation** **How It Works:** 1. System calculates: (Pages Remaining) Γ· (Days Remaining) = Required Pages/Day 2. Tracks your actual pace from recent logging history 3. Compares: Required vs. Actual pace **Display Example:** - "**Target:** 50 pages/day to finish on time" - "**Your pace:** 45 pages/day (last 7 days)" - Status indicator: On track / Slightly behind / Need to catch up **Implementation Notes:** - Recalculates every time you log progress - Uses rolling 7-day average for "your pace" (smooths out weekend vs. weekday variance) - Clear, actionable number: "You need to read X pages/day" - Visual indicator if you're on track or falling behind **Rationale:** - βœ… Directly supports goal of meeting deadlines - βœ… Actionable information (tells you what to do) - βœ… Accounts for variance in reading patterns - βœ… Adjusts dynamically as deadline approaches --- ## Component #4: Multi-Book Management - DECIDED βœ… **Options Explored:** - Unified view (all books together) - One book at a time focus - Separate tracking per book - Smart context switching - Book status categories **Decision Made:** **One Book at a Time Focus** **How It Works:** 1. **Primary Book** displayed prominently at top - Shows pace calculation, progress, deadline - Quick "Log Progress" button front and center 2. **Other Active Books** shown below (collapsed or minimal) - Tap to expand and see details - Tap "Make Primary" to switch focus 3. **Easy switching** when you want to focus on a different book **Implementation Notes:** - Typically tracking 1-3 books with deadlines simultaneously - User is usually more absorbed in one "current" book - Primary book gets the spotlight in UI - Other books accessible but not distracting - Simple tap to switch which book is primary **Rationale:** - βœ… Reduces cognitive load (focus on one book at a time) - βœ… Matches user's reading pattern (absorbed in one main book) - βœ… Still supports multi-book tracking - βœ… Makes daily logging simple (usually logging the primary book) --- ## Component #5: Goal/Deadline Setting - DECIDED βœ… **Options Explored:** - Deadline only - Deadline + start date - Flexible milestones - "Days to read" input - Auto-calculate from book club date **Decision Made:** **Deadline Only** **How It Works:** 1. When adding a book, user sets: "Finish by [Date]" 2. System calculates required pages/day from today until deadline 3. Adjusts automatically each day as deadline gets closer **Implementation Notes:** - Simple date picker: "When do you need to finish this book?" - System assumes "start date" = today (or first logged page) - Deadline can be edited anytime (book club rescheduled, etc.) - Recalculates pace whenever deadline changes **Rationale:** - βœ… Minimal input required - βœ… Focus on the constraint that matters (deadline) - βœ… Flexible - works whether you've started or not - βœ… Simple UX - one date picker --- ## Component #6: Progress Visualization - DECIDED βœ… **Options Explored:** - Simple progress bar - Pace indicator gauge - Calendar heat map - Timeline view - Minimal text-only - Dashboard with multiple views **Decision Made:** **Minimal Text-Only with Green/Red Color Coding** **Display Example:** ``` πŸ“– The Name of the Wind 312 pages left, 18 days remaining Target: 50 pages/day Your pace: 45 pages/day (last 7 days) [Color-coded status indicator] 🟒 On track 🟑 Slightly behind πŸ”΄ Need to catch up ``` **Implementation Notes:** - Clean text-based display - Key numbers prominent: pages left, days left, required pace - Color coding for quick status check: - **Green:** Your pace β‰₯ target pace - **Yellow:** Within 10% of target - **Red:** Falling behind (>10% below target) - Mobile-friendly: easy to read, no chart rendering **Rationale:** - βœ… Fastest to understand at a glance - βœ… Minimal screen space - βœ… Clear, actionable information - βœ… No unnecessary graphics - βœ… Works great on mobile --- ## Component #7: Interactive Calendar View - DECIDED βœ… **Options Explored:** **Display:** - Read/no-read indicator - Pages-read intensity - Multi-book calendar - Progress milestones **Interaction:** - Tap to log (backfill) - Tap to view details - Tap to edit - Context-aware quick entry **Decision Made:** **Pages-Read Intensity + Progress Milestones with Smart Tap Interactions** **Display Features:** 1. **Pages-Read Intensity** - Color intensity based on pages read that day - Light β†’ Few pages, Dark β†’ Many pages - Visual pattern of reading activity over time 2. **Progress Milestones** - Deadline dates marked prominently - "Today" highlighted - Visual indicator of where you should be vs. where you are **Interaction Features:** 1. **Tap to Edit** - Tap any logged date β†’ View and edit page number - Fix mistakes or update entries - Full editing capability 2. **Context-Aware Quick Entry** - Tap **past date** β†’ Backfill log (if missing) or edit (if exists) - Tap **today** β†’ Quick log current page - Tap **future date** β†’ View projected pace/milestones - Smart behavior based on date context **Implementation Notes:** - Calendar uses color intensity gradient (e.g., light blue β†’ dark blue) - Deadline dates have special marker (e.g., 🎯 or colored border) - Single tap opens context-appropriate action - Easy to backfill missed days or correct errors **Rationale:** - βœ… Quick visual scan of reading consistency - βœ… Easy backfilling for missed days - βœ… See deadlines in context - βœ… Edit capability for mistakes - βœ… Rich information without clutter --- ## Component #8: Data Persistence - DECIDED βœ… **Options Explored:** - Local storage only (browser/app) - Cloud database (Firebase, Supabase, etc.) - Self-hosted database (Coolify) - Hybrid: Local-first + cloud sync - Export/import capability **Decision Made:** **Self-Hosted Database on Coolify** **Implementation Approach:** - Database runs as container on your Coolify instance - Web + mobile apps connect to your hosted API - All data stays on your infrastructure - You control backups and data retention **Technology Options to Consider:** - **PostgreSQL** - Robust, well-supported, great for structured data - **SQLite** (with Litestream) - Lightweight, simple, auto-backup to S3 - **MongoDB** - If you prefer document storage - **Supabase (self-hosted)** - PostgreSQL + built-in REST API + auth **Implementation Notes:** - Containerized deployment (Docker) - Data stays private on your server - No third-party cloud dependencies - No recurring API costs - You manage backups (but already doing this for Coolify) **Rationale:** - βœ… Zero ongoing costs (already have Coolify) - βœ… Full privacy and control - βœ… No vendor lock-in - βœ… Multi-device access (through your API) - βœ… Fits your technical comfort level --- ## Component #9: Platform/Interface - DECIDED βœ… **Options Explored:** **Architecture:** - Progressive Web App (PWA) - Native mobile app + web app - Hybrid framework (same code, multiple platforms) **Frontend Framework:** - React-based - Vue-based - Svelte/SvelteKit - Flutter **Decision Made:** **Progressive Web App (PWA) with React + Vite** **Architecture:** - Single codebase for mobile + desktop - Accessed via browser - "Add to Home Screen" for app-like experience - No app store submission needed - Containerized deployment on Coolify **Frontend Framework:** **React + Vite** **Why:** - βœ… **LLM Knowledge:** React has the most training data - Claude Code excels at React - βœ… **Easiest Setup:** `npm create vite@latest` β†’ Choose React β†’ Done - βœ… **Minimal Dependencies:** Vite is lean and fast - βœ… **Best Documentation:** Massive community, easy to find answers - βœ… **Modern Tooling:** Fast dev server, hot reload, optimized builds - βœ… **PWA Support:** Add `vite-plugin-pwa` for easy PWA configuration **Tech Stack Summary:** ``` Frontend: React + Vite + TypeScript (optional) Styling: Tailwind CSS or plain CSS API Client: Fetch or Axios State Management: React Context (built-in, no extra library needed) Database: PostgreSQL on Coolify API: Node.js/Express or Python/FastAPI Deployment: Docker container on Coolify ``` **Implementation Notes:** - Mobile-first responsive design - PWA features: offline capability, home screen install - Fast, lightweight - Single containerized deployment **Rationale:** - βœ… Less hassle than native apps (no app stores) - βœ… Single codebase = faster development - βœ… Best LLM support for development assistance - βœ… Minimal dependencies and complexity - βœ… Great documentation and community --- ## Must-Have Features (User Requirements) 1. βœ… Add books - *Open Library API search* 2. βœ… Daily page logging - *Quick log from book list (mobile-first)* 3. βœ… Calculate pages read per day - *Pace-to-goal calculation with 7-day average* 4. βœ… Support multiple books being read simultaneously - *One book at a time focus (1-3 books)* 5. βœ… Show total pages needed to meet goals - *Minimal text with color coding* 6. βœ… Interactive calendar view - *Intensity heatmap + smart tap interactions* --- ## Technical Decisions - **Platform:** Progressive Web App (PWA) - Mobile + Web - **Frontend:** React + Vite - **Styling:** Tailwind CSS or plain CSS - **Database:** PostgreSQL on Coolify (self-hosted) - **API:** Node.js/Express or Python/FastAPI - **Deployment:** Docker container on Coolify (containerized) - **Target Audience:** Single user initially (Greg) - **Budget:** Zero ongoing costs (using existing Coolify infrastructure) --- ## Action Planning ### Current Status: **βœ… Morphological Analysis: 100% complete (9 of 9 components decided)** ### Completed in This Session: 1. βœ… **Morphological Analysis** - All 9 core components explored and decided - Book entry: Open Library API - Daily page logging: Quick log from book list - Progress calculation: Pace-to-goal with 7-day average - Multi-book management: Primary book focus - Goal/deadline setting: Deadline only - Progress visualization: Minimal text with color coding - Interactive calendar: Intensity heatmap + smart interactions - Data persistence: Self-hosted PostgreSQL on Coolify - Platform/interface: PWA with React + Vite ### Next Phase Tasks: **NOW: Convergent Phase** - Organize and prioritize - βœ… All technical decisions made - ⏳ Categorize into MVP vs. Future features - ⏳ Identify technical dependencies - ⏳ Create implementation priority order **LATER: Synthesis Phase** - Build actionable development plan - Define data model (Books, ReadingLogs, etc.) - Create development roadmap - Break into implementation phases (MVP, v1.1, v2.0) - Consider creating PRD or project brief --- ## Reflection & Follow-up ### What Worked Well: - βœ… Five Whys uncovered deeper context while respecting user's tactical focus - βœ… Morphological analysis provided systematic framework for exploring all 9 components - βœ… Obsidian plugin reference gave clear UX inspiration for book entry - βœ… Open Library API solves book entry without API key hassle - βœ… Mobile-first approach aligns with primary use case - βœ… Self-hosted infrastructure leverages existing Coolify setup - βœ… React + Vite chosen for best LLM support during development - βœ… All core decisions made efficiently in single session ### Key Decisions Summary: 1. **Book Entry:** Open Library API with search 2. **Daily Logging:** Quick tap from book list (3-tap flow) 3. **Progress Calc:** Pace-to-goal with 7-day average 4. **Multi-Book:** Primary book focus (1-3 books tracked) 5. **Deadlines:** Simple deadline-only approach 6. **Visualization:** Minimal text with color coding 7. **Calendar:** Intensity heatmap + smart tap interactions 8. **Data:** Self-hosted PostgreSQL on Coolify 9. **Platform:** PWA with React + Vite ### Questions Resolved: - βœ… Should calendar show all books or one at a time? β†’ Per-book calendar (selected from primary/other books) - βœ… What happens if user forgets to log for several days? β†’ Backfill capability via calendar tap - βœ… Should there be reminders/notifications? β†’ Not in MVP (keep it simple) - βœ… What if user changes deadline mid-reading? β†’ Deadline is editable, pace recalculates automatically - βœ… Multi-book management approach? β†’ Primary book + others accessible ### Areas for Future Enhancement (Post-MVP): - Reminders/notifications to log daily - Reading statistics and insights (books per month, favorite genres, etc.) - Social features (share with book club members) - Integration with Goodreads for import/export - Reading streaks and gamification - Notes/highlights per book - Book recommendations based on reading history ### Next Steps: - **NOW:** Move to Convergent Phase - Organize features into MVP vs. Future - **AFTER:** Create Project Brief or PRD - **THEN:** Define data model and API structure - **FINALLY:** Begin development with clear roadmap --- *Session facilitated using the BMAD-METHODβ„’ brainstorming framework*