Skip to content

πŸ’°Modern personal finance tracker built with Next.js, React, TypeScript, and Zustand. Track expenses, analyze statistics, and manage your budget.

Notifications You must be signed in to change notification settings

helen-akateva/spendy-expense-tracker-web

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

152 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ’° Spendy - Personal Finance Tracker

Spendy is a modern web application for tracking personal finances, managing expenses and income, and visualizing financial statistics. Built with Next.js 16 and TypeScript, it provides an intuitive interface for managing your budget across all devices.

πŸ”— Links

Live Demo: https://spendy-expense-tracker-web.vercel.app
Backend Repository: spendy-expence-tracker-api

πŸ“‹ About the Project

Spendy helps users:

  • Track transactions - Record income and expenses with categories
  • Monitor balance - Real-time balance updates with every transaction
  • Analyze spending - Visual statistics and charts by category and period
  • Stay informed - Live currency exchange rates (UAH, USD, EUR)
  • Access anywhere - Fully responsive design for mobile, tablet, and desktop

πŸš€ Technologies Used

Tech Stack

Core Technologies

Next.js React TypeScript CSS Modules

State Management & Data Fetching

Zustand TanStack Query Axios

Forms & Validation

Formik Yup React Datepicker

UI Components & Visualization

Recharts React Hot Toast React Select React Icons

πŸ“¦ Installation and Setup

Prerequisites

  • Node.js 20+
  • npm or yarn

Installation Steps

  1. Clone the repository
git clone https://github.com/helen-akateva/spendy-expense-tracker-web.git
cd spendy-expense-tracker-web
  1. Install dependencies
npm install
# or
yarn install
  1. Run development server
npm run dev
# or
yarn dev

Open http://localhost:3000 in your browser.

  1. Build for production
npm run build
npm start
# or
yarn build
yarn start

πŸ—οΈ Project Structure

spendy-expense-tracker-web/
β”œβ”€β”€ app/                      # Next.js App Router
β”‚   β”œβ”€β”€ (auth)/              # Authentication pages (public routes)
β”‚   β”‚   β”œβ”€β”€ login/
β”‚   β”‚   └── register/
β”‚   β”œβ”€β”€ (dashboard)/         # Dashboard pages (private routes)
β”‚   β”‚   β”œβ”€β”€ transactions/    # Home tab - transaction list
β”‚   β”‚   β”œβ”€β”€ statistics/      # Statistics with charts
β”‚   β”‚   └── currency/        # Currency rates (mobile)
β”‚   β”œβ”€β”€ api/                 # API Route Handlers
β”‚   β”œβ”€β”€ globals.css          # Global styles and CSS variables
β”‚   └── layout.tsx           # Root layout
β”œβ”€β”€ components/              # React components
β”‚   β”œβ”€β”€ Auth/               # Login & Registration forms
β”‚   β”œβ”€β”€ HomeTab/            # Transaction list & items
β”‚   β”œβ”€β”€ StatisticsTab/      # Charts and statistics
β”‚   β”œβ”€β”€ UserAcountLayout/   # Header, Sidebar, Navigation
β”‚   β”œβ”€β”€ Modal*/             # Modal windows
β”‚   └── ...
β”œβ”€β”€ lib/                     # Utilities and services
β”‚   β”œβ”€β”€ api/                # API client functions
β”‚   β”œβ”€β”€ hooks/              # Custom React hooks
β”‚   β”œβ”€β”€ stores/             # Zustand stores
β”‚   β”œβ”€β”€ services/           # Business logic
β”‚   └── validations/        # Yup schemas
β”œβ”€β”€ public/                  # Static assets
β”œβ”€β”€ middleware.ts            # Route protection middleware
└── package.json

πŸ” Authentication

The app uses JWT-based authentication with:

  • Public routes: /login, /register
  • Private routes: /, /transactions, /statistics, /currency
  • Middleware protection: Automatic redirects based on auth status
  • Persistent sessions: Zustand with localStorage

🎨 Features

πŸ“Š Transaction Management

  • Add, edit, and delete transactions
  • Categorize as income or expenses
  • Add comments and select dates
  • Real-time balance updates

πŸ“ˆ Statistics & Analytics

  • Interactive charts (Recharts)
  • Filter by month and year
  • Toggle between income/expenses
  • Category breakdown

πŸ’± Currency Rates

  • Live exchange rates from Monobank API
  • Cached for 1 hour (localStorage)
  • UAH, USD, EUR support

πŸ“± Responsive Design

  • Mobile-first approach
  • Breakpoints: 320px, 768px, 1280px
  • Optimized layouts for all devices

🌐 Deployment

The application can be deployed on:

  • Vercel (recommended for Next.js)
  • Netlify
  • Custom server with Node.js

Deploy to Vercel

vercel deploy

πŸ“ API Integration

The app connects to a backend API with the following endpoints:

  • POST /api/auth/register - User registration
  • POST /api/auth/login - User login
  • POST /api/auth/logout - User logout
  • GET /api/users/current - Get current user
  • GET /api/transactions - Get all transactions
  • POST /api/transactions - Create transaction
  • PATCH /api/transactions/:id - Update transaction
  • DELETE /api/transactions/:id - Delete transaction
  • GET /api/summary/:period - Get statistics
  • GET /api/categories - Get categories

πŸ“„ License

This project was created for educational purposes.

πŸ‘₯ Team

This project was developed as the final capstone for our Fullstack Development course, showcasing our skills in both Backend and Frontend technologies:

πŸ‘©β€πŸ’» Olena Akatieva - Team Lead, Fullstack Developer (LinkedIn)
πŸ‘¨β€πŸ’» Denis Shulga - Scrum Master, Fullstack Developer (LinkedIn)
πŸ‘¨β€πŸ’» Roman Kniazhyk - Fullstack Developer (LinkedIn)
πŸ‘©β€πŸ’» Faina Kusiaka - Fullstack Developer (LinkedIn)
πŸ‘¨β€πŸ’» Anton Shuvalov - Fullstack Developer (LinkedIn)
πŸ‘©β€πŸ’» Anastasiia Mamatova - Fullstack Developer (LinkedIn)
πŸ‘¨β€πŸ’» Artem Ivanichenko - Fullstack Developer (LinkedIn)
πŸ‘¨β€πŸ’» Dmytro Kravchenko - Fullstack Developer (LinkedIn)

πŸ™ Acknowledgments

  • Design inspiration from modern fintech apps
  • Next.js team for the amazing framework
  • Monobank API for currency rates
  • All open-source libraries used in this project

Made with ❀️ for better financial management

About

πŸ’°Modern personal finance tracker built with Next.js, React, TypeScript, and Zustand. Track expenses, analyze statistics, and manage your budget.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 8