Skip to content

Sarika-stack23/fintrack

Repository files navigation

πŸ’° 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.


πŸ”— Important Links

Resource Link
🌐 Live Demo https://fintrack-dashboard-tau.vercel.app
🎨 Figma Design https://www.figma.com/design/GMBMshLwOTC4R3QWERtmz0/Fintrack
▢️ Figma Prototype https://www.figma.com/proto/GMBMshLwOTC4R3QWERtmz0/Fintrack
πŸ’» GitHub Repo https://github.com/Sarika-stack23/fintrack
πŸŽ₯ Video Walkthrough https://drive.google.com/file/d/1rh8A0UVmAqfEIuRHm_xIxQctlHVXqyVr/view?usp=drive_link

✨ Features

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

πŸš€ Tech Stack

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

🎨 Design System

Colors

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

Typography

Style Font Weight Size
H1 Inter Bold 32px
H2 Inter SemiBold 24px
Body Inter Regular 14px
Small Inter Regular 12px

πŸ“¦ Installation & Setup

Prerequisites

  • Node.js 20+
  • npm 9+

Clone & Install

git clone https://github.com/Sarika-stack23/fintrack
cd fintrack
npm install

Run Development Server

npm run dev

Open http://localhost:5173

Build for Production

npm run build

Run Storybook

npm run storybook

Open http://localhost:6006

Deploy to Vercel

vercel --prod

πŸ“ Project Structure

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.


πŸ’° Cost Analysis

Service Plan Monthly Cost
Vercel Hosting Free β‚Ή0
Figma Free β‚Ή0
GitHub Free β‚Ή0
Domain (optional) .app domain ~β‚Ή67/month
Total β‚Ή0 – β‚Ή67/month

βœ… Accessibility

  • βœ… 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

🎯 Pages Overview

1. Dashboard

  • 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

2. 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

3. Budget Tracker

  • Overall budget summary card
  • Per-category progress bars
  • Color coded (Green / Orange / Red based on usage %)
  • Warning states at 70% and 90%

4. Goals

  • Create new savings goals
  • Add money to existing goals
  • Progress bars with percentage
  • Goal reached celebration state

5. Analytics

  • 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

6. Reports

  • Switch between Monthly / Budget / Goals report views
  • One-click Export PDF (downloads a formatted PDF instantly)

7. Settings

  • 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

πŸ“œ License

MIT License β€” free to use for learning or inspiration.


Built with ❀️ for the HiDevs Frontend Engineer Internship Challenge

About

A fully responsive personal finance dashboard with budgeting, transaction tracking, analytics, and goal management powered by React, TypeScript, and modern UI tools.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors