DEPLOYMENTS / 400° KRANJ
RESTAURANT WEBSITE400° Kranj
A fast, photography-led website for a wood-fired pizzeria in Kranj. Menu, story, hours and reservations in one crisp site — mobile-first, locally-searchable, no template feel. Static-rendered, image-optimised, and wired to Google Business + Search Console so the site is the first thing people see when they type 'pizza kranj'.
CLIENT
Restaurant
YEAR
2024
SYSTEMS
WEB
STATUS
DEPLOYED
1
site, all customer surfaces
~1
s first contentful paint on 4G
100%
mobile-first traffic served
[ THE BRIEF ]
The challenge we walked into.
The restaurant was showing up in Google as a Facebook page. Their food photography was gorgeous but living on Instagram, and reservations were happening over DMs. They needed a real website that ranked locally, presented the menu properly, and made booking a table one tap away — without a monthly platform fee and without a heavy CMS.
[ TOPOLOGY ]
How the system is wired.
// SYSTEM TOPOLOGY
- LAYER 01
Visitor
PHONE / DESKTOP
- LAYER 02
Google Search
LOCAL PACK
Vercel Edge
STATIC + CDN
- LAYER 03
Next.js Site
STATIC RENDER
- LAYER 04
Typed Menu Data
ONE FILE
next/image
AVIF / WEBP
JSON-LD
SCHEMA.ORG
- LAYER 05
Google Business
PROFILE + MAP
[ WHAT WE SHIPPED ]
Feature by feature.
The menu is the interface.
Instead of a PDF download, the menu is a live component the owner updates via a typed data file. Categories, items, prices, allergens — all typed. Renders as a tabbed browsing UI on mobile, a spread of columns on desktop. No third-party menu widget, no monthly fee.
- ▸Tabbed on mobile, grid on desktop
- ▸Typed data — no price mismatch
- ▸Allergen + special badges
- ▸Owner updates via one file
[ APPROACH ]
How it came together.
01 — SPEED AS BRAND
First impression is how fast the hero paints.
For a walk-in restaurant, the site opens on 4G in the parking lot. Static rendering + next/image + font preload means the wood-oven hero lands in about a second. The client's food deserves that runway — anything slower and the browser tab is gone.
02 — CONTENT THE CLIENT CONTROLS
Menu edits without a developer.
Prices change; specials rotate. Rather than putting a full CMS behind a brochure site, the menu lives as typed data the client edits in a shared file — with TypeScript catching typos before they ship. If a full CMS is ever needed, the typed data file is a one-hour swap to Sanity — the shape is already right.
03 — RANKING LOCALLY
SEO for a pizzeria is different from SEO for a SaaS.
The battle is 'pizza kranj tonight' — that's local-pack territory. Clean structured data, complete Google Business profile, matching NAP (name, address, phone) between the site and the profile — those move the needle more than 5,000-word blog posts. The site is a first-page result, not because it's stuffed with keywords, but because Google trusts what it's saying.
04 — STATIC-FIRST, EDGE-HOSTED
Nothing to break at 8pm on a Friday.
The whole site is statically rendered and served from Vercel's edge. There's no origin server to overload, no database to slow down at dinner rush. The busiest Friday of the year serves the same speed as a quiet Tuesday.
[ DELIVERY ]
What the build looked like.
01 ▊
[ TECH STACK ]
What’s under the hood.
TAP FOR ROLEHOVER FOR ROLE
[ IMPACT ]
What changed.
400° Kranj went from a Facebook page in search to a proper local result — full menu, real photography, one-tap reservations. Foot traffic from search improved, the kitchen stopped juggling Instagram DMs for bookings, and every holiday hour is one file away from being right on the map. The site does its job so the kitchen can do theirs.