FastAPI with Domain Driven Design & CQRS

This project demonstrates the use of Domain Driven Design (DDD) and Command Query Responsibility Segregation (CQRS) principles in building applications with FastAPI. It’s structured to provide a clear separation of concerns, modular design, and scalable architecture.

Features

  • FastAPI Integration: Utilizes FastAPI for building efficient and scalable web APIs.
  • Domain Driven Design: Implements DDD to focus on the core domain logic.
  • CQRS Pattern: Separates read and write operations for improved performance and scalability.
  • Docker Support: Includes a Dockerfile for easy deployment and containerization.
  • Comprehensive Test Suite: Ensures code quality and reliability with unit and integration tests.

Project Structure

The project is organized into multiple directories, each serving a specific purpose in the application architecture:

  • src/: Source code of the application.
    • apps/: Contains the main applications or services.
      • backoffice/: A backoffice application module.
      • photostore/: A photo storage service module.
    • contexts/: Domain contexts for DDD.
      • backoffice/: Context for backoffice domain.
      • photostore/: Context for photo storage domain.
    • shared/: Shared infrastructure and domain logic.
    • utils/: Utility scripts and helpers.
  • tests/: Contains all unit and integration tests.
  • Dockerfile: Docker configuration file.
  • LICENSE: Project license.
  • Makefile: Simplifies command execution.
  • main.py: Entry point of the application.
  • requirements.txt: Lists all the Python dependencies.

Github Link

  • Python 3
  • FastAPI
  • Docker
  • DDD
  • CQRS
  • Unit Tests
  • Integration Tests