Big-Link-Man/docs/architecture/overview.md

3.6 KiB

Architecture Overview

Introduction

This document outlines the overall project architecture for the Content Automation & Syndication Platform, based on the requirements detailed in the PRD v1.0. Its primary goal is to serve as the guiding architectural blueprint for AI-driven development, ensuring consistency and adherence to chosen patterns and technologies. The architecture is designed as a Python-based monolithic application with a Command-Line Interface (CLI), focusing on modularity to support future scalability, including an eventual migration from SQLite to PostgreSQL.

Starter Template or Existing Project: N/A - This is a greenfield project to be built from scratch.

Change Log

To be maintained as the project evolves

High-Level Architecture

Technical Summary

The system is designed as a modular monolith written in Python, operating primarily through a command-line interface. The core architecture emphasizes a clean separation of concerns, with distinct modules for data ingestion, AI content generation, HTML templating, interlinking, and multi-cloud deployment. A crucial design principle is the implementation of a database-agnostic Repository Pattern to abstract data access, ensuring the initial SQLite database can be seamlessly replaced with a more robust solution like PostgreSQL in the future. An internal REST API, built with FastAPI, will facilitate communication with other internal systems, starting with the link-building machine.

High-Level Project Diagram

graph TD
    subgraph User Interaction
        User(User/Admin) -- Runs CLI Commands --> CLI(CLI Interface)
    end

    subgraph "Python Application (Monolith)"
        CLI -- Invokes --> CoreModules(Core Modules)
        CoreModules --> D(Database Module)
        CoreModules --> AI(AI Generation Module)
        CoreModules --> T(Templating Module)
        CoreModules --> IL(Interlinking Module)
        CoreModules --> DP(Deployment Module)
        CoreModules --> API(Internal REST API)
    end

    subgraph "Data & Configuration"
        D -- "Reads/Writes" --> DB[(SQLite Database)]
        CoreModules -- Reads --> ENV(Secrets /.env)
        CoreModules -- Reads --> JSON(Config /master.json)
    end

    subgraph "External Services"
        AI -- "Sends Prompts / Gets Content" --> AIService(AI Service API)
        DP -- "Deploys HTML" --> Cloud(Multi-Cloud Storage)
        API -- "Sends Job Data" --> LBM(Link-Building Machine)
    end

    style User fill:#d3f3d3
    style LBM fill:#f3e5d3

Architectural and Design Patterns

  • Modular Monolith: The application will be a single deployable unit, but its internal structure will be divided into loosely-coupled modules with well-defined responsibilities. This provides the simplicity of a monolith with the organizational benefits of microservices.
  • Repository Pattern: This is a non-negotiable requirement from the PRD. We will create a data access layer that separates business logic from data persistence details. This involves defining repository interfaces (abstract base classes) and concrete implementations for SQLite, making a future switch to PostgreSQL trivial.
  • CLI Command Pattern: We will use a library like Click or Typer to structure the command-line interface, providing clear, self-documenting commands for all user interactions (e.g., content-tool user add, content-tool job run).
  • Strategy Pattern: For the multi-cloud deployment module, we will use the Strategy Pattern. A unified DeploymentStrategy interface will be defined, with concrete implementations for each cloud provider (S3, Azure Blob, Bunny.net, etc.). This makes adding new providers straightforward.