Career Navigator
Regional job aggregator: legacy-to-Next.js migration focused on SEO
- Next.js
- App Router / RSC
- React
- TypeScript
- +11
A rental and purchase portal built from scratch on Next.js: map, geocoder, booking, mortgage
The first project I started from a blank page: listings with a map and geo search, booking of agency houses, mortgage programmes, trade-in and a user account. Later — ongoing support and evolution.
Context
A portal for a regional mortgage agency: rental and sale listings, the agency’s own houses with booking, mortgage programmes, developers and news.
The project started from scratch — I laid out the structure, routing, request layer and store, and then evolved the product alongside new business requirements.
Problem
The main challenge was geo data. Listings had to be shown both as a list and on a map, searchable by address with suggestions, and their coordinates had to be derived from an address string.
The second was the mix of scenarios inside one product: regular user listings, agency houses with booking, mortgage programmes with their own rules, and trade-in. Each with its own forms and statuses.
Solution
The map is built on Leaflet: listing points are grouped, and selecting an area loads results for the visible bounds. Address search works through a geocoder with suggestions, and the resolved coordinates are stored with the listing.
Listing, booking and request forms are described with Formik using shared fields and validation: identical steps are reused across scenarios, while the differences stay in the form configuration.
Sections got readable Cyrillic URLs through rewrites — the public URL reads naturally while the internal route stays latin.
Utility logic such as numeral declension was extracted into a separate layer and covered with unit tests: those functions are used in every section, and a regression there is the most expensive kind.
Outcome
The portal went live and stayed under my support: programmes, sections and flows were added while the original structure survived two years of change.
For me it was the first full-cycle experience — from an empty repository to release and further evolution, including debugging issues in production.

Regional job aggregator: legacy-to-Next.js migration focused on SEO
Listing moderation, management of agency properties and mortgage programmes
Medical services platform for CIS countries: localisation, B2C and B2B