Skip to content

EnclaveRunner/api-server

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Logo Enclave API Server

Warning

The enclave project is still under heavy development and object to changes. This can include APIs, schemas, interfaces and more. Productive usage is therefore not recommended yet (as long as no stable version is released).

The API server provides secure endpoints for managing enclave resources and operations.

flowchart TD
    %% Spec & Codegen
    subgraph "Spec & Codegen"
        direction TB
        OpenAPI["openapi.yml"]:::speccolor
        CodegenServerCfg["oapi-codegen-server.yml"]:::speccolor
        CodegenClientCfg["oapi-codegen-client.yml"]:::speccolor
        OapiTargets["oapi.targets"]:::speccolor
        GenServer["api/gen.go"]:::speccolor
        GenClient["client/client.gen.go"]:::speccolor
    end

    %% Server Layer
    subgraph "Server (API Layer)"
        direction TB
        GenServer --> Impl["api/impl.go"]:::servercolor
        Impl --> RBAC["api/rbac.go"]:::servercolor
        Impl --> UsersAPI["api/users.go"]:::servercolor
    end

    %% Client SDK
    subgraph "Client SDK"
        direction TB
        GenClient
    end

    %% Configuration & Startup
    subgraph "Configuration & Startup"
        direction TB
        Config["config/config.go"]:::configcolor
        Main["main.go"]:::configcolor
        Main --> Config
    end

    %% ORM / Persistence
    subgraph "ORM / Persistence"
        direction TB
        ORMInit["orm/init.go"]:::ormcolor
        Model["orm/model.go"]:::ormcolor
        AuthDAO["orm/auth.go"]:::ormcolor
        UsersDAO["orm/users.go"]:::ormcolor
        ORMErr["orm/errors.go"]:::ormcolor
        ORMInit --> Model
        Model --> AuthDAO
        Model --> UsersDAO
        AuthDAO --> ORMErr
        UsersDAO --> ORMErr
    end

    %% Database
    DB[(Database)]:::dbcolor

    %% HTTP Flow
    ExternalClient{{"HTTP Client"}}:::externalcolor
    ExternalClient -->|HTTP request| Router["HTTP Router"]:::servercolor
    Router --> Impl
    Impl -->|"RBAC check"| RBAC
    RBAC --> AuthDAO
    RBAC --> UsersDAO
    AuthDAO --> DB
    UsersDAO --> DB
    DB -->|"data"| Impl
    Impl -->|"HTTP response"| ExternalClient

    %% Startup Flow
    Main -->|"init DB"| ORMInit
    Main -->|"setup router"| Router

    %% Spec & codegen flow
    OpenAPI -->|defines API| CodegenServerCfg
    OpenAPI -->|defines API| CodegenClientCfg
    CodegenServerCfg -->|generates| GenServer
    CodegenClientCfg -->|generates| GenClient
    OapiTargets -->|Makefile| GenServer
    OapiTargets -->|Makefile| GenClient

    %% Client usage
    DevApp["Client Application"]:::clientcolor
    DevApp -->|uses SDK| GenClient

    %% Dev/Ops Tooling
    subgraph "Dev/Ops Tooling"
        direction TB
        DockerfileNode["Dockerfile"]:::devopscolor
        Compose["docker-compose.test.yml"]:::devopscolor
        IntegrationTest["integration_test.go"]:::devopscolor
        MakefileNode["Makefile"]:::devopscolor
        Tools["tools.go"]:::devopscolor
        CI1[".github/workflows/ci.yml"]:::devopscolor
        CI2[".github/workflows/promote-image.yml"]:::devopscolor
        CI3[".github/workflows/release.yml"]:::devopscolor
        CI4[".github/workflows/sync-oapi.yml"]:::devopscolor
        CI5[".github/workflows/testing.yml"]:::devopscolor
        FlakeNix["flake.nix"]:::devopscolor
        FlakeLock["flake.lock"]:::devopscolor
    end

    %% Click Events
    click OpenAPI "https://github.com/enclaverunner/api-server/blob/main/openapi.yml"
    click CodegenServerCfg "https://github.com/enclaverunner/api-server/blob/main/oapi-codegen-server.yml"
    click CodegenClientCfg "https://github.com/enclaverunner/api-server/blob/main/oapi-codegen-client.yml"
    click OapiTargets "https://github.com/enclaverunner/api-server/blob/main/oapi.targets"
    click GenServer "https://github.com/enclaverunner/api-server/blob/main/api/gen.go"
    click GenClient "https://github.com/enclaverunner/api-server/blob/main/client/client.gen.go"
    click Impl "https://github.com/enclaverunner/api-server/blob/main/api/impl.go"
    click RBAC "https://github.com/enclaverunner/api-server/blob/main/api/rbac.go"
    click UsersAPI "https://github.com/enclaverunner/api-server/blob/main/api/users.go"
    click ORMInit "https://github.com/enclaverunner/api-server/blob/main/orm/init.go"
    click Model "https://github.com/enclaverunner/api-server/blob/main/orm/model.go"
    click AuthDAO "https://github.com/enclaverunner/api-server/blob/main/orm/auth.go"
    click UsersDAO "https://github.com/enclaverunner/api-server/blob/main/orm/users.go"
    click ORMErr "https://github.com/enclaverunner/api-server/blob/main/orm/errors.go"
    click Config "https://github.com/enclaverunner/api-server/blob/main/config/config.go"
    click Main "https://github.com/enclaverunner/api-server/blob/main/main.go"
    click DockerfileNode "https://github.com/enclaverunner/api-server/tree/main/Dockerfile"
    click Compose "https://github.com/enclaverunner/api-server/blob/main/docker-compose.test.yml"
    click IntegrationTest "https://github.com/enclaverunner/api-server/blob/main/integration_test.go"
    click MakefileNode "https://github.com/enclaverunner/api-server/tree/main/Makefile"
    click Tools "https://github.com/enclaverunner/api-server/blob/main/tools.go"
    click CI1 "https://github.com/enclaverunner/api-server/blob/main/.github/workflows/ci.yml"
    click CI2 "https://github.com/enclaverunner/api-server/blob/main/.github/workflows/promote-image.yml"
    click CI3 "https://github.com/enclaverunner/api-server/blob/main/.github/workflows/release.yml"
    click CI4 "https://github.com/enclaverunner/api-server/blob/main/.github/workflows/sync-oapi.yml"
    click CI5 "https://github.com/enclaverunner/api-server/blob/main/.github/workflows/testing.yml"
    click FlakeNix "https://github.com/enclaverunner/api-server/blob/main/flake.nix"
    click FlakeLock "https://github.com/enclaverunner/api-server/blob/main/flake.lock"

    %% Styles
    classDef speccolor fill:#D0E8FF,stroke:#0366D6,color:#0366D6
    classDef servercolor fill:#E6FFFA,stroke:#2C7A7B,color:#2C7A7B
    classDef clientcolor fill:#FFF5E6,stroke:#DD6B20,color:#DD6B20
    classDef configcolor fill:#EBF4FF,stroke:#3182CE,color:#3182CE
    classDef ormcolor fill:#FEFCBF,stroke:#D69E2E,color:#D69E2E
    classDef dbcolor fill:#F7FAFC,stroke:#4A5568,color:#4A5568
    classDef devopscolor fill:#F5E6FF,stroke:#805AD5,color:#805AD5
    classDef externalcolor fill:#EDF2F7,stroke:#4A5568,color:#4A5568
Loading

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors 7

Languages