Automotive · 2026
Admin panel for a car rental
The fleet, the customers with their documents, and rental contracts with printable forms. Everything needed to hand a car over and not lose the paperwork.

- Client
- RentIt.md
- Year
- 2026
- Discipline
- CRM systems
- Timeline
- part of the RentIt project
The problem
A rental business has two sides. The storefront, where someone picks a car, and the back office, where that same car has to be handed over: check the documents, draw up the contract, record the condition at handover and at return. The second half usually stays on paper and in messages. While the fleet and the prices are edited straight in the database, every rate change is a developer task, and contracts get printed from a Word template that everyone keeps their own copy of.
What we did
We built a separate application on its own domain. The fleet is edited through the interface, together with the rate ladder: the longer the rental, the cheaper the day, and that formula is the same on the site and in the panel because it lives in a shared package. A customer record holds the ID card and the driving licence, both sides, with expiry dates, and those files are private and served only against a token, unlike the car photos. The contract is assembled from a template: rental, handover and return, three documents, each exported to PDF. The signed scan is uploaded back into the same contract, so the paper and the digital version sit together.
The outcome
The panel is in production on its own domain. The fleet and the prices change without a developer, and every rental carries three documents plus the signed scans.
Stack
- React 19
- TypeScript
- Vite
- Mantine
- RTK Query
- Node.js
- Express
- MongoDB
- docxtemplater
What the system does
Fleet
- The car record: body, gearbox, drive, fuel, seats
- A rate ladder by duration: the longer it runs, the cheaper the day
- The same pricing formula on the site and in the panel
- The car description in three languages
- A photo gallery with drag-and-drop upload
- Picking which cars go on the site's front page
Customers
- ID card and licence, both sides, in the customer record
- The expiry date of each document
- Status: active or blocked
- A rental counter
- Search by name and phone
- Customer documents are private and served only against a token
Contracts
- A contract for the chosen car, customer and dates
- Three documents from templates: rental, handover, return
- PDF generated from a DOCX template
- The signed scan is uploaded back into the same contract
- States: active, completed, cancelled
- Search by contract title
- A signature counter: "0 of 3 signed" on every contract
- Rental length in days, computed from the dates
Access and files
- Three levels: read, write, user management
- Token in an httpOnly cookie, with a separate CSRF header on writes
- The role is checked against the database on every request
- Car photos are public, customer documents are not
- A size limit and a type allowlist on upload
Interface
- Light and dark theme, following the system setting by default
- Skeletons while loading and explicit empty states, not blank tables
- States are coloured badges: active, completed, blocked
Screens from the system

The fleet, with the lowest rate derived from the ladder 
Customers and their document scans, with expiry dates 
A contract: three documents, PDF generation and the signed scan 
Rental contracts, with the length and state of each 
Editing a car: the rate ladder and the photo gallery
In numbers
- documents for every rentalrental, handover, return
- 3
- access levels
- 3
- pricing formula for site and panelin a shared package
- 1