Musa Yılmaz

Blog

Technical writing, experiences, and guides.

·13 min read

Vercel Cron Jobs on Hobby Plan: Limits, Security and Fixes

Vercel cron on Hobby: once a day, ±59 min timing, UTC only. Securing the route with CRON_SECRET, why jobs silently don't run, and what to use instead.

vercelnextjscrondeployment
·9 min read

Vercel Function Timeout: Limits, maxDuration and the 504 Fix

What FUNCTION_INVOCATION_TIMEOUT means, the current per-plan limits, how maxDuration works in Next.js 16 App Router, and when to move work out of the request.

vercelnextjsserverlessdeployment
·11 min read

pg_restore in Docker: Restoring a Django Postgres Backup

Restoring a Django Postgres dump in Docker Compose: why psql exits 0 on a failed restore, the role errors on a new server, and a restore test for cron.

postgresqldjangodockerdevops
·7 min read

Django REST + Next.js: Fetching Without Waterfalls

Sequential awaits against Django REST stack up request by request. How to parallelize them, handle DRF's pagination default, and use Next 16.2's unstable_retry.

nextjsdjangorest-frameworkserver-components
·10 min read

Vercel Image Optimization Limits and How to Cut Usage

Vercel's Hobby plan includes 5,000 image transformations a month. What actually gets counted, what a 128px thumbnail really costs, and the config that fixes it.

vercelnextjsimagesperformance
·7 min read

Django Static and Media Files in Docker: Why nginx 404s

Static files 404 in nginx and uploaded media vanish after a redeploy — Compose containers don't share a filesystem unless a shared volume says otherwise.

djangodockerpythondevops
·14 min read

Why Django Sessions Are Empty in Server Components

Server Components do not forward the Django session cookie. How to pass it with one apiFetch, clear CSRF in Server Actions, and why proxy.ts is not enough.

nextjsdjangoauthenticationserver-components
·10 min read

Stop Building on the Server: Docker Deploys from CI

Building images on the box costs you OOM-killed deploys, long downtime and no way back. Build in GitHub Actions, tag by commit SHA, let the server only pull.

dockergithub-actionsdevopsdeployment
·10 min read

Self-Hosting Next.js: What Changes When You Leave Vercel

Every Next.js feature works on your own server. What you take over: nginx buffering, the ISR cache, the rsc header your CDN strips, sharp, and graceful shutdown.

nextjsself-hostingdevopsdeployment
·10 min read

Vercel Free Tier Limits: What the Hobby Plan Really Allows

The real numbers behind Vercel's Hobby plan: 100 GB transfer, 200 projects, 100 deploys a day — plus custom domains, preview SEO and cron-free scheduling.

vercelnextjsdeploymentdevops
·5 min read

Core Web Vitals: Raising Lighthouse Scores on a Next.js Site

What LCP, CLS and INP actually measure, the font and image fixes that move them, and how to read the difference between lab scores and real-user field data.

performancenextjsseocore-web-vitals
·6 min read

Next.js Server Actions Form Validation: Zod, Rate Limiting

Handling forms without an API route — server-side validation with Zod, honeypot bot filtering, and the field-prefix gotcha that makes FormData reads return null.

nextjsreactzodforms
·7 min read

Filtering Thousands of Records: PostgreSQL and Django ORM

Why multi-criteria listing pages slow down — N+1 queries, missing indexes, the wrong text search method and OFFSET pagination — and how to fix each one.

postgresqldjangoperformancesql
·6 min read

AWS Lightsail Django Deploy: From Nothing to Live

Step-by-step Django deployment on AWS Lightsail: Docker, nginx, Let's Encrypt HTTPS, SSH hardening, firewall rules and a backup routine that actually works.

awsdjangodevopsdeployment
·5 min read

A Production Docker Compose Setup for Next.js + Django

Run Next.js, Django, PostgreSQL and nginx from one Compose file: multi-stage builds, healthchecks, network isolation and keeping secrets out of images.

dockernextjsdjangodevops
·6 min read

Django, Celery and Redis: Background Tasks Done Right

Celery and Redis setup for Django: moving slow work out of the request cycle, retry strategy, idempotent tasks, and the mistakes that bite in production.

djangoceleryredispython
·6 min read

How Next.js ISR and On-Demand Revalidation Work

How Next.js ISR works, how to pick a revalidate window, and how on-demand revalidation updates content in seconds — with App Router code examples.

nextjsisrperformancecms
·7 min read

Turning Django Admin Into a CMS Your Client Can Actually Use

Make the built-in Django admin usable for non-technical editors with list_display, inlines, fieldsets and validation instead of a custom panel.

djangopythonadmincms
·7 min read

Getting hreflang and Multilingual SEO Right in Next.js

Per-page canonical and hreflang tags in the Next.js App Router, a sitemap with localized paths, and the mistakes that quietly break multilingual indexing.

nextjsseoi18nnext-intl
·6 min read

Building Admin-Managed SEO Landing Pages in 15 Languages

Using next-intl and the Django admin to make location-based SEO landing pages manageable by marketing, not developers, across 15 languages with RTL support.

nextjsseodjangoi18n
·6 min read

Next.js + Django on a Single Origin, No CORS Headaches

How an nginx reverse proxy puts a Next.js frontend and Django backend on one origin, eliminating CORS config, cookie SameSite issues, and dual SSL certs.

nextjsdjangonginxdevops