TrackMint is a modern expense tracking web app built with React, TypeScript, Vite, Tailwind CSS, Zustand, and Supabase-compatible APIs. It helps users log expenses, monitor monthly budgets, and view spending insights through a polished dashboard, calendar view, and analytics charts.
This project is designed for everyday personal finance tracking with a simple and modern interface. It supports:
- Secure authentication flow for login and signup
- Expense creation, filtering, and deletion
- Monthly budget tracking and spending summaries
- Calendar-based expense browsing
- Visual charts for category and monthly spending trends
- Optional cloud sync through Supabase
- Progressive Web App (PWA) support for installation and offline-friendly use
- React 19
- TypeScript
- Vite
- Tailwind CSS
- Zustand for state management
- React Router
- Recharts for charts
- Supabase for optional backend sync
- Vite PWA for installable web app behavior
- Authentication: login and signup experience with persistent sessions
- Dashboard: total spending, month-to-date totals, remaining budget, and recent transactions
- Budget controls: set monthly budget, reset month, and monitor progress
- Calendar view: quickly inspect expenses by day
- Insights: category breakdown and trend charts
- Local-first mode: data can be stored in browser localStorage and synced across tabs
- Cloud mode: connect to Supabase for multi-device sync and realtime updates
- src/components: reusable UI components and page sections
- src/pages: route-level pages such as dashboard, calendar, auth, and profile
- src/store: global state for auth, finance, and UI behavior
- src/services/api: abstraction for local storage and Supabase-backed data access
- src/lib: helpers for dates, IDs, money formatting, and storage
- src/types: shared TypeScript models
- Node.js 18 or newer
- npm or pnpm
- Clone the repository
- Install dependencies:
npm installStart the development server:
npm run devThen open the local Vite URL shown in the terminal (usually http://localhost:5173).
npm run buildnpm run lintBy default, the app runs in local-only mode. In this mode:
- expenses and budgets are saved in browser localStorage
- data syncs across tabs using BroadcastChannel
- no backend setup is required
To enable cloud-backed storage and realtime sync:
- Create a Supabase project
- Apply the schema from SUPABASE_SCHEMA.md
- Create a .env file in the project root with:
VITE_SUPABASE_URL=your_supabase_project_url
VITE_SUPABASE_ANON_KEY=your_supabase_anon_key- Start the app again with:
npm run dev- npm run dev: start the development server
- npm run build: create a production build
- npm run preview: preview the production build locally
- npm run lint: run ESLint checks
The app uses a clean, component-based architecture and is suitable as a foundation for a personal finance product, a portfolio project, or a starting point for more advanced budgeting features.