Website2026-08-21

Stanković 964 — a website for an authorised vehicle inspection station

The Technical Inspection Station does not sell anything over the Internet. The visitor has four questions — do you do my vehicle, how much does it cost, when are you open and where exactly are you — and asks for an answer on a phone, in the car, on a bad connection. The site is made so that those four answers are there before the page even starts moving.

Homepage of the site Vehicle Inspection Stanković
Homepage - name of the station and both phone numbers in the first screen
Client
Tehnički Pregled Stanković 964
Activity
Technical inspection of vehicles, authorized station
Area
Pertate, municipality of Aleksinac
Type
Multi-page site with private panel
Technologies
PHP 8.3 · Nginx cache · MySQL · PWA
Site
stankovic964.rs
Status
Live site, under active maintenance
Technology
PHP 8.3 · Nginx sa keširanjem · MySQL · PWA panel
01

Problem and context

What does Technical Inspection Stanković do

Tehnički Pregled Stanković 964 is an authorized vehicle inspection station in Pertate, in the municipality of Aleksinac. We manufacture passenger vehicles, light trucks and vans up to 2.5 tons, and trailers of all types. Along with the inspection, there is also an on-site light signaling repair — replacement of bulbs, direction indicators, headlight adjustment — which is a service that keeps the vehicle from returning a second time.

Working hours are from Monday to Friday, from 07:00 to 15:30. We do not work on Saturdays and Sundays, and this is written on the website in three places: on the homepage, at the foot of each page and on the contact page. The reason is not decoration. A man who is looking for a place to do an examination on Saturday morning must not waste half an hour on the way to the closed gate.

Business is local and telephone. It is not scheduled in advance, you come without notice, and everything that is not known is solved by calling. The station is celebrating more than ten years of operation and over five thousand inspected vehicles — these are its numbers and that's how they were posted on the site, as its claim, not as our measurement.

All of this predetermines the kind of site you need: small, fast, with a phone number at your fingertips and without a single step between the visitor and the call.

Section with technical review services on the website Stanković
Four types of reviews in the section "All in one place"
02

What needed to be solved

The website of the vehicle inspection station has an unusual task. It has nothing to sell online, it doesn't take orders, it doesn't have a catalog, and it has no reason for a visitor to stay longer than a minute. Success is a calling, and nothing else.

This resulted in a list of requirements:

  • Answer in first screen — station name, what is being done and two phone numbers, visible before any page scrolling.
  • Price list that does not expire — the amounts for the technical inspection change according to the current price list, so the price page must be useful even when the amounts are not written on it.
  • Unrequested address — map and text address in two places, because Pertate is a village and the street name alone is not enough for navigation.
  • Maintenance free site — no content management system that asks for weekly updates and no plugins that break on the next version.
  • Speed on a weak connection — the visitor is most often on the phone, in a car, with two lines of signal.

The last item determined everything else. A site without photos, without frames waiting for other people's servers and without scripts that are on top of each other turns out to be easier than an average product image. Today, the entire content of the homepage fits into just over twenty kilobytes of text, and everything that looks like an image is actually an icon and color.

Section section station and working hours per day
About the station and working hours per day
03

Five pages and nothing more

The site has five pages and two legal texts. Homepage, services, price list, about us and contact — plus privacy policy and terms of use at the footer.

The homepage is arranged as one vertical that answers all the questions in order: who we are and two phone numbers, four types of reviews, who is behind the station, working hours by day, invitation to arrive and finally contact with the map. If you have patience, read everything. Those who don't have it, call from the first screen.

The services page breaks down the same four jobs in detail — what goes into the regular annual inspection, what goes into the extraordinary, which vehicles fall into the light truck category, which trailers are serviced. It's a page that captures a search for a specific thing, like a trailer review, so it has its own title and description, not a homepage excerpt.

No blog, no gallery, no news. The station does not publish content and a site that would expect it to do so would be empty after a month, with the latest news from last year prominently displayed. What exists is accurate and up-to-date, and that is the only form of freshness that a site like this can really maintain.

Site Technical Overview Stanković on the phone
The same site on the phone
04

Price list that does not promise a figure

The most sensitive part is the price list. The prices of the technical inspection are not invented in the station, but follow the valid price list, and are subject to change. A site that prints the amount once and forgets about it eventually becomes a site that lies: a person comes with a number from the screen, and is charged another, and the one who left the number is the culprit.

That is why the page explains the real process about the mechanism instead of faking the final amount. Chargeable services are listed — passenger vehicles, trucks up to 2.5 tons, trailers, on-site signaling repair — with a clear note that they are done according to the current price list and two phone numbers for the exact amount.

