Konoba Plavi Kamen: designing for tourists who haven't arrived yet
Coastal hospitality has a timing problem most restaurant sites ignore — the decision to eat somewhere happens before anyone is in the room. Here's how we built around that.
Kiran RamagiriFounder6 min read
A restaurant in the middle of a city competes with whatever's within walking distance. A konoba on the island of Cres competes with a decision someone made from their hotel room, in a language that might not be theirs, before they ever saw the building.
That's the problem Konoba Plavi Kamen — one of our own coastal hospitality concepts — was built to solve. Not "make a nice website for a restaurant." Make a website that does the convincing before the tourist shows up.
Why this is a different brief than a city restaurant
Tourists deciding where to eat on a coastline aren't browsing a neighborhood. They're often deciding from somewhere else entirely — scrolling hotel recommendations, searching in a language that isn't their first, trying to get a feel for a place they've never physically stood in. A city restaurant can lean on foot traffic and local reputation. A seaside konoba can't. The website has to do more of the convincing, faster, in more than one language.
So the brief wasn't "build a restaurant site." It was: show the atmosphere immediately, work properly in at least three languages, and get someone from "I'm thinking about it" to "I've requested a table" without friction.
What we built, and why
Three languages, built in from the start — not bolted on. Croatian, English and German, because that's the realistic spread of who's actually deciding where to eat on that coastline. Multilingual UX done properly means the German version isn't a stiff translation of the English one; it's treated as a first-class path through the site, with its own URL per language and proper hreflang annotations so a German search for a Cres restaurant actually surfaces the German page — not the English one with a flag icon bolted on.
Stone, sea, slow afternoons — as a visual system, not a mood board. The coastal identity had to come through in the layout and photography choices themselves, not just in a few hero images. If the rest of the site feels generic, one good photo doesn't rescue it.
A booking system we built ourselves, not rented. This is the decision I'd point to first. We used Next.js with Supabase to build a lightweight, custom reservation system rather than embedding a third-party booking widget — Postgres underneath, with row-level security doing the work of making sure a request for one table can't read or touch anyone else's, instead of us hand-rolling that check in application code where it's easier to get wrong. Two reasons we built rather than bought: third-party booking platforms usually take a commission on every table they fill, and they rarely match the visual language of the site they're bolted onto — you'll notice the seam immediately. Building it ourselves meant zero commission on table requests, and a booking flow that actually looks like it belongs on the page instead of an iframe pretending to.
The tradeoff worth naming
Building your own booking system instead of using an off-the-shelf one is more work upfront. There's no vendor handling edge cases for you. We think that tradeoff is worth it specifically for a business where every table matters and every euro of commission is real money leaving a small operation — which describes most coastal hospitality businesses, not just this one.
What actually made this hard
Not the code. The hard part was resisting the instinct to add more — more sections, more copy, more "trust us" badges. A tourist deciding where to eat tonight isn't going to read three paragraphs about your sourcing philosophy. They're going to look at a handful of photos, check if there's an English menu, and decide in under a minute. Every piece of this site was edited against that minute, not against what felt thorough to build.
That's the real lesson from this one: for a seaside business, your website isn't a brochure. It's the last five seconds of a decision someone's already half-made. Build for that five seconds, not for the version of the visitor who wants to read your whole story.

The project behind this post
Konoba Plavi Kamen
Coastal Hospitality Experience
Questions worth answering directly
- Why is it worth translating a restaurant website into German for a Croatian coastal business?
- Because German-speaking visitors are one of the largest groups deciding where to eat along the Adriatic, and most of them are making that decision before they've left their hotel room — in their own language, on their phone. A site that only speaks Croatian and English is invisible to a big share of the people actually choosing where to book.
- How much commission do third-party restaurant booking platforms usually take?
- It varies by platform, but the structure is almost always the same: a fee per booking or per cover that comes straight out of the restaurant's margin, on every single table, indefinitely. For a seasonal coastal business where most of the year's revenue happens in a few summer months, that adds up fast — which is exactly why we built the reservation system ourselves instead of renting one.
- What is row-level security, and why does it matter for a restaurant's booking data?
- Row-level security is a Postgres feature that enforces data-access rules directly in the database, not just in application code — so a request for one table's booking genuinely cannot read or modify anyone else's, even if there's a bug upstream in the app. For something handling real names, phone numbers and reservation times, that's a meaningfully stronger guarantee than trusting application code to always get the check right.
Also available in Hrvatski · Magyar

Kiran Ramagiri
Founder
Builds Kyro Studio's products end to end — design, engineering and the automation underneath. Previously built BW International Recruitment and RS Ventures, a seven-brand cloud kitchen group.
Connect on LinkedInHave a project in mind?
More from the Blog

Case notes
Rotyi Bistro: a menu that gets out of its own way
Small kitchens live on Instagram, but their websites are often a PDF nobody opens. We wanted to see what happens when the website works as hard as the Instagram feed does.
Oct 16, 2026 · 5 min read

Case notes
How we built Tišina
A restaurant website lives or dies on one question: does it feel like the room it's describing? Here's how we answered that for a slow-dining concept with 28 seats.
Oct 12, 2026 · 6 min read
Growth
Reading a Search Console Links report without panicking
A sudden list of unfamiliar domains linking to your site looks alarming in Google Search Console. Most of the time it isn't — but you do need to be able to explain every one of them. Here's how we actually read that report.
Oct 20, 2026 · 6 min read