Blog
Technical writing, experiences, and guides.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.