Julia McGhee a5ef56b052
Some checks failed
CI / lint-and-test (push) Successful in 32s
Deploy Production / deploy (push) Failing after 2m49s
CI / build (push) Failing after 3m32s
Fix input focus loss in NewTaskTab form fields
Move Field component out of NewTaskTab to prevent React from
remounting input wrappers on every keystroke. Same root cause as
the ProjectsTab DetailView fix.
2026-03-21 20:46:06 +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%