Software architecture consulting

Design, technology choices, and code review for development teams

I provide software architecture consulting to companies and development teams that need to make significant technical decisions or revisit past choices that now limit their evolution.

My work usually starts with an analysis of the code and the existing documentation, and with conversations with the team. At the end I deliver a written assessment of the strengths, the critical issues, and the priorities for action.

Areas of work

  • Analysis and design: requirements analysis and documentation, design of the architecture, the data model, and the contracts between backend and frontend, deployment strategy.
  • Technology choices: choice of language, framework, and database, evaluation of a monolith versus a multi-service architecture, and of what is worth buying versus building. The choice takes into account the team that will maintain the system, as well as the problem to be solved.
  • Audits of existing code: review of a project to assess its quality, its security and maintenance risks, and the state of its dependencies, before an acquisition, a change of vendor, or an investment.
  • Code review and pair programming on an ongoing basis, for teams that need a senior person to review their work.
  • Adoption of methodologies: project conventions, documentation, testing, CI, migration management, rules for development with AI agents.

Method

Every engagement produces written documentation: analyses, architecture documents, and project conventions that the team can adopt and check automatically. The documentation describes the current state of the system, while the decisions made and the alternatives discarded are collected in a separate log, which lets whoever takes over reconstruct the reasons behind the choices.

The guiding principle is less is more: the smallest solution that solves the problem, with no abstractions for needs that do not exist yet and no unjustified dependencies.

Technologies

On the backend I work with TypeScript (NestJS, Prisma), PHP (Laravel, Inertia), and Rust (Axum, sqlx), and on the frontend with React and Next.js. For mobile and desktop applications I use React Native, Tauri, and GTK4; for databases, PostgreSQL, MySQL, and SQLite; for infrastructure, Linux and Docker.