Architecture protects product speed
Clear boundaries, explicit contracts and small, cohesive modules keep systems adaptable, without hiding complexity behind generic layers.
I'm a senior software engineer focused on backend. I build APIs, distributed systems and the reliability layer that keeps them running, with TypeScript, Node.js and functional programming. Most of my recent work has been on large-scale fintech at Itaú and PicPay.
14+
years working across backend and product engineering
2
large-scale financial platforms in production (Itaú, PicPay)
15+
languages and tools I use across APIs, data and infrastructure
24/7
reliability and operations as part of the job, not an afterthought

01type SystemBoundary = {02 domain: PureRules;03 application: UseCases;04 adapters: Ports;05 infrastructure: Effects;06};0708const ship = compose(09 validateContracts,10 isolateSideEffects,11 observeRuntimeBehavior,12 keepProductFeedbackTight,13);About
I work across backend, distributed systems and reliability, with a bias toward systems that stay readable long after the first release.
My work sits between full-stack delivery, backend architecture, distributed systems and reliability. I care about systems that stay understandable after they ship, and about teams that keep delivering without piling up hidden risk.
I lean on functional programming where it pays off: immutable data, explicit boundaries, composition and isolated effects. OOP, SOLID, Onion and Clean Architecture are practical tools here, not ceremony.
TypeScript and functional programming
Distributed backend systems
Performance and reliability
Backend architecture
Engineering philosophy
The way I work is built on explicit boundaries, feedback from production and evolving systems over the long term.
Clear boundaries, explicit contracts and small, cohesive modules keep systems adaptable, without hiding complexity behind generic layers.
Business rules are modeled as predictable transformations. Infrastructure effects stay isolated, observable and replaceable.
Latency, memory and failure modes are part of the first decisions, not a late optimization pass.
Architecture
Business rules stay at the center. Frameworks, runtimes, brokers and databases are replaceable details around them.
Next.js, API clients, typed contracts
Use cases, orchestration, policy
Pure rules, value objects, invariants
Databases, brokers, queues, cloud
Technical expertise
What I use at each layer: interface, backend, data, messaging, operations and design.
Functional JavaScript and TypeScript: pure functions, immutability, composition and isolated side effects.
React, Next.js and UI architectures built for maintainable, predictable product surfaces.
Node.js, Python, Go, C#, Rust and Elixir, and service boundaries that hold up under real load.
Relational, document, graph (Neo4j) and cache systems, chosen by the access pattern of the problem.
Event-driven architecture, queues, consistency tradeoffs and async collaboration between services.
Containers, orchestration, deployment flows and observability, built into how I deliver.
Clean Architecture, Onion Architecture, SOLID, OOP and functional modeling, applied pragmatically.
Distributed systems
A distributed system is a set of tradeoffs: latency, consistency, isolation, observability and what happens when something fails.
API boundary
typed contracts
Event stream
Kafka / RabbitMQ
Workers
idempotent effects
Storage
SQL / Graph / Cache
Performance engineering
Functional programming
Immutable data, composition and explicit effect boundaries make complex backend easier to test, operate and evolve.
Featured projects
Public tools that show what I like to build: developer workflows, local-first systems and practical automation.
minuta
Legal platform for drafting, reviewing and analysing documents, with the Mia assistant supporting the daily work of lawyers and firms.
AI-assisted document work on a strict, functional, architecture-guarded codebase.
gestao-paroquial
Multi-tenant SaaS for parish treasury, organising finances, members and operations across separate workspaces.
A real operational platform on a clean monorepo, with isolated domain rules and async workers.
@andespindola/brainlink
Local-first knowledge memory for agent workflows, with Markdown vaults, backlinks, indexing and context retrieval.
Turns loose notes into engineering context I can actually retrieve.
pingu-dev-agent
Real-time pair programming agent for Vim, Neovim and LazyVim workflows, packaged as an npm CLI.
Assistant workflows that live in the terminal, close to how I work.
font-crowquill-mono
A monospace programming font that auto-bolds language reserved words, built from a custom Iosevka build, with a matching monochrome (ink) editor theme for Neovim and VS Code.
The weight of the syntax itself becomes a readability cue, straight from the typeface.
crowquill-theme
A strictly monochrome (black & white) theme for editors and terminal (Neovim, VS Code, Ghostty, tmux, fish and starship), companion to the Crowquill Mono font.
One ink palette across the whole toolchain, with keywords and shell commands in pure white.
Experience timeline
Experience shaped by fintech products, production reliability and backend systems under real operational pressure.
2024 - Present
Itau Unibanco
Reliability, deployment flows, cloud operations and backend service evolution in production environments that demand operational discipline.
2021 - 2024
PicPay
Backend services, GraphQL APIs, Kafka workers, data-intensive flows, Neo4j social graph features and distributed system delivery.
2024 - 2027
PUC Minas
A formal engineering foundation, expanded through architecture, backend design, systems thinking and collaborative delivery.
Contact
Open to senior backend, architecture and platform work, and to complex systems that need technical depth.