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

Banking API - Swagger Docs
Banking API - Create Account
Banking API - JWT Login
Banking API - Database Tables