A modern full-stack expense tracking application built with React + TypeScript, Express + Prisma + PostgreSQL, fully containerized using Docker, and deployed on Railway.
FinTrack includes secure authentication, expense insights, categories, interactive charts, and a smooth UI with dark-mode–first design.
- Login with JWT (access + refresh tokens).
- HttpOnly secure cookie storage.
- Fully protected API routes
- Add Cash-In or Cash-Out
- Category, amount, date, notes
- Edit or delete categories
- Recent transactions list
- 6-Month Trend Bar Chart
- Category Breakdown Donut Chart
- Monthly summary: Total In, Total Out, Net Balance
- “No Data” fallbacks for new users
- Fully responsive dark UI (TailwindCSS)
- Clean cards, charts, and forms
- React Hook Form + Zod validations
- Express.js REST API
- Prisma ORM + PostgreSQL
- Cookie-based authentication
- Secure CORS setup for Railway
- Fully Dockerized (frontend + backend)
- NGINX serving React build
- Railway for hosting + DB
- Prisma migrations + seeders
├── frontend/ # React + TypeScript + Tailwind + NGINX
│ ├── src/
│ ├── package.json
│ └── Dockerfile.prod
│
├── backend/ # Express + Prisma + JWT
│ ├── src/
│ ├── prisma/schema.prisma
│ ├── Dockerfile.prod
│ └── package.json
│
└── docker-compose.yml # Local development environment
- Login using your email + password
- Explore the Dashboard with monthly summaries and charts
- Add a new Expense with category, amount, date, etc.
- Manage Categories (create/edit/delete)
- Browse Recent Transactions or filter by month
docker compose up -d db
npm run dev //frontend/backend
docker build -t expense-backend ./backend
docker run -p 4000:4000 expense-backend
docker build -t expense-frontend ./frontend
docker run -p 80:80 expense-frontend