GS//DIGITAL ANCHOR
INITIATE →

DEPLOYMENTS / 400° KRANJ

RESTAURANT WEBSITE

400° 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

  1. LAYER 01

    Visitor

    PHONE / DESKTOP

  2. LAYER 02

    Google Search

    LOCAL PACK

    Vercel Edge

    STATIC + CDN

  3. LAYER 03

    Next.js Site

    STATIC RENDER

  4. LAYER 04

    Typed Menu Data

    ONE FILE

    next/image

    AVIF / WEBP

    JSON-LD

    SCHEMA.ORG

  5. LAYER 05

    Google Business

    PROFILE + MAP

[ WHAT WE SHIPPED ]

Feature by feature.

[ FEATURE // INTERACTIVE MENU ]

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.

01SPEED 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.

02CONTENT 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.

03RANKING 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.

04STATIC-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.

400gradi.build.log◐ BUILDING…

01

[ TECH STACK ]

What’s under the hood.

TAP 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.

[ POWERED BY ]

NEXT.JSREACTTYPESCRIPTTAILWIND CSSSUPABASEPOSTGRESQLVERCELSANITYSHOPIFYWOOCOMMERCESTRIPECLAUDEREACT NATIVEEXPOREMIXGRAPHQLZODTANSTACK QUERYSHADCN/UITHREE.JSDENORESENDLOOPSKLAVIYOPLAYWRIGHTVITESTRECHARTS