A modern, full-stack expense tracking application with budget management, real-time analytics, and beautiful data visualizations.
- β Add, Edit & Delete Expenses - Manage transactions with detailed information
- β Advanced Filtering - Filter by category, date range, payment method
- β Payment Methods - Support for cash, credit card, debit card, online transfers
- β Expense History - Complete transaction history with pagination
- β Tags & Notes - Add custom tags and notes to expenses
- β Set Monthly Budgets - Define spending limits per category
- β Budget Alerts - Get notified when spending reaches threshold
- β Progress Tracking - Visual progress bars for budget utilization
- β Budget Status - Real-time tracking of spent vs. limit
- β Custom Thresholds - Set alert triggers at any percentage
- β Daily Spending Chart - Interactive line chart for spending trends
- β Category Breakdown - Pie chart showing category-wise spending
- β Monthly Summaries - Overview of monthly spending patterns
- β Statistics Dashboard - Real-time spending metrics
- β Spending Insights - Category-wise analysis and percentages
- β Secure Authentication - JWT-based login & registration
- β Password Reset - Forgot password with email verification
- β Profile Management - Update personal information
- β Currency Selection - Support for multiple currencies
- β Custom Categories - Create custom expense categories
- β Responsive Design - Works on mobile, tablet, and desktop
- β Beautiful Interface - Modern design with Tailwind CSS
- β Dark Mode Ready - CSS variables for easy theming
- β Toast Notifications - User-friendly feedback messages
- β Loading States - Smooth loading indicators
- β Form Validation - Client and server-side validation
- Framework: Next.js 14 - React framework with SSR
- Language: TypeScript - Type-safe JavaScript
- Styling: Tailwind CSS - Utility-first CSS
- State Management: Zustand - Lightweight state management
- HTTP Client: Axios - Promise-based HTTP client
- Charts: Recharts - React charting library
- Icons: Lucide React - Beautiful icon library
- Notifications: React Hot Toast - Toast notifications
- Runtime: Node.js - JavaScript runtime
- Framework: Express.js - Web framework
- Database: PostgreSQL - Relational database
- Cloud Database: Supabase - PostgreSQL as a service
- Authentication: JWT - JSON Web Tokens
- Password Hashing: bcryptjs - Password hashing
- Validation: Joi - Schema validation
- Email: Nodemailer - Email sending
- Node.js >= 18.0.0
- PostgreSQL 12+ or Supabase account
- npm or yarn
- Clone the repository
git clone https://github.com/Asucexio/expense-tracker.git
cd expense-tracker- Setup Backend
cd expense-tracker-backend
# Install dependencies
npm install
# Configure environment
cp .env.example .env
# Edit .env with your database credentials
# Initialize database
psql expense_tracker < database.sql
# Start server
npm run devBackend runs on http://localhost:5000
- Setup Frontend
cd ../expense-tracker-frontend
# Install dependencies
npm install
# Configure environment
cp .env.example .env.local
# Edit .env.local with your API URL
# Start development server
npm run devFrontend runs on http://localhost:3000
- Open in Browser
http://localhost:3000
- Click "Sign Up" on landing page
- Enter name, email, and password
- Account created with default expense categories
- Redirected to dashboard
- Go to Expenses section
- Click "Add Expense"
- Fill in details (category, amount, date, payment method)
- Click "Add Expense"
- View in expense list and dashboard
- Go to Budgets section
- Click "New Budget"
- Select category and set monthly limit
- Set alert threshold (optional)
- Click "Create Budget"
- Track spending against budget
- Go to Dashboard
- See summary cards (total spent, transactions, active budgets)
- View daily spending chart
- Check category breakdown pie chart
- See spending by category table
- Go to Login page
- Click "Forgot password?"
- Enter email address
- Check email for reset link
- Click link and set new password
- Password Hashing: Passwords hashed with bcryptjs (10 rounds)
- JWT Authentication: Secure token-based authentication
- Token Refresh: Automatic token refresh on expiry
- SQL Injection Prevention: Parameterized queries
- Input Validation: Server-side validation with Joi
- CORS Protection: CORS middleware configured
- Password Reset: Secure token-based password reset
- Email Verification: Reset links sent via email
POST /api/auth/register Register new user
POST /api/auth/login Login user
POST /api/auth/refresh-token Refresh access token
GET /api/auth/me Get current user
POST /api/auth/forgot-password Request password reset
POST /api/auth/reset-password Reset password with token
POST /api/expenses Create expense
GET /api/expenses Get all expenses (with filters)
GET /api/expenses/:id Get single expense
PUT /api/expenses/:id Update expense
DELETE /api/expenses/:id Delete expense
GET /api/expenses/stats/summary Get expense statistics
POST /api/budgets Set budget
GET /api/budgets Get all budgets
GET /api/budgets/:categoryId/status Get budget status
DELETE /api/budgets/:id Delete budget
GET /api/categories Get all categories
POST /api/categories Create custom category
PUT /api/categories/:id Update category
DELETE /api/categories/:id Delete category
GET /api/users/me Get user profile
PUT /api/users/profile Update profile
POST /api/users/password/change Change password
GET /api/users/summary/dashboard Get dashboard summary
npm i -g vercel
vercel- Connect GitHub repository
- Create new project
- Add PostgreSQL add-on
- Set environment variables
- Deploy
docker build -t expense-tracker-backend .
docker run -p 5000:5000 expense-tracker-backendContributions are welcome! Here's how to contribute:
- Fork the repository
git clone https://github.com/Asucexio/expense-tracker.git- Create a feature branch
git checkout -b feature/amazing-feature- Make your changes
git add .
git commit -m 'Add amazing feature'- Push to branch
git push origin feature/amazing-feature- Open a Pull Request
- Follow existing code style
- Write meaningful commit messages
- Test your changes
- Update documentation as needed
- Add comments for complex logic
This project is licensed under the MIT License - see the LICENSE file for details.
MIT License
Copyright (c) 2026 [Asmamew Admasu]
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
This project demonstrates:
- β Full-stack web development
- β RESTful API design
- β JWT authentication
- β Database design & relationships
- β React hooks & state management
- β TypeScript for type safety
- β Responsive web design
- β Form handling & validation
- β Error handling & logging
- β Security best practices Great for learning or as a portfolio project!
- Issues: GitHub Issues
- Email: asmamewadmasuofficial@gmail.com
- Mobile app (React Native)
- Dark mode implementation
- Recurring expenses
- Expense reports (PDF/CSV)
- Data export functionality
- Multi-user shared budgets
- Receipt upload feature
- Push notifications
- Advanced filtering & search
- Spending predictions
- Built with Next.js
- Styled with Tailwind CSS
- Charts by Recharts
- Database by Supabase
- Inspired by popular finance apps
- Total Files: 40+
- Lines of Code: 3000+
- API Endpoints: 22
- Database Tables: 8
- Frontend Pages: 10+
- Development Time: Complete & production-ready
- Processor: 1.5 GHz dual-core
- RAM: 2 GB
- Storage: 200 MB
- Node.js: 18.0.0+
- PostgreSQL: 12+
- Processor: 2.5 GHz quad-core
- RAM: 8 GB
- Storage: 1 GB SSD
- Node.js: 20+
- PostgreSQL: 15+
Give a βοΈ if this project helped you!
# Star the repo
git star Asucexio/expense-tracker
# Fork and contribute
git fork Asucexio/expense-trackerHappy Expense Tracking! π°
Made with β€οΈ by Asmamew Admasu
- β User authentication
- β Expense management
- β Budget tracking
- β Analytics dashboard
- β Password reset
- β Responsive design
- Initial release
- Core features
- Beta testing phase
- Live Demo: [_(https://expense-tracker-lilac-nine-36.vercel.app/)]
- GitHub: https://github.com/Asucexio/expense-tracker
- Issues: GitHub Issues
Last Updated: May 2026 Maintained By: Asmamew Admasu