What it involved
- FastAPI and PostgreSQL behind a React and TypeScript front end, deployed on AWS.
- Requests validated with Pydantic at the boundary, data access through SQLAlchemy, and PyTest coverage over both.
- Background jobs that retry, and webhooks made idempotent, so a repeated delivery cannot charge twice.
- Stripe metered billing, with usage counted on the server rather than taken from the client.
- Handed over with the schema, the API documentation and the deployment, not just a repository.
This one does not have a full write-up yet. If you want the detail on it, ask me directly and I will walk you through the decisions.