Loading repository data…
Loading repository data…
wasay-khanzada / repository
A full-stack personal finance app to track income, expenses, and budgets with real-time analytics - built with React, TypeScript, Node.js, Express & MongoDB.
A transparent discovery signal based on current public GitHub metadata.
This score does not audit code, security, maintainers, documentation quality, or suitability. Verify the repository and its current documentation before adoption.
ExpensePilot is a full-stack personal finance application that helps users manage income, expenses, and budgets — and understand their financial health at a glance. It pairs a modern, glassmorphic, dark-mode-only React interface with a secure Node.js/Express + MongoDB backend, giving users a calm, focused space to log transactions, set monthly limits, and explore spending trends through interactive charts.
Built as a full end-to-end product: authentication, protected routes, RESTful APIs, persistent data models, and a polished analytics dashboard — all in one codebase.
| Tech | Purpose |
|---|---|
| React 19 | UI library |
| Vite | Build tool & dev server |
| TypeScript | Type safety |
| TanStack Router | Route-based navigation |
| TanStack Query | Server state & caching |
| Tailwind CSS | Utility-first styling |
| Recharts | Data visualization |
| Sonner | Toast notifications |
| Tech | Purpose |
|---|---|
| Node.js | Runtime |
| Express.js |
| REST API framework |
| MongoDB + Mongoose | Database & ODM |
| JWT (httpOnly cookies) | Authentication |
ExpensePilot/
├── backend/
│ ├── controllers/ # Auth, income, expense, budget, analytics logic
│ ├── models/ # Mongoose schemas (User, Income, Expense, Budget)
│ ├── routes/ # API route registration
│ ├── middleware/ # Auth & error handling
│ └── server.js # Express app entry point
│
└── frontend/
├── src/
│ ├── routes/ # Page-level routes (dashboard, income, expenses, budget, analytics, auth)
│ ├── components/ # Shared UI shell, sidebar, layouts, icons
│ └── lib/
│ ├── api.ts # API client
│ └── store.ts # Client-side UI/session state
└── vite.config.ts
| Model | Fields |
|---|---|
| User | account details, hashed password, currency preference |
| Income | amount, category, description, date, owner |
| Expense | amount, category, description, date, owner |
| Budget | one monthly budget per user, category limits |
# Clone the repository
git clone https://github.com/wasay-khanzada/ExpensePilot.git
cd ExpensePilot
# Install backend dependencies
cd backend
npm install
# Install frontend dependencies
cd ../frontend
npm install
Create a .env file inside backend/:
PORT=5000
MONGO_URI=your_mongodb_connection_string
JWT_SECRET=your_jwt_secret
NODE_ENV=development
Create a .env file inside frontend/ (if applicable):
VITE_API_BASE_URL=http://localhost:5000/api
# Start the backend (from /backend)
npm run dev
# Start the frontend (from /frontend, in a separate terminal)
npm run dev
The frontend will typically run at http://localhost:5173 and the backend API at http://localhost:5000.
See CHANGELOG.md for release history.
Contributions, issues, and feature requests are welcome! Please read CONTRIBUTING.md before submitting a pull request.
This project is licensed under the MIT License.
Wasay Khanzada GitHub: @wasay-khanzada