π° FinTrack β Personal Finance Dashboard
A modern, responsive personal finance dashboard built with React, TypeScript, and Tailwind CSS. Track your income, expenses, budgets, and savings goals in one beautiful interface.
Feature
Description
π Dashboard
Overview with stat cards, line chart, donut chart, recent transactions
π³ Transactions
Add income/expense, search, filter by category, delete entries
π Budget Tracker
Progress bars per category, warning states, overall summary
π― Goals
Create goals, add money, track progress
π Analytics
Area chart, radar chart, weekly bar chart, insight cards
π Reports
Monthly, budget, and goals reports with one-click PDF export
βοΈ Settings
Edit profile, currency, notification toggles β sidebar & navbar update instantly
π Notifications
Bell dropdown with alerts
π Search
Global search navigates to any page
π Dynamic Greeting
Changes Morning / Afternoon / Evening based on time
πΎ Persistent Data
localStorage saves settings across sessions
π± Responsive
Works on desktop and mobile
β¨ Animations
Framer Motion on every component
π Sidebar
Collapsible with icon-only mode
Tool
Version
Purpose
React
19
Frontend framework
TypeScript
6
Type safety
Vite
8
Build tool
Tailwind CSS
3
Styling + design tokens
Framer Motion
12
Animations
Recharts
3
Charts
Lucide React
1
Icons
React Router
v7
Navigation
jsPDF
4
PDF export
Storybook
10
Component stories & docs
Vercel
β
Deployment
Token
Hex
Usage
Primary
#6366F1
Buttons, active states, highlights
Success
#22C55E
Income, positive states, goals
Danger
#EF4444
Expenses, alerts, budget exceeded
Warning
#F59E0B
Budget warnings, caution states
Dark
#0F172A
Sidebar, text, headings
Light
#F8FAFC
Background, hover states
Style
Font
Weight
Size
H1
Inter
Bold
32px
H2
Inter
SemiBold
24px
Body
Inter
Regular
14px
Small
Inter
Regular
12px
π¦ Installation & Setup
git clone https://github.com/Sarika-stack23/fintrack
cd fintrack
npm install
Open http://localhost:5173
Open http://localhost:6006
fintrack/
βββ public/
βββ src/
β βββ components/
β β βββ ui/
β β β βββ Toggle.tsx # Animated toggle switch
β β β βββ AnimatedCounter.tsx
β β β βββ Loader.tsx
β β β βββ PageTransition.tsx
β β β βββ ErrorBoundary.tsx
β β βββ charts/
β β β βββ LineChart.tsx # Income vs Expense
β β β βββ DonutChart.tsx # Spending by category
β β β βββ BarChart.tsx # Monthly overview
β β βββ cards/
β β β βββ StatCard.tsx # Balance/Income/Expense/Savings
β β β βββ BudgetCard.tsx # Budget progress card
β β β βββ GoalCard.tsx # Savings goal card
β β βββ layout/
β β βββ Sidebar.tsx # Collapsible navigation (reactive to profile changes)
β β βββ Navbar.tsx # Top bar with search/notifications (reactive)
β βββ pages/
β β βββ Dashboard.tsx
β β βββ Transactions.tsx
β β βββ Budget.tsx
β β βββ Goals.tsx
β β βββ Analytics.tsx
β β βββ Reports.tsx # PDF export via jsPDF
β β βββ Settings.tsx # Updates global context on save
β β βββ NotFound.tsx
β βββ context/
β β βββ AppContext.tsx # Global state: transactions, budgets, goals, profile
β βββ data/
β β βββ mockData.ts
β βββ hooks/
β β βββ useTransactions.ts
β β βββ useBudget.ts
β βββ stories/ # Storybook stories for all components
β βββ App.tsx
β βββ main.tsx
βββ .storybook/
βββ tailwind.config.js
βββ vite.config.ts
βββ README.md
ποΈ Architecture Decisions
Decision
Choice
Reason
Build Tool
Vite 8
Fast HMR, instant dev server
Language
TypeScript
Type safety, better DX
Styling
Tailwind CSS
Utility-first, maps directly to design tokens
Animation
Framer Motion
Most powerful React animation library
Charts
Recharts
Lightweight, composable, React-native
Icons
Lucide React
Clean, consistent, tree-shakeable
State
Context API
No over-engineering for this scale
Profile State
React Context
Sidebar & Navbar update instantly without page reload
Persistence
localStorage
Simple client-side persistence
PDF Export
jsPDF
Lightweight, no server needed
Deployment
Vercel
Free tier, instant deploys
π Profile Reactive Update Flow
When the user saves their name/email in Settings :
Settings.tsx β updateProfile() in AppContext
β
AppContext updates profileName & profileEmail state
β
Sidebar.tsx reads profileName via useApp() β re-renders instantly
Navbar.tsx reads profileName via useApp() β re-renders instantly
No page reload required. Changes are visible immediately across all components.
Service
Plan
Monthly Cost
Vercel Hosting
Free
βΉ0
Figma
Free
βΉ0
GitHub
Free
βΉ0
Domain (optional)
.app domain
~βΉ67/month
Total
βΉ0 β βΉ67/month
β
Semantic HTML (nav, main, header, section)
β
WCAG AA color contrast ratios
β
Keyboard navigable interface
β
aria-labels on all icon buttons
β
Skip to main content link
β
Focus states visible
β
Screen reader friendly markup
β
Responsive on all screen sizes
4 stat cards (Balance, Income, Expense, Savings)
Quick income/expense/net savings strip
Line chart (Income vs Expense β 6 months)
Donut chart (Spending by category)
Recent transactions list β navigates to Transactions
Search by name
Filter by category (All / Food / Income / Entertainment / Utilities)
Add new transaction (Income or Expense)
Delete any transaction on hover
Real-time table update
Overall budget summary card
Per-category progress bars
Color coded (Green / Orange / Red based on usage %)
Warning states at 70% and 90%
Create new savings goals
Add money to existing goals
Progress bars with percentage
Goal reached celebration state
Insight cards (best month, highest spending, etc.)
Area chart β Income vs Expense vs Savings
Weekly spending bar chart
Financial health radar chart
Monthly comparison bar chart
Switch between Monthly / Budget / Goals report views
One-click Export PDF (downloads a formatted PDF instantly)
Edit name and email β sidebar and navbar update instantly on save
Change currency
Notification toggles
Appearance toggles
π Storybook Components
Stories are written for all major components:
Cards/StatCard β Balance, Income, Expense, Savings variants
Cards/BudgetCard β Safe, Warning, Danger states
Cards/GoalCard β Phone, Trip, Laptop goals
UI/Toggle β On / Off states
MIT License β free to use for learning or inspiration.
Built with β€οΈ for the HiDevs Frontend Engineer Internship Challenge