- Initialize Git repository with main branch - Create comprehensive .gitignore for Node.js, React, and environment files - Set up directory structure (frontend/, backend/, docs/) - Create detailed README.md with project overview and setup instructions - Add .env.example with all required environment variables - Configure Prettier for consistent code formatting All acceptance criteria met: ✅ Git repository initialized with appropriate .gitignore ✅ Directory structure matches Technical Assumptions ✅ README.md created with project overview and setup docs ✅ .env.example file with all required environment variables ✅ Prettier config files added for code formatting consistency 🤖 Generated with Claude Code (https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
18 KiB
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:
- Five Whys (Deep problem exploration) - ✅ COMPLETE
- 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:
- Surface need: Track reading progress to meet book club deadlines
- Level 2: Avoid being late prevents spoilers and maintains enjoyment
- Level 3: Full participation enables nice, interesting discussions
- Level 4: Discussions expose user to books outside normal reading preferences
- 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:
- ✅ Book Entry - Open Library API search
- ✅ Daily Page Logging - Quick log from book list (mobile-first)
- ✅ Progress Calculation - Pace-to-goal calculation
- ✅ Multi-Book Management - One book at a time focus
- ✅ Goal/Deadline Setting - Deadline only (simple)
- ✅ Progress Visualization - Minimal text with color coding
- ✅ Interactive Calendar View - Intensity heatmap + smart interactions
- ✅ Data Persistence - Self-hosted database (Coolify)
- ✅ 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:
- Open app → See list of currently reading books
- Tap book → "Log Progress" button appears
- Pop-up: "What page are you on?" with number input
- Enter page number → Save
- 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:
- System calculates: (Pages Remaining) ÷ (Days Remaining) = Required Pages/Day
- Tracks your actual pace from recent logging history
- 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:
- Primary Book displayed prominently at top
- Shows pace calculation, progress, deadline
- Quick "Log Progress" button front and center
- Other Active Books shown below (collapsed or minimal)
- Tap to expand and see details
- Tap "Make Primary" to switch focus
- 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:
- When adding a book, user sets: "Finish by [Date]"
- System calculates required pages/day from today until deadline
- 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:
-
Pages-Read Intensity
- Color intensity based on pages read that day
- Light → Few pages, Dark → Many pages
- Visual pattern of reading activity over time
-
Progress Milestones
- Deadline dates marked prominently
- "Today" highlighted
- Visual indicator of where you should be vs. where you are
Interaction Features:
-
Tap to Edit
- Tap any logged date → View and edit page number
- Fix mistakes or update entries
- Full editing capability
-
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-pwafor 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)
- ✅ Add books - Open Library API search
- ✅ Daily page logging - Quick log from book list (mobile-first)
- ✅ Calculate pages read per day - Pace-to-goal calculation with 7-day average
- ✅ Support multiple books being read simultaneously - One book at a time focus (1-3 books)
- ✅ Show total pages needed to meet goals - Minimal text with color coding
- ✅ 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:
- ✅ 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:
- Book Entry: Open Library API with search
- Daily Logging: Quick tap from book list (3-tap flow)
- Progress Calc: Pace-to-goal with 7-day average
- Multi-Book: Primary book focus (1-3 books tracked)
- Deadlines: Simple deadline-only approach
- Visualization: Minimal text with color coding
- Calendar: Intensity heatmap + smart tap interactions
- Data: Self-hosted PostgreSQL on Coolify
- 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