June 12, 2026
Portfolio Platform
This very site — a bilingual portfolio and blog backed by a Go API, a PostgreSQL database and an admin CMS.
Next.jsTypeScriptGoPostgreSQLTailwind v4next-intl
The site you're reading. It started as a static, MDX-driven portfolio and grew into a small full-stack system: a public website, an admin dashboard, and a Go API that both talk to the same PostgreSQL database.
Three apps, one source of truth
- Public site (Next.js) — reads published content from the API and renders MDX
on the server with
next-mdx-remote, with locale-prefixed routing for English and Uzbek. - Admin dashboard (Next.js) — a JWT-protected CMS for writing posts and projects, built with React Query and optimistic updates.
- API (Go + chi + pgx + sqlc) — type-safe SQL, embedded migrations that apply on startup, and a clean split between authenticated write routes and public read routes.
Things I'm happy with
- Type safety end to end — sqlc generates Go from SQL, and the front-end mirrors the API's JSON shapes in TypeScript.
- ISR keeps the public site fast: pages are cached and revalidated in the background instead of rebuilding the whole site for one edit.
- SEO baked in — dynamic OG images, RSS, a sitemap and structured data.