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 |