Skip to main content
Juliano Alves
1 min read
Nx and Turborepo: choosing a task runner for monorepos
Computation caching vs content hashing, project graphs, generators, migration cost, and using both tools together when it pays.
Monorepo
Tooling
DX
4 min read
Streaming and Suspense in the Next.js App Router
A deep dive into HTML streaming, Suspense boundaries, loading.tsx, caching semantics, and how to compose fast perceived performance without sacrificing correctness.
Next.js
React
Performance
1 min read
Content-Security-Policy nonces in Next.js
Why nonces beat unsafe-inline, generating per-request nonces in middleware, passing to Script components, and strict-dynamic tradeoffs.
Next.js
Security
1 min read
Rate limiting serverless APIs with Upstash Redis
Token bucket vs sliding window, keys by IP or user id, @upstash/ratelimit in Vercel Edge, and false positives behind NAT.
Redis
Serverless
Security
2 min read
Multi-stage Docker builds for Next.js
Standalone output, layer caching with BuildKit, non-root users, distroless or Alpine runtimes, and image size tradeoffs.
Docker
Next.js
DevOps
1 min read
Biome as a single linter and formatter
Speed vs ESLint ecosystem parity, migration path, CI integration, and when you still need TypeScript-aware ESLint rules.
Tooling
JavaScript
DX
1 min read
tRPC: end-to-end types without GraphQL
Procedures, routers, context, Zod input validation, React Query integration, and boundaries between BFF tRPC and public REST.
TypeScript
API
React
2 min read
HTTP caching: browser, CDN, and origin
Cache-Control directives, stale-while-revalidate, ETag vs Last-Modified, CDN cache keys, and busting strategies for HTML vs assets.
Web
Performance
Architecture
4 min read
TypeScript utility types I use every day
From Pick and Omit to satisfies, mapped types, and when to reach for conditional types—patterns for APIs, forms, and component libraries without drowning in generics.
TypeScript
Frontend

© 2026 Juliano Alves. All rights reserved.