Skip to content

Andrea Bagnardi

I build backends that carry over a hundred thousand people a day

More than ten years writing software professionally, now working on backend, data and infrastructure.

01 / Expertise

Areas of expertise

Backend and APIs at scale

I design and maintain backends that take real traffic.

I designed the Django architecture and the APIs of a consumer application from scratch, with more than 100,000 daily active users and peaks of tens of thousands of concurrent sessions, and carried it for years through deep stack upgrades without downtime.

  • Python
  • Django
  • REST
  • PostgreSQL

Infrastructure and delivery

I run the infrastructure and the path that takes code to production.

Direct responsibility for servers and environments throughout my career, containerisation with Docker and Docker Compose, CI/CD pipelines built to act as quality control on the team’s pull requests. Backup and restore of the production database. Currently preparing the AWS Solutions Architect Associate certification.

  • Docker
  • GitHub Actions
  • Linux
  • Google Cloud

Full stack and product

I can take a feature from the database to the screen.

I built a web management portal in Ionic and a CRM from scratch on top of a backend already in production, working on interfaces professional operators use every day. I have published applications on the App Store and Play Store.

  • Angular
  • Ionic
  • TypeScript
  • Tailwind

Data and business intelligence

I take data scattered across separate systems and make it queryable.

ETL pipelines in Python and Pandas, a star schema data warehouse with SCD2 history, an interactive dashboard for analysis. Public code and a live demo.

  • Pandas
  • ETL
  • Data warehouse
  • Streamlit

Code review and mentoring of junior developers, estimates and technical planning, dealing with outside suppliers.

02 / Projects

Projects

Product in soft launch

GuitarPath

Problem
Teaching yourself guitar means practising without knowing whether you are doing it right, and online courses hand everyone the same path.
Solution
Exercises built on the player’s own traits and progress, performance analysis with scoring and advice, interactive tablature.
Technical decisions
  • Two separate models with separate jobs: one generates the paths and the tablature, the other analyses the audio.
  • Audio processing in the browser, without going through the server.
  • An extensive test suite.

Built entirely with Claude Code. The code is generated by the agent; the architecture, the constraints and the quality control are mine: TypeScript in strict mode, 440 automated tests, every pull request reviewed.

GuitarPath home page: the headline Suona quello che ami, the description of the coach and the button to start.
languages
6
tests
440
in production
Live

Technologies

  • Next.js
  • TypeScript
  • Prisma
  • PostgreSQL
  • Clerk
  • Tailwind
  • alphaTab
  • Tone.js
  • Vitest
  • Vercel

Public code, backend and front

client-requests

Problem
Client requests arrive as free text: someone reads them one at a time, works out what they are about and who should handle them.
Solution
A model proposes a category, a priority and a summary, and whoever handles the request confirms or corrects it. The demo runs on a free plan that shuts down when nobody is using it, so the first request after a quiet spell waits for the server to wake up.
Technical decisions
  • The classifier is an interface with two implementations registered by name: a heuristic one that runs offline, and one that calls a model. The choice is an environment variable, and the test suite needs no API key.
  • The rate limit on the paid endpoint lives in the database rather than in memory, so it holds with more than one instance running. It bounds the rate, not the total spend: that ceiling is the one on the provider’s account.
Client requests: the form for a new request and the list, with the category, priority and summary proposed by the model.
automated tests
263

Technologies

  • FastAPI
  • SQLAlchemy
  • Alembic
  • PostgreSQL
  • React
  • TanStack Query
  • Zod
  • pytest
  • Vitest
  • Docker

Business intelligence project with public code

Business intelligence system

Problem
In the training sector, operational data stays scattered across separate systems and never turns into something you can decide on.
Solution
It collects the data from those systems, normalises it and keeps its history, then puts it in a dashboard.
Technical decisions
  • A star schema rather than a normalised one: analytical queries cross fewer joins and the dashboard stays responsive.
  • SCD2 history on the dimensions: an analysis of the past is not rewritten by today’s data.
Analytics dashboard: filters for period, area and category, key indicators and the trend of requests over time.
weeks from nothing to a live demo
9

Technologies

  • Python
  • Pandas
  • NumPy
  • SQLite
  • Streamlit
  • Faker

03 / Stack

Stack

Backend

  • Python
  • Django
  • Django REST Framework
  • REST
  • Celery
  • gunicorn
  • PostgreSQL
  • Redis
  • Firebase
  • Push notifications
  • pytest

Frontend

  • Angular
  • Ionic
  • Capacitor
  • Cordova
  • TypeScript
  • RxJS
  • Tailwind

Data

  • SQL
  • Firebase Analytics
  • Google Analytics
  • Looker Studio
  • Celery Beat
  • Pandas
  • ETL
  • Data warehouse
  • Streamlit

Infrastructure

  • Docker
  • Docker Compose
  • GitHub Actions
  • Linux
  • nginx
  • Google Cloud
  • Sentry
  • Play Console
  • App Store Connect

04 / Method

How I work

  1. Spec

    I write the spec before a single line of code is generated. When something goes wrong, it is almost always the spec that was ambiguous.

  2. Constraints

    The project rules live in a file the agent always reads, from naming conventions to architectural patterns.

  3. Generation

    The agent writes the code, I read every diff.

  4. Verification

    The automated tests are the safety net over code I did not type myself, and CI blocks anything that does not pass.

If the check fails, the problem is in the spec.

05 / Profiles

Where to find me