In order for the page not to be empty promises, below the prices is what is rarely written: what the review includes. Visual inspection of the outside and inside, examination of the braking system, control of all lights and signaling devices and measurement of exhaust gas emissions. The man who came to collect the number leaves at least with a clear answer as to what he is getting for that money — and with a reason to call instead of closing the page.

05

Call instead of form

There is no appointment form on the site. It is not an oversight but a decision.

The station does not work by appointment; come unannounced during working hours. The form would make a promise that no one fulfills — the visitor enters the information, waits for a response, then calls anyway, just angry. Instead, both phone numbers are live tel: links that are dialed on a phone with one tap and repeated in each section that ends with a call to action.

On the contact page there is a phone, email, address, working hours and a map. The map was the only real error found on the site, and the kind that costs business: the frame on the contact showed a completely different company, an auto center from another city, while the homepage showed a blank example from the template. Both have been replaced by a frame that targets the real address in Pertate, with the postal code and municipality in the query, because a search based only on the name of the street in the village can lead to the other end of Serbia.

The same address is also written as plain text, right next to the map. The map is a frame from someone else's server that sometimes fails to load; the address in the text always arrives and can be copied into the navigation.

06

Technical performance

The site is written in PHP 8.3, as a set of pages that share a header and footer through simple include files. No WordPress, no theme, no plugins. It doesn't even have a database — the content is stored in the pages themselves, because it changes once every few months, and a separate content database would add more maintenance than value.

All styles are bundled into one minified file. Before tidying there were nine separate CSS files, which means nine requests before the page even starts to render. Now there is one and it loads instantly, without delay.

Page behavior is handled by one small main.js: opening the menu on the phone and displaying the sections when scrolling through the IntersectionObserver. No animation library, no jQuery, nothing that gets updated for security patches.

nginx sits in front of PHP, which caches PHP responses. The found setting disabled it through an easy-to-miss rule: there was a rule in the configuration that added a no-cache header to every CSS, JS and PHP response, and at the same time it matched before the PHP rule, so neither server caching nor browser caching worked. It has been removed, caching is enabled, and the server response is now measured in tens of milliseconds.

One pitfall is left for future reference: main.js is served with an annual cache, so every change must carry a new version tag in the address. Without that, a visitor who has already been to the site still gets the old file, and the server cannot force that stale copy to disappear.

07

Page that does not jump

The first serious measurement after delivery gave an ugly figure. Content offset on load, what is measured as CLS, was over one. Practical: a man starts to read, the page breaks under his finger and the touch ends up on the wrong button. The goal is zero, and zero was achieved, but only after three separate causes.

  • The main CSS was set to lazy load. The page was first rendered without styles, then rendered again when the styles arrived. It was returned to normal loading — measured it looked worse, but in reality it was worse.
  • The counters on the cover animated from zero to the final number. As the number grows, the width of the text changes and everything around it moves. Now the figures are written statically and the page is idle.
  • Title fonts are loaded from the web, and the fallback font was of different proportions, so the replacement was breaking the titles. The fallback font is set to match the real one, so the replacement no longer moves any lines.

Additionally, the spawn animation has been removed from the first screen. A title that starts out opaque and then slowly emerges looks nice, but the speed measurement sees a blank page and rates it as such. Now the first screen is right there, and the appearance remains only for the sections further down the page.

Later, a hidden defect from the same family appeared. If the services page opened and immediately jumped to the bottom, the reasons section remained invisible. The observer playing the animation is waiting for the element to enter the screen, and he had already passed by it during the sudden jump. It was solved by checking everything above the visible part of the page on each pass.

08

Code correctness and accessibility

Going through official HTML validation is a cheap job that is often skipped. Here it is completed with zero findings: across all five pages and both legal documents, the validator does not report any errors or warnings. Fixed what is commonly found — map iframe with width typed as an attribute instead of a style, styles strayed to the page footer instead of a CSS file, and headings that skip a level.

That last one is not formality but accessibility. The screen reader goes through the headings like a table of contents, so each page has a section title that is not visible to the eye, where visually there was only a space.

The same review also covered:

  • The cookie banner button had a contrast of 2.28 to 1 — white text on light green, barely legible. It has been replaced with dark text, contrast 8.17 to 1.
  • Skip to content link at the top of each page, for keyboard users.
  • The menu button on the phone now tells the assistive technology whether the menu is open or closed, instead of being silent.
  • The links in the footer are underlined, so that they do not differ from the surrounding text only in color.

One smaller issue from the same review: the legal pages were looking for an icon that was not there and every time it was opened, it returned an error to the log. It has been added. No one reports such things, but they still accumulate in production logs.

