A Montenegro and Adriatic travel site, built solo from scratch in five months
A Montenegro and Adriatic travel site, built solo from scratch in five months
A travel agency sells tours, yacht rentals and camping trips across Montenegro and the Adriatic coast. Their old site had run its course: adding a listing required a developer, and the catalog was growing faster than developer time could be found.
I built both ends from scratch. React on Vite with a lightweight router, UI on Radix and Tailwind, Express with Drizzle over Postgres. All 178 commits across five months are mine — the client needed a working site rather than code, so deployment, the domain and the content were on me too.
Moving the catalog
The unpleasant part of any migration is content. Hundreds of tours, yachts and camps sat on the old site inside its markup, with no export and no access to its database. Moving them by hand means weeks of mechanical work with guaranteed typos, so I wrote a batch of cheerio scrapers: they walk the old site’s pages, pull out descriptions, prices and attributes, and lay them out in the new schema.
The pleasant side effect is repeatability. When the data schema changed during development, I did not patch the migrated content — I simply ran the scrapers again.
What is left behind
The site is live, and the domain moved from the .me zone to .com partway through — that migration, with its redirects, went through me as well. The project is notable not for its technology (the stack here is deliberately boring) but for one person closing the whole loop: from the database schema to content migration and rollout.