Hive-based freelance marketplace (Upwork-style) with on-chain escrow. Internship / demo project.
Stack decisions live in Docs/[03] System_Architecture_Data_Model/[01] Tech_Stack.md.
Live frontend: https://hive-freelance.vercel.app/ (API not deployed yet — see DEPLOYMENT.md §4)
| Layer | Package / app |
|---|---|
| Frontend | apps/web — React + TypeScript (Vite), @hiveio/wax-signers-keychain |
| API | apps/api — Node.js + Express + TypeScript |
| Block listener (MVP) | apps/listener — custom stream → hive_records (Phase 2: HAF) |
| Provisioning | apps/provisioner — account_create + RC delegation stubs |
| Shared constants | packages/shared |
| PostgreSQL access | packages/db |
| Hive / WAX + KMS stub | packages/hive (@hiveio/wax, no dhive) |
- Node.js 20+
- Docker (for local Postgres)
# 1. Env
cp .env.example .env
# 2. Database
docker compose up -d
npm install
npm run db:migrate
# 3. Run API + web + listener
npm run dev- Web: http://localhost:5173
- API health: http://localhost:4000/health
- Hive health: http://localhost:4000/api/v1/health/hive
- Keychain smoke UI: http://localhost:5173/keychain
- Login / jobs smoke UI: http://localhost:5173/login · http://localhost:5173/jobs
API MVP details: Docs/[02] Additional Docs/[06] API_MVP_Guide.md.
Auth (Keychain / Google / claim): Docs/[02] Additional Docs/[07] Auth_Guide.md.
| Command | What it does |
|---|---|
npm run dev |
API + web + listener |
npm run dev:api |
API only |
npm run db:migrate |
Apply SQL migrations (001 bootstrap + 002 marketplace schema) |
npm run build |
Build all workspaces |
- Never commit
.envor real Hive active keys. KMS_MODE=localuses env-backed stubs (LOCAL_AGENT_ACTIVE_KEY, etc.).- Production must use KMS/HSM for the agent account and custodial Google-user keys (see architecture docs).
render.yaml sketches API, static web, listener worker, and Postgres for Render’s free tier. Railway works similarly with the same Node processes.