field notes from production// 31.0°N
Ship it. Then write down what broke.
The error message, the actual cause, and the one-line fix — from really building apps on Next.js, Postgres, Vercel, Rust, and Python. No fluff, no listicles, just the gotchas that cost an afternoon.
const output = await sharp(input)
.rotate() // auto-orient BEFORE exif is stripped
.resize({ width: 1600 })
.webp({ quality: 82 })
.toBuffer(); // exif + gps gone by defaultWhat's here
Topics, written from the build — not the docs.
{}
Security
CSP, rate limiting, auth, RLS — and the holes you open by accident.
00 ARTICLES$
Hosting
Where to actually run it, and what the bill does at scale.
00 ARTICLES!
Debugging
The error, the cause, the fix. The stuff nobody documents.
01 ARTICLE⛁
Full-stack
Uploads, image pipelines, CRUD, multi-tenant Postgres.
00 ARTICLESLatest
Recent entries.
Built for reading code
Code you can actually read at 1am.
Every snippet is real, copy-ready, and rendered with the line that matters lit up — because that's the line you came for.
- ▍Syntax highlighting tuned for a dark room.
- ▍One-tap copy on every block.
- ▍The fix line highlighted, not buried.
export function proxy(request: NextRequest) {
const isLive = process.env.SITE_LIVE === "true";
const { pathname } = request.nextUrl;
if (!isLive && !exempt(pathname)) {
return NextResponse.rewrite(new URL("/soon", request.url));
}
return NextResponse.next();
}