FastAPI developer for async Python backends with real test suites
I build Python backends on async FastAPI with Motor for MongoDB, Redis for caching and Pydantic 2 at every boundary. The OnOffDeals API I wrote has 16 routers, 20 domain services and 311 automated tests. OnOffDeals ships on Vercel and Railway, and the FastAPI service I built for PowerSmith Energy runs on Railway.
- 16 FastAPI routers, 20 domain services
- 311 automated backend tests
- Django/Celery production codebase work
How I structure a FastAPI backend
Routers stay thin and the business rules live in domain services, so the same logic can be called from an endpoint, a webhook handler or a test. Requests and responses are Pydantic 2 models, and I/O is async end to end, from MongoDB through Motor to Redis. Auth uses role-based access, enforced on the routes that need it.
- Async FastAPI, Motor and Redis throughout
- Pydantic 2 schemas for requests and responses
- Clerk + JWT, or bcrypt + JWT with separate token scopes
- Stripe webhooks processed as a state machine
- Versioned caching and batched prefetching for rate-limited APIs
Tests that catch wrong-but-plausible answers
Financial code fails quietly. While building the OnOffDeals valuation engine I caught a silent failure on thin comparable-sales sets: the output looked reasonable and was wrong. Since then the engine has been guarded by self-verifying invariant tests, checks that must hold for every input rather than for one hand-picked example. I write pytest suites in that invariant and property-style form, alongside ordinary unit tests, wherever a plausible error would cost money.
Django, Celery and inherited Python code
Not every project starts fresh. At Podiam AI I joined a production Django, PostgreSQL, Redis and Celery codebase and found that one reported bug was really three: an ORM query chain, a serializer mismatch and an unexpected response shape. Each got its own fix and its own test. I also traced LangChain provider metadata leaking into customer documents back to the persistence boundary, and replaced a local LaTeX dependency with a serverless LaTeX-to-PDF pipeline with multi-API fallback.
Python for operations, not just products
For PowerSmith Energy I built a FastAPI and MongoDB API on Railway. It issues separate bcrypt + JWT token scopes for internal reps and external affiliates, imports commission workbooks server-side, generates PDF commission statements and sends transactional email through Resend. At Axiom Realty Solutions I write Python automation that acquires property data and integrates a dozen external REST APIs with retry, backoff and fallbacks.
Rates from $20/hour
Hourly for open-ended work, fixed price for defined projects. The first call is free and there's no obligation.
Frequently asked questions
Do you work with Django and Flask as well as FastAPI?
Yes. FastAPI is my default for new async APIs, but I have fixed production Django code with Celery workers at Podiam AI and built LegalEase AI, a semantic legal research assistant, on Flask and Docker. I pick the framework your team can maintain.
Which database do you pair with FastAPI?
MongoDB through Motor when documents vary in shape, as in OnOffDeals and the PowerSmith API, and PostgreSQL when the data is strongly relational or needs row-level security. Redis covers caching in either case.
Can you add tests to an existing Python API?
Yes. I start with the code paths where a wrong answer is expensive, such as pricing, billing and permissions, and write invariant-style pytest checks there before widening coverage. Every bug I fix gets a regression test, the way each of the three Podiam defects did.
What is your rate for FastAPI development?
Rates start from $20/hour, with fixed-price quotes for defined projects. I work remotely from Delhi, India, and overlap US working hours, so we can talk through a change during your working day.