System Architecture
High-Level Architecture
PhotoFlow follows a microservices architecture with each service owning its domain and database. Services communicate through internal events and REST APIs.
Microservices Overview
Core Services
Service | Responsibility | Database |
|---|---|---|
Photoflow | Album workflow, photos, feedback, state machine |
|
Storage | Cloud provider integration, file sync |
|
Identity | User authentication, token management |
|
Organization | Multi-tenant organization management |
|
Supporting Services
Service | Responsibility |
|---|---|
Provider | External provider configurations |
Sender | Email/SMS notification delivery |
AppGateway | API routing, authentication middleware |
Service Architecture Pattern
Each service follows Clean Architecture with four layers:
Layer Responsibilities
Communication Patterns
Synchronous Communication (REST APIs)
Services expose REST APIs for synchronous operations:
Asynchronous Communication (Internal Events)
Services publish and subscribe to internal events using IInServiceEventBus:
Real-time Communication (SignalR)
SignalR is used for pushing real-time updates to connected clients:
Data Flow
Album Sync Flow
BuildingBlocks (Shared Libraries)
The BuildingBlocks directory contains shared libraries used across all services:
Library | Purpose |
|---|---|
| JWT authentication, authorization policies |
| Redis caching abstractions |
| Cloud provider integrations (Google, AWS) |
| Base classes, common utilities |
| Shared domain primitives |
| Custom exception types |
| Cross-cutting concerns |
| Helper utilities |
| Event bus abstractions |
| EF Core configurations |
| SignalR hub and notification service |
| State machine abstractions |
Security Architecture
Authentication Flow
Authorization Policies
Policy | Roles Allowed | Use Case |
|---|---|---|
| photographer, org_admin | Album management operations |
| org_admin | Organization-level operations |
| supper_admin | System-wide operations |
| anonymous | Public client operations |
| photographer, org_admin, anonymous | Shared operations (transitions) |
Infrastructure Architecture
Kubernetes Deployment
Helm Chart Structure
Related Documentation
Modules Overview
API Documentation
Deployment Guide