%%{init: { 'theme': 'forest', 'flowchart': { 'curve': 'linear' }, 'themeCSS': '.edgePath path { stroke-dasharray: 6 4; animation: dash 16s linear infinite; } @keyframes dash { to { stroke-dashoffset: -1000; } }' }}%% flowchart LR classDef bin fill:#ffe4e6,stroke:#be123c,color:#7f1d1d; classDef internal fill:#e0f2fe,stroke:#0369a1,color:#0c4a6e; classDef pkg fill:#dcfce7,stroke:#16a34a,color:#065f46; classDef third fill:#ede9fe,stroke:#7c3aed,color:#4c1d95; main["main.go"]:::bin subgraph internal_pkgs["internal/* packages"] direction TB p_config["internal/config"]:::internal p_routes["internal/routes"]:::internal p_controllers["internal/controllers"]:::internal p_services["internal/services"]:::internal p_models["internal/models"]:::internal p_middleware["internal/middleware"]:::internal end subgraph shared_pkgs["pkg/*"] direction TB p_db["pkg/database"]:::pkg p_email["pkg/email"]:::pkg p_logger["pkg/logger"]:::pkg end subgraph third_party["third-party"] direction TB t_gin["github.com/gin-gonic/gin"]:::third t_gzip["github.com/gin-contrib/gzip"]:::third t_prom["github.com/prometheus/client_golang/promhttp"]:::third t_gorm["gorm.io/gorm"]:::third end %% main dependencies main --> p_config main --> p_logger main --> p_db main --> p_models main --> p_middleware main --> p_services main --> p_routes main --> p_email main --> t_gin main --> t_gzip main --> t_prom %% routes wiring p_routes --> p_controllers p_routes --> p_middleware p_routes --> p_services p_routes --> p_email p_routes --> t_gin p_routes --> t_gorm %% controllers wiring p_controllers --> p_models p_controllers --> p_services %% middleware wiring p_middleware --> p_config p_middleware --> t_gorm %% services wiring p_services --> p_models p_services --> p_email %% database wiring p_db --> p_config p_db --> t_gorm %% logger p_logger --> main