Prerequisites
Before you begin, ensure you have the following installed:- Node.js 20+
- Docker and Docker Compose
- Git
- PostgreSQL (local or cloud)
For production deployments, you’ll also need AWS CLI configured with appropriate credentials, kubectl, and Terraform installed.
Installation
Clone the Repository
Clone the GovTech Multicloud Platform repository:The repository contains two main directories:
platform/- Complete demo with running applicationskeleton/- Template for new projects
Start with Docker Compose
The fastest way to get started is using Docker Compose:This will start:
- PostgreSQL on port
5432 - Backend API on port
3000 - Frontend on port
80
What's happening behind the scenes?
What's happening behind the scenes?
Docker Compose launches three containers:
- postgres - PostgreSQL 15 Alpine with health checks
- backend - Node.js Express API with hot reload
- frontend - React SPA served by Nginx with API proxy
govtech-network bridge network.Access the Platform
Open your browser and navigate to:
- Frontend: http://localhost
- Backend API: http://localhost:3000
- API Docs: http://localhost:3000/api/health
You should see the GovTech platform homepage with current provider information and key statistics.
Manual Setup (Without Docker)
If you prefer to run services individually:Configure Backend
Navigate to the backend directory and install dependencies:Create Edit
.env file from the example:.env with your configuration:.env
Start Backend
http://localhost:3000Environment Variables
General Configuration
General Configuration
| Variable | Default | Description |
|---|---|---|
NODE_ENV | development | Environment mode |
PORT | 3000 | Backend server port |
HOST | 0.0.0.0 | Server bind address |
Cloud Provider
Cloud Provider
| Variable | Options | Description |
|---|---|---|
CLOUD_PROVIDER | aws, oci, gcp, azure | Active cloud provider |
AWS Configuration
AWS Configuration
| Variable | Example | Description |
|---|---|---|
AWS_REGION | us-east-1 | AWS region |
AWS_ACCESS_KEY_ID | AKIA… | AWS access key |
AWS_SECRET_ACCESS_KEY | secret… | AWS secret key |
AWS_BUCKET | govtech-documents | S3 bucket name |
AWS_LOG_GROUP | /aws/govtech/api | CloudWatch log group |
Database
Database
| Variable | Example | Description |
|---|---|---|
DATABASE_URL | postgresql://user:pass@host:5432/db | PostgreSQL connection string |
Security
Security
| Variable | Default | Description |
|---|---|---|
JWT_SECRET | - | JWT signing key (min 32 chars) |
API_RATE_LIMIT | 100 | Requests per 15 minutes |
Available Scripts
Backend Commands
Frontend Commands
Docker Commands
Testing the API
- Health Endpoints
- Platform Info
- Migration Tools
Troubleshooting
Server won't start
Server won't start
Symptoms: Backend fails to start or exits immediatelySolutions:
- Check if port 3000 is already in use:
- Verify DATABASE_URL is correct in
.env - Ensure PostgreSQL is running:
- Check backend logs:
Database connection failed
Database connection failed
Symptoms: “ECONNREFUSED” or “Connection timeout” errorsSolutions:
- Verify PostgreSQL is running:
- Check connection string format in
.env: - Test connection manually:
- Wait for PostgreSQL to be fully ready (check health):
AWS credentials invalid
AWS credentials invalid
Symptoms: Cloud health check fails or AWS operations errorSolutions:
- Verify credentials in
.envare correct - Test AWS CLI access:
- For local development, you can use placeholder credentials (demo mode)
- Ensure IAM user has necessary permissions (S3, CloudWatch, RDS)
Docker build fails
Docker build fails
Symptoms: Image build errors or dependency installation failsSolutions:
- Clear Docker cache:
- Remove old images:
- Check Dockerfile syntax in
app/backend/Dockerfile - Ensure package.json has valid dependencies
Next Steps
Platform Overview
Learn about the architecture and multi-cloud design patterns
Deploy to Kubernetes
Deploy to EKS, GKE, or AKS with Terraform
API Reference
Explore all available endpoints
Migration Guide
Learn how to migrate between cloud providers
You now have the GovTech Multicloud Platform running locally! Explore the platform features and check out the platform overview to understand the architecture.