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.