Skip to content

Asucexio/expense-tracker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

18 Commits
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ’° Vaulto Expens Tracke

A modern, full-stack expense tracking application with budget management, real-time analytics, and beautiful data visualizations.

License: MIT Node.js Version React Version GitHub stars

✨ Features

πŸ’³ Expense Management

  • βœ… 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

πŸ’Ό Budget Tracking

  • βœ… 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

πŸ“Š Analytics & Visualization

  • βœ… 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

πŸ‘€ User Features

  • βœ… 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

🎨 UI/UX

  • βœ… 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

πŸ›  Tech Stack

Frontend

Backend

  • 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

πŸ“Έ Screenshots

Landing Page

Uploading landing<img width="2877" height="1528" alt="dasshbord" src="https://github.com/user-attachments/assets/9cd2c5a7-49e9-4821-b961-fdf8ee66faf6" /> page.png…

Dashboard

dasshbord

πŸš€ Quick Start

Prerequisites

  • Node.js >= 18.0.0
  • PostgreSQL 12+ or Supabase account
  • npm or yarn

Installation

  1. Clone the repository
git clone https://github.com/Asucexio/expense-tracker.git
cd expense-tracker
  1. 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 dev

Backend runs on http://localhost:5000

  1. 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 dev

Frontend runs on http://localhost:3000

  1. Open in Browser
http://localhost:3000

πŸ“š Usage

Creating an Account

  1. Click "Sign Up" on landing page
  2. Enter name, email, and password
  3. Account created with default expense categories
  4. Redirected to dashboard

Adding an Expense

  1. Go to Expenses section
  2. Click "Add Expense"
  3. Fill in details (category, amount, date, payment method)
  4. Click "Add Expense"
  5. View in expense list and dashboard

Setting a Budget

  1. Go to Budgets section
  2. Click "New Budget"
  3. Select category and set monthly limit
  4. Set alert threshold (optional)
  5. Click "Create Budget"
  6. Track spending against budget

Viewing Analytics

  1. Go to Dashboard
  2. See summary cards (total spent, transactions, active budgets)
  3. View daily spending chart
  4. Check category breakdown pie chart
  5. See spending by category table

Resetting Password

  1. Go to Login page
  2. Click "Forgot password?"
  3. Enter email address
  4. Check email for reset link
  5. Click link and set new password

πŸ” Security Features

  • 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

πŸ“– API Documentation

Authentication Endpoints

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

Expense Endpoints

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

Budget Endpoints

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

Category Endpoints

GET    /api/categories                 Get all categories
POST   /api/categories                 Create custom category
PUT    /api/categories/:id             Update category
DELETE /api/categories/:id             Delete category

User Endpoints

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

🌐 Deployment

Deploy Frontend to Vercel

npm i -g vercel
vercel

Deploy Backend to Railway

  1. Connect GitHub repository
  2. Create new project
  3. Add PostgreSQL add-on
  4. Set environment variables
  5. Deploy

Deploy with Docker

docker build -t expense-tracker-backend .
docker run -p 5000:5000 expense-tracker-backend

🀝 Contributing

Contributions are welcome! Here's how to contribute:

  1. Fork the repository
git clone https://github.com/Asucexio/expense-tracker.git
  1. Create a feature branch
git checkout -b feature/amazing-feature
  1. Make your changes
git add .
git commit -m 'Add amazing feature'
  1. Push to branch
git push origin feature/amazing-feature
  1. Open a Pull Request

Development Guidelines

  • Follow existing code style
  • Write meaningful commit messages
  • Test your changes
  • Update documentation as needed
  • Add comments for complex logic

πŸ“ License

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.

πŸŽ“ Learning Resources

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!

πŸ“ž Support


πŸ—ΊοΈ Roadmap

  • 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

πŸ™ Acknowledgments


πŸ“Š Project Statistics

  • Total Files: 40+
  • Lines of Code: 3000+
  • API Endpoints: 22
  • Database Tables: 8
  • Frontend Pages: 10+
  • Development Time: Complete & production-ready

πŸ’» System Requirements

Minimum

  • Processor: 1.5 GHz dual-core
  • RAM: 2 GB
  • Storage: 200 MB
  • Node.js: 18.0.0+
  • PostgreSQL: 12+

Recommended

  • Processor: 2.5 GHz quad-core
  • RAM: 8 GB
  • Storage: 1 GB SSD
  • Node.js: 20+
  • PostgreSQL: 15+

⭐ Show Your Support

Give a ⭐️ if this project helped you!

# Star the repo
git star Asucexio/expense-tracker
 
# Fork and contribute
git fork Asucexio/expense-tracker


Happy Expense Tracking! πŸ’°

Made with ❀️ by Asmamew Admasu


πŸ“… Version History

v1.0.0 (Current)

  • βœ… User authentication
  • βœ… Expense management
  • βœ… Budget tracking
  • βœ… Analytics dashboard
  • βœ… Password reset
  • βœ… Responsive design

v0.9.0 (Beta)

  • Initial release
  • Core features
  • Beta testing phase

πŸ”— Links


Last Updated: May 2026 Maintained By: Asmamew Admasu

About

πŸ’° Full-stack expense tracker with Next.js, Express, PostgreSQL & Supabase

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors