# Shared Services Registry
*Last updated: 2026-01-29*

All reusable infrastructure, accounts, domains, and services across Hammer's projects.

---

## 🖥️ Infrastructure

### VPS — Clawdbot Host
- **Provider:** Hostinger
- **IP:** 72.60.68.214
- **OS:** Ubuntu Linux
- **User:** clawdbot (sudo, password required)
- **Purpose:** Runs Clawdbot gateway, Caddy reverse proxy
- **Services running:** Caddy (reverse proxy + TLS), Clawdbot gateway

### VPS — Dokploy (App Hosting)
- **Provider:** Dokploy Cloud
- **IP:** 191.101.0.153
- **Dashboard:** https://app.dokploy.com
- **API Key:** Stored in Bitwarden ("Dokploy API Key" or similar)
- **Purpose:** Docker-based app deployment (compose + individual apps + managed Postgres)

---

## 🌐 Domains

### Primary Domain: `donovankelly.xyz`
DNS managed via Hostinger. Wildcard `*.hammer.donovankelly.xyz` → 72.60.68.214.

| Subdomain | Points To | Purpose |
|-----------|-----------|---------|
| `hammer.donovankelly.xyz` | 72.60.68.214 (Caddy) | Clawdbot hooks endpoint (Control UI blocked) |
| `ws.hammer.donovankelly.xyz` | 72.60.68.214 (Caddy) | WebSocket relay (token-auth) for dashboard chat |
| `dash.donovankelly.xyz` | Dokploy (Traefik) | Hammer Dashboard (queue + chat + projects) |
| `app.todo.donovankelly.xyz` | Dokploy (Traefik) | Todo App frontend |
| `api.todo.donovankelly.xyz` | Dokploy (Traefik) | Todo App backend API |
| `app.thenetwork.donovankelly.xyz` | Dokploy (Traefik) | Network App (NWM CRM) frontend |
| `api.thenetwork.donovankelly.xyz` | Dokploy (Traefik) | Network App API backend |
| `app.nkode.donovankelly.xyz` | Dokploy (Traefik) | nKode frontend |
| `api.nkode.donovankelly.xyz` | Dokploy (Traefik) | nKode backend (Rust) |

### Other Domains
| Domain | Purpose |
|--------|---------|
| `git.infra.nkode.tech` | Gitea instance (code hosting) |
| `network-api.nkode.tech` | Alias for Network App API |
| `that2ndguy.com` | That2ndGuy golf brand (not yet live) |

---

## 📦 Dokploy Projects & Services

### Project: Hammer Projects (`EtUEaT-WRASozvV78tgPL`)

| Service | Type | Compose/App ID | Domain |
|---------|------|----------------|--------|
| hammer-queue | Compose | `kBdwrcZodIRyNIvQ-wrzG` | dash.donovankelly.xyz |
| network-app-api | Compose | `UKrNvUyMCdaSWkl6DcAGA` | api.thenetwork.donovankelly.xyz |
| network-app-web | Compose | `Sa1LrtH5uu-a7chrtebXb` | app.thenetwork.donovankelly.xyz |
| todo-app-v2 | Compose | `e07fMO8TXcHI_SkKqBWrl` | api.todo.donovankelly.xyz |
| todo-app-web | Compose | `ofMFmzQhEYK-3LfH5QmU_` | app.todo.donovankelly.xyz |
| network-app-db | Postgres | `KzFkJETXrW_oMaiPsUb2o` | (internal) |
| todo-app-db | Postgres | `WrvHLAc1kaqsrpTaSGOG4` | (internal) |

### Project: nKode (`rqBLzpkkE9b7hlQHh6tBG`)

| Service | Type | App ID | Domain |
|---------|------|--------|--------|
| nkode-frontend | Application | `f-9zg1S81u5Nzh_aZj2Jl` | app.nkode.donovankelly.xyz |
| nkode-backend | Application | `gEOD9RFeADCSYZscOI61B` | api.nkode.donovankelly.xyz |
| nkode-db | Postgres | `-kClddhuQsAWjy-ZP4anV` | (internal) |

---

## 📁 Git Repositories (Gitea)

All hosted at `git.infra.nkode.tech`. Two orgs: `hammer` (Hammer's repos) and `dkelly` (Donovan's repos).

### Hammer's Repos
| Repo | Purpose |
|------|---------|
| `hammer/clawd` | Clawdbot workspace (this repo) |
| `hammer/hammer-queue` | Hammer Dashboard (dash.donovankelly.xyz) |
| `hammer/network-app-api` | Network App backend |
| `hammer/network-app-web` | Network App frontend |
| `hammer/network-app-mobile` | Network App mobile (Flutter?) |
| `hammer/todo-app-web` | Todo App frontend |
| `hammer/donovan-portfolio` | Donovan's portfolio site |
| `hammer/nkode-web` | nKode frontend |
| `hammer/notes` | Markdown notes repo |

### Donovan's Repos
| Repo | Purpose |
|------|---------|
| `dkelly/Markdown-Notes` | Markdown notes app |
| `dkelly/flutter-nkode` | nKode Flutter mobile app |
| `dkelly/nkode-oidc` | nKode OIDC auth provider |
| `dkelly/nkode-rs` | nKode Rust backend |

---

## 🔑 Accounts & API Keys

All secrets stored in **Bitwarden** (shared org vault: `Hammer's Credentials`).

| Service | Purpose | Where Used | Bitwarden Item |
|---------|---------|-----------|----------------|
| Dokploy API | Deploy apps via API | Dashboard deploy, cron task worker | "Dokploy API Key" or similar |
| Hammer Dashboard API | Task CRUD, webhooks | Cron jobs, heartbeat checks | Bearer token in cron config |
| Gmail API (OAuth2) | Email monitoring | Heartbeat checks, `~/.local/bin/gmail` | OAuth tokens in gmail config |
| Gitea (hammer) | Push code, create PRs | All repos | Git credential in remote URLs |
| nKode Postgres | Database creds | nkode-backend env vars | "nKode Postgres (Dokploy)" |
| Clawdbot Gateway WS | WebSocket auth token | dash.donovankelly.xyz chat relay | GATEWAY_WS_URL / WS token |

### Bitwarden Vault Info
- **Organization:** `4e3ffbdb-0f8b-4f7a-a276-b0a30160e33f` (Hammer's Credentials)
- **Collection:** `320f9e42-607e-4180-8533-b0a30160e342` (Default collection)
- **CLI:** `/home/clawdbot/.npm-global/bin/bw`
- **Config:** `~/.clawdbot/.env` (BW_CLIENTID, BW_CLIENTSECRET, BW_PASSWORD)

---

## 🔧 Reusable for New Projects

When spinning up a new app, reuse:

1. **Hosting:** Add to Dokploy under "Hammer Projects" or create a new project
2. **Domain:** Add subdomain under `*.donovankelly.xyz` (wildcard DNS already set)
3. **Database:** Create managed Postgres in Dokploy (free, internal networking)
4. **Code hosting:** Create repo under `hammer/` org on `git.infra.nkode.tech`
5. **Secrets:** Store all API keys/creds in Bitwarden shared vault
6. **TLS:** Automatic via Dokploy's Traefik (for Dokploy apps) or Caddy (for VPS services)
7. **Deploy:** Use Dokploy API for automated deploys from task worker

### Not Yet Set Up (Opportunities)
- **Email sending (transactional):** No Resend/SendGrid account yet — would benefit Network App, Todo App, future apps
- **Stripe:** No account yet — needed if any app charges money
- **Analytics:** No Plausible/PostHog — could add self-hosted analytics
- **Error tracking:** No Sentry — could add for production monitoring
- **S3/Object storage:** No MinIO or cloud storage — would benefit file uploads

---

## 📋 Caddy Reverse Proxy (VPS: 72.60.68.214)

Caddy handles TLS termination for VPS-hosted services:

| Route | Target | Notes |
|-------|--------|-------|
| `hammer.donovankelly.xyz/hooks/*` | Clawdbot gateway | Webhook endpoint only |
| `ws.hammer.donovankelly.xyz` | Clawdbot gateway | WebSocket, token-authenticated |
| `app.todo.donovankelly.xyz` | Dokploy | Todo frontend |
| `api.todo.donovankelly.xyz` | Dokploy | Todo backend |

> ⚠️ `hammer.donovankelly.xyz` Control UI is BLOCKED — needs auth layer before re-enabling.

---

*Keep this file updated when adding new services, domains, or accounts.*
