Technical overviewFull-stack application architecture

Car Sale Application

An authenticated marketplace connecting a React interface to a layered Java API.

Source code

Inspect the implementation, commit history, and project documentation.

Role
Solo developer across React, Spring Boot, security, relational data, containers, and cloud deployment
Evidence status
Live at carsale.pesanth.com; self-hosted and verified end to end on 2026-08-09
Verified
2026-08-09

01

Purpose and scope

Car Sale Application is a peer-to-peer car marketplace where users create accounts, manage vehicle listings, buy from other users, and administer inventory. React handles the customer workflow while a Spring Boot API applies authentication, business rules, and relational persistence. It is live at carsale.pesanth.com.

What it is used for

  • Create an account and authenticate before accessing marketplace operations.
  • Add, update, list, unlist, buy, and remove vehicles tied to user ownership.
  • Give administrators visibility into users and listed inventory.
  • React
  • Spring Boot
  • Java
  • MySQL
  • JWT
  • Docker

02

Architecture

User interface

Frontend

React SPA

Login, marketplace, inventory, and admin routes

HTTP client

Axios client

Attaches bearer tokens and maps API operations

HTTPS · JWT

API and security

Security boundary

Spring Security

RSA JWT validation, BCrypt, roles, and CORS

API

REST controllers

Accounts, cars, listings, purchases, and funds

Delegates

Domain and persistence

Business logic

Domain services

Ownership, listing, purchase, and account rules

Data access

JPA repositories

Entity mapping and relational queries

Database

MySQL

Users, roles, balances, vehicles, and ownership

Packaged in

Deployment boundary

Orchestration

Docker Compose

nginx, API, and MySQL on one internal network

Public ingress

Cloudflare Tunnel

Outbound-only ingress to a self-hosted Linux server; no forwarded ports

Text equivalent: The React application sends authenticated requests to a stateless Spring Boot API. Spring Security validates JWTs before controllers delegate marketplace rules to services and JPA repositories. MySQL stores users and vehicles, while Docker Compose connects the frontend, API, and database for deployment.

03

Engineering decisions

Stateless token boundary

Spring Security validates RSA-backed JWTs and BCrypt protects stored passwords, keeping API authorization independent of server sessions.

Layered domain logic

Controllers delegate ownership, account, and vehicle operations to services and JPA repositories rather than coupling HTTP handlers directly to the database.

One reproducible stack

Docker Compose connects the React client, Java API, and MySQL database on one network for local and VM-based deployment.

04

Verification evidence

  • Source inspection confirmed React API calls for authentication, vehicle CRUD, listing, purchase, account funds, and administration.
  • The backend contains controller, service, repository, entity, security, and persistence layers.
  • The live deployment was exercised end to end on 2026-08-09: account creation, JWT login, listing a vehicle, and purchasing from another seller all returned expected responses over HTTPS.
  • Rate limiting on the authentication endpoints was confirmed to return 429 under rapid repeated attempts.
  • Earlier Docker Compose deployments on Google Cloud and Azure are documented in the repository and are no longer running.
verified-2026-08-09
$ React client -> authenticated API request
Spring Security -> JWT validation
Controller -> service -> JPA repository
Docker Compose: nginx + API + MySQL
Cloudflare Tunnel -> carsale.pesanth.com
live at carsale.pesanth.com

05

Demonstrated workflow

06

Limitations