diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 0000000..783a84f --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,64 @@ +# Claude Code Task Management Guide + +## Documentation Available + +πŸ“š **Project Documentation**: Check the documentation files in this directory for project-specific setup instructions and guides. +**Project Tasks**: Check the tasks directory in documentation/tasks for the list of tasks to be completed. Use the CLI commands below to interact with them. + +## MANDATORY Task Management Workflow + +🚨 **YOU MUST FOLLOW THIS EXACT WORKFLOW - NO EXCEPTIONS** 🚨 + +### **STEP 1: DISCOVER TASKS (MANDATORY)** +You MUST start by running this command to see all available tasks: +```bash +task-manager list-tasks +``` + +### **STEP 2: START EACH TASK (MANDATORY)** +Before working on any task, you MUST mark it as started: +```bash +task-manager start-task +``` + +### **STEP 3: COMPLETE OR CANCEL EACH TASK (MANDATORY)** +After finishing implementation, you MUST mark the task as completed, or cancel if you cannot complete it: +```bash +task-manager complete-task "Brief description of what was implemented" +# or +task-manager cancel-task "Reason for cancellation" +``` + +## Task Files Location + +πŸ“ **Task Data**: Your tasks are organized in the `documentation/tasks/` directory: +- Task JSON files contain complete task information +- Use ONLY the `task-manager` commands listed above +- Follow the mandatory workflow sequence for each task + +## MANDATORY Task Workflow Sequence + +πŸ”„ **For EACH individual task, you MUST follow this sequence:** + +1. πŸ“‹ **DISCOVER**: `task-manager list-tasks` (first time only) +2. πŸš€ **START**: `task-manager start-task ` (mark as in progress) +3. πŸ’» **IMPLEMENT**: Do the actual coding/implementation work +4. βœ… **COMPLETE**: `task-manager complete-task "What was done"` (or cancel with `task-manager cancel-task "Reason"`) +5. πŸ” **REPEAT**: Go to next task (start from step 2) + +## Task Status Options + +- `pending` - Ready to work on +- `in_progress` - Currently being worked on +- `completed` - Successfully finished +- `blocked` - Cannot proceed (waiting for dependencies) +- `cancelled` - No longer needed + +## CRITICAL WORKFLOW RULES + +❌ **NEVER skip** the `task-manager start-task` command +❌ **NEVER skip** the `task-manager complete-task` command (use `task-manager cancel-task` if a task is not planned, not required, or you must stop it) +❌ **NEVER work on multiple tasks simultaneously** +βœ… **ALWAYS complete one task fully before starting the next** +βœ… **ALWAYS provide completion details in the complete command** +βœ… **ALWAYS follow the exact 3-step sequence: list β†’ start β†’ complete (or cancel if not required)** \ No newline at end of file diff --git a/app/dashboard/data.json b/app/dashboard/data.json index ec08736..8387aa7 100644 --- a/app/dashboard/data.json +++ b/app/dashboard/data.json @@ -1,614 +1,362 @@ -[ - { - "id": 1, - "header": "Cover page", - "type": "Cover page", - "status": "In Process", - "target": "18", - "limit": "5", - "reviewer": "Eddie Lake" - }, - { - "id": 2, - "header": "Table of contents", - "type": "Table of contents", - "status": "Done", - "target": "29", - "limit": "24", - "reviewer": "Eddie Lake" - }, - { - "id": 3, - "header": "Executive summary", - "type": "Narrative", - "status": "Done", - "target": "10", - "limit": "13", - "reviewer": "Eddie Lake" - }, - { - "id": 4, - "header": "Technical approach", - "type": "Narrative", - "status": "Done", - "target": "27", - "limit": "23", - "reviewer": "Jamik Tashpulatov" - }, - { - "id": 5, - "header": "Design", - "type": "Narrative", - "status": "In Process", - "target": "2", - "limit": "16", - "reviewer": "Jamik Tashpulatov" - }, - { - "id": 6, - "header": "Capabilities", - "type": "Narrative", - "status": "In Process", - "target": "20", - "limit": "8", - "reviewer": "Jamik Tashpulatov" - }, - { - "id": 7, - "header": "Integration with existing systems", - "type": "Narrative", - "status": "In Process", - "target": "19", - "limit": "21", - "reviewer": "Jamik Tashpulatov" - }, - { - "id": 8, - "header": "Innovation and Advantages", - "type": "Narrative", - "status": "Done", - "target": "25", - "limit": "26", - "reviewer": "Assign reviewer" - }, - { - "id": 9, - "header": "Overview of EMR's Innovative Solutions", - "type": "Technical content", - "status": "Done", - "target": "7", - "limit": "23", - "reviewer": "Assign reviewer" - }, - { - "id": 10, - "header": "Advanced Algorithms and Machine Learning", - "type": "Narrative", - "status": "Done", - "target": "30", - "limit": "28", - "reviewer": "Assign reviewer" - }, - { - "id": 11, - "header": "Adaptive Communication Protocols", - "type": "Narrative", - "status": "Done", - "target": "9", - "limit": "31", - "reviewer": "Assign reviewer" - }, - { - "id": 12, - "header": "Advantages Over Current Technologies", - "type": "Narrative", - "status": "Done", - "target": "12", - "limit": "0", - "reviewer": "Assign reviewer" - }, - { - "id": 13, - "header": "Past Performance", - "type": "Narrative", - "status": "Done", - "target": "22", - "limit": "33", - "reviewer": "Assign reviewer" - }, - { - "id": 14, - "header": "Customer Feedback and Satisfaction Levels", - "type": "Narrative", - "status": "Done", - "target": "15", - "limit": "34", - "reviewer": "Assign reviewer" - }, - { - "id": 15, - "header": "Implementation Challenges and Solutions", - "type": "Narrative", - "status": "Done", - "target": "3", - "limit": "35", - "reviewer": "Assign reviewer" - }, - { - "id": 16, - "header": "Security Measures and Data Protection Policies", - "type": "Narrative", - "status": "In Process", - "target": "6", - "limit": "36", - "reviewer": "Assign reviewer" - }, - { - "id": 17, - "header": "Scalability and Future Proofing", - "type": "Narrative", - "status": "Done", - "target": "4", - "limit": "37", - "reviewer": "Assign reviewer" - }, - { - "id": 18, - "header": "Cost-Benefit Analysis", - "type": "Plain language", - "status": "Done", - "target": "14", - "limit": "38", - "reviewer": "Assign reviewer" - }, - { - "id": 19, - "header": "User Training and Onboarding Experience", - "type": "Narrative", - "status": "Done", - "target": "17", - "limit": "39", - "reviewer": "Assign reviewer" - }, - { - "id": 20, - "header": "Future Development Roadmap", - "type": "Narrative", - "status": "Done", - "target": "11", - "limit": "40", - "reviewer": "Assign reviewer" - }, - { - "id": 21, - "header": "System Architecture Overview", - "type": "Technical content", - "status": "In Process", - "target": "24", - "limit": "18", - "reviewer": "Maya Johnson" - }, - { - "id": 22, - "header": "Risk Management Plan", - "type": "Narrative", - "status": "Done", - "target": "15", - "limit": "22", - "reviewer": "Carlos Rodriguez" - }, - { - "id": 23, - "header": "Compliance Documentation", - "type": "Legal", - "status": "In Process", - "target": "31", - "limit": "27", - "reviewer": "Sarah Chen" - }, - { - "id": 24, - "header": "API Documentation", - "type": "Technical content", - "status": "Done", - "target": "8", - "limit": "12", - "reviewer": "Raj Patel" - }, - { - "id": 25, - "header": "User Interface Mockups", - "type": "Visual", - "status": "In Process", - "target": "19", - "limit": "25", - "reviewer": "Leila Ahmadi" - }, - { - "id": 26, - "header": "Database Schema", - "type": "Technical content", - "status": "Done", - "target": "22", - "limit": "20", - "reviewer": "Thomas Wilson" - }, - { - "id": 27, - "header": "Testing Methodology", - "type": "Technical content", - "status": "In Process", - "target": "17", - "limit": "14", - "reviewer": "Assign reviewer" - }, - { - "id": 28, - "header": "Deployment Strategy", - "type": "Narrative", - "status": "Done", - "target": "26", - "limit": "30", - "reviewer": "Eddie Lake" - }, - { - "id": 29, - "header": "Budget Breakdown", - "type": "Financial", - "status": "In Process", - "target": "13", - "limit": "16", - "reviewer": "Jamik Tashpulatov" - }, - { - "id": 30, - "header": "Market Analysis", - "type": "Research", - "status": "Done", - "target": "29", - "limit": "32", - "reviewer": "Sophia Martinez" - }, - { - "id": 31, - "header": "Competitor Comparison", - "type": "Research", - "status": "In Process", - "target": "21", - "limit": "19", - "reviewer": "Assign reviewer" - }, - { - "id": 32, - "header": "Maintenance Plan", - "type": "Technical content", - "status": "Done", - "target": "16", - "limit": "23", - "reviewer": "Alex Thompson" - }, - { - "id": 33, - "header": "User Personas", - "type": "Research", - "status": "In Process", - "target": "27", - "limit": "24", - "reviewer": "Nina Patel" - }, - { - "id": 34, - "header": "Accessibility Compliance", - "type": "Legal", - "status": "Done", - "target": "18", - "limit": "21", - "reviewer": "Assign reviewer" - }, - { - "id": 35, - "header": "Performance Metrics", - "type": "Technical content", - "status": "In Process", - "target": "23", - "limit": "26", - "reviewer": "David Kim" - }, - { - "id": 36, - "header": "Disaster Recovery Plan", - "type": "Technical content", - "status": "Done", - "target": "14", - "limit": "17", - "reviewer": "Jamik Tashpulatov" - }, - { - "id": 37, - "header": "Third-party Integrations", - "type": "Technical content", - "status": "In Process", - "target": "25", - "limit": "28", - "reviewer": "Eddie Lake" - }, - { - "id": 38, - "header": "User Feedback Summary", - "type": "Research", - "status": "Done", - "target": "20", - "limit": "15", - "reviewer": "Assign reviewer" - }, - { - "id": 39, - "header": "Localization Strategy", - "type": "Narrative", - "status": "In Process", - "target": "12", - "limit": "19", - "reviewer": "Maria Garcia" - }, - { - "id": 40, - "header": "Mobile Compatibility", - "type": "Technical content", - "status": "Done", - "target": "28", - "limit": "31", - "reviewer": "James Wilson" - }, - { - "id": 41, - "header": "Data Migration Plan", - "type": "Technical content", - "status": "In Process", - "target": "19", - "limit": "22", - "reviewer": "Assign reviewer" - }, - { - "id": 42, - "header": "Quality Assurance Protocols", - "type": "Technical content", - "status": "Done", - "target": "30", - "limit": "33", - "reviewer": "Priya Singh" - }, - { - "id": 43, - "header": "Stakeholder Analysis", - "type": "Research", - "status": "In Process", - "target": "11", - "limit": "14", - "reviewer": "Eddie Lake" - }, - { - "id": 44, - "header": "Environmental Impact Assessment", - "type": "Research", - "status": "Done", - "target": "24", - "limit": "27", - "reviewer": "Assign reviewer" - }, - { - "id": 45, - "header": "Intellectual Property Rights", - "type": "Legal", - "status": "In Process", - "target": "17", - "limit": "20", - "reviewer": "Sarah Johnson" - }, - { - "id": 46, - "header": "Customer Support Framework", - "type": "Narrative", - "status": "Done", - "target": "22", - "limit": "25", - "reviewer": "Jamik Tashpulatov" - }, - { - "id": 47, - "header": "Version Control Strategy", - "type": "Technical content", - "status": "In Process", - "target": "15", - "limit": "18", - "reviewer": "Assign reviewer" - }, - { - "id": 48, - "header": "Continuous Integration Pipeline", - "type": "Technical content", - "status": "Done", - "target": "26", - "limit": "29", - "reviewer": "Michael Chen" - }, - { - "id": 49, - "header": "Regulatory Compliance", - "type": "Legal", - "status": "In Process", - "target": "13", - "limit": "16", - "reviewer": "Assign reviewer" - }, - { - "id": 50, - "header": "User Authentication System", - "type": "Technical content", - "status": "Done", - "target": "28", - "limit": "31", - "reviewer": "Eddie Lake" - }, - { - "id": 51, - "header": "Data Analytics Framework", - "type": "Technical content", - "status": "In Process", - "target": "21", - "limit": "24", - "reviewer": "Jamik Tashpulatov" - }, - { - "id": 52, - "header": "Cloud Infrastructure", - "type": "Technical content", - "status": "Done", - "target": "16", - "limit": "19", - "reviewer": "Assign reviewer" - }, - { - "id": 53, - "header": "Network Security Measures", - "type": "Technical content", - "status": "In Process", - "target": "29", - "limit": "32", - "reviewer": "Lisa Wong" - }, - { - "id": 54, - "header": "Project Timeline", - "type": "Planning", - "status": "Done", - "target": "14", - "limit": "17", - "reviewer": "Eddie Lake" - }, - { - "id": 55, - "header": "Resource Allocation", - "type": "Planning", - "status": "In Process", - "target": "27", - "limit": "30", - "reviewer": "Assign reviewer" - }, - { - "id": 56, - "header": "Team Structure and Roles", - "type": "Planning", - "status": "Done", - "target": "20", - "limit": "23", - "reviewer": "Jamik Tashpulatov" - }, - { - "id": 57, - "header": "Communication Protocols", - "type": "Planning", - "status": "In Process", - "target": "15", - "limit": "18", - "reviewer": "Assign reviewer" - }, - { - "id": 58, - "header": "Success Metrics", - "type": "Planning", - "status": "Done", - "target": "30", - "limit": "33", - "reviewer": "Eddie Lake" - }, - { - "id": 59, - "header": "Internationalization Support", - "type": "Technical content", - "status": "In Process", - "target": "23", - "limit": "26", - "reviewer": "Jamik Tashpulatov" - }, - { - "id": 60, - "header": "Backup and Recovery Procedures", - "type": "Technical content", - "status": "Done", - "target": "18", - "limit": "21", - "reviewer": "Assign reviewer" - }, - { - "id": 61, - "header": "Monitoring and Alerting System", - "type": "Technical content", - "status": "In Process", - "target": "25", - "limit": "28", - "reviewer": "Daniel Park" - }, - { - "id": 62, - "header": "Code Review Guidelines", - "type": "Technical content", - "status": "Done", - "target": "12", - "limit": "15", - "reviewer": "Eddie Lake" - }, - { - "id": 63, - "header": "Documentation Standards", - "type": "Technical content", - "status": "In Process", - "target": "27", - "limit": "30", - "reviewer": "Jamik Tashpulatov" - }, - { - "id": 64, - "header": "Release Management Process", - "type": "Planning", - "status": "Done", - "target": "22", - "limit": "25", - "reviewer": "Assign reviewer" - }, - { - "id": 65, - "header": "Feature Prioritization Matrix", - "type": "Planning", - "status": "In Process", - "target": "19", - "limit": "22", - "reviewer": "Emma Davis" - }, - { - "id": 66, - "header": "Technical Debt Assessment", - "type": "Technical content", - "status": "Done", - "target": "24", - "limit": "27", - "reviewer": "Eddie Lake" - }, - { - "id": 67, - "header": "Capacity Planning", - "type": "Planning", - "status": "In Process", - "target": "21", - "limit": "24", - "reviewer": "Jamik Tashpulatov" - }, - { - "id": 68, - "header": "Service Level Agreements", - "type": "Legal", - "status": "Done", - "target": "26", - "limit": "29", - "reviewer": "Assign reviewer" +{ + "assets": [ + { + "id": "asset_1", + "name": "Primary Checking Account", + "category": "cash", + "currentValue": 15000, + "currency": "USD", + "description": "Main bank account for daily expenses", + "lastUpdated": "2024-08-26T10:00:00Z", + "location": "Chase Bank" + }, + { + "id": "asset_2", + "name": "High-Yield Savings", + "category": "cash", + "currentValue": 45000, + "currency": "USD", + "description": "Emergency fund and savings", + "lastUpdated": "2024-08-26T10:00:00Z", + "location": "Ally Bank" + }, + { + "id": "asset_3", + "name": "Primary Residence", + "category": "real_estate", + "currentValue": 650000, + "currency": "USD", + "description": "3BR/2BA home in suburban area", + "lastUpdated": "2024-08-26T10:00:00Z", + "purchaseValue": 520000, + "purchaseDate": "2019-04-15", + "location": "Austin, TX" + }, + { + "id": "asset_4", + "name": "2022 Tesla Model 3", + "category": "vehicle", + "currentValue": 35000, + "currency": "USD", + "description": "Electric vehicle for daily commute", + "lastUpdated": "2024-08-26T10:00:00Z", + "purchaseValue": 48000, + "purchaseDate": "2022-03-10" + }, + { + "id": "asset_5", + "name": "Home Office Equipment", + "category": "personal_item", + "currentValue": 8500, + "currency": "USD", + "description": "MacBook Pro, monitors, desk setup", + "lastUpdated": "2024-08-26T10:00:00Z", + "purchaseValue": 12000, + "purchaseDate": "2023-01-20" + } + ], + "investments": [ + { + "id": "inv_1", + "name": "Apple Inc.", + "symbol": "AAPL", + "category": "stocks", + "shares": 50, + "currentPricePerShare": 230.25, + "totalValue": 11512.50, + "costBasis": 9500, + "currency": "USD", + "broker": "Fidelity", + "lastUpdated": "2024-08-26T10:00:00Z", + "dividendYield": 0.44 + }, + { + "id": "inv_2", + "name": "Vanguard S&P 500 ETF", + "symbol": "VOO", + "category": "etf", + "shares": 85, + "currentPricePerShare": 485.20, + "totalValue": 41242, + "costBasis": 38000, + "currency": "USD", + "broker": "Vanguard", + "lastUpdated": "2024-08-26T10:00:00Z", + "dividendYield": 1.32 + }, + { + "id": "inv_3", + "name": "Bitcoin", + "symbol": "BTC", + "category": "crypto", + "shares": 0.5, + "currentPricePerShare": 65500, + "totalValue": 32750, + "costBasis": 25000, + "currency": "USD", + "broker": "Coinbase", + "lastUpdated": "2024-08-26T10:00:00Z" + }, + { + "id": "inv_4", + "name": "401(k) - Target Date 2055", + "category": "retirement_401k", + "totalValue": 125000, + "costBasis": 98000, + "currency": "USD", + "broker": "Company 401k Plan", + "lastUpdated": "2024-08-26T10:00:00Z", + "currentPricePerShare": 1, + "notes": "Employer matching included" + }, + { + "id": "inv_5", + "name": "Roth IRA - Growth Portfolio", + "category": "retirement_ira", + "totalValue": 85000, + "costBasis": 72000, + "currency": "USD", + "broker": "Charles Schwab", + "lastUpdated": "2024-08-26T10:00:00Z", + "currentPricePerShare": 1, + "notes": "Max annual contributions" + } + ], + "expenses": [ + { + "id": "exp_1", + "name": "Mortgage Payment", + "amount": 2800, + "currency": "USD", + "category": "housing", + "date": "2024-08-01", + "isRecurring": true, + "recurringFrequency": "monthly", + "isEssential": true, + "paymentMethod": "Auto-pay", + "vendor": "First National Bank", + "notes": "Principal + Interest + Taxes + Insurance" + }, + { + "id": "exp_2", + "name": "Groceries", + "amount": 650, + "currency": "USD", + "category": "food", + "date": "2024-08-25", + "isRecurring": true, + "recurringFrequency": "monthly", + "isEssential": true, + "paymentMethod": "Credit Card", + "vendor": "Whole Foods", + "tags": ["organic", "weekly_shopping"] + }, + { + "id": "exp_3", + "name": "Tesla Auto Insurance", + "amount": 185, + "currency": "USD", + "category": "transportation", + "date": "2024-08-15", + "isRecurring": true, + "recurringFrequency": "monthly", + "isEssential": true, + "paymentMethod": "Auto-pay", + "vendor": "Tesla Insurance" + }, + { + "id": "exp_4", + "name": "Netflix Subscription", + "amount": 15.99, + "currency": "USD", + "category": "entertainment", + "date": "2024-08-20", + "isRecurring": true, + "recurringFrequency": "monthly", + "isEssential": false, + "paymentMethod": "Credit Card", + "vendor": "Netflix", + "tags": ["streaming", "entertainment"] + }, + { + "id": "exp_5", + "name": "Spotify Premium", + "amount": 10.99, + "currency": "USD", + "category": "entertainment", + "date": "2024-08-22", + "isRecurring": true, + "recurringFrequency": "monthly", + "isEssential": false, + "paymentMethod": "Credit Card", + "vendor": "Spotify", + "tags": ["music", "entertainment"] + }, + { + "id": "exp_6", + "name": "Electricity Bill", + "amount": 120, + "currency": "USD", + "category": "bills", + "date": "2024-08-18", + "isRecurring": true, + "recurringFrequency": "monthly", + "isEssential": true, + "paymentMethod": "Auto-pay", + "vendor": "Austin Energy" + }, + { + "id": "exp_7", + "name": "Gym Membership", + "amount": 45, + "currency": "USD", + "category": "healthcare", + "date": "2024-08-05", + "isRecurring": true, + "recurringFrequency": "monthly", + "isEssential": false, + "paymentMethod": "Auto-pay", + "vendor": "LA Fitness", + "tags": ["health", "fitness"] + }, + { + "id": "exp_8", + "name": "Dinner Out", + "amount": 85, + "currency": "USD", + "category": "food", + "date": "2024-08-23", + "isRecurring": false, + "isEssential": false, + "paymentMethod": "Credit Card", + "vendor": "Local Restaurant", + "tags": ["dining", "date_night"] + } + ], + "income": [ + { + "id": "inc_1", + "source": "Software Engineer Salary", + "amount": 8500, + "currency": "USD", + "category": "salary", + "frequency": "monthly", + "date": "2024-08-30", + "isAfterTax": false, + "taxWithholding": 2125, + "employer": "Tech Corp Inc.", + "description": "Base salary as Senior Software Engineer", + "notes": "Direct deposit" + }, + { + "id": "inc_2", + "source": "Freelance Web Development", + "amount": 2500, + "currency": "USD", + "category": "freelance", + "frequency": "monthly", + "date": "2024-08-25", + "isAfterTax": false, + "employer": "Various Clients", + "description": "Side projects and consulting work", + "notes": "Variable income based on project availability" + }, + { + "id": "inc_3", + "source": "Investment Dividends", + "amount": 150, + "currency": "USD", + "category": "dividends", + "frequency": "quarterly", + "date": "2024-08-15", + "isAfterTax": true, + "description": "Quarterly dividends from stock portfolio", + "notes": "Reinvested automatically" + }, + { + "id": "inc_4", + "source": "High-Yield Savings Interest", + "amount": 180, + "currency": "USD", + "category": "interest", + "frequency": "monthly", + "date": "2024-08-31", + "isAfterTax": true, + "description": "4.5% APY on savings account", + "notes": "Compounded daily" + }, + { + "id": "inc_5", + "source": "Annual Performance Bonus", + "amount": 12000, + "currency": "USD", + "category": "bonus", + "frequency": "annually", + "date": "2024-03-15", + "isAfterTax": false, + "taxWithholding": 3600, + "employer": "Tech Corp Inc.", + "description": "Annual performance and retention bonus", + "notes": "Based on company and individual performance" + } + ], + "goals": [ + { + "id": "goal_1", + "name": "Emergency Fund", + "targetAmount": 50000, + "currentAmount": 45000, + "currency": "USD", + "targetDate": "2024-12-31", + "category": "emergency_fund", + "priority": "high", + "status": "in_progress", + "monthlyContribution": 1000, + "notes": "6 months of expenses saved" + }, + { + "id": "goal_2", + "name": "Vacation to Europe", + "targetAmount": 8000, + "currentAmount": 3200, + "currency": "USD", + "targetDate": "2025-06-01", + "category": "vacation", + "priority": "medium", + "status": "in_progress", + "monthlyContribution": 600, + "notes": "Two-week trip to Italy and France" + }, + { + "id": "goal_3", + "name": "Retirement by 50", + "targetAmount": 2000000, + "currentAmount": 210000, + "currency": "USD", + "targetDate": "2045-01-01", + "category": "retirement", + "priority": "high", + "status": "in_progress", + "monthlyContribution": 3500, + "notes": "Aggressive savings and investment strategy" + }, + { + "id": "goal_4", + "name": "New Car Down Payment", + "targetAmount": 15000, + "currentAmount": 7500, + "currency": "USD", + "targetDate": "2025-12-31", + "category": "other", + "priority": "low", + "status": "planning", + "monthlyContribution": 500, + "notes": "Replacement for current Tesla when lease ends" + } + ], + "lastUpdated": "2024-08-26T10:00:00Z", + "user": { + "preferredCurrency": "USD", + "timezone": "America/Chicago" } -] +} \ No newline at end of file diff --git a/app/dashboard/page.tsx b/app/dashboard/page.tsx index d1765ef..ac3dbf2 100644 --- a/app/dashboard/page.tsx +++ b/app/dashboard/page.tsx @@ -1,18 +1,23 @@ -import { ChartAreaInteractive } from "@//components/chart-area-interactive" -import { DataTable } from "@//components/data-table" -import { SectionCards } from "@//components/section-cards" -import data from "@/app/dashboard/data.json" +import { FinanceOverviewCards } from "@/components/finance-overview-cards" +import { FinanceDataTables } from "@/components/finance-data-tables" +import { ChartAreaInteractive } from "@/components/chart-area-interactive" +import { loadFinanceData } from "@/lib/finance-utils" +import { FinanceProvider } from "@/contexts/finance-context" + +export default async function DashboardPage() { + const financeData = await loadFinanceData() -export default function Page() { return ( -
-
- -
- + +
+
+ +
+ +
+
-
-
+ ) } \ No newline at end of file diff --git a/app/dashboard/theme.css b/app/dashboard/theme.css index ebb77b4..1d160dc 100644 --- a/app/dashboard/theme.css +++ b/app/dashboard/theme.css @@ -50,12 +50,27 @@ body { .theme-green, .theme-green-scaled { - --primary: var(--color-lime-600); - --primary-foreground: var(--color-lime-50); + --primary: var(--color-green-600); + --primary-foreground: var(--color-green-50); @variant dark { - --primary: var(--color-lime-600); - --primary-foreground: var(--color-lime-50); + --primary: var(--color-green-500); + --primary-foreground: var(--color-green-50); + } + } + + .theme-finance, + .theme-finance-scaled { + --primary: var(--color-emerald-600); + --primary-foreground: var(--color-emerald-50); + --accent: var(--color-green-100); + --accent-foreground: var(--color-green-900); + + @variant dark { + --primary: var(--color-emerald-500); + --primary-foreground: var(--color-emerald-50); + --accent: var(--color-green-800); + --accent-foreground: var(--color-green-200); } } diff --git a/app/page.tsx b/app/page.tsx index e7ebec9..6fc57d6 100644 --- a/app/page.tsx +++ b/app/page.tsx @@ -3,21 +3,21 @@ import { Card } from "@/components/ui/card"; import { Button } from "@/components/ui/button"; import { - Code, - Database, + DollarSign, + TrendingUp, + PieChart, + Wallet, + CreditCard, + BarChart3, Shield, Zap, - Globe, - Palette, - Package, } from "lucide-react"; import { ThemeToggle } from "@/components/theme-toggle"; import { AuthButtons, HeroAuthButtons } from "@/components/auth-buttons"; -import Image from "next/image"; export default function Home() { return ( -
+
{/* Hero Section */}
@@ -27,147 +27,150 @@ export default function Home() {
-
- CodeGuide Logo -

- CodeGuide Starter +
+
+ +
+

+ Claude Finance

- A modern full-stack TypeScript starter with authentication, database, and UI components + Take control of your financial future with intelligent tracking and insights for your assets, investments, expenses, and income.

- {/* Project Overview */} + {/* Features Overview */}
-
πŸš€
-
Modern Full-Stack Starter
+
πŸ’°
+
Complete Financial Management
- This project includes everything you need to build a modern web application with TypeScript, - authentication, database integration, and a beautiful UI component library. + Track all aspects of your financial life in one place. Monitor assets, investments, expenses, and income + with beautiful visualizations and smart insights to help you make better financial decisions.
- {/* Tech Stack Grid */} + {/* Features Grid */}
- {/* Frontend */} - + {/* Assets Tracking */} +
- -

Frontend

+ +

Asset Tracking

    -
  • β€’ Next.js 15 - React framework with App Router
  • -
  • β€’ React 19 - Latest React with concurrent features
  • -
  • β€’ TypeScript - Type-safe development
  • -
  • β€’ Turbopack - Fast bundling and dev server
  • +
  • β€’ Cash & Savings - Track all bank accounts
  • +
  • β€’ Real Estate - Property values and equity
  • +
  • β€’ Vehicles - Cars, boats, and more
  • +
  • β€’ Personal Items - Valuable possessions
- {/* UI & Styling */} - + {/* Investment Portfolio */} +
- -

UI & Styling

+ +

Investments

    -
  • β€’ Tailwind CSS 4 - Utility-first CSS framework
  • -
  • β€’ Radix UI - Accessible component primitives
  • -
  • β€’ Lucide Icons - Beautiful icon library
  • -
  • β€’ Dark Mode - Built-in theme switching
  • +
  • β€’ Stocks & ETFs - Equity investments
  • +
  • β€’ Bonds - Fixed income securities
  • +
  • β€’ Cryptocurrency - Digital assets
  • +
  • β€’ Retirement Funds - 401k, IRA tracking
- {/* Authentication */} - + {/* Expense Management */} +
- -

Authentication

+ +

Expenses

    -
  • β€’ Better Auth - Modern auth solution
  • -
  • β€’ Session Management - Secure user sessions
  • -
  • β€’ Type Safety - Fully typed auth hooks
  • -
  • β€’ Multiple Providers - Social login support
  • +
  • β€’ Categories - Organize spending habits
  • +
  • β€’ Monthly Budgets - Set spending limits
  • +
  • β€’ Recurring Bills - Track subscriptions
  • +
  • β€’ Tax Planning - Deductible expenses
- {/* Database */} - + {/* Income Tracking */} +
- -

Database

+ +

Income

    -
  • β€’ PostgreSQL - Robust relational database
  • -
  • β€’ Drizzle ORM - Type-safe database toolkit
  • -
  • β€’ Docker Setup - Containerized development
  • -
  • β€’ Migrations - Schema version control
  • +
  • β€’ Salary - Primary employment income
  • +
  • β€’ Side Hustles - Freelance and gig work
  • +
  • β€’ Passive Income - Dividends and interest
  • +
  • β€’ Tax Withholding - Track deductions
- {/* Development */} - + {/* Analytics & Reports */} +
- -

Development

+ +

Analytics

    -
  • β€’ ESLint - Code linting and formatting
  • -
  • β€’ Hot Reload - Instant development feedback
  • -
  • β€’ Docker - Consistent dev environment
  • -
  • β€’ npm Scripts - Automated workflows
  • +
  • β€’ Net Worth - Total assets minus liabilities
  • +
  • β€’ Cash Flow - Income vs expenses trends
  • +
  • β€’ ROI Tracking - Investment performance
  • +
  • β€’ Financial Goals - Progress monitoring
- {/* Components */} - + {/* Security & Privacy */} +
- -

Components

+ +

Security

    -
  • β€’ Form Handling - React Hook Form + Zod
  • -
  • β€’ Data Visualization - Recharts integration
  • -
  • β€’ Date Pickers - Beautiful date components
  • -
  • β€’ Notifications - Toast and alert systems
  • +
  • β€’ Data Encryption - Bank-level security
  • +
  • β€’ Private - Your data stays with you
  • +
  • β€’ Secure Access - Multi-factor authentication
  • +
  • β€’ Privacy First - No data selling
{/* Getting Started */} - +

- - Quick Start + + Get Started Today

-

Development

-
-
npm install
-
npm run db:dev
-
npm run dev
-
+

Track Your Wealth

+
    +
  • πŸ“Š Add your assets and investments
  • +
  • πŸ’³ Record your monthly expenses
  • +
  • πŸ’° Track all income sources
  • +
  • πŸ“ˆ Watch your net worth grow
  • +
-

Production

-
-
npm run build
-
npm run start
-
npm run docker:up
-
+

Smart Insights

+
    +
  • πŸ“‰ Visualize spending patterns
  • +
  • 🎯 Set and track financial goals
  • +
  • πŸ“… Monitor investment performance
  • +
  • πŸ” Discover optimization opportunities
  • +
+
+ +
diff --git a/app/sign-in/page.tsx b/app/sign-in/page.tsx index a6512b0..63efd8f 100644 --- a/app/sign-in/page.tsx +++ b/app/sign-in/page.tsx @@ -45,9 +45,9 @@ export default function SignInPage() {
- Sign In + Welcome Back to Claude Finance - Enter your email and password to access your account + Access your financial dashboard and continue tracking your wealth @@ -62,7 +62,7 @@ export default function SignInPage() { setEmail(e.target.value)} required @@ -74,30 +74,30 @@ export default function SignInPage() { setPassword(e.target.value)} required disabled={isLoading} />
-

- Don't have an account?{" "} - - Sign up + New to Claude Finance?{" "} + + Start your financial journey

diff --git a/app/sign-up/page.tsx b/app/sign-up/page.tsx index ccf3148..abc8e7f 100644 --- a/app/sign-up/page.tsx +++ b/app/sign-up/page.tsx @@ -74,9 +74,9 @@ export default function SignUpPage() {
- Create Account + Join Claude Finance - Enter your details to create a new account + Start your journey to financial freedom today @@ -96,7 +96,7 @@ export default function SignUpPage() { Full Name @@ -115,7 +115,7 @@ export default function SignUpPage() { @@ -135,7 +135,7 @@ export default function SignUpPage() {
- diff --git a/components/add-asset-dialog.tsx b/components/add-asset-dialog.tsx new file mode 100644 index 0000000..c3dbd84 --- /dev/null +++ b/components/add-asset-dialog.tsx @@ -0,0 +1,245 @@ +"use client" + +import { useState } from "react" +import { useForm } from "react-hook-form" +import { zodResolver } from "@hookform/resolvers/zod" +import { z } from "zod" +import { Button } from "@/components/ui/button" +import { Input } from "@/components/ui/input" +import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select" +import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle } from "@/components/ui/dialog" +import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage } from "@/components/ui/form" +import { Textarea } from "@/components/ui/textarea" +import { useFinance } from "@/contexts/finance-context" +import { Asset } from "@/lib/finance-types" + +const assetSchema = z.object({ + name: z.string().min(1, "Name is required"), + category: z.enum(['cash', 'real_estate', 'vehicle', 'personal_item', 'other']), + currentValue: z.number().min(0, "Value must be positive"), + description: z.string().optional(), + location: z.string().optional(), + purchaseValue: z.number().min(0).optional(), + purchaseDate: z.string().optional(), +}) + +type AssetFormData = z.infer + +interface AddAssetDialogProps { + open: boolean + onOpenChange: (open: boolean) => void + asset?: Asset +} + +const categoryOptions = [ + { value: 'cash', label: 'Cash & Savings' }, + { value: 'real_estate', label: 'Real Estate' }, + { value: 'vehicle', label: 'Vehicle' }, + { value: 'personal_item', label: 'Personal Item' }, + { value: 'other', label: 'Other' }, +] + +export function AddAssetDialog({ open, onOpenChange, asset }: AddAssetDialogProps) { + const { addAsset, updateAsset } = useFinance() + const [isLoading, setIsLoading] = useState(false) + const isEditing = !!asset + + const form = useForm({ + resolver: zodResolver(assetSchema), + defaultValues: { + name: asset?.name || "", + category: asset?.category || 'other', + currentValue: asset?.currentValue || 0, + description: asset?.description || "", + location: asset?.location || "", + purchaseValue: asset?.purchaseValue || 0, + purchaseDate: asset?.purchaseDate ? asset.purchaseDate.split('T')[0] : "", + }, + }) + + async function onSubmit(data: AssetFormData) { + setIsLoading(true) + try { + const assetData = { + ...data, + currency: "USD", + lastUpdated: new Date().toISOString(), + } + + if (isEditing && asset) { + updateAsset({ ...assetData, id: asset.id }) + } else { + addAsset(assetData) + } + + onOpenChange(false) + form.reset() + } catch (error) { + console.error("Error saving asset:", error) + } finally { + setIsLoading(false) + } + } + + return ( + + + + {isEditing ? 'Edit Asset' : 'Add New Asset'} + + {isEditing ? 'Update asset details' : 'Add a new asset to track your wealth'} + + + +
+ +
+ ( + + Name + + + + + + )} + /> + + ( + + Category + + + + )} + /> +
+ +
+ ( + + Current Value ($) + + field.onChange(parseFloat(e.target.value) || 0)} + /> + + + + )} + /> + + ( + + Location (Optional) + + + + + + )} + /> +
+ +
+ ( + + Purchase Value ($) - Optional + + field.onChange(parseFloat(e.target.value) || 0)} + /> + + + + )} + /> + + ( + + Purchase Date (Optional) + + + + + + )} + /> +
+ + ( + + Description (Optional) + +