Skip to content

anvi-sha675/FinTrack

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

13 Commits
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ’° FinTrack β€” Personal Finance Dashboard

FinTrack is a highly interactive and production-ready financial tracking application built with React 19. It delivers a complete finance management experience focused on performance, scalability, and seamless user interaction.


πŸš€ Overview of Approach

This project goes beyond basic CRUD functionality and focuses on building a polished, scalable frontend architecture.

  • Custom dark-first design system using Tailwind CSS and CSS variables
  • Fully decoupled architecture (UI, state, data layers separated)
  • Zustand for global state management with localStorage persistence
  • Role-based UI system (Admin vs Viewer)
  • Chart.js for high-performance charts
  • Dedicated responsive system in responsive.css

πŸ”„ Application Flow

User Action
    β”‚
    β–Ό
React Component
    β”‚
    β–Ό
Zustand Store (useStore.js)
    β”‚
    β”œβ”€β”€ Update State
    β”œβ”€β”€ Persist to localStorage
    β”‚
    β–Ό
Derived Data (filters, stats)
    β”‚
    β–Ό
Component Re-render
    β”‚
    β–Ό
UI + Charts Update

πŸ” Frontend Flow (Detailed)

User Interaction (click / input)
        β”‚
        β–Ό
Event Handler (onClick / onChange)
        β”‚
        β–Ό
Zustand Store Function
        β”‚
        β”œβ”€β”€ updateTransactions
        β”œβ”€β”€ setTheme
        β”œβ”€β”€ setRole
        β”‚
        β–Ό
State Updated
        β”‚
        β–Ό
localStorage Sync
        β”‚
        β–Ό
Selectors / Getters Execute
        β”‚
        β–Ό
UI + Charts Re-render

✨ Core Features

πŸ“Š Dashboard

  • KPI summary cards:
    • Total Balance
    • Total Income
    • Total Expenses
    • Savings Rate
  • Balance trend line chart (time-based visualization)
  • Spending by category donut chart
  • Monthly income vs expenses bar chart
  • Auto-generated financial insights panel

πŸ’³ Transactions

  • Fully sortable transaction table
  • Real-time global search across all fields
  • Category-based filtering
  • Income/Expense type filters
  • Admin capabilities:
    • Add new transaction
    • Edit existing transaction
    • Delete transactions with confirmation
  • Viewer mode:
    • Read-only access with restricted controls

πŸ“ˆ Insights

  • Savings analytics overview
  • Category-wise expense breakdown
  • Monthly savings rate visualization
  • Data-driven financial insights

βš™οΈ Settings

  • Profile editor (name, email, preferences)
  • Dark / Light theme toggle
  • Role switcher (Admin / Viewer)
  • Notification preferences
  • Data reset to default state

πŸ”” Notification Flow

Event Triggered
      β”‚
      β–Ό
Add Notification to Store
      β”‚
      β–Ό
Unread Count Updated
      β”‚
      β–Ό
UI Badge Updates
      β”‚
      β–Ό
User Click β†’ Mark as Read

πŸŒ™ Theme System Flow

User Toggles Theme
        β”‚
        β–Ό
Zustand setTheme()
        β”‚
        β–Ό
Update body class
        β”‚
        β–Ό
CSS Variables Switch
        β”‚
        β–Ό
UI Repaints Instantly
        β”‚
        β–Ό
Charts Re-render with new theme

πŸ“€ Export Flow

User Click Export
        β”‚
        β–Ό
Get Filtered Transactions
        β”‚
        β–Ό
Convert to CSV / JSON
        β”‚
        β–Ό
Trigger File Download

πŸ—οΈ Architecture

STYLE LAYER
- index.css
- responsive.css
- Tailwind

STATE LAYER
- Zustand store
- localStorage
- getters

DATA LAYER
- transactions.js
- categories
- monthly data

LAYOUT LAYER
- App.jsx
- Sidebar.jsx
- Topbar.jsx

PAGE LAYER
- DashboardPage
- TransactionsPage
- InsightsPage
- SettingsPage

COMPONENT LAYER
- Charts
- UI
- Transactions

πŸ”„ Data Flow

Seed Data (transactions.js)
        β”‚
        β–Ό
Zustand Store
        β”‚
        β”œβ”€β”€ CRUD operations
        β”œβ”€β”€ filtering
        β”œβ”€β”€ stats calculation
        β”‚
        β–Ό
Components consume state
        β”‚
        β–Ό
UI Rendering + Charts

πŸ“Š Charts

  • πŸ“ˆ Line chart for tracking balance trends over time
  • 🍩 Donut chart for visualizing spending distribution by category
  • πŸ“Š Bar chart for comparing monthly income vs expenses
  • πŸ’Ή Savings rate visualization with performance indicators
  • πŸ“‰ Category breakdown using horizontal bars for ranked spending

πŸ—‚οΈ Project Structure

frontend/
β”œβ”€β”€ public/
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ components/
β”‚   β”œβ”€β”€ data/
β”‚   β”œβ”€β”€ hooks/
β”‚   β”œβ”€β”€ pages/
β”‚   β”œβ”€β”€ store/
β”‚   β”œβ”€β”€ utils/
β”‚   β”œβ”€β”€ App.jsx
β”‚   β”œβ”€β”€ main.jsx
β”‚   β”œβ”€β”€ index.css
β”‚   └── responsive.css
β”œβ”€β”€ index.html
β”œβ”€β”€ vite.config.js
└── package.json

πŸ› οΈ Tech Stack

Layer Tool Purpose
UI React 19 Rendering
Build Vite Dev and build
Style Tailwind CSS Styling
Theme CSS Variables Theming
Charts Chart.js Visualization
State Zustand Global state
Icons Lucide Icons
Dates date-fns Date utilities
Persist localStorage Data storage

πŸ” Role-Based Access

Capability Admin Viewer
View data Yes Yes
Export Yes Yes
Add/Edit/Delete Yes No
UI controls Full Limited

πŸ“± Responsive Design

Device Behaviour
Mobile Drawer sidebar, stacked layout
Tablet Balanced layout
Desktop Full dashboard view
Print Clean print version

βš™οΈ Setup

npm create vite@latest . -- --template react
npm install

npm install -D tailwindcss postcss autoprefixer
npx tailwindcss init -p

npm install chart.js react-chartjs-2 zustand date-fns lucide-react

npm run dev

πŸ“œ Scripts

Command Description
npm run dev Start dev server
npm run build Production build
npm run preview Preview build

πŸ’‘ Key Decisions

  • Zustand for minimal and efficient global state management with no boilerplate
  • CSS variables for scalable and maintainable theming across dark and light modes
  • Chart.js for high-performance, flexible, canvas-based data visualisation
  • Separate responsive.css file to keep components clean and free of media queries
  • localStorage for seamless data persistence without requiring a backend

🌐 Environment

Item Detail
Backend None
Storage localStorage
Port 5173
Deployment Static hosting

πŸ“Έ Screenshots

🏠 Viewer Dashboard Page

Viewer Dashboard

πŸ’³ Transactions Page

Transactions

πŸ“ˆ Insights Page

Insights

🏠 Admin Dashboard Page

Admin Dashboard

πŸŒ™ Theme Toggle to Light

Light Theme Change

βš™οΈ Settings Page

Settings


Built with React Β· Tailwind Β· Zustand Β· Chart.js Β· Lucide Β· Vite Β· date-fns
FinTrack
April 2026

About

FinTrack is a modern personal finance dashboard built with React, Tailwind CSS, Chart.js, and Zustand, offering real-time insights, transaction management, and interactive data visualization.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors