# Generic Project Architecture Template
## 1️⃣ Standard Structure for Python Web/API Projects
项目名称/ ├── README.md # Project description document ├── LICENSE # Open source license ├── requirements.txt # Dependency management (pip) ├── pyproject.toml # Modern Python project configuration (recommended) ├── setup.py # Package installation script (if packaged as a library) ├── .gitignore # Git ignore file ├── .env # Environment variables (not committed to Git) ├── .env.example # Example environment variables ├── CLAUDE.md # Claude persistent context ├── AGENTS.md # Codex persistent context ├── Sublime-Text.txt # For requirements and notes, for myself, and CLI session recovery commands ^_^ │ ├── docs/ # Documentation directory │ ├── api.md # API documentation │ ├── development.md # Development guide │ └── architecture.md # Architecture description │ ├── scripts/ # Script tools │ ├── deploy.sh # Deployment script │ ├── backup.sh # Backup script │ └── init_db.sh # Database initialization │ ├── tests/ # Test code │ ├── init.py │ ├── conftest.py # pytest configuration │ ├── unit/ # Unit tests │ ├── integration/ # Integration tests │ └── test_config.py # Configuration tests │ ├── src/ # Source code (recommended approach) │ ├── init.py │ ├── main.py # Program entry point │ ├── app.py # Flask/FastAPI application │ ├── config.py # Configuration management │ │ │ ├── core/ # Core business logic │ │ ├── init.py │ │ ├── models/ # Data models │ │ ├── services/ # Business services │ │ └── utils/ # Utility functions │ │ │ ├── api/ # API interface layer │ │ ├── init.py │ │ ├── v1/ # Version 1 │ │ └── dependencies.py │ │ │ ├── data/ # Data processing │ │ ├── init.py │ │ ├── repository/ # Data access layer │ │ └── migrations/ # Database migrations │ │ │ └── external/ # External services │ ├── init.py │ ├── clients/ # API clients │ └── integrations/ # Integrated services │ ├── logs/ # Log directory (not committed to Git) │ ├── app.log │ └── error.log │ └── data/ # Data directory (not committed to Git)
├── raw/ # Raw data
├── processed/ # Processed data
└── cache/ # Cache
**Usage Scenarios**: Flask/FastAPI Web applications, RESTful API services, Web backends
---
## 2️⃣ Standard Structure for Data Science/Quant Projects
项目名称/ ├── README.md ├── LICENSE ├── requirements.txt ├── .gitignore ├── .env ├── .env.example ├── CLAUDE.md # Claude persistent context ├── AGENTS.md # Codex persistent context ├── Sublime-Text.txt # For requirements and notes, for myself, and CLI session recovery commands ^_^ │ ├── docs/ # Documentation directory │ ├── notebooks/ # Jupyter documentation │ └── reports/ # Analysis reports │ ├── notebooks/ # Jupyter Notebook │ ├── 01_data_exploration.ipynb │ ├── 02_feature_engineering.ipynb │ └── 03_model_training.ipynb │ ├── scripts/ # Script tools │ ├── train_model.py # Training script │ ├── backtest.py # Backtesting script │ ├── collect_data.py # Data collection │ └── deploy_model.py # Model deployment │ ├── tests/ # Tests │ ├── test_data/ │ └── test_models/ │ ├── configs/ # Configuration files │ ├── model.yaml │ ├── database.yaml │ └── trading.yaml │ ├── src/ # Source code │ ├── init.py │ │ │ ├── data/ # Data processing module │ │ ├── init.py │ │ ├── collectors/ # Data collectors │ │ ├── processors/ # Data cleaning │ │ ├── features/ # Feature engineering │ │ └── loaders.py # Data loaders │ │ │ ├── models/ # Model module │ │ ├── init.py │ │ ├── strategies/ # Trading strategies │ │ ├── backtest/ # Backtesting engine │ │ └── risk/ # Risk management │ │ │ ├── utils/ # Utility module │ │ ├── init.py │ │ ├── logging.py # Logging configuration │ │ ├── database.py # Database tools │ │ └── api_client.py # API client │ │ │ └── core/ # Core module │ ├── init.py │ ├── config.py # Configuration management │ ├── signals.py # Signal generation │ └── portfolio.py # Investment portfolio │ ├── data/ # Data directory (Git ignored) │ ├── raw/ # Raw data │ ├── processed/ # Processed data │ ├── external/ # External data │ └── cache/ # Cache │ ├── models/ # Model files (Git ignored) │ ├── checkpoints/ # Checkpoints │ └── exports/ # Exported models │ └── logs/ # Logs (Git ignored)
├── trading.log
└── errors.log
**Usage Scenarios**: Quantitative trading, machine learning, data analysis, AI research
---
## 3️⃣ Standard Structure for Monorepo (Multi-Project Repository)
项目名称-monorepo/ ├── README.md ├── LICENSE ├── .gitignore ├── .gitmodules # Git submodules ├── docker-compose.yml # Docker orchestration ├── CLAUDE.md # Claude persistent context ├── AGENTS.md # Codex persistent context ├── Sublime-Text.txt # This is a file for requirements and notes, for myself, and CLI session recovery commands ^_^ │ ├── docs/ # Global documentation │ ├── architecture.md │ └── deployment.md │ ├── scripts/ # Global scripts │ ├── build_all.sh │ ├── test_all.sh │ └── deploy.sh │ ├── backups/ # Backup files │ ├── archive/ # Old backup files │ └── gz/ # Compressed backup files │ ├── services/ # Microservices directory │ │ │ ├── user-service/ # User service │ │ ├── Dockerfile │ │ ├── requirements.txt │ │ ├── src/ │ │ └── tests/ │ │ │ ├── trading-service/ # Trading service │ │ ├── Dockerfile │ │ ├── requirements.txt │ │ ├── src/ │ │ └── tests/ │ ... │ └── data-service/ # Data service │ ├── Dockerfile │ ├── requirements.txt │ ├── src/ │ └── tests/ │ ├── libs/ # Shared libraries │ ├── common/ # Common modules │ │ ├── utils/ │ │ └── models/ │ ├── external/ # Third-party libraries (not modifiable, only callable) │ └── database/ # Database access library │ ├── infrastructure/ # Infrastructure │ ├── terraform/ # Cloud resource definitions │ ├── kubernetes/ # K8s configuration │ └── nginx/ # Reverse proxy configuration │ └── monitoring/ # Monitoring system
├── prometheus/ # Metric collection
├── grafana/ # Visualization
└── alertmanager/ # Alerting
**Usage Scenarios**: Microservices architecture, large-scale projects, team collaboration
---
## 4️⃣ Standard Structure for Full-Stack Web Applications
项目名称/ ├── README.md ├── LICENSE ├── .gitignore ├── docker-compose.yml # Frontend and backend orchestration together ├── CLAUDE.md # Claude persistent context ├── AGENTS.md # Codex persistent context ├── Sublime-Text.txt # For requirements and notes, for myself, and CLI session recovery commands ^_^ │ ├── frontend/ # Frontend directory │ ├── public/ # Static assets │ ├── src/ # Source code │ │ ├── components/ # React/Vue components │ │ ├── pages/ # Pages │ │ ├── store/ # State management │ │ └── utils/ # Utilities │ ├── package.json # NPM dependencies │ └── vite.config.js # Build configuration │ └── backend/ # Backend directory
├── requirements.txt
├── Dockerfile
├── src/
│ ├── api/ # API interfaces
│ ├── core/ # Business logic
│ │ └── models/ # Data models
└── tests/
**Usage Scenarios**: Full-stack applications, SPA single-page applications, frontend/backend separation projects
---
## 📌 Core Design Principles
### 1. Separation of Concerns
API → Service → Data Access → Database Clear, hierarchical, and easy to understand
### 2. Testability
Each module can be tested independently Dependencies can be mocked
### 3. Configurability
Configuration separated from code Environment variables > Configuration files > Default values
### 4. Maintainability
Self-explanatory code Reasonable file naming Clear directory structure
### 5. Git-Friendly
data/, logs/, models/ added to .gitignore Only commit source code and configuration examples
---
## 🎯 Best Practice Recommendations
1. **Use the `src/` directory**: Place source code in a dedicated `src` directory to avoid cluttering the top-level directory.
2. **Relative imports**: Consistently use import statements like `from src.module import thing`.
3. **Test coverage**: Ensure core business logic has unit and integration tests.
4. **Documentation first**: Write `README.md` for important modules.
5. **Environment isolation**: Use virtualenv or conda to create independent environments.
6. **Explicit dependencies**: All dependencies should be listed in `requirements.txt` with locked versions.
7. **Configuration management**: Use a combination of environment variables and configuration files.
8. **Logging levels**: DEBUG, INFO, WARNING, ERROR, FATAL.
9. **Error handling**: Do not suppress exceptions; ensure a complete error chain.
10. **Code style**: Use black for formatting and flake8 for linting.
---
## 🔥 .gitignore Recommended Template
gitignore
pycache/ *.py[cod] *$py.class *.so .Python *.egg-info/ dist/ build/
.env .venv/ env/ venv/ ENV/
.vscode/ .idea/ *.swp *.swo *~
data/ *.csv *.json *.db *.sqlite *.duckdb
logs/ *.log
models/ *.h5 *.pkl
tmp/ temp/ *.tmp .DS_Store
---
## 📚 Technology Stack Reference
| Scenario | Recommended Technology Stack |
|----------|-----------------------------|
| Web API | FastAPI + Pydantic + SQLAlchemy |
| Data Processing | Pandas + NumPy + Polars |
| Machine Learning | Scikit-learn + XGBoost + LightGBM |
| Deep Learning | PyTorch + TensorFlow |
| Databases | PostgreSQL + Redis |
| Message Queue | RabbitMQ / Kafka |
| Task Queue | Celery |
| Monitoring | Prometheus + Grafana |
| Deployment | Docker + Docker Compose |
| CI/CD | GitHub Actions / GitLab CI |
---
## 📝 File Template Examples
### requirements.txt
txt
fastapi==0.104.1 uvicorn[standard]==0.24.0 pydantic==2.5.0
sqlalchemy==2.0.23 alembic==1.12.1 psycopg2-binary==2.9.9
pytest==7.4.3 pytest-cov==4.1.0 pytest-asyncio==0.21.1
python-dotenv==1.0.0 loguru==0.7.2
black==23.11.0 flake8==6.1.0 mypy==1.7.1
### pyproject.toml (Recommended for modern Python projects)
toml [project] name = "项目名称" version = "0.1.0" description = "项目描述" authors = [{name = "作者", email = "邮箱 @example.com"}] dependencies = [
"fastapi>=0.104.0",
"uvicorn[standard]>=0.24.0",
"sqlalchemy>=2.0.0",
]
[project.optional-dependencies] dev = ["pytest", "black", "flake8", "mypy"]
[build-system] requires = ["setuptools", "wheel"] build-backend = "setuptools.build_meta"
---
## ✅ New Project Checklist
When starting a new project, ensure the following are completed:
- [ ] Create `README.md`, including project introduction and usage instructions.
- [ ] Create `LICENSE` file, clarifying the open-source license.
- [ ] Set up a Python virtual environment (venv/conda).
- [ ] Create `requirements.txt` and lock dependency versions.
- [ ] Create `.gitignore`, excluding sensitive and unnecessary files.
- [ ] Create `.env.example`, explaining required environment variables.
- [ ] Design the directory structure, adhering to the principle of separation of concerns.
- [ ] Create basic configuration files.
- [ ] Set up a code formatter (black).
- [ ] Set up a code linter (flake8/ruff).
- [ ] Write the first test case.
- [ ] Set up a Git repository and commit initial code.
- [ ] Create `CHANGELOG.md` to record version changes.
---
In **programming / software development**, **project architecture (Project Architecture / Software Architecture)** refers to:
> **A design plan for how a project is broken down, organized, communicated, and evolved at the "overall level"**
> — It determines how code is layered, how modules are divided, how data flows, and how the system expands and is maintained.
---
## One-sentence understanding
**Project Architecture = Before writing specific business code, first decide "where the code goes, how modules connect, and how responsibilities are divided."**
---
## I. What problems does project architecture mainly solve?
Project architecture is not about "coding tricks," but about solving these **higher-level problems**:
* 📦 How to organize code so it doesn't get messy?
* 🔁 How do modules communicate with each other?
* 🧱 Which parts can be modified independently without affecting the whole?
* 🚀 How will the project expand in the future?
* 🧪 How to facilitate testing, debugging, and deployment?
* 👥 How can multiple people collaborate without stepping on each other's code?
---
## II. What does project architecture generally include?
### 1️⃣ Directory Structure (Most intuitive)
text project/ ├── src/ │ ├── main/ │ ├── services/ │ ├── models/ │ ├── utils/ │ └── config/ ├── tests/ ├── docs/ └── README.md
👉 Determines **"where different types of code are placed"**
---
### 2️⃣ Layered Design (Core)
The most common is **Layered Architecture**:
text Presentation Layer (UI / API) ↓ Business Logic Layer (Service) ↓ Data Access Layer (DAO / Repository) ↓ Database / External Systems
**Rules:**
* Upper layers can call lower layers
* Lower layers cannot depend on upper layers in reverse
---
### 3️⃣ Module Partitioning (Responsibility Boundaries)
For example, a trading system:
text
account # Account
👉 Each module:
* Does only one type of thing
* Strives for low coupling, high cohesion
---
### 4️⃣ Data and Control Flow
* Where does the data come from?
* Who is responsible for processing?
* Who is responsible for storage?
* Who is responsible for output?
For example:
text
WebSocket → Data Cleaning → Indicator Calculation → AI Scoring → SQLite → API → Frontend
---
### 5️⃣ Technology Stack Selection (Part of architecture)
* Programming language (Python / Java / Go)
* Framework (FastAPI / Spring / Django)
* Communication method (HTTP / WebSocket / MQ)
* Storage (SQLite / Redis / PostgreSQL)
* Deployment (Local / Docker / Cloud)
---
## III. Common Project Architecture Types (Beginner must-know)
### 1️⃣ Monolithic Architecture
text One project, one process
**Suitable for:**
* Personal projects
* Prototypes
* Small systems
**Advantages:**
* Simple
* Easy to debug
**Disadvantages:**
* Difficult to scale later
---
### 2️⃣ Layered Architecture (Most common)
text Controller → Service → Repository
**Suitable for:**
* Web backends
* Business systems
---
### 3️⃣ Modular Architecture
text core + plugins
**Suitable for:**
* Pluggable systems
* Strategy / indicator systems
👉 **Very suitable for quant and AI analysis that you are doing**
---
### 4️⃣ Microservices Architecture (Advanced)
text Each service is an independent process + API communication
**Suitable for:**
* Large teams
* High concurrency
* Long-term evolution
❌ **Not recommended for beginners to start with**
---
## IV. Understand with a "Real Example" (Closer to what you are doing)
Suppose you are building an **AI analysis system for Binance perpetual contracts**:
text backend/ ├── data/ │ └── binance_ws.py # Market data subscription ├── indicators/ │ └── vpvr.py ├── strategy/ │ └── signal_score.py ├── storage/ │ └── sqlite_writer.py ├── api/ │ └── http_server.py └── main.py
This is **project architecture design**:
* Each folder is responsible for one thing
* Replaceable, testable
* No need to rewrite core logic if you want to integrate Telegram Bot / Web frontend later
---
## V. Common Mistakes for Beginners ⚠️
❌ Starting with microservices
❌ All code written in one file
❌ Pursuing "advanced" architecture instead of "maintainable" architecture
❌ Writing code without a clear understanding of data flow
---
## VI. Learning Path Recommendations (Very Important)
Since you are studying CS, this order is highly recommended:
1. **First build a runnable project (not perfect)**
2. **When code starts getting messy → then learn architecture**
3. Learn:
* Module partitioning
* Layering
* Dependency direction
4. Then learn:
* Design patterns
* Microservices / Message queues
---
**Version**: 1.0
**Update Date**: 2025-11-24
**Maintainers**: CLAUDE, CODEX, KIMI