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!

Project Tasks

89 planning tasks
#1

Generate system requirement document

0m 48s0.1 cr used
Done
#2

Generate personas & user flows

0m 12s0.1 cr used
Done
#7

Create flow for Individual Finance User

0m 11sCredits in parent
Done
#8

Landing

10m 40sCredits in subtasks
Done
#30

Repair Landing JSX

0m 57s0.2 cr used
Done
#29

Repair Landing JSX

0m 59s0.2 cr used
Done
#25

Landing / Navigation

0m 24s0.8 cr used
Done
#22

Landing / Balance Plate

0m 45s0.8 cr used
Done
#23

Landing / Capability Register

0m 44s0.8 cr used
Done
#24

Landing / Entry Actions

0m 44s0.8 cr used
Done
#26

Landing / Footer

0m 18s0.8 cr used
Done
#27

Navigation

0m 24sCredits in parent
Done
#28

Footer

0m 18sCredits in parent
Done
#9

Sign Up

2m 23sCredits in subtasks
Error
#39

Repair Sign Up JSX

0m 25s0.2 cr used
Done
#31

Sign Up / Navigation Slot

0m 0s0.8 cr used
Done
#32

Sign Up / Registration Form

0m 35s0.8 cr used
Done
#33

Sign Up / Privacy Note

0m 18s0.8 cr used
Done
#34

Sign Up / Footer Slot

0m 0s0.8 cr used
Done
#10

Login

3m 3sCredits in subtasks
Done
#35

Login / Navigation Slot

0m 0s0.8 cr used
Done
#36

Login / Credential Sheet

0m 35s0.8 cr used
Done
#37

Login / Privacy Note

0m 19s0.8 cr used
Done
#38

Login / Footer Slot

0m 1s0.8 cr used
Done
#11

Onboarding

5m 55sCredits in subtasks
Done
#40

Onboarding / Header Slot

0m 0s0.8 cr used
Done
#41

Onboarding / Step Sequence

1m 8s0.8 cr used
Done
#42

Onboarding / Footer Slot

0m 0s0.8 cr used
Done
#12

Account Recovery

5m 51sCredits in subtasks
Done
#43

Account Recovery / Header

0m 0s0.8 cr used
Done
#44

Account Recovery / Form

0m 34s0.8 cr used
Done
#45

Account Recovery / Privacy Note

0m 23s0.8 cr used
Done
#46

Account Recovery / Footer

0m 0s0.8 cr used
Done
#13

Dashboard

9m 5sCredits in subtasks
Error
#14

Transaksi

18m 56sCredits in subtasks
Done
#67

Repair Transaksi JSX

0m 15s0.2 cr used
Done
#47

Transaksi / Navigation

0m 0s0.8 cr used
Done
#48

Transaksi / Header

0m 42s0.8 cr used
Done
#49

Transaksi / Ledger Register

2m 48s0.8 cr used
Done
#50

Transaksi / Form Sheet

3m 8s0.8 cr used
Done
#51

Transaksi / Import Export

2m 22s0.8 cr used
Done
#52

Transaksi / Footer

0m 0s0.8 cr used
Done
#15

Akun

17m 2sCredits in subtasks
Done
#53

Akun / Navigation Slot

0m 0s0.8 cr used
Done
#54

Akun / Register

1m 9s0.8 cr used
Done
#55

Akun / Balance Note

0m 49s0.8 cr used
Done
#56

Akun / Footer Slot

0m 1s0.8 cr used
Done
#16

Anggaran

18m 25sCredits in subtasks
Done
#57

Anggaran / Navigation Slot

0m 0s0.8 cr used
Done
#58

Anggaran / Page Band

0m 29s0.8 cr used
Done
#59

Anggaran / Budget Register

2m 18s0.8 cr used
Done
#60

Anggaran / Threshold Note

0m 25s0.8 cr used
Done
#61

Anggaran / Footer Slot

0m 0s0.8 cr used
Done
#17

Target Tabungan

19m 47sCredits in subtasks
Paused
#62

Target Tabungan / Navigation

0.8 cr needed
Paused
#63

Target Tabungan / Page Band

0.8 cr needed
Paused
#64

Target Tabungan / Goal Register

0.8 cr needed
Paused
#65

Target Tabungan / Goal Note

0.8 cr needed
Paused
#66

Target Tabungan / Footer

0.8 cr needed
Paused
#18

Tagihan

19m 47sCredits in subtasks
Paused
#68

Tagihan / Navigation Slot

0.8 cr needed
Paused
#69

Tagihan / Page Band

0.8 cr needed
Paused
#70

Tagihan / Bill Register

0.8 cr needed
Paused
#71

Tagihan / Recurrence Note

0.8 cr needed
Paused
#72

Tagihan / Footer Slot

0.8 cr needed
Paused
#19

Laporan

19m 47sCredits in subtasks
Paused
#73

Laporan / Navigation Slot

0.8 cr needed
Paused
#74

Laporan / Page Band

0.8 cr needed
Paused
#75

Laporan / Report Workspace

0.8 cr needed
Paused
#76

Laporan / Export Sheet

0.8 cr needed
Paused
#77

Laporan / Report Note

0.8 cr needed
Paused
#78

Laporan / Footer Slot

0.8 cr needed
Paused
#20

Kategori

19m 47sCredits in subtasks
Paused
#79

Kategori / Navigation Slot

0.8 cr needed
Paused
#80

Kategori / Page Band

0.8 cr needed
Paused
#81

Kategori / Register

0.8 cr needed
Paused
#82

Kategori / Note

0.8 cr needed
Paused
#83

Kategori / Footer Slot

0.8 cr needed
Paused
#21

Pengaturan

19m 47sCredits in subtasks
Paused
#84

Pengaturan / Navigation Slot

0.8 cr needed
Paused
#85

Pengaturan / Page Band

0.8 cr needed
Paused
#86

Pengaturan / Profile Panel

0.8 cr needed
Paused
#87

Pengaturan / Password Panel

0.8 cr needed
Paused
#88

Pengaturan / Preferences Panel

0.8 cr needed
Paused
#89

Pengaturan / Delete Account Panel

0.8 cr needed
Paused
#90

Pengaturan / Settings Note

0.8 cr needed
Paused
#91

Pengaturan / Footer Slot

0.8 cr needed
Paused
#5

Architecture

0.1 cr needed
Paused
#6

Workspace task plan

0.1 cr needed
Paused
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