Skip to content
Business Agile
Services
03

Freelance Python developer: FastAPI and Django APIs Python API development

Typed, tested and deployed Python APIs that connect your tools together

I have been writing Python APIs for years: FastAPI for fast, typed services, Django REST Framework for platforms with a back office. I integrate the services you already rely on: email delivery, payments, public data.

Describe my project

FastAPI or Django: which one for your project?

Django REST Framework remains my choice when a project needs a back office, users, permissions and many models: that is what I used for Pitchichi and for the first ScienceProtect platform. FastAPI fits focused, asynchronous and strongly typed services better: the API that queries PubMed for ScienceProtect, the one that relays contact forms on my marketing sites, or the one behind TapToSupport, a donation app for charities.

In both cases I work with strict typing checked by mypy, automatic linting and tests that run on every merge request.

Integrations I already know

Transactional email through Brevo, with pitfalls verified in production: user input escaped in the message HTML, attachments limited to accepted formats, sending quota protected by per visitor rate limiting and a honeypot field against bots. Payments with Stancer, rewritten from its official OpenAPI specification for Eco-Actives, and with Stripe Connect for TapToSupport. Public data with PubMed and EFSA expert opinions for ScienceProtect, or railway open data.

When a third party service documents its behaviour poorly, I check it against a real instance. On Eco-Actives, three gaps between the Saleor webhook documentation and its actual behaviour were found that way and fixed.

Collecting and structuring data

Part of my work is fetching data where it lives and making it usable: scrapers for EFSA experts and opinions, PubMed publication ingestion within the API quotas, journeys rebuilt from SNCF open data, scheduled background tasks with Celery or TaskIQ. Data lands in PostgreSQL or in a Memgraph graph, with versioned migrations.

I respect the terms of use of each source and the quotas they set: an API that gets banned helps nobody.

Tests and deployment

The contact API of Antiquité Mallarmé has 27 tests for a single form, because that form is the first conversion step of the site: rate limiting, honeypot, oversized photos, mistyped phone numbers, Brevo outages. Every API I deliver goes through a real Docker build, a container start and real endpoint calls before it counts as done.

Deployment follows the same pattern on all my projects: an image built by GitLab CI, pushed to the registry, deployed per environment behind Traefik with automatic HTTPS, and secrets that never go through the code repository.

An example: the TapToSupport API

TapToSupport is an app that lets charities collect donations in person, through tap to pay on a phone. Before writing the API, I compared four payment providers and chose Stripe Connect, which lets each charity open its own account unaided. The FastAPI service isolates that provider behind an interface: no other module imports the Stripe library, so it can be replaced without rewriting the rest.

Donors have neither account nor password: they receive a signed single use link by email, sent through Brevo, and their tax receipt is generated as a PDF. The database migration was verified both ways on PostgreSQL, and the pitfalls met along the way (enum types surviving a dropped table, system dependencies of the PDF generator on Alpine) are documented in the repository so nobody rediscovers them. The project is in progress: the API exists, the website and mobile app will follow.

I also write an API contract before its code when several people must work in parallel: that was the case for the Arbre Agile API, whose OpenAPI contract came before the implementation.

Why Python?

Python is the language I have used daily since my first projects through to the services of 2026. It has the richest ecosystem for data, AI and scraping, proven web frameworks, and it reads easily, which matters for code someone else will take over. I also contribute to the ecosystem: several of my improvements were merged into neontology, an open source Python library for graph modelling.

Joining your team

I can take on a complete service or join an existing team. I spent more than two years in a large team for SNCF, on Python services and their deployment tooling, and in small teams for ScienceProtect or Pitchichi. I adapt to your code conventions and your review process.

I do not do Java, .NET or PHP development: if your system is built on those, I will point you to someone better suited.

Projects delivered in this area

tikosmeo.fr
Home page of the Ti Kosmeo website, natural cosmetics workshops in Boulogne-Billancourt
Web · Sep 2026

Ti Kosmeo

A workshop brand's WordPress site rebuilt as a fast website, keeping rankings and bookings intact.

