Skip to main content
Juliano Alves
Back to blog
•2 min read
Playwright E2E practices that survive real teams
Selectors, fixtures, test isolation, parallel sharding, trace-on-failure, and avoiding flaky waits in browser automation.
Testing
Playwright
DX
•1 min read
Sentry, source maps, and release health in Next.js
Uploading maps in CI, debug IDs, scrubbing PII, sampling transactions, and correlating errors with deployments.
Next.js
Observability
DX
•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
•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
•3 min read
Migrating ESLint to flat config (eslint.config.js)
Flat config end-to-end: typescript-eslint project service, import sorting, React hooks rules, monorepo roots, and CI pitfalls when upgrading from .eslintrc.
JavaScript
DX
Tooling
•2 min read
Changesets and SemVer in JavaScript monorepos
Fixed vs independent versioning, bump strategies, CI publishing, and how consumers interpret semver ranges.
Monorepo
DX
Tooling
•3 min read
A type-safe client from OpenAPI
openapi-typescript for paths and operations, Orval for React Query hooks, runtime validation with Zod, and CI gates so generated code never drifts from production APIs.
TypeScript
API
DX
•2 min read
Debugging Node and TypeScript in VS Code
launch.json recipes for Vitest and Jest, attaching to Nest/Express with --inspect, compound configs, env files, and source-map pitfalls in monorepos.
Node.js
TypeScript
DX

© 2026 Juliano Alves. All rights reserved.