The software and AI layer powering Deilliant's product platform. This monorepo houses all microservices and the Infrastructure as Code (IaC) to provision and manage cloud resources — designed to avoid vendor lock-in and remain portable across cloud providers.
arx-os/
├── services/
│ ├── <service-name>/
│ │ ├── Dockerfile
│ │ ├── .ci/
│ │ │ └── pipeline.yaml # CI/CD config (provider-specific)
│ │ ├── src/
│ │ └── README.md
│ └── ...
├── infra/
│ ├── modules/ # Reusable, provider-agnostic Terraform modules
│ ├── gcp/ # GCP-specific root configurations
│ ├── aws/ # AWS-specific root configurations (future)
│ └── README.md
├── shared/ # Shared libraries and types
└── README.md
Each service is self-contained: its own Dockerfile, CI/CD pipeline config, and service-level README.md documenting its purpose, API surface, and environment variables.
The infra/ directory uses Terraform with a modules-first approach — provider-specific root configs consume shared modules, so the core infrastructure logic is not tightly coupled to any one cloud.
| Service | Description | Status |
|---|---|---|
contact-service |
REST API for client and lead Firestore databases | Active |
- Primary Cloud: Google Cloud Platform (GCP) — current default, not a hard dependency
- IaC: Terraform (modules-first, provider-agnostic)
- Containers: Docker — all services are containerized for portability
- CI/CD: Provider CI (Cloud Build on GCP); pipeline configs live per-service under
.ci/ - Orchestration: Cloud Run / GKE (GCP); equivalent targets on other providers use the same Docker images
- Docker
- Terraform >= 1.5
- Cloud provider CLI for your target environment (e.g.,
gcloudfor GCP) - Appropriate IAM / credentials for your target cloud
cd services/<service-name>
docker build -t <service-name> .
docker run --env-file .env -p 8080:8080 <service-name>cd infra/gcp # or infra/aws, etc.
terraform init
terraform plan
terraform applyDeployments are triggered manually from your local machine — there is no automated CI on push.
Deploy a single service to GCP:
gcloud builds submit --config services/<service-name>/.ci/pipeline.yamlDeploy all services:
for service in services/*/; do
gcloud builds submit --config "${service}.ci/pipeline.yaml"
done| Branch | Purpose |
|---|---|
main |
Active development. Merge feature work here. |
prod |
Production-ready code. Merge from main when ready to ship, then run the deploy. |
Shipping a new version:
- Merge your changes into
mainand verify locally - Merge
main→prod - Push
prodto origin - Run
gcloud builds submitfrom your machine to deploy
No GitHub Actions. No automated triggers. Deploys are intentional and manual.
- One service per folder under
services/ - Each service owns its
Dockerfileand CI/CD config under.ci/ - Shared code lives in
shared/and is versioned independently - All infrastructure lives in
infra/— no cloud config is buried in service code - Terraform modules in
infra/modules/must be provider-agnostic; provider-specific logic belongs in the provider root (infra/gcp/,infra/aws/, etc.) - Secrets are never committed — use your cloud provider's secret manager (e.g., GCP Secret Manager, AWS Secrets Manager)
terraform.tfvarsfiles are gitignored; copy fromterraform.tfvars.exampleand fill in locally