All projects

WebEdge public site

Our lt/en/ru site on Astro, content pulled from the WebEdge CMS.

AstroTypeScriptTailwind
WebEdge public site screenshotDev-story
01

Challenge

We wanted a public site in three languages that stays in sync with our own CMS but ships as plain static HTML — no heavy SPA loading data at runtime.

02

What we did

Astro renders every page to static HTML at build; copy and the project catalogue are fetched from the WebEdge CMS during the build, and a typed in-repo fallback keeps the build green when the CMS is unreachable.

03

Result

Editors change content in the CMS, a rebuild ships new static pages, and the site keeps building even when the CMS is offline.

Dev-story article

WebEdge public site: how the project was built

The showcase pulls its project copy from our CMS, but the CMS kept drifting: stale featured flags, auto-captured screenshots that were ugly, and product names we couldn't ship publicly (competitor brands, internal codenames). Editing 32 project cards by hand in the CMS wasn't the answer — we needed a source of truth that lived in code and survived review. So the build was reworked so the repo wins and the CMS only fills the gaps.

Sections

05

Modules

05

Stack

Astro + TypeScript

01

Why the project exists

We wanted a public site in three languages that stays in sync with our own CMS but ships as plain static HTML — no heavy SPA loading data at runtime.

The showcase pulls its project copy from our CMS, but the CMS kept drifting: stale featured flags, auto-captured screenshots that were ugly, and product names we couldn't ship publicly (competitor brands, internal codenames). Editing 32 project cards by hand in the CMS wasn't the answer — we needed a source of truth that lived in code and survived review. So the build was reworked so the repo wins and the CMS only fills the gaps.

02

What was built

Astro renders every page to static HTML at build; copy and the project catalogue are fetched from the WebEdge CMS during the build, and a typed in-repo fallback keeps the build green when the CMS is unreachable.

A static Astro site in Lithuanian, English and Russian — a marketing front and a portfolio catalogue of ~32 projects with per-project detail pages. Content is fetched from the CMS at build time and merged with in-repo overrides; the output is plain static HTML with no heavy client framework.

03

Main modules and user path

M01

Fallback-first merge: repo content (taglines, tech tags, cover, the 'featured' flag) overrides the CMS instead of being OR'd with stale CMS values

M02

A staticScreenshots map that serves a repo-committed cover.webp per project, replacing the CMS's auto-captured screenshots

M03

A de-branding pass that strips external product names and internal codenames from every card while keeping legitimate own-tech names

M04

Home grid curated to a clean 3x3 of nine featured projects, driven by the repo flag, not the CMS

M05

Slimmed catalogue cards: one-line taglines rewritten to <=81 chars with a line-clamp-2 safety net, with the full challenge/solution/result depth moved to the detail page

04

Architecture and technology decisions

Built with Astro, TypeScript, Tailwind.

Built on Astro with the CMS content pulled at build time and merged behind a repo-authoritative resolver; each project carries EN/LT/RU copy that stays meaning-consistent across the three locales.

05

Result and lessons

Editors change content in the CMS, a rebuild ships new static pages, and the site keeps building even when the CMS is offline.

The site ships as static HTML with the repo as the reviewable source of truth, so a card's wording, cover and feature status change in a commit — no CMS round-trip and no stale data leaking to the public grid.

Read next

These projects share nearby technical or product decisions, so they show how the same principle behaves in another context.

Have a similar idea?

Discuss your project