Julia McGhee 96e3f32f28 Initial monorepo scaffold
Turborepo + pnpm monorepo for k3s homelab cluster on Intel NUCs.

- Apps: Next.js web frontend, Express API (TypeScript, Dockerfiles, k8s manifests)
- Packages: shared UI, ESLint config, TypeScript config, Drizzle DB schemas
- Infra/Ansible: bare-metal provisioning with roles for common, k3s-server, k3s-agent, hardening
- Infra/Kubernetes: ArgoCD GitOps (app-of-apps + ApplicationSets), platform components
  (cert-manager, Traefik, CloudNativePG, Valkey, Longhorn, Sealed Secrets), namespaces
- Observability: kube-prometheus-stack, Loki, Promtail as ArgoCD Applications
- CI/CD: GitHub Actions for PR builds, preview deploys, production deploys
- DX: Taskfile, utility scripts, copier templates, Ubiquiti network docs
2026-03-19 22:24:56 +00:00
2026-03-19 22:24:56 +00:00
2026-03-19 22:24:56 +00:00
2026-03-19 22:24:56 +00:00
2026-03-19 22:24:56 +00:00
2026-03-19 22:24:56 +00:00
2026-03-19 22:24:56 +00:00
2026-03-19 22:24:56 +00:00
2026-03-19 22:24:56 +00:00
2026-03-19 22:24:56 +00:00
2026-03-19 22:24:56 +00:00
2026-03-19 22:24:56 +00:00
2026-03-19 22:24:56 +00:00
2026-03-19 22:24:56 +00:00
2026-03-19 22:24:56 +00:00

Homelab

Monorepo for self-hosted applications running on a k3s cluster across Intel NUC machines.

What's Inside

  • Apps: Next.js frontend, Express API (TypeScript)
  • Infrastructure: Ansible provisioning, ArgoCD GitOps, full Kubernetes platform
  • Observability: Prometheus, Grafana, Loki

Prerequisites

Quick Start

# Install dependencies
pnpm install

# Start development
task dev

# Build all apps
task build

Bootstrap Cluster (Day 1)

  1. Flash Ubuntu Server 24.04 on NUCs, configure SSH access
  2. Configure Ubiquiti Cloud Gateway (see infra/ubiquiti/)
  3. Provision nodes and install k3s:
    task cluster:bootstrap
    task cluster:kubeconfig
    
  4. Install platform components:
    task platform:install
    
  5. Seal initial secrets:
    task secrets:seal
    
  6. Push an app — ArgoCD handles the rest

Branch Deploys

Push a branch or open a PR → GitHub Actions builds changed apps → ArgoCD creates a preview namespace → merge to main deploys to production.

Project Structure

homelab/
├── apps/           # Deployable applications
├── packages/       # Shared libraries
├── infra/
│   ├── ansible/    # Bare-metal provisioning
│   ├── kubernetes/ # K8s manifests (ArgoCD, platform, observability)
│   └── ubiquiti/   # Network documentation
├── scripts/        # Utility scripts
├── templates/      # App scaffolding templates
└── Taskfile.yaml   # Task runner

License

Private — All rights reserved.

Description
No description provided
Readme 1.1 MiB
Languages
TypeScript 87.8%
JavaScript 7%
Shell 1.9%
Dockerfile 1.6%
CSS 1.1%
Other 0.6%