Perf92A11y94SEO100LCP1.1 s
tikosmeo.frSep 2026
antiquitemallarme.fr
Home page of the Antiquité Mallarmé website, antiques dealer and valuations in Saint-Ouen
Web · Sep 2026

Antiquité Mallarmé

Three generations of website for a Saint-Ouen antiques dealer, from client rendering to static prerendering.

Perf99A11y100SEO100LCP0.8 s
antiquitemallarme.frSep 2026
scienceprotect.com
ScienceProtect home page, scientific monitoring for food safety
AI · Oct 2025

ScienceProtect

APIs, data pipelines and a knowledge graph to track food science.

40 millionstudies tracked (figure published by the client)607automated tests on the Who's Who API (team)
scienceprotect.comOct 2025
Open source · Aug 2025

Neontology

Merged contributions to a Python OGM for Neo4j and Memgraph.

3merged pull requests15files retyped following PEP 585
github.com/ontolocy/neontologyAug 2025
maisonozae.eu
Home page of the Maison Ozaé website, wedding photography and film
Web · Jul 2025

Maison Ozaé

A bilingual wedding portfolio that stays fast with nearly 4,000 photographs.

Perf79A11y84SEO100LCP3.2 s
maisonozae.euJul 2025
Web · Feb 2025

Arbre Agile

The bilingual website of the group's AI studio, backed by an API and a knowledge graph.

50 / 53front end commits written by me2languages, one URL each
Artificial intelligence consulting and developmentFeb 2025
Web · Nov 2024

Groupe BERREBI

The holding's corporate website, with companies, brands and legal details drawn from a single source.

2versions of the site since 20245companies described from a single source
Holding company and corporate websiteNov 2024
API · 2021-2023

SNCF

Python back-end and DevOps developer in a rail data team.

2021 to 2023length of the engagement~10microservices in the platform
Rail transport, large organisation2021-2023
guide.pitchichi.com
Pitchichi communication agency guide, home page
App · Sep 2021

Pitchichi

The API behind a communication agency directory and its brief wizard.

471 / 783API commits authored by me18Django models across six apps
guide.pitchichi.comSep 2021
API · In development

TapToSupport

An in-person donation app: the donor taps their card on the volunteer's phone.

6domain model entities4payment providers compared
Donation collection for non-profitsIn development
App · In development

24hprojects

A feature or an MVP shipped in 24 hours, with production tracked live.

3 daysof development, front end and API55API test functions
MVP delivery platformIn development
E-commerce · In progress

Eco-Actives

One headless e-commerce back end for two brands, with Stancer payments and exclusive workshop slots.

2brands served by one back end10tests on the App and slot exclusivity
Ecological transition and DIY workshopsIn progress

Frequently asked questions

Why hire a freelance Python developer instead of an agency?

Because you talk directly to the person writing the code, with no intermediary. For an API that is a real advantage: technical decisions (data formats, error handling, limits) are made quickly and stay consistent. If the project needs more hands, I bring in developers I have already worked with and tell you during scoping.

How do I connect a static site form to Brevo?

A static site cannot keep a secret key, so you need a small API that receives the form and calls Brevo. I deploy one per site, with field validation, HTML escaping, per visitor rate limiting sized on the Brevo quota and a honeypot field against bots. The Brevo key stays in a server variable, never in the code.

Is FastAPI production ready?

Yes. I run FastAPI in production for several services: form relays, a scientific publication ingestion API, a payment application. It just needs the right companions: typing checked by mypy, pytest tests, uvicorn behind a proxy, and correct handling of visitor IP addresses for rate limiting.

Can you integrate online payments?

Yes. I integrated Stancer, a French payment provider, into a Saleor store for Eco-Actives from its official specification, and Stripe Connect for TapToSupport, where each charity collects on its own account. I prefer payment pages hosted by the provider, which simplify compliance.

A project? Let's talk this week.

A short brief, an answer within 48 hours, a firm estimate after scoping.

Describe my project