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.
Live Demo: https://spendy-expense-tracker-web.vercel.app
Backend Repository: spendy-expence-tracker-api
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
- Node.js 20+
- npm or yarn
- Clone the repository
git clone https://github.com/helen-akateva/spendy-expense-tracker-web.git
cd spendy-expense-tracker-web- Install dependencies
npm install
# or
yarn install- Run development server
npm run dev
# or
yarn devOpen http://localhost:3000 in your browser.
- Build for production
npm run build
npm start
# or
yarn build
yarn startspendy-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
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
- Add, edit, and delete transactions
- Categorize as income or expenses
- Add comments and select dates
- Real-time balance updates
- Interactive charts (Recharts)
- Filter by month and year
- Toggle between income/expenses
- Category breakdown
- Live exchange rates from Monobank API
- Cached for 1 hour (localStorage)
- UAH, USD, EUR support
- Mobile-first approach
- Breakpoints: 320px, 768px, 1280px
- Optimized layouts for all devices
The application can be deployed on:
- Vercel (recommended for Next.js)
- Netlify
- Custom server with Node.js
vercel deployThe app connects to a backend API with the following endpoints:
POST /api/auth/register- User registrationPOST /api/auth/login- User loginPOST /api/auth/logout- User logoutGET /api/users/current- Get current userGET /api/transactions- Get all transactionsPOST /api/transactions- Create transactionPATCH /api/transactions/:id- Update transactionDELETE /api/transactions/:id- Delete transactionGET /api/summary/:period- Get statisticsGET /api/categories- Get categories
This project was created for educational purposes.
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)
- 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