← Home

2026 · work

YATAV Company BlogNext.js · PostgreSQL · EC2

Built and deployed a self-hosted blog for company insights and case studies

Role
Design, implementation, deployment
Period
2026
Status
Live
Stack
Next.js, TypeScript, PostgreSQL, Docker, nginx

What I built

The whole company blog: post list, categories, tags, search, an admin editor (TipTap), Docker image build and EC2 deployment, RDS PostgreSQL. Completed in eight PRs.

Traps recorded

  • NEXT_PUBLIC_* is baked in at build time, and standalone output does not serve public/ at runtime. The Docker image copies public separately.
  • The client IP that rate limiting sees depends on which position in the proxy header chain you trust. ALB and nginx both append a value, so the position our own proxy wrote is the one to trust.
  • TipTap tables vanish without warning if the extension is missing, and descendant selectors add margins to <p> inside cells. @tiptap/* versions are pinned together.