Financial Dashboard
Full-stack financial dashboard with a Spring Boot backend and Next.js frontend.
Panoramica
Started from a Next.js learning project and extended it into a full-stack application by building a custom Spring Boot REST API backend. The frontend uses React and TypeScript with Tailwind CSS. The backend uses Spring Boot 3 with Spring Data JPA, Hibernate, and PostgreSQL (via Supabase). Backend deployed on Azure App Service.
Il Problema
The original Next.js course project communicated directly with a database from the frontend. The goal was to replace that with a proper API layer — a Spring Boot backend — to practice real-world full-stack architecture where the frontend and backend are separated services.
Il mio ruolo
Built the entire Spring Boot backend independently. Refactored the Next.js frontend to consume the new API instead of direct database access. Handled API design, data modelling, JPA entity mapping, and Azure deployment.
Architettura
- 1Next.js + React frontend (TypeScript, Tailwind CSS)
- 2REST API layer — JSON over HTTP
- 3Spring Boot 3 backend (Java 17, Maven)
- 4Spring Data JPA + Hibernate ORM layer
- 5PostgreSQL database (Supabase)
- 6Azure App Service deployment
Decisioni tecniche
- Used Spring Boot for the backend to practice the full Spring ecosystem — dependency injection, JPA integration, REST controller patterns, and exception handling.
- Chose PostgreSQL on Supabase for development convenience while keeping a standard relational database.
- Deployed the backend on Azure App Service to gain experience with cloud deployment outside of Vercel.
- Used DTOs to separate the API contract from internal JPA entity structure.
Stack tecnologico
Progetti correlati
CLI tool for API performance testing that simplifies Grafana k6 workflows.
k6boost is a Node.js CLI tool that wraps Grafana k6 and provides a developer-friendly interface for API performance test...
CLI tool that renames files and automatically updates all import paths using AST parsing.
A Node.js CLI tool that converts file names across an entire codebase (kebab-case, camelCase, snake_case, PascalCase) an...