Deep DivesInfrastructure

Tech Specification

Technical specification for the RawStack Infrastructure component.

Runtime

LanguageTypeScript v5.3
FrameworkAWS CDK v2

AWS services used

ServicePurpose
VPCNetwork isolation, public/private subnets
RDS (PostgreSQL)Primary relational database
ElastiCache (Redis)Caching and token storage
ECS FargateServerless container runtime
ECRDocker image registry
ALBApplication Load Balancer
CloudFrontCDN for web and admin
S3Static asset hosting for admin
LambdaDeployment trigger on ECR push
EventBridgeEvent bus for Lambda triggers
ACMTLS certificates
Route 53DNS management
Secrets ManagerDatabase credentials

Environment variables

Copy infrastructure/aws/.env.dist to infrastructure/aws/.env and fill in all required values.

Required for all deployments

AWS_ACCOUNT_ID=123456789012
AWS_REGION=eu-west-1
ENVIRONMENT=dev                   # dev | staging | prod
ENABLE_DELETION_PROTECTION=false  # true in production

Core Stack

CORE_ECR_REPOSITORY_NAME=rawstack/core-api
CORE_DB_NAME=rawstack
CORE_DB_USER=rawstack
CORE_ACCESS_TOKEN_TTL=900
CORE_JWT_SECRET=your-strong-secret
CORE_REDIS_MODE=single            # single | cluster
CORE_REDIS_NODE_TYPE=cache.t4g.micro

Web Stack

WEB_ECR_REPOSITORY_NAME=rawstack/web
WEB_CLOUDFRONT_PRICE_CLASS=PRICE_CLASS_100   # 100 | 200 | ALL

Admin Stack

ADMIN_BUILD_PATH=apps/admin/dist             # defaults to this
ADMIN_CLOUDFRONT_PRICE_CLASS=PRICE_CLASS_100

Custom Domains (optional)

DOMAIN_HOSTED_ZONE_NAME=example.com

WEB_DOMAIN_ENABLED=true
WEB_DOMAIN_NAME=example.com
WEB_DOMAIN_ADD_WWW=true

ADMIN_DOMAIN_ENABLED=true
ADMIN_DOMAIN_NAME=admin.example.com

CORE_DOMAIN_ENABLED=true
CORE_DOMAIN_NAME=api.example.com