Skip to content

kendricklawton/project-platform

Repository files navigation

Project Platform (Experimental) 🧪

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!

🎯 Learning Goals

  • Go & Kubernetes: Understanding how to build and orchestrate Go services effectively.
  • Serverless Patterns: Experimenting with Knative for "scale to zero" and event-driven architectures.
  • Infrastructure as Code: Practicing with Terraform, Packer, and Task to manage complex setups.
  • Security Sandboxing: Learning about gVisor, KubeArmor, and Kyverno for hardening workloads.
  • Observability: Setting up and tuning the VictoriaMetrics and Loki stack.
  • GitOps: ArgoCD for declarative application management.

🛠 Experimental Stack

This stack represents what we are currently playing with:

Backend & API

  • Language: Go 1.22+
  • Build Tools: ko and Docker
  • Routing: chi (v5)
  • Database: PostgreSQL (CloudNativePG)
  • Auth: WorkOS (OIDC)

Infrastructure

  • Orchestration: K3s
  • Provisioning: Terraform & Packer
  • Providers: Hetzner Cloud & DigitalOcean
  • Serverless: Knative Serving & Eventing
  • Security: gVisor, KubeArmor, Kyverno
  • Networking: Cilium & NATS

🏗 Project Structure

.
├── core/                # Go API & CLI Logic
│   ├── cmd/             # Entry points
│   ├── internal/        # Private application code
│   └── pkg/             # SDK experiments
├── database/            # Migrations & SQLC
├── infra/               # IaC experiments
│   ├── packer/          # Image builds
│   ├── platform/        # Kubernetes manifests
│   └── terraform/       # Cloud resources
├── web/                 # Next.js
└── Runbook.md           # Operational notes

🚀 Running Locally

If you want to poke around the project:

  1. Clone the repo:

    git clone https://github.com/kendricklawton/project-platform.git
    cd project-platform
  2. Setup Environment: Copy .env.example to .env and add your local/dev credentials.

  3. Local DB:

    task db:setup
  4. Run the API:

    cd core/cmd/platform-api
    go run main.go

📖 Notes

  • 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.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published