Codify SaaS Blog - Page 4
Code-first guides and deep dives on building B2B SaaS products, designing APIs, scaling web apps, and modernizing legacy software.

NestJS Background Jobs Not Running on Vercel Serverless Functions
Your BullMQ worker runs perfectly in development and just... stops firing once the app is deployed to Vercel. It's not a bug in your processor. Vercel's serverless functions have nowhere for a worker loop to live. Here's the actual mechanism and where the worker needs to go instead.

NestJS Health Check Failing on Render — What's Actually Different
Render keeps marking the service unhealthy and restarting it, even though the app runs perfectly and logs nothing wrong. Almost always, the health check itself is the bug — wrong path, wrong timeout, or a route that's accidentally behind a global auth guard. Here's how to actually fix it.

NestJS Won't Start on Railway — Missing PORT Environment Variable
The deploy log says success. The app immediately crashes or the health check fails anyway. Nine times out of ten it's one line: your NestJS app is listening on a port Railway never asked it to use. Here's the exact fix, and the boilerplate habit that causes it in the first place.

NestJS Cold Start Timeout on AWS Lambda — Fixing the 10-Second Wall
The first request after every idle period takes 8-10 seconds, and it's not your handler — it's NestJS's dependency injection container doing a full bootstrap on a cold Lambda. Here's the actual mechanism, the fixes that work, and the honest question of whether you should be on Lambda at all.

NestJS WebSocket Not Working on Vercel — The Real Fix
Your NestJS gateway works perfectly on localhost and dies the second it hits Vercel. It's not your code — Vercel's serverless functions were never built to hold a WebSocket connection open. Here's the real reason, how to confirm it's your actual problem, and exactly where to move the gateway instead.

SaaS Waitlist System: Referral-Powered Build
A plain email box is a spreadsheet with extra steps. A referral-powered SaaS waitlist turns every signup into a marketer. Here's how to build one: a non-sequential schema, real-time queue ranking, Hashids links, fraud defense, reward tiers, and a batch launch that won't melt your servers.

SaaS Reporting Engine: Scheduled & Custom Reports
One custom report with a wide date range, run on your primary database, can take the whole app down at 9am Monday. Here's a SaaS reporting engine that scales: report isolation on a read replica, queue-backed generation, streamed output, caching, and airtight tenant scoping.

SaaS Data Export Pipeline for Enterprise Clients
Enterprise buyers won't keep their data trapped in your silo, and a 5,000-row browser download fails their security review. Here's a data export pipeline that closes the deal: streaming exports that never OOM, PGP encryption, S3/SFTP delivery, Parquet/CSV/JSONL, and a full audit trail.

SaaS Changelog & Release Notes System
Most changelogs are a dry list of bug fixes buried in a docs subfolder — a wasted retention asset. Here's a SaaS changelog and release notes system done right: a clean schema, an SEO public page, an in-app 'what's new' widget with unread badges, an email digest, and a markdown admin.

Logistics SaaS Tracking & Carrier Integration
Treat a tracking number as a static string and your logistics app breaks the first time two carriers disagree on a schema. Here's resilient logistics SaaS tracking: a unified shipment model, a carrier adapter pattern, webhooks over polling, route maps, and public tracking links that don't leak your customer list.

EdTech Video Progress Tracking & Certificates
Write a row every second a student watches a video and you'll DDoS your own database. Here's EdTech video progress tracking that scales: Redis heartbeat buffering, HLS streaming, drip content, server-side quiz grading, and certificate PDFs generated on a background queue.

How to Build a White-Label SaaS — Custom Domains, Branding and Subdomain Routing
When your B2B clients want your SaaS under their brand — white-label ready. We built this so you never have to say 'We don't do white-label,' again.