🧱 Wiki: Add Architecture Overview page with pipeline module breakdown
138
Architecture-Overview.md
Normal file
138
Architecture-Overview.md
Normal file
@ -0,0 +1,138 @@
|
|||||||
|
|
||||||
|
|
||||||
|
\# 🧱 Architecture Overview
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
This page explains the modular architecture of the \*\*LCS Video Pipeline\*\*, covering key components, data flow, and extensibility.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
\## 🧩 Core Modules
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Each component is designed to be loosely coupled and highly testable:
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
\### 1. `main.py`
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
\* Entry point
|
||||||
|
|
||||||
|
\* Discovers session folders and orchestrates processing
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
\### 2. `modules/`
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Contains reusable components:
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
\* `render\_engine.py`: Applies intros/outros and overlays
|
||||||
|
|
||||||
|
\* `title\_utils.py`: Generates dynamic title cards
|
||||||
|
|
||||||
|
\* `thumbnail\_utils.py`: Creates brand-compliant thumbnails
|
||||||
|
|
||||||
|
\* `yt\_poster.py`: Uploads to YouTube
|
||||||
|
|
||||||
|
\* `pt\_poster.py`: Uploads to PeerTube (WIP)
|
||||||
|
|
||||||
|
\* `description\_gen.py`: Creates OpenAI-based video descriptions
|
||||||
|
|
||||||
|
\* `date\_utils.py`, `config.py`: Environment and date helpers
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
\## 🔄 Data Flow
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
```plaintext
|
||||||
|
|
||||||
|
\[raw clips] → \[montages/, hits/, etc.] → main.py → render\_engine → final.mp4 → yt\_poster
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
All clip metadata (e.g., `notes.json`) is parsed and tracked alongside rendered files.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
\## 🧰 Tooling \& Configuration
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
\* \*\*`.env`\*\*: Stores API keys and client secrets (excluded from Git)
|
||||||
|
|
||||||
|
\* \*\*`config.py`\*\*: Centralized paths, flags, and constants
|
||||||
|
|
||||||
|
\* \*\*`logs/`\*\*: Execution logs, status, and failures
|
||||||
|
|
||||||
|
\* \*\*`tests/`\*\*: Pytest-based functional coverage
|
||||||
|
|
||||||
|
\* \*\*`video-pipeline.wiki/`\*\*: Markdown wiki repo (submodule)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
\## 🚧 Extensibility
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
\* Add new platforms (e.g., TikTok) via new `poster\_\*.py`
|
||||||
|
|
||||||
|
\* Add formats (e.g., square, cinematic) by enhancing `render\_engine.py`
|
||||||
|
|
||||||
|
\* Add more metadata (e.g., voice notes) by expanding `notes.json` parser
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
\## 🧠 Design Philosophy
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
\* \*\*Single responsibility per module\*\*
|
||||||
|
|
||||||
|
\* \*\*Declarative configuration\*\*
|
||||||
|
|
||||||
|
\* \*\*E2E traceability via metadata\*\*
|
||||||
|
|
||||||
|
\* \*\*Fun, brand-forward visual output\*\*
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
\*Last updated: 2025-08-04\*
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Reference in New Issue
Block a user