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-XXX format
  • Private Routes - protected pages redirect to login if unauthenticated

API Endpoints

MethodPathFunction
POST/api/auth/registerRegister new user
POST/api/auth/loginLogin, returns JWT
GET/api/invoicesList invoices (filter by status & date)
POST/api/invoicesCreate new invoice
GET/api/invoices/{id}Invoice detail
PUT/api/invoices/{id}Update invoice
DELETE/api/invoices/{id}Delete invoice
PATCH/api/invoices/{id}/statusUpdate status only
GET/api/invoices/summaryStatistics 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_id from JWT
  • subtotal computed in backend: quantity × unit_price
  • totalAmount = 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)