Skip to content

Project Structure

Naming Convention

We use Server suffix for large service projects, service suffix for small service projects. If a project name contains "Web", the application is a frontend-application. We use various UI projects other than the main React application. (For example dist.appcircle.io)

Projects Folders Explanation (under ac-dev-stack)

.
├── docs/             # Documentation
├── docker/
│   └── compose/      # Docker compose 
└── src/
    ├── Services/     # All services are under Services directory
    └── Web/          # Web applications

Services

.Services/
    ├── ApiGateway/               # Private API Gateway
    ├── Core/                     # Core libraries
    ├── AspNetCore/
    ├── Distribution/             # Distribution related
    │   ├── Server/
    │   ├── TesterWeb/
    │   ├── TesterApiService/
    │   └── TesterAdminService/
    ├── Store/                    # Store related
    │   ├── ApiService/
    │   ├── ProfileService/
    │   ├── Web/
    │   ├── ReportService/
    │   └── AdminService/
    ├── AppParserServer/          # Standalone Servers
    ├── BuildServer/
    ├── StoreSubmitServer/
    ├── LicenseServer/
    ├── NotificationServer/
    ├── ReportingServer/
    ├── ResourceServer/
    ├── SigningIdentityServer/
    ├── TaskServer/
    ├── AgentCacheService/        # Services
    ├── WebhookService/
    ├── ResignService/
    ├── PublishService/
    └── SchedulerManagerService/

Appcircle Services Overview

Service Name Description Port Service Dependencies Infra Dependencies
ApiGateway Entry point for all API requests and routing 8100 ResourceServer keycloak, minio, redis, user_server (?)
AgentCacheService Manages build agent cache and artifact metadata 8068 BuildServer, ResourceServer kafka, keycloak, mongo, nginx, redis
AppParserServer Parses and analyzes uploaded mobile app packages 8017 ResourceServer kafka
BuildServer Handles CI/CD build orchestration 8023 kafka, keycloak, nginx, redis, vault
DistributionTesterWeb Tester-facing web interface for app distribution 8045 nginx, redis
DistributionTesterApiService API for tester app management 8044 BuildServer, DistributionTesterApiService, ResourceServer kafka, keycloak, minio, mongo, otp_service, redis
DistributionTesterAdminService Admin panel for distribution management 8091 kafka, keycloak, mongo, nginx
DistributionServer Core service for build and distribution delivery 8016 BuildServer, ResourceServer, SigningIdentityServer kafka, keycloak, mongo, nginx, redis
LicenseServer Handles licensing and plan enforcement 8024 ResourceServer, StoreProfileService kafka, keycloak, minio, mongo, redis
NotificationServer Sends and manages user and system notifications 8019 ResourceServer kafka, keycloak, mongo, nginx
ReportingServer Provides analytics and reporting features 8025 kafka, keycloak, mongo, redis
ResignService Re-signs application packages during build and publish 8031 BuildServer, ResourceServer minio, mongo
ResourceServer Core shared service providing common resources 8012 kafka, keycloak, minio, mongo, redis
SigningIdentityServer Manages signing identities and certificates 8022 kafka, mongo, redis, vault
StoreAdminService Admin interface for app store management 8030 kafka, keycloak, mongo, nginx, vault
StoreApiService API for store operations and app submissions 8106 ResourceServer, StoreApiService kafka, keycloak, mongo, nginx, otp_service, redis
StoreProfileService Manages store profiles and related resources 8105 BuildServer, ResourceServer kafka, keycloak, minio, mongo, nginx, vault
StoreReportingServer Generates reports and metrics for store data 8075 kafka, keycloak, mongo, redis
StoreWeb Web frontend for store management 8035 nginx, redis
StoreSubmitServer Handles submission workflows for app store publishing 8027 BuildServer, ResourceServer kafka, minio, mongo, nginx, redis, vault
TaskServer Handles background jobs and task scheduling 8028 kafka, redis
WebhookService Processes incoming webhooks and events 8076 ResourceServer kafka, mongo, nginx, redis