Files
notes/reference/shared-services-registry.md

7.9 KiB

Shared Services Registry

Last updated: 2026-01-29 (v2 — added Resend, shared env patterns, AI APIs)

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
Resend Transactional email (noreply@donovankelly.xyz) Todo App, Network App RESEND_API_KEY in app envs
Dokploy API Deploy apps via API Dashboard deploy, cron task worker "dokploy api key"
Brave Search API Web search Clawdbot gateway "brave api key"
Anthropic API LLM (Claude) Network App AI features ANTHROPIC_API_KEY in network-app env
OpenAI API LLM (GPT) Network App AI features OPENAI_API_KEY in network-app env
BetterAuth Auth framework (shared pattern) Todo App, Network App Per-app BETTER_AUTH_SECRET
Hammer Dashboard API Task CRUD, webhooks Cron jobs, heartbeat checks "Hammer Queue (donovankelly.xyz)"
Gmail API (OAuth2) Email monitoring Heartbeat checks, ~/.local/bin/gmail "accounts.google.com"
Gitea (hammer) Push code, create PRs All repos "git.infra.nkode.tech"
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
Todoist Task management (legacy?) Unknown "Todoist"

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

Shared Env Patterns Across Apps

Apps on Dokploy share common env var patterns. When creating a new app:

Env Var What It Is How to Get
DATABASE_URL Postgres connection string Create managed Postgres in Dokploy, use internal hostname
BETTER_AUTH_SECRET Auth session signing key Generate: openssl rand -hex 32 — store in Bitwarden
RESEND_API_KEY Transactional email Reuse existing key (same Resend account)
FROM_EMAIL Sender address Use noreply@donovankelly.xyz or per-app variant
APP_URL Public URL The app's subdomain (e.g. https://app.X.donovankelly.xyz)
ALLOWED_ORIGINS CORS origins Frontend + API URLs
PORT Service port Typically 3000/3001 — Dokploy routes via Traefik

Not Yet Set Up (Opportunities)

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