Skip to content

Architecture Diagrams

Garot Conklin edited this page Dec 17, 2024 · 3 revisions

Architecture Diagrams

System Architecture

graph TB
    subgraph "Mobile App"
        UI[UI Layer]
        API_CLIENT[API Client]
    end
    
    subgraph "Cloud Services"
        API_GATEWAY[AWS API Gateway]
        LAMBDA[AWS Lambda]
        AUTH[Auth0]
    end
    
    subgraph "External Services"
        GOOGLE_SEARCH[Google Search API]
        GOOGLE_PLACES[Google Places API]
        GOOGLE_CALENDAR[Google Calendar API]
    end
    
    subgraph "Data Storage"
        MONGODB[MongoDB Atlas]
        REDIS[Redis Cache]
    end
    
    UI --> API_CLIENT
    API_CLIENT --> API_GATEWAY
    API_GATEWAY --> LAMBDA
    LAMBDA --> AUTH
    LAMBDA --> GOOGLE_SEARCH
    LAMBDA --> GOOGLE_PLACES
    LAMBDA --> GOOGLE_CALENDAR
    LAMBDA --> MONGODB
    LAMBDA --> REDIS
    
    classDef external fill:#99ff99,stroke:#333,stroke-width:2px,color:#000
    classDef internal fill:#9999ff,stroke:#333,stroke-width:2px,color:#000
    
    class GOOGLE_SEARCH,GOOGLE_PLACES,GOOGLE_CALENDAR external
    class UI,API_CLIENT,API_GATEWAY,LAMBDA,AUTH,MONGODB,REDIS internal
Loading

Clean Architecture Layers

graph TB
    subgraph "Presentation Layer"
        UI[UI Components]
        VM[ViewModels]
        STATE[UI State]
    end
    
    subgraph "Domain Layer"
        UC[Use Cases]
        ENT[Entities]
        REPO_I[Repository Interfaces]
    end
    
    subgraph "Data Layer"
        REPO_IMPL[Repository Implementations]
        DS[Data Sources]
        DTO[Data Transfer Objects]
    end
    
    UI --> STATE
    STATE --> VM
    VM --> UC
    UC --> ENT
    UC --> REPO_I
    REPO_I --> REPO_IMPL
    REPO_IMPL --> DS
    DS --> DTO
Loading

Data Flow Diagram

sequenceDiagram
    participant U as User
    participant UI as UI Layer
    participant VM as ViewModel
    participant UC as Use Case
    participant R as Repository
    participant API as Backend API

    U->>UI: User Action
    UI->>VM: Event
    VM->>UC: Execute
    UC->>R: Request Data
    R->>API: API Call
    API-->>R: Response
    R-->>UC: Domain Model
    UC-->>VM: Result
    VM-->>UI: Update State
    UI-->>U: Display Update
Loading

Event Discovery Flow

graph LR
    subgraph "Mobile App"
        UI[UI Layer]
        VM[EventViewModel]
        UC[GetEventsUseCase]
        REPO[EventRepository]
        CACHE[(Local Cache)]
    end
    
    subgraph "Backend Services"
        API[API Gateway]
        LAMBDA[Event Service]
        DDB[(Events Database)]
        SCRAPER[Event Scraper]
    end
    
    UI --> VM
    VM --> UC
    UC --> REPO
    REPO --> CACHE
    REPO --> API
    API --> LAMBDA
    LAMBDA --> DDB
    SCRAPER --> DDB
Loading

Authentication Flow

sequenceDiagram
    participant U as User
    participant App as Mobile App
    participant Cognito as AWS Cognito
    participant API as API Gateway
    participant Lambda as Lambda

    U->>App: Login Request
    App->>Cognito: Authenticate
    Cognito-->>App: JWT Token
    App->>API: API Request + Token
    API->>Lambda: Validate Token
    Lambda-->>API: Validated
    API-->>App: Response
    App-->>U: Update UI
Loading

Data Synchronization

graph TB
    subgraph "Mobile App"
        UI[UI Layer]
        SYNC[Sync Manager]
        DB[(Local DB)]
    end
    
    subgraph "Backend"
        API[API Gateway]
        LAMBDA[Sync Service]
        DDB[(DynamoDB)]
    end
    
    UI --> SYNC
    SYNC --> DB
    SYNC --> API
    API --> LAMBDA
    LAMBDA --> DDB
    
    classDef backend fill:#99ff99,stroke:#333,stroke-width:2px,color:#000
    classDef mobile fill:#9999ff,stroke:#333,stroke-width:2px,color:#000
    class UI,SYNC,DB mobile
    class API,LAMBDA,DDB backend
Loading

Component Dependencies

graph TB
    subgraph "App Module"
        APP[Application]
        NAV[Navigation]
    end
    
    subgraph "Feature Modules"
        EVENTS[Events Feature]
        CALENDAR[Calendar Feature]
        SOCIAL[Social Feature]
        PROFILE[Profile Feature]
    end
    
    subgraph "Core Modules"
        COMMON[Common]
        NET[Network]
        DB[Database]
        UI_CORE[UI Components]
    end
    
    APP --> NAV
    NAV --> EVENTS
    NAV --> CALENDAR
    NAV --> SOCIAL
    NAV --> PROFILE
    
    EVENTS --> COMMON
    CALENDAR --> COMMON
    SOCIAL --> COMMON
    PROFILE --> COMMON
    
    COMMON --> NET
    COMMON --> DB
    COMMON --> UI_CORE
Loading

Event Processing Pipeline

graph LR
    subgraph "Data Collection"
        SCRAPER[Web Scraper]
        API_IN[External APIs]
    end
    
    subgraph "Processing"
        NORM[Data Normalizer]
        VALID[Validator]
        ENRICH[Enrichment Service]
    end
    
    subgraph "Storage"
        DDB[(DynamoDB)]
        S3[(S3 Images)]
    end
    
    SCRAPER --> NORM
    API_IN --> NORM
    NORM --> VALID
    VALID --> ENRICH
    ENRICH --> DDB
    ENRICH --> S3
Loading

Notification System

graph TB
    subgraph "Triggers"
        EVENT[Event Updates]
        TIME[Time-based]
        USER[User Actions]
    end
    
    subgraph "Processing"
        LAMBDA[Notification Service]
        FILTER[Filter Rules]
        TEMPLATE[Templates]
    end
    
    subgraph "Delivery"
        FCM[Firebase Cloud Messaging]
        EMAIL[Email Service]
        SMS[SMS Service]
    end
    
    EVENT --> LAMBDA
    TIME --> LAMBDA
    USER --> LAMBDA
    LAMBDA --> FILTER
    FILTER --> TEMPLATE
    TEMPLATE --> FCM
    TEMPLATE --> EMAIL
    TEMPLATE --> SMS
Loading

RunOn Documentation

MVP Documentation

Core Documentation

Archived (Full-Featured)

Full-Featured Documentation

Clone this wiki locally