Real estate portal for Istria
Nemovitosti na Jadranu
- React 18 + Vite (SPA)
- React Router 6
- Tailwind CSS
- Leaflet maps
- PHP REST API with PDO
- MySQL with multilingual (_lang) tables
- Custom JWT administration


Audit
Nemovitosti na Jadranu builds on an existing website made with a Webnode template. It is only in Czech, with no way to switch languages, and offers two static property listings without any filtering or search - visitors just scroll the page from top to bottom. The structure resembles a personal blog about Istria more than a real estate catalog: in the text, the owner introduces herself as a guide to the region, not as a real estate agency with structured listings.
Optimization
A complete rebuild using a component architecture and custom backend: a filterable catalog, multilingual content, and administration the client can manage herself.
Homepage before and after


Geolocation and three languages
A first visit detects the language from the browser time zone: Prague and Bratislava receive Czech, Zagreb, Belgrade, and Sarajevo receive Croatian, and the rest of the world receives English. A manually selected language is saved in the browser and takes precedence over automatic detection on later visits. People interested in property in Croatia do not speak only Czech; the old website had just one language.
Catalog with filters
Listings can be filtered by location, property type, price, area, number of bedrooms, distance from the sea, view, and amenities. Every filter is reflected in the URL, so a specific selection can be shared by link. Listings are paginated with a "Load more" button after three items instead of classic numbered pagination.

Property detail and enquiry
The detail page includes a keyboard-controlled photo gallery, a Leaflet map with the property location, and an enquiry form with a honeypot against spam. A submitted enquiry is stored in the database and simultaneously sends an email notification. The old website had no form, only a phone number in the text.

Administration without code changes
The signed-in client manages listings herself: she adds a property with photos by drag and drop, changes an enquiry's status, or follows an overview of enquiries received through the form. Saving a new or edited property runs as one database transaction across the property table, its translations, and amenities, so an error mid-save cannot leave the database in a partial state.
Measurement
The website is complete but has not launched because the client postponed the launch. There is no live traffic or conversion data, so the before-and-after comparison covers features and mechanisms rather than measured figures.
Want a similar result?
I want an audit of my website