personal-finance-finnote

byazis 01

Build a production-ready personal finance SaaS web app called **FinNote**. ## Objective Create a fully functional personal finance app for individual users to manage: - Income - Expenses - Transfers - Accounts/wallets - Monthly budgets - Savings goals - Recurring bills - Reports Do NOT build only a static UI. Implement real CRUD, calculations, authentication, database, validation, responsive UI, and secure user data isolation. ## Default - Language: Indonesian - Currency: IDR (Rp) - Locale: id-ID - Date: DD MMM YYYY - Timezone: user local timezone - Currency can be changed in Settings ## Preferred Stack Use the platform's best supported stack. Prefer: - Next.js + TypeScript + React - Tailwind CSS + shadcn/ui + Lucide - Supabase PostgreSQL + Auth + Row Level Security - Recharts Use reusable components, clean architecture, strict typing, no hardcoded production data, proper loading/empty/error states. ## Authentication Implement: - Register - Login - Logout - Forgot/reset password - Persistent session - Protected routes Every user's data must be isolated. Users must never access another user's accounts, transactions, budgets, categories, goals, bills, or settings. Use RLS when available. ## Main Navigation Desktop: left sidebar + top header. Mobile: compact header + bottom navigation. Pages: - Dashboard - Transaksi - Akun - Anggaran - Target Tabungan - Tagihan - Laporan - Kategori - Pengaturan ## Dashboard Show selected period: Hari Ini / Minggu Ini / Bulan Ini / Tahun Ini / Custom Range Summary cards: - Total Saldo - Pemasukan - Pengeluaran - Sisa Anggaran - Comparison vs previous period Charts: - Income vs Expense - Expense by Category - Monthly Cash Flow - Balance Trend Sections: - Transaksi Terbaru - Pengeluaran Terbesar - Progress Anggaran - Target Tabungan - Tagihan Mendatang Quick actions: + Pemasukan + Pengeluaran + Transfer ## Transactions Types: - Income - Expense - Transfer Fields: - Type - Amount - Account - Destination account for transfer - Category - Date/time - Note - Tags - Optional receipt attachment - Recurring toggle Support: - Create - Edit - Delete - Duplicate - Search - Filter - Sort - Pagination Filters: - Date range - Type - Category - Account - Amount - Tag Financial rule: Never use floating-point arithmetic for money. Use database NUMERIC/DECIMAL or integer smallest units. Transfers must: - decrease source balance - increase destination balance - NOT count as income or expense ## Accounts Account types: - Cash - Bank - E-Wallet - Credit Card - Savings Fields: - Name - Type - Initial balance - Current balance - Currency - Icon Balances must update automatically from transactions. ## Categories Default expense: Makanan, Transportasi, Belanja, Tagihan, Hiburan, Kesehatan, Pendidikan, Rumah, Travel, Lainnya. Default income: Gaji, Bonus, Bisnis, Freelance, Investasi, Hadiah, Lainnya. Users can create, rename, delete, and select icons. Prevent category deletion if linked transactions are not handled safely. ## Budgets Monthly category budgets. Show: - Limit - Amount used - Remaining - Percentage - Progress bar Statuses: - Normal - Hampir Habis - Melebihi Anggaran Warn at 80% and 100%. Budget usage must be calculated automatically from expense transactions. ## Savings Goals Fields: - Goal name - Target amount - Current amount - Target date - Notes Show progress %, remaining amount, and remaining time. Allow goal contributions. ## Recurring Bills Support recurring income/expense: - Daily - Weekly - Monthly - Yearly Bill statuses: - Upcoming - Due Soon - Paid - Overdue Prevent duplicate recurring transaction generation. ## Reports Filters: - Month - Year - Custom range - Account - Category Reports: - Income - Expenses - Net Cash Flow - Expense by Category - Income by Category - Monthly Trend - Account Balances Charts: - Bar - Line - Donut/Pie Comparison: - This month vs last month - This year vs last year ## Import / Export Export transactions to CSV with: Date, Type, Category, Account, Amount, Description. CSV import must: - Validate data - Preview rows - Detect invalid rows - Reduce duplicate imports - Show success/error summary ## Database Create normalized tables similar to: profiles accounts categories transactions tags transaction_tags budgets savings_goals goal_contributions recurring_transactions attachments user_preferences transactions should include: id user_id type amount account_id destination_account_id nullable category_id nullable transaction_date description created_at updated_at Use: - foreign keys - constraints - indexes - timestamps - user ownership Index important columns: user_id, transaction_date, category_id, account_id. ## Validation Client + server validation. Rules: - amount > 0 - account required - category required for income/expense - destination required for transfer - source and destination cannot be same - reject invalid dates - reject missing required fields Use confirmation dialogs before destructive actions. ## UI / UX Style: - Premium fintech - Minimal - Modern - Professional - Clean - Natural - Not visually AI-generated Use: - strong visual hierarchy - readable typography - subtle borders - soft shadows - rounded cards - balanced spacing - meaningful icons Avoid: - excessive gradients - excessive animation - oversized cards - decorative elements with no function Support: - Light - Dark - System theme Use semantic styling: - Income = positive - Expense = negative - Transfer = neutral ## Responsive Must work well at: 320, 375, 768, 1024, 1440, 1920 px. No normal-page horizontal scrolling. Make tables mobile-friendly. ## Settings Provide: - Profile - Name - Password - Currency - Language - Date format - Theme - Delete account Require confirmation for destructive actions. ## Onboarding After registration: 1. Welcome 2. Select currency (default IDR) 3. Create first account 4. Optional monthly budget 5. Go to Dashboard ## UX States Use: - Skeleton loading - Empty states - Toast notifications - Clear validation errors - Network/database error handling - Session expired handling Example empty state: "Belum ada transaksi" Button: "+ Tambah Transaksi" Do not show fake financial data in production when the user has no data. ## Security Implement: - Authentication - Authorization - RLS - Protected APIs/routes - Input validation/sanitization - Secure sessions Never expose: - secrets - service keys - stack traces - database credentials Never store online banking credentials. ## Performance Optimize: - dashboard queries - financial aggregation - transaction pagination - search - charts - React rendering Use database/server aggregation when appropriate. ## Final QA Before completion, test and fix: - Auth - CRUD - Financial calculations - Account balances - Transfers - Budgets - Savings goals - Recurring bills - Reports - Import/export - User data isolation - Responsive UI - Form validation - Empty/loading/error states - TypeScript errors - Broken imports - Runtime errors - Database errors Preserve a consistent design system and deliver a polished, usable production application, not a mockup.

