2.5 KiB
2.5 KiB
Storybid
Self-hosted charity auction platform supporting live and silent auctions in the same event, with offline-first PWA bidding and automatic LAN failover for event-night resilience.
Stack
| Layer | Choice |
|---|---|
| Client | React 18 + TypeScript + Vite + Tailwind |
| PWA/Offline | Workbox (vite-plugin-pwa) + Dexie/IndexedDB |
| Real-time | Socket.io |
| Server | Node.js + Express + TypeScript |
| ORM | Prisma |
| Database | PostgreSQL (SQLite optional for dev) |
| Cache/Queue | Redis (optional) |
| Auth | Email magic links + Twilio Verify SMS OTP |
| Payments | Stripe Payment Element / Payment Intents |
| Media | Local disk (multer) served as static files |
| Deploy | Docker Compose (Unraid / Linux VM) |
Quick Start (development)
# 1. Clone and install
git clone <repo>
cd storybid
npm install
# 2. Start DB + Redis
docker compose -f docker-compose.dev.yml up -d
# 3. Configure environment
cp .env.example .env
# Edit .env with your Stripe, Twilio, and SMTP keys
# 4. Migrate database and seed demo data
npm run db:migrate
npm run db:seed
# 5. Start dev servers
npm run dev
# Client → http://localhost:5173
# Server → http://localhost:3001
Production Deployment
See ops/README.md.
Event-Night Network
See ops/unifi-dns.md for UniFi local DNS setup and
WAN-failover testing.
Staff Runbook
See event-runbook/preflight.md for the
pre-event checklist and event-runbook/staff-roles.md
for per-role instructions.
Project Plan
The full product specification lives in STORYBID.md.
Build Roadmap
| Phase | Focus | Status |
|---|---|---|
| 1 | Foundation – monorepo, auth, org/event models | ✅ done |
| 2 | Live Auction – auctioneer console, bidder view | ✅ done |
| 3 | Silent Auction – catalog, timers, outbid | ✅ done |
| 4 | Offline Resilience – PWA, outbox, failover | ✅ done |
| 5 | Event Ops – check-in, checkout, fund-a-need | ⬜ todo |
| 6 | Hardening – load test, a11y, backups, docs | ⬜ todo |