Hammer 8b8d56370e
Some checks failed
CI/CD / test (push) Has been cancelled
CI/CD / deploy (push) Has been cancelled
feat: add app health monitoring section
- Backend: GET /api/health/apps and POST /api/health/check endpoints
- Checks 8 apps (dashboard, network, todo, nkode, gitea)
- 30s caching to avoid hammering endpoints
- Frontend: Health widget on dashboard page
- Dedicated /health page with detailed status cards
- Sidebar nav with colored status dot indicator
- Dark mode support throughout
2026-01-30 14:19:55 +00:00

🔨 Hammer Queue

Task queue dashboard for Hammer (AI assistant). Lets Donovan see what Hammer is working on, what's queued, and control task ordering.

Stack

  • Frontend: React + Vite + TypeScript + Tailwind CSS
  • Backend: Elysia + Bun + TypeScript
  • Database: PostgreSQL + Drizzle ORM
  • Deploy: Docker Compose / Dokploy

Quick Start (Local Dev)

# Start Postgres
docker compose up db -d

# Backend
cd backend
cp .env.example .env
bun install
bun run db:push
bun run dev

# Frontend (separate terminal)
cd frontend
bun install
bun run dev

Docker

docker compose up --build

Frontend: http://localhost:8080 Backend API: http://localhost:3100

API

Public (no auth)

  • GET /api/tasks - List all tasks (sorted: active → queued → blocked → completed)
  • GET /health - Health check

Authenticated (Bearer token)

  • POST /api/tasks - Create task
  • PATCH /api/tasks/:id - Update task (status, priority, etc.)
  • POST /api/tasks/:id/notes - Add progress note
  • PATCH /api/tasks/reorder - Reorder queued tasks { ids: string[] }
  • DELETE /api/tasks/:id - Delete task

Example: Hammer creates a task

curl -X POST http://localhost:3100/api/tasks \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"title": "Build task queue dashboard", "source": "donovan", "priority": "high"}'

Example: Hammer updates status

curl -X PATCH http://localhost:3100/api/tasks/$TASK_ID \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"status": "active"}'

Example: Add progress note

curl -X POST http://localhost:3100/api/tasks/$TASK_ID/notes \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"note": "Scaffolded backend, working on frontend now"}'

Environment Variables

Variable Description Default
DATABASE_URL Postgres connection string postgres://hammer_queue:hammer_queue@localhost:5432/hammer_queue
API_BEARER_TOKEN Bearer token for write API hammer-dev-token
PORT Backend port 3100
Description
Task queue dashboard for Hammer AI assistant
Readme 1.3 MiB
Languages
TypeScript 92.8%
Shell 6.9%