Skip to content
ZERONE
Back to projects
Marketing site · SMB portfolio · Astro Static · 2026

Case 08 — Keramičar KGV: tradesman portfolio with gallery & dual CTA

Portfolio site for a family-run tiling business in Karavukovo/Vojvodina. Curated gallery built from Instagram material, Schema.org LocalBusiness for regional SERPs, dual CTA to both owners. Astro SSG on Cloudflare Pages — €0 hosting at sub-second delivery.

48Portfolio photos
10Demo videos
6Service regions
0 €Hosting · Cloudflare edge

The challenge

A family-run tiling business in Karavukovo wanted an online presence that wins regional Google queries ("keramičar Vojvodina", "pločice Odžaci") and routes callers directly to the right owner. Requirements: small budget, photo material only from Instagram (1080 px compressed), two direct contacts for different job types, mobile-first on rural mobile networks, near-zero maintenance.

Architecture

Astro 5 as the static site generator, deployed to Cloudflare Pages — global edge delivery for free. Component tree: Header · Hero · Usluge · Galerija · ONama · Pitanja · Kontakt · Footer · StickyCTA. Schema.org LocalBusiness in `Layout.astro` for structured local snippets. Content lives in typed data modules (`site.ts` + `gallery.ts`) — editable without JSX know-how. Gallery assets sit directly under `/public/{gallery,videos}/` for direct edge caching.

Astro 5 · SSG · TypeScript dataSITEORCHESTRATORGallery · 48 photos · 10 videosGALWORKERServices · 4 service sectionsSVCWORKERSchema.org LocalBusiness · sitemapSEOWORKERStickyCTA · dual phone · ViberCTAWORKERCloudflare Pages · edge cacheCDNWORKERsite.ts · gallery.ts · typed contentDATPRIMARY
SITEAstro 5 · SSG · TypeScript data
GALGallery · 48 photos · 10 videos
SVCServices · 4 service sections
SEOSchema.org LocalBusiness · sitemap
CTAStickyCTA · dual phone · Viber
CDNCloudflare Pages · edge cache
DATsite.ts · gallery.ts · typed content

Pipeline

Astro-SSG-to-edge pipeline (zero-cost)

  1. 01Content (phone numbers, services, gallery items) typed and version-controlled in `src/data/{site,gallery}.ts` — maintainable without JSX knowledge.
  2. 02Astro builds the static `dist/` tree with Schema.org + sitemap generated automatically.
  3. 03`wrangler pages deploy dist --project-name=kgv` ships straight to the Cloudflare edge network — no git push needed.
  4. 04Cloudflare Pages serves globally cached; `_headers` sets security headers for the static delivery.
  5. 05Gallery photos served directly from `/public/gallery/pXX.jpg` — Cloudflare transcoding optional, original-resolution photos can be plumbed in later.

Technology stack

Astro 5 (SSG)TypeScript (data layer)Tailwind CSS v4 (via @tailwindcss/vite)@astrojs/sitemapSchema.org LocalBusinessCloudflare Pages · EdgeWrangler CLICustom icon + OG generators

Outcome

Live at kgv.rs. Astro static output with a minimal initial bundle, Cloudflare edge delivers Vojvodina visitors in under 300 ms. Schema.org LocalBusiness signals Google location + service area directly, lifting regional discoverability for "keramičar Vojvodina" / "pločice Odžaci". The dual sticky CTA lowers the barrier — every visitor immediately finds the right number for their region. Content updates (prices, new gallery items) are pure `src/data/` edits, no marketing-team workflow needed.

Similar challenge?

Talk to us — we listen first, deliver second.

Request a project