Note: This is a static reference document. The active, managed plan is maintained in Cursor’s planning system. This document is kept for quick reference and historical context.
Reference Documentation:
- Product Overview: Product vision, technical architecture, and roadmap
- UX Flows: User experience flows, first-time onboarding, and behavioral patterns
- UI Layout: Component structure, wireframes, and implementation details
Overview
Build the Rainy Day web MVP following the documented roadmap. Focus on spreadsheet-first approach, calm interfaces, and incremental progress. Tech stack: Next.js, Mantine UI, Nivo Charts, Motion (Framer Motion), Supabase.Implementation strategy
Phase 1: Foundation setup (prerequisites)
-
Install and configure core dependencies
- Add Mantine UI with theme configuration
- Add Nivo Charts for data visualization
- Add Motion (Framer Motion) for gentle animations
- Set up Supabase client and configuration
- Configure shared packages structure (
packages/ui,packages/utils,packages/api-client) - Ensure all user data flows use encryption (HTTPS/TLS) and respect privacy by design principles
- Start with Supabase Row-Level Security and plan authentication from the outset for real privacy
-
Project structure and routing
- Set up Next.js app directory structure
- Create main routes:
/(Overview),/upload,/transactions,/weekly-checkup,/timeline,/settings - Implement base layout with Mantine AppShell (Navbar + Header) per UI Layout
- Create shared UI components package structure
Phase 2: Data ingestion & storage
-
CSV parsing and normalization
- Build CSV parser for at least one Bahamian bank format
- Create transaction normalization layer with clear separation:
- Raw transactions (as uploaded)
- Normalized data (standardized format)
- Computed insights (calculated values)
- Implement basic category detection rules
- Add error handling for malformed files
- Note: PDF parsing is optional for later phases
-
Supabase database and API
- Design Supabase Postgres schema (User, Transaction, Category, Statement)
- Set up Row-Level Security policies for data isolation
- Create Next.js API routes / server actions for CSV upload and processing
- Implement transaction storage and retrieval using Supabase client
- Add basic validation and error handling
- Configure Supabase Auth (minimal setup for MVP)
Phase 3: Core UI - Spreadsheet first
- Transaction list view (spreadsheet-style)
-
Upload interface
- Create file upload component with drag-and-drop
- Add progress indicators and success/error states
- Implement upload flow with gentle Motion animations
- Show example file format for guidance
- Follow first-time upload flow from UX Flows Phase 3
Phase 4: First-time user experience
-
Onboarding flow (7 phases)
- Implement Phase 1: Warm, calm welcome screen
- Implement Phase 2: How Rainy Day works (3-card explanation)
- Implement Phase 3: First upload with progress feedback
- Implement Phase 4: First-time spreadsheet setup mode
- Allow users to rename transactions, categorize, mark recurring, merge duplicates
- Create silent rules for future uploads
- Implement Phase 5: Transition to dashboard
- Implement Phase 6: Introduce weekly checkup (optional)
- Implement Phase 7: Establish weekly habit loop
- Reference: UX Flows for detailed flow specifications
-
Empty states
- Create friendly empty states for all pages per UX Flows
- Add helpful illustrations and guidance
- Maintain calm, supportive tone
Phase 5: Insights & visualizations
-
Minimal insights calculation
- Calculate top spending categories
- Compute weekly/monthly totals and differences
- Generate basic spending trends
-
First charts (bar + line)
- Implement category distribution bar chart (Nivo) per UI Layout
- Add spending trends line chart over time
- Ensure charts complement, not replace, spreadsheet view
- Use calm, monotone color palette with gentle accents
- Weekly checkup view
Phase 6: Additional features
-
Timeline view (basic)
- Build basic money movement timeline per UI Layout
- Show transfers, withdrawals, fees
- Keep it non-automated initially (manual categorization)
-
Period selector and global behavior
- Implement period selector in top bar (This week, Last week, This month, Custom)
- Ensure period updates all pages simultaneously
- Add “Updated” timestamp display
- Follow global behavioral rules from UX Flows
-
Minimal authentication
- Implement simple auth using Supabase Auth
- Add user session management
- Protect routes and API endpoints
- Keep it lightweight for MVP
Phase 7: Polish & motion
- UI polish and motion
Key files to create/modify
Frontend structure
apps/rainy-day/web/src/app/layout.tsx- Mantine providers, theme setup, AppShellapps/rainy-day/web/src/app/page.tsx- Overview dashboardapps/rainy-day/web/src/app/upload/page.tsx- Upload interfaceapps/rainy-day/web/src/app/transactions/page.tsx- Transaction list (spreadsheet-style)apps/rainy-day/web/src/app/weekly-checkup/page.tsx- Weekly checkup viewapps/rainy-day/web/src/app/timeline/page.tsx- Money movement timelineapps/rainy-day/web/src/app/settings/page.tsx- Settings pageapps/rainy-day/web/src/components/- Reusable UI componentsapps/rainy-day/web/src/lib/- Utilities, parsers, helpers
Backend/API
apps/rainy-day/web/src/app/api/upload/route.ts- CSV upload handlerapps/rainy-day/web/src/app/api/transactions/route.ts- Transaction CRUDapps/rainy-day/web/src/lib/supabase.ts- Supabase client setup
Shared packages
packages/ui/- Shared UI componentspackages/utils/- CSV parsing, normalization, category detectionpackages/api-client/- API request utilities
Success criteria
- Users can complete the 7-phase first-time onboarding flow smoothly
- Users can upload CSV from at least one Bahamian bank
- Transactions display in clear, spreadsheet-style table
- First-time setup mode allows users to teach Rainy Day their preferences
- Basic insights (categories, totals, weekly changes) are visible
- First charts (bar + line) complement the data view
- Weekly checkup provides calm, supportive summary with proper state handling
- Timeline view shows basic money movement
- Period selector updates all pages consistently
- Data persists in Supabase Postgres database
- Minimal auth protects user data
- Interface feels calm, predictable, and anxiety-reducing
- All empty states are friendly and helpful
- Motion animations are subtle and calming
Notes
- Follow spreadsheet-first approach: users see raw data before charts
- Keep animations gentle and minimal (Motion) - no bouncy or aggressive movements
- Maintain calm color palette with subtle accents
- Build incrementally, test each feature before moving on
- Document decisions and patterns as we build
- Reference UX Flows for all user-facing copy and behavior
- Reference UI Layout for component choices and structure
- Reference Product Overview for technical architecture decisions