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

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors