Banking API
Overview:
A production-ready REST API built with FastAPI, exposing the full banking domain as an HTTP service. Built on top of the Banking CLI App, this project layers a proper API interface, PostgreSQL database, Docker containerisation, and JWT-based authentication on top of the existing business logic. Deployed and live on Render.
Tech Stack:
Language: Python 3.14 | Framework: FastAPI | Database: PostgreSQL | ORM: SQLAlchemy | Migrations: Alembic | Containerisation: Docker | Auth: JWT | Validation: Pydantic | Deployment: Render
Key Features:
Full REST API with 12 endpoints covering account management, transactions and user profiles | JWT authentication with role-based access control (User and Admin roles) | PostgreSQL database with SQLAlchemy ORM and Alembic migrations | Docker and docker-compose for local containerised development | Pydantic request validation with custom field validators | Custom exception handling with appropriate HTTP status codes | Deposit open to public, protected endpoints restricted to owner or admin | Deployed and live with a managed PostgreSQL database on Render
Concepts Demonstrated:
REST API Design | JWT Authentication | Role-Based Access Control | PostgreSQL | SQLAlchemy ORM | Alembic Migrations | Docker | docker-compose | Pydantic Validation | Custom Exceptions | Dependency Injection | Password Hashing | Foreign Keys | Environment Variables | Cloud Deployment