# ساختار پروژه پیکربند - Landing Page ## 📁 ساختار کلی (بازسازی شده) ``` peikarband-landing/ ├── README.md # Main project documentation ├── requirements.txt # Production dependencies ├── requirements-dev.txt # Development dependencies ├── Makefile # Build automation commands ├── rxconfig.py # Reflex config loader (imports from config/) ├── .gitignore │ ├── build/ # 🔨 همه چیز مربوط به Build │ ├── docker/ │ │ ├── Dockerfile # Main application Dockerfile │ │ ├── Dockerfile.base # Base image (reference) │ │ ├── docker-compose.yml # Local development setup │ │ └── .dockerignore │ └── ci/ │ └── woodpecker.yml # CI/CD pipeline configuration │ ├── deploy/ # 🚀 همه چیز مربوط به Deployment │ ├── helm/ │ │ └── peikarband/ # Helm chart │ │ ├── Chart.yaml │ │ ├── templates/ # K8s resource templates │ │ ├── values.yaml # Default values │ │ ├── values-production.yaml │ │ └── values-staging.yaml │ ├── kubernetes/ │ │ └── secrets-template.yaml # K8s manifest templates │ └── argocd/ # ArgoCD GitOps configs │ ├── application.yaml │ ├── application-staging.yaml │ ├── README.md │ └── secrets/ │ ├── config/ # ⚙️ همه Configuration Files │ ├── alembic.ini # Database migration config │ ├── mypy.ini # Type checking config │ ├── pytest.ini # Test configuration │ └── reflex.config.py # Reflex app configuration │ ├── tools/ # 🔧 Scripts و ابزارهای کمکی │ ├── scripts/ │ │ ├── update-env-json.sh # Runtime config updater │ │ └── diagnose-502.sh # Diagnostic tools │ └── setup.py # Package setup │ ├── assets/ # 🎨 Static Assets (served by Reflex) │ ├── logo.png │ ├── banner-3.gif │ ├── custom.css │ ├── hero-*.svg │ └── wordpress*.gif │ ├── data/ # 💾 Local Data (gitignored) │ ├── db/ # Local database files │ ├── cache/ # Cache files │ └── logs/ # Log files │ ├── src/ # 💻 Source Code (Clean Architecture) │ ├── config/ # Application configuration │ │ ├── settings.py │ │ ├── database.py │ │ ├── cache.py │ │ └── logging.py │ ├── core/ # Core business logic │ │ ├── domain/ # Domain layer │ │ │ ├── entities/ # Domain entities │ │ │ ├── value_objects/ # Value objects │ │ │ ├── enums/ # Domain enums │ │ │ └── exceptions/ # Domain exceptions │ │ └── application/ # Application layer │ │ ├── use_cases/ # Use cases │ │ ├── dto/ # Data Transfer Objects │ │ ├── interfaces/ # Interfaces/Ports │ │ └── validators/ # Validators │ ├── infrastructure/ # Infrastructure layer │ │ ├── database/ # Database implementation │ │ │ ├── models/ # SQLAlchemy models │ │ │ ├── repositories/ # Repository implementations │ │ │ └── migrations/ # Alembic migrations │ │ ├── cache/ # Cache implementation (Redis) │ │ ├── external/ # External API integrations │ │ │ ├── email/ │ │ │ ├── sms/ │ │ │ ├── payment/ │ │ │ └── providers/ │ │ ├── security/ # Security implementations │ │ └── tasks/ # Background tasks (Celery) │ ├── presentation/ # Presentation layer │ │ ├── web/ # Reflex web application │ │ │ ├── pages/ # Reflex pages │ │ │ ├── components/ # Reusable components │ │ │ ├── state/ # Application state │ │ │ └── styles/ # Styling │ │ └── api/ # REST API endpoints (if needed) │ │ ├── routes/ │ │ └── middleware/ │ └── shared/ # Shared utilities │ ├── events/ # Event system │ └── messaging/ # Message bus │ ├── tests/ # 🧪 Test Suites │ ├── unit/ # Unit tests │ │ ├── core/ │ │ └── infrastructure/ │ ├── integration/ # Integration tests │ │ ├── database/ │ │ └── external/ │ ├── e2e/ # End-to-end tests │ │ └── scenarios/ │ ├── fixtures/ # Test fixtures │ └── conftest.py # Pytest configuration │ ├── docs/ # 📚 Documentation │ ├── api/ # API documentation │ ├── architecture/ # Architecture docs │ │ ├── overview.md │ │ └── database-strategy.md │ ├── deployment/ # Deployment guides │ │ ├── DEPLOYMENT_CHECKLIST.md │ │ ├── DEPLOYMENT_QUICK_START.md │ │ ├── PRODUCTION_DEPLOYMENT.md │ │ ├── CHANGELOG-DEPLOYMENT.md │ │ └── kubernetes.md │ ├── development/ # Development guides │ │ ├── setup.md │ │ ├── coding-standards.md │ │ └── git-workflow.md │ ├── changelog/ # Change logs │ │ ├── CHANGELOG.md │ │ ├── migrations.md │ │ └── known-issues.md │ ├── operations/ # Operations docs │ ├── handbook.md # Complete handbook │ └── PROJECT_STRUCTURE.md # This file │ └── tmp/ # Temporary files (gitignored) ``` ## 🎯 معماری جدید - Separation of Concerns ### 1. `build/` - Build Configurations **هدف**: جداسازی همه چیز مربوط به build process - **`build/docker/`**: تمام فایل‌های Docker - Multi-stage Dockerfile با optimization - Docker Compose برای development - .dockerignore - **`build/ci/`**: CI/CD configurations - Woodpecker CI pipeline - سایر CI configs (GitHub Actions, GitLab CI) **مزایا**: - ✅ Root directory تمیزتر - ✅ Build configs مدیریت شده در یک مکان - ✅ CI/CD configs جدا از کد ### 2. `deploy/` - Deployment Configurations **هدف**: تمرکز همه deployment configs - **`deploy/helm/`**: Helm charts - Production و Staging values - Templates برای تمام K8s resources - **`deploy/kubernetes/`**: Raw K8s manifests - Secret templates - Custom resources - **`deploy/argocd/`**: ArgoCD GitOps - Application definitions - Sync policies **مزایا**: - ✅ یک مکان برای همه deployment - ✅ واضح برای DevOps engineers - ✅ جداسازی از source code ### 3. `config/` - Configuration Files **هدف**: تمرکز همه config files - `alembic.ini`: Database migrations - `mypy.ini`: Type checking - `pytest.ini`: Testing - `reflex.config.py`: Reflex framework **مزایا**: - ✅ Root directory خلوت‌تر - ✅ Configs به راحتی پیدا می‌شوند - ✅ مدیریت بهتر ### 4. `tools/` - Utility Scripts **هدف**: جداسازی scripts و ابزارها - Runtime scripts - Diagnostic tools - Setup utilities **مزایا**: - ✅ Scripts منظم و دسته‌بندی شده - ✅ جدا از source code ### 5. `assets/` - Consolidated Assets **هدف**: یک مکان واحد برای همه static assets **قبلاً**: Assets پراکنده در `assets/` و `src/presentation/web/assets/` **الان**: همه در `assets/` (served directly by Reflex) **فایل‌های موجود**: - `logo.png` - لوگوی پیکربند - `banner-3.gif` - Banner animation - `wordpress-logo.gif` - WordPress logo - `hero-*.svg` - Hero section icons - `custom.css` - Custom styles **استفاده در کد**: ```python rx.image(src="/logo.png") # Reflex serves from /assets ``` **مزایا**: - ✅ No duplication - ✅ یک منبع حقیقت - ✅ مدیریت آسان‌تر - ✅ سازگار با Reflex ### 6. `data/` - Local Data (gitignored) **هدف**: Local development data - `data/db/`: SQLite و database files - `data/cache/`: Redis dumps - `data/logs/`: Log files **مزایا**: - ✅ Data جدا از code - ✅ .gitignore شده - ✅ Clean repository ## 🔗 ارتباط با پروژه‌های دیگر ### Base Image Repository - **Repo**: `peikarband/base` - **Registry**: `hub.peikarband.ir/peikarband/base:latest` - **Purpose**: Base image with Python, Node.js, bun, build tools - **Build**: Separate CI/CD pipeline - **Usage**: Referenced in `build/docker/Dockerfile` ### Landing Page (This Repo) - **Repo**: `peikarband/landing` - **Registry**: `hub.peikarband.ir/peikarband/landing:latest` - **Purpose**: Landing page application - **Dependencies**: Uses base image ## 📝 فایل‌های Root (Minimal) ### ضروری - `README.md`: Main documentation - `requirements.txt`: Dependencies - `Makefile`: Build commands - `rxconfig.py`: Reflex config loader - `.gitignore`: Git ignore rules ### حذف شده از Root - ❌ `Dockerfile` → `build/docker/` - ❌ `docker-compose.yml` → `build/docker/` - ❌ `.woodpecker.yml` → `build/ci/` - ❌ `alembic.ini` → `config/` - ❌ `pytest.ini` → `config/` - ❌ `mypy.ini` → `config/` - ❌ `scripts/` → `tools/scripts/` - ❌ `setup.py` → `tools/` - ❌ `helm/` → `deploy/helm/` - ❌ `argocd/` → `deploy/argocd/` - ❌ Duplicate assets → `assets/static/` ## 🎯 Best Practices ### Root Directory - ✅ فقط فایل‌های ضروری - ✅ Config files در `config/` - ✅ Build files در `build/` - ✅ Deploy files در `deploy/` ### Source Code (`src/`) - ✅ Clean Architecture layers - ✅ Separation of concerns - ✅ SOLID principles ### Documentation - ✅ همه docs در `docs/` - ✅ دسته‌بندی منطقی - ✅ به‌روز و جامع ### Deployment - ✅ Helm charts محیط‌محور - ✅ ArgoCD GitOps - ✅ Secrets جدا از code ### Testing - ✅ Unit/Integration/E2E جدا - ✅ Fixtures منظم - ✅ Coverage بالا ## 🚀 مزایای معماری جدید 1. **Clarity** ✨ - واضح است که هر فایل کجا باشد - Navigation آسان‌تر 2. **Maintainability** 🔧 - نگهداری آسان‌تر - Onboarding سریع‌تر 3. **Scalability** 📈 - اضافه کردن configs جدید ساده - مقیاس‌پذیری بهتر 4. **Professional** 💼 - استاندارد enterprise projects - Best practices معماری 5. **Developer Experience** 👨‍💻 - کم‌تر سردرگم - Productivity بالاتر ## 📊 مقایسه قبل و بعد ### قبل ``` root/ ├── 15+ config files 😰 ├── Docker files ├── CI configs ├── helm/ ├── argocd/ ├── scripts/ ├── assets/ (duplicate!) └── src/ ``` ### بعد ``` root/ ├── 4 essential files only 😌 ├── build/ (organized) ├── deploy/ (organized) ├── config/ (organized) ├── tools/ (organized) ├── assets/static/ (consolidated) └── src/ (clean) ``` --- **آخرین بروزرسانی**: 2025-01-30 **نسخه معماری**: 2.0 (Restructured)