A learning journey into building cloud-native infrastructure for Go.
Project Platform is an experimental project where we are exploring how to build a hosting environment for Go applications. It is not a finished product, but a sandbox for learning about Kubernetes, serverless patterns, and infrastructure-as-code.
Important
Learning Project: This is a work in progress and is currently used for educational purposes. It is not intended for production use. We are figuring things out as we go!
- Go & Kubernetes: Understanding how to build and orchestrate Go services effectively.
- Immutable Infrastructure: Using Packer to build hardened "Golden Images" for instant Terraform scaling.
- Private Networking & Security: Securing cluster access with Tailscale and hardening workloads with gVisor, KubeArmor, and Kyverno.
- Serverless Patterns: Experimenting with Knative for "scale to zero" and event-driven architectures.
- Observability: Setting up and tuning the VictoriaMetrics, Loki, Grafana, and Fluent Bit stack.
- GitOps: ArgoCD and Sealed Secrets for secure declarative application management.
This stack represents what we are currently playing with:
- Language: Go 1.22+
- Build Tools: ko,Docker, & Potential Buildpacks
- API Framework: ConnectRPC (Protobuf)
- Database: PostgreSQL (CloudNativePG)
- Auth: WorkOS (OIDC)
- Markup: Go + HTMX
- Styling: Tailwind CSS
- Interactivity: Alpine.js
- Operating System: Ubuntu Linux (Immutable Golden Images)
- Orchestration: K3s
- Provisioning: Terraform & Packer
- Providers: Hetzner Cloud (Primary) & DigitalOcean
- Serverless: Knative Serving & Eventing
- GitOps: ArgoCD
- Security & Networking: Tailscale, Cilium, NATS, gVisor, KubeArmor, Kyverno
.
├── core/ # Go Monorepo
│ ├── cmd/ # Entry points (platform-server, platform-web, platform-worker, etc.)
│ ├── internal/ # Private application code & HTMX templates
│ ├── migrations/ # Database migrations
│ └── pkg/ # SDK experiments
├── infrastructure/ # IaC experiments
│ ├── packer/ # Golden Image builds (Ubuntu + K3s + Tailscale)
│ ├── argocd/ # Kubernetes manifests & ArgoCD Apps
│ └── terraform/ # Cloud resources & cluster bootstrapping
├── proto/ # Protobuf definitions
└── RUNBOOK.md # Operational notes
If you want to poke around the project:
-
Clone the repo:
git clone https://github.com/kendricklawton/project-platform.git cd project-platform -
Setup Environment: Copy
.env.exampleto.envand add your local/dev credentials. -
Local DB:
task db:setup
-
Run the Local Services: In separate terminal windows, run the following:
# Run the Core API Server task dev:api # Run the Background Worker task dev:worker # Run the HTMX Web Frontend task dev:web
- See RUNBOOK.md for how we are thinking about operating this.
- This project is a messy work-in-progress—expect things to break!
Just learning by doing.