# Orion Platform Documentation Welcome to the complete documentation for **Orion** - a production-ready, multi-tenant, multi-theme e-commerce platform that enables stores to operate independent webshops while integrating with external marketplaces. ## What is Orion? Orion is a comprehensive multi-tenant e-commerce platform built with **FastAPI** and **Alpine.js**, designed to support multiple stores with complete data isolation, custom theming, and flexible deployment modes. ### Key Capabilities - **๐Ÿช Multi-Store Marketplace**: Complete store isolation with independent webshops - **๐ŸŽจ Multi-Theme System**: Store-specific branding and customization - **๐Ÿ”— Marketplace Integration**: Import and curate products from external marketplaces - **๐Ÿ“ฆ Product Catalog Management**: Store-scoped product publishing - **๐Ÿ“Š Inventory Management**: Real-time stock tracking with location-based inventory - **๐Ÿ›’ Shopping Cart**: Session-based cart with real-time Alpine.js updates - **๐Ÿ‘ฅ Customer Management**: Store-scoped customer accounts with order history - **๐Ÿ‘จโ€๐Ÿ’ผ Team Management**: Role-based access control with granular permissions - **๐Ÿ“ฑ Order Management**: Complete order lifecycle with status tracking ## Platform Architecture Orion operates on a **multi-tenant architecture** with three distinct interfaces: ``` โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ Orion Platform โ”‚ โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค โ”‚ โ”‚ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ โ”‚ โ”‚ ADMIN โ”‚ โ”‚ STORE โ”‚ โ”‚ SHOP โ”‚ โ”‚ โ”‚ โ”‚ Interface โ”‚ โ”‚ Dashboard โ”‚ โ”‚ Storefront โ”‚ โ”‚ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ โ”‚ โ”‚ Middleware โ”‚ โ”‚ โ”‚ โ”‚ Stack โ”‚ โ”‚ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ โ”‚ โ”‚ FastAPI โ”‚ โ”‚ โ”‚ โ”‚ Backend โ”‚ โ”‚ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ โ”‚ โ”‚ PostgreSQL โ”‚ โ”‚ โ”‚ โ”‚ Database โ”‚ โ”‚ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ ``` ### Three Deployment Modes **1. Custom Domain Mode** ``` customdomain.com โ†’ Store 1 Shop anothershop.com โ†’ Store 2 Shop ``` **2. Subdomain Mode** ``` store1.platform.com โ†’ Store 1 Shop store2.platform.com โ†’ Store 2 Shop admin.platform.com โ†’ Admin Interface ``` **3. Path-Based Mode** (Development Only) ``` platform.com/storefront/store1 โ†’ Store 1 Shop platform.com/storefront/store2 โ†’ Store 2 Shop platform.com/admin โ†’ Admin Interface ``` **Learn more**: [Multi-Tenant System](architecture/multi-tenant.md) ## Quick Navigation ### ๐Ÿš€ Getting Started
- :material-download:{ .lg .middle } __Installation__ --- Set up your development environment [:octicons-arrow-right-24: Installation Guide](getting-started/installation.md) - :material-rocket-launch:{ .lg .middle } __Quick Start__ --- Get running in 5 minutes [:octicons-arrow-right-24: Quick Start](getting-started/quickstart.md) - :material-database:{ .lg .middle } __Database Setup__ --- Initialize database and run migrations [:octicons-arrow-right-24: Database Setup](getting-started/database-setup.md) - :material-cog:{ .lg .middle } __Configuration__ --- Environment and settings configuration [:octicons-arrow-right-24: Configuration](getting-started/configuration.md)
### ๐Ÿ›๏ธ Architecture
- :material-floor-plan:{ .lg .middle } __System Overview__ --- High-level architecture and design [:octicons-arrow-right-24: Overview](architecture/overview.md) - :material-store-multiple:{ .lg .middle } __Multi-Tenant System__ --- Three routing modes explained [:octicons-arrow-right-24: Multi-Tenancy](architecture/multi-tenant.md) - :material-layers:{ .lg .middle } __Middleware Stack__ --- Complete middleware documentation [:octicons-arrow-right-24: Middleware](architecture/middleware.md) - :material-lock:{ .lg .middle } __Authentication & RBAC__ --- Security and access control [:octicons-arrow-right-24: Auth & RBAC](architecture/auth-rbac.md)
### ๐Ÿ’ป Development
- :material-code-braces:{ .lg .middle } __Backend Development__ --- Services, APIs, and patterns [:octicons-arrow-right-24: Backend Guide](backend/overview.md) - :material-api:{ .lg .middle } __API Reference__ --- Technical API documentation [:octicons-arrow-right-24: API Reference](backend/middleware-reference.md) - :material-database-cog:{ .lg .middle } __Database Migrations__ --- Alembic migration guide [:octicons-arrow-right-24: Migrations](development/migration/database-migrations.md) - :material-electron-framework:{ .lg .middle } __PyCharm Setup__ --- IDE configuration and troubleshooting [:octicons-arrow-right-24: PyCharm Guide](development/troubleshooting.md)
### ๐Ÿ“š User Guides - [**User Management**](guides/user-management.md) - Managing users and roles - [**Product Management**](guides/product-management.md) - Working with products - [**Shop Setup**](guides/shop-setup.md) - Configuring store shops - [**CSV Import**](guides/csv-import.md) - Bulk product import - [**Marketplace Integration**](guides/marketplace-integration.md) - External marketplace setup ### ๐Ÿงช Testing - [**Testing Guide**](testing/testing-guide.md) - Testing standards and practices - [**Test Maintenance**](testing/test-maintenance.md) - Maintaining the test suite ### ๐Ÿšข Deployment - [**Docker Deployment**](deployment/docker.md) - Containerized deployment - [**Production Setup**](deployment/production.md) - Production best practices - [**Environment Variables**](deployment/environment.md) - Configuration reference ## Technology Stack ### Backend - **Framework**: FastAPI (Python 3.13+) - **Database**: PostgreSQL with SQLAlchemy ORM - **Authentication**: JWT tokens with bcrypt - **Async**: Uvicorn ASGI server - **Migrations**: Alembic - **Testing**: pytest with comprehensive coverage ### Frontend - **Templates**: Jinja2 server-side rendering - **JavaScript**: Alpine.js for reactive components (CDN-based, no build step) - **CSS**: Tailwind CSS with custom themes - **Icons**: Lucide Icons - **Zero Build Step**: Works directly without compilation ### Infrastructure - **Web Server**: Uvicorn (ASGI) - **Middleware**: Custom stack for multi-tenancy - **Static Files**: FastAPI StaticFiles - **Documentation**: MkDocs Material + mkdocstrings ## Key Features ### Multi-Tenancy - **Complete Data Isolation**: Chinese wall between store data - **Flexible Routing**: Custom domains, subdomains, or path-based - **Store Context Detection**: Automatic tenant identification - **Scoped Queries**: All database queries store-scoped by default **Learn more**: [Multi-Tenant System](architecture/multi-tenant.md) ### Multi-Theme Support - **Store Branding**: Custom colors, logos, and styling - **CSS Variables**: Dynamic theming with CSS custom properties - **Theme Inheritance**: Base themes with store overrides - **Real-time Updates**: Theme changes apply instantly ### Security & Authentication - **JWT-based Authentication**: Secure token-based auth - **Role-Based Access Control**: Admin, Store, Customer roles - **Team Permissions**: Granular permissions for store team members - **Input Validation**: Pydantic models for all requests - **Rate Limiting**: API protection with sliding window algorithm **Learn more**: [Authentication & RBAC](architecture/auth-rbac.md) ### Alpine.js Reactive UI - **Lightweight**: 15KB framework for reactive components - **No Build Step**: Works directly in HTML - **Reactive State**: Modern UX without complexity - **Perfect Integration**: Seamless with Jinja2 templates - **Scoped Components**: Natural store isolation ### Service Layer Architecture - **Clean Separation**: Business logic isolated from routes - **Reusable Services**: Shared across API and page routes - **Exception-First**: Consistent error handling - **Testable**: Easy unit and integration testing **Learn more**: [Backend Development](backend/overview.md) ## Request Flow Understanding how a request flows through Orion: ```mermaid graph LR A[Client Request] --> B[LoggingMiddleware] B --> C[StoreContextMiddleware] C --> D[ContextDetectionMiddleware] D --> E[ThemeContextMiddleware] E --> F[FastAPI Router] F --> G{Request Type} G -->|API| H[JSON Response] G -->|Page| I[HTML Template] ``` **Learn more**: [Request Flow](architecture/request-flow.md) ## Live Documentation When running the application locally: - **Swagger UI**: [http://localhost:8000/docs](http://localhost:8000/docs) - Interactive API testing - **ReDoc**: [http://localhost:8000/redoc](http://localhost:8000/redoc) - Alternative API docs - **Admin Panel**: [http://localhost:8000/admin](http://localhost:8000/admin) - Platform administration - **Health Check**: [http://localhost:8000/health](http://localhost:8000/health) - System status ## First Steps ### For Developers 1. **Set up your environment** - [Installation Guide](getting-started/installation.md) - [Database Setup](getting-started/database-setup.md) - [Configuration](getting-started/configuration.md) 2. **Understand the architecture** - [System Overview](architecture/overview.md) - [Multi-Tenant System](architecture/multi-tenant.md) - [Middleware Stack](architecture/middleware.md) 3. **Start developing** - [Backend Development](backend/overview.md) - [Database Migrations](development/migration/database-migrations.md) - [Testing Guide](testing/testing-guide.md) ### For Operations 1. **Deploy the platform** - [Docker Deployment](deployment/docker.md) - [Production Setup](deployment/production.md) - [Environment Variables](deployment/environment.md) 2. **Configure and manage** - [Configuration Guide](getting-started/configuration.md) - [Database Setup](getting-started/database-setup.md) ### For Team Members 1. **Get your IDE ready** - [PyCharm Setup](development/pycharm-configuration-make.md) - [Troubleshooting Guide](development/troubleshooting.md) 2. **Learn the workflow** - [Contributing Guide](development/contributing.md) - [Testing Standards](testing/testing-guide.md) ## Development Commands Quick reference for common development tasks: ```bash # Setup make install # Install production dependencies make install-all # Install all dependencies (dev + test + docs) make platform-install # First-time setup wizard (validates config) make setup # Complete setup (install + migrate + seed) # Development make dev # Start development server (port 8000) make docs-serve # Start documentation server (port 9991) # Database make migrate-up # Run migrations make migrate-create message="description" # Create new migration make seed-demo # Seed demo data make db-setup # Complete database setup # Background Tasks (Celery) make celery-worker # Start Celery worker make celery-beat # Start Celery scheduler make celery-dev # Start worker + beat together (dev) make flower # Start Flower monitoring (port 5555) # Testing make test # Run all tests make test-unit # Run unit tests only make test-coverage # Run with coverage report # Code Quality make format # Format code (ruff) make lint # Run linters (ruff + mypy) make arch-check # Validate architecture patterns make check # Format + lint + verify imports # Documentation make docs-build # Build documentation make docs-serve # Serve documentation locally ``` ## Documentation Structure This documentation is organized into logical sections: - **Getting Started**: Installation, configuration, and setup - **Architecture**: System design and multi-tenancy - **Backend Development**: Services, APIs, and patterns - **API Documentation**: For API consumers - **User Guides**: Feature-specific guides - **Testing**: Testing practices and standards - **Development**: Tools, workflows, and troubleshooting - **Deployment**: Production deployment guides ## Getting Help - **GitHub Issues**: Report bugs and request features - **API Documentation**: Interactive Swagger UI at `/docs` - **Architecture Docs**: [System Overview](architecture/overview.md) - **Troubleshooting**: [PyCharm Troubleshooting](development/troubleshooting.md) ## Contributing We welcome contributions! Please see our [Contributing Guide](development/contributing.md) for: - Development workflow - Code quality standards - Testing requirements - Pull request process ## Project Status **Current Version**: Production-ready multi-tenant platform **Completed Features**: - โœ… Multi-tenant architecture with 3 routing modes - โœ… Complete store data isolation - โœ… Multi-theme system - โœ… JWT authentication & RBAC - โœ… Product catalog management - โœ… Order processing - โœ… Shopping cart with Alpine.js - โœ… Marketplace integration - โœ… Team management **Production Ready**: - โœ… Error tracking (Sentry integration) - โœ… Cloud storage (Cloudflare R2) - โœ… CDN & WAF (CloudFlare) **In Development**: - ๐Ÿšง Advanced analytics --- **Ready to get started?** Head over to the [Installation Guide](getting-started/installation.md) or explore the [Architecture Overview](architecture/overview.md)! Built with โค๏ธ using FastAPI, PostgreSQL, Alpine.js, and modern Python patterns for a scalable, maintainable multi-tenant e-commerce platform.