All Projects
Open Source 2026
Invoice Payment Tracker
A web app for Indonesian SMEs to manage invoices and track client payment status digitally - built as a freelance portfolio project with a live demo.
Java Spring Boot React PostgreSQL JWT
Overview
Invoice Payment Tracker is a full-stack web application that helps Indonesian SMEs manage invoices and monitor client payment status digitally. Features JWT authentication, line item calculations, status tracking, and a summary dashboard - ready to demo.
Key Features
- Register & Login - JWT-based auth, token auto-attached to every request
- CRUD Invoice - create, view, edit, and delete own invoices
- Line Items - multiple items per invoice (description, qty, price); subtotal calculated automatically in the backend
- Status Tracking - 3 statuses:
UNPAID,PAID,OVERDUE- updatable via PATCH - Filter Invoice - filter by status and date range
- Summary Dashboard - total invoices, paid count, overdue count, and total amount
- Auto Invoice Number - backend generates invoice numbers in
INV-YYYYMMDD-XXXformat - Private Routes - protected pages redirect to login if unauthenticated
API Endpoints
| Method | Path | Function |
|---|---|---|
POST | /api/auth/register | Register new user |
POST | /api/auth/login | Login, returns JWT |
GET | /api/invoices | List invoices (filter by status & date) |
POST | /api/invoices | Create new invoice |
GET | /api/invoices/{id} | Invoice detail |
PUT | /api/invoices/{id} | Update invoice |
DELETE | /api/invoices/{id} | Delete invoice |
PATCH | /api/invoices/{id}/status | Update status only |
GET | /api/invoices/summary | Statistics summary |
Database Schema
- users -
id,name,email,password,created_at - invoices -
id,user_id(FK),invoice_number,client_name,client_email,issue_date,due_date,status,notes - invoice_items -
id,invoice_id(FK),description,quantity,unit_price,subtotal(computed)
Business Rules
- Invoice only accessible by the user who created it - filtered by
user_idfrom JWT subtotalcomputed in backend:quantity × unit_pricetotalAmount= sum of all item subtotals- Default status on creation:
UNPAID
Tech Stack
- Backend: Java 17, Spring Boot 3, Spring Security, JWT (jjwt 0.12.6)
- Database: PostgreSQL hosted on Supabase
- API Docs: Springdoc OpenAPI 2.x (Swagger UI)
- Frontend: React, Tailwind CSS, Vite, Axios
- Deploy: Railway (backend), Vercel (frontend)