Nexaros (nexaros.fr) is the website of an all-makes car garage in France: mechanics, servicing, tyres, brakes, air conditioning, electronic diagnostics, used car sales and trade-ins, and spare parts. The headline says it in five words: "Toutes marques. Une seule exigence.", all makes, one standard. TuniCyberLabs designed and built the site, and the part that does the most work is not the photography or the motion design. It is the planning: a live view of the workshop's free slots that a customer can book in two minutes.
What nexaros.fr covers
Nexaros is a French-language site for a garage that sells three things at once: workshop time, used cars and parts. Each one has its own path, and every path ends in the same back office, so nothing a customer sends can get lost between an inbox and a notebook.
- ▸Eleven service pages: general mechanics, servicing and oil changes, electronic diagnostics, tyres, brakes, air conditioning, timing belts and clutches, pre-MOT checks, plus vehicle sales, purchase and trade-in, and spare parts.
- ▸A live planning at nexaros.fr/planning, and a booking flow that can start from any service page.
- ▸Request forms for selling a car, valuing a trade-in, ordering parts and general contact.
- ▸Twenty-one workshop advice articles in French, from oil change intervals to winter tyre rules, with an RSS feed and a FAQ page.
- ▸A chat assistant that answers questions and can book a slot.
- ▸A back office at /admin, kept out of search engines, where the garage runs all of the above.
A planning is a promise about capacity
A garage does not really sell appointments, it sells bay time and mechanic hours. A planning is only useful if every free slot it shows is one the workshop can honour, so the slot engine resolves each day from explicit rules instead of a calendar that someone has to keep tidy.
- ▸One resolution order per day: a special day set by the garage wins over a closure period, which wins over a public holiday, which wins over the weekly template. French public holidays are computed, including Easter Monday, Ascension and Whit Monday, which move every year, so nobody has to look them up.
- ▸Slots have a length and a capacity, thirty minutes and two cars by default, both editable. A booking horizon (four weeks by default) and a minimum notice (two hours by default) stop a customer from booking a slot that starts while they are still parking.
- ▸Five honest states: available, limited (one place left out of several), full, blocked by the garage, or past. A customer sees at a glance where the week is open.
- ▸One engine in two places: the slot rules are pure functions, so the same code computes the public planning on the server and previews changes in the back office editor in the browser. What the garage sees while it edits its hours is exactly what customers will see after saving.
Capacity is the same problem in every booking business, whether the unit is a car lift or a seat on a tour: Kelowna Experience Bookings: The Last Seat Cannot Be Sold Twice.
Booking in two minutes, without an account and without double booking
The booking flow asks for four things: the reason for the visit, a free slot, the vehicle and a way to reach the customer. There is no account to create. The hard moment is not the form, it is two customers reaching for the last place in the same slot at the same time.
- ▸A request holds the place. As soon as it is sent, the slot counts it, and the place stays held until the workshop confirms or declines. The customer's receipt says exactly that: requested and held, not confirmed.
- ▸Check and write happen together. Writes to the store run one after another, and the "is this slot still free" check runs inside the write. The second request for the last place gets a clear answer that the slot was just taken, with a refreshed planning, instead of an overbooked Saturday morning.
- ▸The planning refreshes after every booking, because its cache is invalidated by the booking itself rather than by a timer.
- ▸Two emails, two audiences. The workshop gets the full request with the reply address set to the customer, and the customer gets a receipt in plain French.
- ▸Nothing private leaves the server. The public planning only ever exposes slot states and counts, never who booked what. That matters on a page anyone can open, and it is the kind of privacy by default that GDPR expects: GDPR Compliance for SaaS Startups: A Practical 2026 Guide.
A back office a garage owner actually uses
A booking system only stays accurate if changing it takes less effort than ignoring it. The Nexaros back office covers what a garage changes from week to week, and every change reaches the whole site at once.
- ▸Hours and capacity: weekly opening hours, slot length and places per slot.
- ▸Exceptions: closure periods for holidays, special days with different hours, and blocked slots for the morning a lift is out of service.
- ▸Bookings: confirm or cancel each request, with an optional email to the customer.
- ▸Messages: every form submission, from trade-in requests to parts orders, in one inbox.
- ▸A site banner for announcements, and the admin password.
Opening hours live in one settings record, not in the footer, the structured data and the chat assistant separately. Edit them once and the public planning, the footer, the live "open, closes at 12:30" status in the header and the search engine markup all follow.
Storage is deliberately small. A garage writes a handful of records a day, so bookings, messages and settings live in a JSON document store on a persistent data volume. Writes are serialised and land atomically, written to a temporary file and then renamed, and reads are cached in memory and reloaded when the file changes. A database server would add more moving parts than the problem has.
A chat assistant that calls no AI service
The assistant answers in French and can book a slot, but it never sends a message to an AI provider. It is a deterministic engine built for this one garage: text normalisation, a light stemmer, typo-tolerant keyword matching, intent and service detection, date and time parsing, and a scored search over the garage's own FAQ, service pages and articles.
- ▸Predictable answers. It cannot invent a price, a warranty condition or an opening hour, because it only answers from what the garage has published.
- ▸No customer messages sent to a third party, and no cost per message.
- ▸It books through the same door as the form. A customer can write a day and a part of the day in their own words, such as "samedi matin", see the free times, then give the vehicle and contact details in the conversation. The request goes through the same endpoint and the same capacity check as the booking form.
- ▸It never quotes yesterday's hours, because its knowledge is served from one cached endpoint that is invalidated together with the planning.
Large language models have their place, and we build with them every day. For a small business with a known set of questions, a rule-based assistant is often the safer default: How to Safely Integrate LLMs Into Your Product Without Leaking Data.
Every public form goes through one front door
Bookings, contact messages, sale and trade-in requests and parts orders all pass the same intake before anything is stored or emailed. One front door means one place to get spam protection right.
- ▸A same-origin check, so other sites cannot post into the forms.
- ▸A rate limit per address and per kind of form: six submissions every ten minutes.
- ▸A honeypot field and a minimum fill time of two and a half seconds, faster than a person can type a phone number.
- ▸Schema validation with field-level errors for people, while bots get a quiet success response, so they learn nothing about what failed.
- ▸Nothing is lost if email fails. Every request is stored in the back office inbox first. The notification email is a copy, not the record.
Our checklist for small business sites covers the rest of that ground: The Small Business Website Security Checklist for 2026.
Built to be found by search engines and answer engines
A garage competes on searches like "garage near me" and on questions like "when should I change my timing belt". Nexaros is built so that machines can read both the business and its advice without guessing.
- ▸Structured data describes the business as an AutoRepair, an auto dealer and an auto parts store at once, following Google's local business guidance. The opening hours in that markup are generated from the back office settings, so they cannot drift from the real ones.
- ▸A reserve action points search engines to the booking page, and the service catalogue, FAQ answers and articles each carry their own markup.
- ▸llms.txt and llms-full.txt summarise the site for AI assistants, and robots.txt lets the main search and AI crawlers in while keeping /admin and the API out.
- ▸Every article and service page has its own social preview image, and photos ship as responsive AVIF and WebP sets from 640 to 2560 pixels wide, with the hero image preloaded.
What changes when machines read a site first is covered in Your Website in the AI Era: What Changes When Machines Read It First.
The stack
Next.js 16 with the App Router and Cache Components, React 19 and Tailwind CSS v4, with GSAP (ScrollTrigger and SplitText) and Lenis for motion. The site is French only, and its copy passes a house-style check before every deployment. Same discipline, different trades: Inside artnapule.fr: A Restaurant Platform With Wallet Loyalty Cards and BookMov: Building a Premium VTC and Stays Platform for Paris.
How TuniCyberLabs helps
We build websites for businesses whose real product is time: a workshop bay, a table, a chauffeur, a consultation. Nexaros is live at nexaros.fr, with its planning at nexaros.fr/planning.
If your bookings still live in a paper diary, or in a phone that rings while your hands are in an engine, tell us how your days actually work and we will show you what that looks like as software. See how we approach custom software development, or start a project.