09

SEO, certificate and domain hygiene

The biggest omission was not seen on the screen. Before launch, the site lived at a temporary address on my subdomain, and after moving to its own domain, the canonical link, sharing data, structured data, sitemap and robots.txt remained at that old address. It is a message to the search engine that the real site is somewhere else. It's one of the few omissions that makes the site almost invisible without giving anything away — all pages work, everything looks neat.

Everything has been copied to stankovic964.rs, and everything else has also been fixed:

  • Structured data moved from general service type to AutomotiveBusiness, with address and zip code, coordinates, both phones, hours of operation, and a list of four services.
  • Each page has a title and description written for it, not a template with the company name at the end.
  • The sitemap covers all seven URLs, including legal texts, and robots.txt does not block anything that needs to be indexed.
  • The site has been verified in Google Search Console via DNS records, and the sitemap has been submitted.

Domain hygiene goes along with it, a part that the client never sees. The certificate was rated the highest in the public test, the domain is in the list that browsers always open via HTTPS, there is a record in the DNS that determines who is allowed to issue a certificate for that domain, and security.txt is in the prescribed place with a contact for reporting vulnerabilities. Page about us and all others are served by the same server under the same rules, without exceptions that are later forgotten.

10

Panel for station inventory

Next to the site is a part that the visitor never sees: private application for station inventory, on a separate subdomain. It is not a site editor — the site content is not touched through it — but a record of what the station holds: items, categories, quantities, prices and history of each change.

It is made as a PWA. From the login page, it is installed on the phone or computer and then opens as a normal application, with its own icon and no address bar, the same on Android, iOS, Windows and macOS.

Changes are seen in real time. When someone on one device changes state, the other open devices receive the change without refreshing the page, via an event stream that keeps the server open and wakes up only when something actually changes. If the browser does not support it, the application automatically returns to an occasional check, so no device is left with the old number.

The application was made seriously, because the panel is on the public Internet. Passwords are stored through bcrypt, each entry carries a token against falsification of requests, after five wrong attempts the account is locked for half an hour, and the attempts are counted both by user and by the address from which they come. The session expires after half an hour of idle time and a maximum of eight hours in total. Every input, output and change is recorded in the log with time, address and device, and the list of currently signed-in devices can be seen in the panel itself. Access data for the database is outside the folder that the server publishes, so it cannot be read through the browser even when something else crashes.

That module also stands as an example in the work on the application for vehicle inspection stations.

11

Outcome

What the client received

A five-page site that opens immediately, works the same on the phone and on the computer and does not require anything from the owner. There are no monthly platform subscriptions, no plugins to update, no panel that has to be running to display the page. The domain, code and content are his and can be moved to another contractor if ever needed.

Practically, someone searching for vehicle inspection and the name of the place in the search gets the address, working hours, a list of vehicles that can be inspected and a phone number that can be dialed with one touch. That's the whole job of a site like this, and everything written above exists only so that that path is not interrupted anywhere — neither on a slow connection, nor on an old phone, nor with a person using a keyboard.

The site is under active maintenance and is checked in regular passes through the entire fleet. The latter brought a fix for a section that remained invisible when scrolling quickly and a version mark on the script, which prevents a visitor with an old cache from ever seeing what was fixed.

FAQ

Frequently asked questions

Why doesn't the site have an appointment form?

Because the station doesn't work according to times - you come without notice in during working hours. The form would have promised an answer that no one would send, so instead of it, at each step there are two phone numbers that can be dialed on a phone with one touch.

Why are there no amounts on the price list?

Technical inspection prices follow the current price list and are subject to change. The site therefore lists the services and explains what the review includes, and the exact amount is obtained over the phone. That way, it does not happen that the visitor comes with a number from the screen that is no longer valid.

Who changes the text on the site?

The site does not have a content management system, so the changes go through us, with a backup copy before each one. For a station like this, it rarely changes — hours, phone number, new service. What changes daily is kept in a separate panel, which has nothing to do with the content of the site.

Does the site work on a phone?

It works, and it was made for the phone first. Most of the visits come on a phone and most often from the car, so the first screen has the name of the station, the activity and both calling numbers without a single page scrolling.

What is the panel and who accesses it?

Private station-inventory application on a separate subdomain, with login, limit of number of attempts, account lock and change log. It is open only to employees and does not affect the content of the public site.

Does this site have monthly costs?

Domain and hosting are paid for. There are no platform subscriptions or plugin licenses, as the site uses neither. The maintenance is according to the agreement, and the code and content remain with the client.

Next step

Have a project that needs to work better?

Send me your goal and current situation. I will reply with a concrete scope proposal.

Start a project