§01
Overview
- What it is: marketing site for Self-service terminal vendor (UZ) (products: info kiosks, payment terminals) + a custom headless CMS for content management. Public storefront (SSR from API) + admin (CRUD for sections/categories/certificates/settings) + API. Content is multilingual.
- Type / status / role: web-app (monorepo: site + CMS) / active / solo (47/47 commits — user).
- Activity period: 2025-11-10 → 2026-05-21, active.
§02
Stack
- Monorepo (ShipKit): Turborepo + Bun;
apps/web(Next.js 16 public site),apps/admin(Next.js admin CMS),apps/api(Elysia.js); packages auth (Better Auth)/db (Drizzle/Postgres)/cache (Redis)/ui (shadcn+Tailwind v4)/email/entities/cli. - Frontend: Next.js 16 (App Router, SSR), section components per Figma, sonner (toasts), i18n (LanguageTabs).
- CMS: custom — sections, categories, certificates, site settings; ImageUpload, LanguageTabs (multilingual content), seed script.
- Infra:
.mcp.json(shadcn MCP),.claude/, ShipKit deploy config. - Data: PostgreSQL (Drizzle) + seed; content migration from Tilda (
backup/— snapshot of the Tilda site with assets).
§03
What was shipped
Tidy conventional commits, clean bottom-up build visible:
- CMS backend (
feat(api)): settings controllers + CMS controller registration; entities exports (sections/categories/certificates/settings/upload). - Admin (
feat(admin)): CRUD pages for sections (list+edit), categories, certificates, site settings; CMS sidebar navigation; reusableLanguageTabs+ImageUpload; Toaster (sonner). - Content seed (
9de7b0a feat(db): Self-service terminal vendor (UZ) seed script with all initial content). - Public site (
feat(web)): server-side fetch helpers + data types, header with contacts and language switcher, 10 sections per Figma, footer, landing assembly on SSR data (boilerplate removed), additional landings/infokiosk,/platejniy-terminal, brand-logos, dc-pins, "pixel-pass" polish. - Tilda migration (
0e34433 chore(backup): snapshot Tilda site with assets). - Scope: 47 solo commits over ~6 months.
§04
Technical challenges
- Custom multilingual CMS from scratch (
apps/admin+apps/api+packages/db): CRUD for sections/categories/certificates/settings, multilingual content viaLanguageTabs, image upload (ImageUpload), seed. → proves the ability to build a headless CMS (not just consume an off-the-shelf one). - SSR landing from API (
apps/web, server-side fetch helpers + types): the public site renders sections from the CMS on the server. → typed API (Elysia) wired to Next SSR. - Figma → components (10 sections "matching Figma design", "pixel-pass"): clean transfer of design to code.
- Migration off Tilda to an own stack: moving away from a no-code builder to a managed Next/Elysia site + CMS (preserving assets). → typical, valuable B2B task.
§05
AI-assisted development
- Sessions found: 1 .jsonl in the Claude Code sessions directory for this project. Local
.claude/,.mcp.json(shadcn MCP). - What was done with AI: development on AI-ready ShipKit (CLAUDE.md + skills); likely CMS/sections assembly with Claude Code + shadcn MCP. Not deeply sampled (1 session).
- Pattern: ShipKit + shadcn MCP + Figma-driven layout.
§06
Achievements & metrics
- Solo: site + custom CMS + API on a modern monorepo in ~6 months.
- Multilingual content, 10+ sections per Figma, 2+ product landings, Tilda migration.
- 47 solo commits.