LandingOnboardingLoginTransaksiAnggaranAccount RecoveryAkun
Landing

Comments (0)

No comments yet. Be the first!

Architecture

No Services Diagrams Yet

Architecture diagrams will be automatically generated when the Project Manager creates tasks for your project.

Landing design preview
Landing: 1. Learn FinNote capabilities
Sign Up: 2. Submit registration
Sign Up: 3. Fix inline validation errors
Onboarding: 4. Confirm currency
Onboarding: 5. Create first account
Onboarding: 6. Create optional monthly budget
Onboarding: 7. Skip optional budget step
Dashboard: 8. Select period
Dashboard: 9. Review balance plate
Transaksi: 10. Add expense
Transaksi: 11. Add income
Transaksi: 12. Create transfer
Transaksi: 13. Correct validation errors
Transaksi: 14. Filter and sort ledger
Transaksi: 15. Edit transaction
Transaksi: 16. Delete transaction
Transaksi: 17. Duplicate transaction
Transaksi: Export CSV
Transaksi: 18. Import CSV and preview rows
Transaksi: Cancel import with errors
Akun: 1. Create account
Akun: 2. Edit account
Akun: 3. Delete account
Kategori: 1. Create category
Kategori: 2. Rename category
Kategori: 3. Delete category
Anggaran: 1. Create monthly budget
Anggaran: 2. Edit budget limit
Anggaran: 3. Review threshold warning
Target Tabungan: 1. Create savings goal
Target Tabungan: 2. Add goal contribution
Target Tabungan: 3. Review progress and remaining time
Target Tabungan: Delete goal
Tagihan: 1. Create recurring bill
Tagihan: 2. Mark bill paid
Tagihan: Edit bill
Laporan: 1. Apply report filters
Laporan: Switch comparison basis
Laporan: Switch chart type
Laporan: 2. Export underlying CSV
Dashboard: 19. Open section detail
Pengaturan: 1. Update profile and name
Pengaturan: 2. Change password
Pengaturan: 3. Change currency
Pengaturan: 4. Change language
Pengaturan: 5. Change date format
Pengaturan: 6. Change theme
Pengaturan: 7. Delete account
Login: 20. Submit login
Login: 21. Retry invalid credentials
Dashboard: 22. Quick add expense
Dashboard: 23. Quick add income
Dashboard: 24. Quick create transfer
Landing: 25. Go to Login
Account Recovery: 26. Request password reset
Account Recovery: 27. Set new password
Account Recovery: 28. Return to Login
Login: 29. Go to Account Recovery
Dashboard: 30. Log out
Landing design preview
Landing: 1. Learn FinNote capabilities
Sign Up: 2. Submit registration
Sign Up: 3. Fix inline validation errors
Onboarding: 4. Confirm currency
Onboarding: 5. Create first account
Onboarding: 6. Create optional monthly budget
Onboarding: 7. Skip optional budget step
Dashboard: 8. Select period
Dashboard: 9. Review balance plate
Transaksi: 10. Add expense
Transaksi: 11. Add income
Transaksi: 12. Create transfer
Transaksi: 13. Correct validation errors
Transaksi: 14. Filter and sort ledger
Transaksi: 15. Edit transaction
Transaksi: 16. Delete transaction
Transaksi: 17. Duplicate transaction
Transaksi: Export CSV
Transaksi: 18. Import CSV and preview rows
Transaksi: Cancel import with errors
Akun: 1. Create account
Akun: 2. Edit account
Akun: 3. Delete account
Kategori: 1. Create category
Kategori: 2. Rename category
Kategori: 3. Delete category
Anggaran: 1. Create monthly budget
Anggaran: 2. Edit budget limit
Anggaran: 3. Review threshold warning
Target Tabungan: 1. Create savings goal
Target Tabungan: 2. Add goal contribution
Target Tabungan: 3. Review progress and remaining time
Target Tabungan: Delete goal
Tagihan: 1. Create recurring bill
Tagihan: 2. Mark bill paid
Tagihan: Edit bill
Laporan: 1. Apply report filters
Laporan: Switch comparison basis
Laporan: Switch chart type
Laporan: 2. Export underlying CSV
Dashboard: 19. Open section detail
Pengaturan: 1. Update profile and name
Pengaturan: 2. Change password
Pengaturan: 3. Change currency
Pengaturan: 4. Change language
Pengaturan: 5. Change date format
Pengaturan: 6. Change theme
Pengaturan: 7. Delete account
Login: 20. Submit login
Login: 21. Retry invalid credentials
Dashboard: 22. Quick add expense
Dashboard: 23. Quick add income
Dashboard: 24. Quick create transfer
Landing: 25. Go to Login
Account Recovery: 26. Request password reset
Account Recovery: 27. Set new password
Account Recovery: 28. Return to Login
Login: 29. Go to Account Recovery
Dashboard: 30. Log out