All articles

CarBase: an information system for used car dealerships that I built on my own

It started with one dealership and a binder full of contracts. It ended with four customers and a system that handles vehicles, clients, contracts and receipts in a few clicks. All of this back when AI was still in its infancy.

Mention a used car dealership and most people picture a lot full of cars and a salesperson in an office. Few people see how much paperwork hides behind every single car. A purchase contract, a brokerage agreement, a power of attorney, income and expense receipts, a windscreen label, the vehicle history. All of it again, by hand, for every car.

How it all started

CarBase began as a commission for one specific dealership. The owner had a clear problem: the paperwork around cars lived half in spreadsheets and half in a drawer, and contracts were written over and over from Word templates. Every typo in a licence plate or VIN then spread across several documents.

The goal was simple: one place for the car, its owner, photos, contracts and receipts, and documents that get generated instead of retyped.

What CarBase does

Vehicle records

Every car has its own card with everything a dealer needs: specification, VIN, licence plate, year of manufacture, MOT validity, mileage, engine power and displacement, fuel, gearbox, body type, number of owners, purchase and sale price, and equipment. Manufacturers, models, fuel types, body types and equipment are lists the dealership manages itself in the settings.

A car moves through the states accepted → advertised → sold, or returned, and every change is written to the vehicle history. You can always trace what happened to a car and when. Vehicles can be filtered and searched quickly.

Photos and files

Photos and documents are uploaded to each car. One photo is set as the main one, the others can be deleted. Deleted files don't disappear immediately; the system can show them and plans for cleaning them up. The home page shows a chart of used storage, so it's clear how much space the photos take.

Clients

Records of clients, both sellers and buyers, linked to vehicles and contracts. For companies, loading details by company ID straight from the Czech ARES business register was in the pipeline.

Contracts and receipts in one click

This was the main added value. From the car and client data, the system generates PDFs:

  • a brokerage agreement,
  • a purchase contract that follows the brokerage agreement, so documents come in a logical order,
  • income and expense receipts with prices taken from the vehicle card,
  • an issue slip when the car is handed over,
  • a windscreen label with the vehicle's specs.

Contracts and cars have their own number series, so document numbers follow on and never collide. For anything non-standard there is a custom document with a text editor where the dealership can write whatever else it needs.

Home page overview

After logging in you see how many cars were sold, how many were returned, how many are advertised and how many are waiting to be advertised. Below that is the history of recent changes to cars and the lists of purchase contracts and brokerage agreements.

Under the hood

CarBase is a web application built on the PHP framework Nette with a MySQL database and Latte templates. PDFs are generated with mPDF from HTML templates; the frontend runs jQuery, Naja for AJAX redraws without reloading the whole page, Chart.js for charts and Froala as the text editor. A basic GraphQL API was also prepared for future integrations.

Nothing exotic, but a stable stack that is easy to deploy and easy to maintain.

From one dealership to four

At first the system ran only at the dealership it was built for. Over time it turned out others were dealing with the same problems, and CarBase made it to four customers.

All of this was built back when AI was still in its infancy. No agents, no generating half an application from a single prompt. Every form, every PDF template, every bit of document-chaining logic was written by hand. Analysis, database design, backend, frontend, contract templates, deployment and support. For one person it was quite a grind.

Why it stopped at four

Unfortunately, the conditions at my old job back then didn't allow me to give the project the attention it deserved. There was no room left for further development, sales or new customers, so the number stopped at four and the system wasn't developed any further.

Looking back, I see it as a valuable experience. CarBase showed me what a product looks like from the first meeting with a client to running at several customers, and how important it is to have not just ideas for a product's growth, but also the time and conditions for it. With today's AI tools, a similar system could be built much faster. The essential part, understanding how a dealership really works and turning that into a process, stays the same.