Skip to main content
The skeleton template is a production-ready infrastructure foundation for the GovTech Multicloud Platform. It includes pre-configured infrastructure, Kubernetes manifests, security policies, and a demo application that you replace with your own application.

What’s Included

The skeleton provides:
  • Multi-cloud infrastructure as code (Terraform)
  • Kubernetes deployment manifests
  • IAM policies and security configuration
  • Disaster recovery plan with RTO 4h / RPO 24h
  • Demo frontend (React + Vite) and backend (Express.js)
  • Docker Compose for local development
  • CI/CD authentication setup

Repository Structure

The skeleton template is organized as follows:
skeleton/
  app/
    backend/          Replace with your backend application
    frontend/         Replace with your frontend application
  aws/iam/            IAM policies (extend as needed)
  docs/
    architecture/     Diagrams and multi-cloud guides
    deployment/       Deployment and rollback procedures
  kubernetes/         K8s manifests (update image names)
  security/           Security policies
  terraform/          Infrastructure as code (VPC, EKS, RDS, security)
  disaster-recovery/  DR plan with runbooks
  docker-compose.yml  Local development environment
1
Choose Your Cloud Provider
2
The platform supports AWS, OCI, GCP, and Azure. Define your provider by setting the CLOUD_PROVIDER variable in your .env file:
3
ProviderVariableDocumentationAWSCLOUD_PROVIDER=awsSee docs/architecture/MULTI_CLOUD_SERVICES.mdOCICLOUD_PROVIDER=ociSee docs/architecture/MULTI_CLOUD_SERVICES.mdGCPCLOUD_PROVIDER=gcpSee docs/architecture/MULTI_CLOUD_SERVICES.mdAzureCLOUD_PROVIDER=azureSee docs/architecture/MULTI_CLOUD_SERVICES.md
4
For your chosen provider, you’ll need to implement 4 services in app/backend/src/services/providers/<provider>/. See the Multi-Cloud Services documentation for interface contracts and service scaffolding.
5
Configure Environment Variables
6
Copy the example environment file and fill in your values:
7
cp .env.example .env
# Edit .env with your credentials and configuration
8
Minimum required variables:
9
# Cloud provider selection
CLOUD_PROVIDER=aws

# Database
DATABASE_URL=postgresql://user:password@host:5432/database_name

# AWS (if using AWS)
AWS_REGION=us-east-1
AWS_ACCOUNT_ID=your-account-id

# OCI (if using OCI)
# OCI_REGION=us-ashburn-1
# OCI_NAMESPACE=your-namespace
# OCI_TENANCY_ID=ocid1.tenancy...

# GCP (if using GCP)
# GCP_PROJECT_ID=your-project
# GCP_REGION=us-central1

# Azure (if using Azure)
# AZURE_TENANT_ID=your-tenant
# AZURE_SUBSCRIPTION_ID=your-subscription
10
Test Locally
11
Run the entire stack locally using Docker Compose:
12
# Start all services
docker-compose up -d

# Verify backend is responding
curl http://localhost:3000/api/health

# View logs
docker-compose logs -f backend
13
The demo application will be available at:
14
  • Frontend: http://localhost:80
  • Backend: http://localhost:3000
  • Database: localhost:5432
  • 15
    Deploy Infrastructure
    16
    Deploy the cloud infrastructure using Terraform:
    17
    # 1. Initialize Terraform
    cd terraform/environments/dev
    terraform init
    
    # 2. Review the plan (resources to be created)
    terraform plan
    
    # 3. Create infrastructure (VPC, EKS, RDS, security)
    terraform apply
    
    18
    See the Deployment Guide for the complete production deployment process.
    19
    Configure IAM
    20
    Set up IAM groups and policies:
    21
    # Create IAM groups and policies
    cd aws/iam
    bash setup-iam-v2.sh
    
    # Verify groups were created
    aws iam list-groups --query 'Groups[].GroupName'
    
    22
    See IAM Security Policies for descriptions of each group and their permissions.
    23
    Deploy to Kubernetes
    24
    Build and deploy your application to Kubernetes:
    25
    # Build and push images to registry
    docker build -t your-registry/backend:v1.0 app/backend/
    docker push your-registry/backend:v1.0
    
    # Update image references in kubernetes/ manifests
    # Search for "REEMPLAZAR" in the YAML files
    
    # Deploy to Kubernetes
    bash kubernetes/deploy.sh
    

    Key Documentation

    DocumentDescription
    docs/architecture/MULTI_CLOUD_SERVICES.mdHow to implement your cloud provider
    docs/deployment/DEPLOYMENT_GUIDE.mdComplete production deployment
    docs/deployment/ROLLBACK_GUIDE.mdEmergency rollback procedures
    docs/IAM_SECURITY_POLICIES.mdIAM policies and access groups
    disaster-recovery/runbooks/DR_PLAN.mdDisaster recovery plan
    terraform/README.mdTerraform module usage
    kubernetes/README.mdKubernetes manifests

    Estimated Timeline

    Time to adapt the platform to your application: 2-3 days for a team with cloud experience. The infrastructure is ready; you only need to replace the application layer.

    Next Steps

    Build docs developers (and LLMs) love