Next.js
7 posts
- 01September 2, 2026 · 7 min read
Drizzle ORM schema and migration management in production
Generate, push, or migrate? Running migrations on container startup, fixing connection pool leaks in Next dev, and preventing next build from breaking due to database requests—from a real-world panel with 17 migrations.
- 02September 2, 2026 · 7 min read
Self-Hosting Next.js with Dokploy and Docker
When does it make sense to move off Vercel? Let's look at output standalone, multi-stage Dockerfiles, why database migrations belong in the entrypoint rather than the build step, and a single line of code that prevents SIGTERM from being swallowed.
- 03September 2, 2026 · 9 min read
Payment integration in Next.js: 3D Secure flow with iyzico and PayTR
Why is payment integration in Turkey harder than you think? How the 3D Secure flow actually works, handling callbacks correctly in Next.js App Router, never trusting the client with pricing, and wrapping four providers under a single interface.
- 04September 2, 2026 · 7 min read
SEO in Next.js: Metadata, Sitemap, Robots, and Structured Data
The mechanics of SEO in the App Router — generateMetadata, canonical tags, correctly setting lastModified in your sitemap, structuring JSON-LD with @graph, and which rich results are still actually alive.
- 05June 13, 2025 · 8 min read
Choosing a React UI Library: Which One to Use in 2026?
MUI, Ant Design, Mantine, Chakra, and shadcn/ui — up-to-date npm numbers, how Server Components impact your choice, and the real question: do you want a dependency or code ownership?
- 06June 12, 2025 · 9 min read
Monorepo with Turborepo: Managing Four Apps in One Repository
I explain setting up pnpm workspaces + Turborepo using a real-world repository — 4 apps, 4 packages, uncompiled packages, an outputs bug that silently breaks caching, and containerizing a single app with Docker.
- 07June 27, 2024 · 13 min read
HTTP status codes: complete reference and most common confusion
A complete reference list of HTTP status codes — plus the actual hard choices: 301 vs 308, 401 vs 403, 422 vs 400, 502 vs 503, including how Next.js handles them under the hood.

