§01
Overview
- What it is: marketing site for Self-service terminal vendor (UZ) (management consulting/training, Tashkent — appears in ai_club) with a landing page (10 sections per Figma) and an admin CMS for content management (categories, certificates, sections, site settings). Migrated from Tilda (no-code) to a full code-driven stack.
- Type / status / role: web-app (corporate site + CMS) · active (last commit 2026-05-21) · solo (55 of 56 commits by the user; Bobur Juraev 1).
- Activity period: 2025-11-10 → 2026-05-21 (~6 months), active.
§02
Stack
- Languages: TypeScript.
- Frameworks/libraries: personal SaaS boilerplate — Turborepo + Bun; apps: web (Next.js 16, App Router, SSR/SSG, next-intl ru/en/uz), api (Elysia.js, typed), admin (Next.js, RBAC, auth-gated); packages: auth (Better Auth, cross-subdomain), db (Drizzle ORM + Postgres), cache (ioredis), ui (shadcn/ui), email (React Email + Resend), entities, cli; Eden Treaty (type-safe API client); Polar.sh (payments in boilerplate).
- Infra/deploy: Turborepo,
.env.example,.claude/skills/(AI guides for deploy/design), PORT-driven listen. - Data: PostgreSQL (Drizzle), Redis.
- Notable tooling:
.mcp.json,.tmp_screenshots/(112 screenshots — chrome-devtools UI iterations),backup/(Tilda site snapshot as reference).
§03
What was shipped
55 authored commits solo (per diffs/messages):
- Self-service terminal vendor (UZ) landing (Apr 2026): 10 sections per Figma (
a062472), header with contacts + language switcher (63f2cce), footer (77be717), SSR data fetch + types (09ea6c1), page assembly with SSR data and boilerplate removal (4afcb97). - Admin CMS (Apr 2026): CRUD for categories (
aedffef), certificates (7c50a6f), sections (7691f83), site settings page (e284037), CMS sidebar navigation (2ff7f4a), Toaster/sonner (ac24d82). - Polish/types (May 2026): env-driven cross-subdomain auth (
3b3745a), Better Auth permission body-key fix (6e95e1f), Eden Treaty/authClient annotations to work around non-portable type inference under strict builds (286c873,fa2508f,14be13f), brand-logos/dc-pins modules + new sections (3eeb13c), UI alignment to Tilda reference (3b3051c,6b7b831), Self-service terminal vendor (UZ) favicon. - Scope: 56 commits over 6 months; full cycle — from boilerplate to a production site with CMS.
§04
Technical challenges
Per diffs (solo authorship):
- Headless CMS on Elysia + Drizzle + Next admin: dynamic landing sections render from DB via SSR fetch (
09ea6c1,4afcb97); content management (categories/certificates/sections/settings) via typed API. → Full content-site + CMS pairing, not static. - Cross-subdomain Better Auth (
3b3745a): env-driven config to share sessions between web and admin subdomains. → Real multi-domain authentication. - Fighting TypeScript strict + Eden Treaty (
286c873,fa2508f,14be13f): client annotations to bypass non-portable type inference at build — typical-but-non-trivial edge case for Eden/Better Auth. → Depth of TS typing. - AI-driven visual iteration: 112 screenshots in
.tmp_screenshots/+ Tilda backup as reference → the user iteratively fit UI to Figma/Tilda via chrome-devtools (visual diff with AI). Notable AI workflow.
§05
AI-assisted development
- Sessions found: 4
.jsonlfiles in the Claude Code sessions directory for this project (verified via full-path normalization). - What was done with AI: landing/CMS build, type fixes, visual UI tuning (chrome-devtools screenshots), deploy (
.claude/skills/with guides). - AI workflow patterns: multi-assistant configuration (CLAUDE.md explicitly addresses Claude Code/Cursor/Copilot/Windsurf),
.mcp.json,.claude/skills/(AI-readable deployment & design guides), visual iteration through screenshots. Mature AI-native process on a modern stack.
§06
Achievements & metrics
- Full solo cycle: corporate-site migration from Tilda → code-driven Next.js 16 stack with CMS, in ~6 months.
- The boilerplate (per CLAUDE.md) is "used for 4+ live SaaS apps" — a reusable foundation.