Provisions and manages customer infrastructure (EC2, DNS, notifications) for Crimata
- Go 60.2%
- Shell 25.2%
- HCL 13.9%
- Dockerfile 0.7%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| .github/workflows | ||
| cmd/server | ||
| internal | ||
| terraform | ||
| .env.example | ||
| .gitignore | ||
| deprovision.sh | ||
| Dockerfile | ||
| fly.toml | ||
| go.mod | ||
| go.sum | ||
| LICENSE | ||
| provision.sh | ||
| README.md | ||
crimata-infra
Backend service that provisions and manages actual customer infrastructure for Crimata: spins up an EC2 instance, points DNS at it (Route 53), sends the customer a notification (via Resend), and can export their data to S3.
What it does
Exposes a small HTTP API (Go, chi router):
POST /instances— provision a new customer instance (called bycrimata-website's Stripe webhook)GET /instances/:slug— look up an instanceDELETE /instances/:slug— tear one down
provision.sh is the bootstrap script that actually runs on the new EC2 instance — currently just installs nginx and a placeholder welcome page, a work in progress.
Running it
Needs Postgres, an AWS account (EC2 + Route53 + S3 permissions), and a Resend API key.
cp .env.example .env # fill in DATABASE_URL, AWS credentials, EC2/DNS/S3 config
go run ./cmd/server
There's also a terraform/ directory for provisioning the supporting AWS resources (VPC, security groups, etc.) this service depends on.