Skip to content
cd ../work

A three-app dealership platform covering the full workflow — inventory to invoice to profit/loss.

2025 · Automotive / Dealership · role: owner

● status: production·7 services·~2 min read

Java 21Spring Boot 3.4Spring Data JPAPostgreSQLReact 18TypeScriptNext.js 15CloudinaryTailwind CSS

01 — overview

What it is

Carventory consolidates everything a dealership does — acquiring and listing vehicles, matching customer inquiries to stock, booking, invoicing, and financial reporting — into one platform with a public marketplace. Three integrated apps share one Spring Boot core.

02 — the problem

Why it exists

Dealerships juggle inventory, profit/loss tracking, customer inquiries, and public listings across disconnected tools — spreadsheets, WhatsApp, and paper invoices.

Staff and customers need entirely different surfaces over the same data: an operational dashboard for the business, a fast browsing marketplace for buyers.

03 — architecture

How it's built

A monorepo with three applications over a single API core: the Spring Boot backend owns business logic, scheduled jobs, and AOP-based auditing; the React dashboard serves staff; the Next.js marketplace serves buyers. Media lives in Cloudinary, data in PostgreSQL.

architecture — how requests flowlive
Staff DashboardReact 18 + TSMarketplaceNext.js 15Spring Boot APIJava 21 · JWT RBACScheduled Jobs+ AOP aspectsPDF InvoicesbrandedPostgreSQLCloudinary15 images / vehicle

04 — engineering decisions

The choices that mattered

01

Inquiry-to-vehicle matching

Customer inquiries carry budget and preference data; the platform suggests matching stock automatically and tracks each inquiry through its lifecycle to sale — with automated email touchpoints.

02

Real-time profit/loss analytics

Live dashboards for sales trends, inventory status, and stuck-capital analysis, with exportable PDF financial reports — the numbers a dealer actually runs the business on.

03

Three apps, one contract

Dashboard, marketplace, and API live in one monorepo sharing a typed contract — features land in all three surfaces in a single change set.

04

Full audit trail

AOP aspects log every state change; bookings link vehicles to buyers end to end, from advance payment through branded invoice.

Explain this project

A monorepo with three apps over one Spring Boot (Java 21) core: a React 18 staff dashboard, a Next.js 15 public marketplace, and the shared REST API that owns business logic, scheduled lifecycle jobs, and AOP-based auditing. JWT multi-role RBAC separates the staff and buyer surfaces over the same PostgreSQL data, media lives in Cloudinary, and features land across all three apps through one shared contract. It covers the full workflow — inquiry-to-vehicle matching, bookings with advance payments, branded PDF invoices, and real-time profit/loss analytics.

05 — features

What it does

  • Full vehicle records — VIN, condition, docs, maintenance history, soft delete
  • Role-based access: admin / staff / sales, multi-dealership support
  • Reservations with advance-payment tracking and branded PDF invoices
  • Public marketplace with advanced filtering and rich galleries
  • Email verification, password history, secure reset flows
  • Scheduled jobs for lifecycle automation

06 — stack

What it runs on

Backend
Java 21Spring Boot 3.4.4Spring Data JPAAOPScheduled jobs
Dashboard
React 18TypeScriptTailwind CSSChart.js
Marketplace
Next.js 15
Data & Media
PostgreSQLCloudinary
Security
JWTMulti-role RBACEmail verification

Want the full story?

The repository has the code, the commits, and the decisions in context — or reach out and I'll walk you through it.