2026-05-02 19:46:42 -05:00
|
|
|
|
# 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 |
|
2026-05-02 20:14:15 -05:00
|
|
|
|
| Media | Local disk (multer) served as static files |
|
2026-05-02 19:46:42 -05:00
|
|
|
|
| Deploy | Docker Compose (Unraid / Linux VM) |
|
|
|
|
|
|
|
|
|
|
|
|
## Quick Start (development)
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
# 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
|
2026-05-02 20:14:15 -05:00
|
|
|
|
# Edit .env with your Stripe, Twilio, and SMTP keys
|
2026-05-02 19:46:42 -05:00
|
|
|
|
|
|
|
|
|
|
# 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`](./ops/README.md).
|
|
|
|
|
|
|
|
|
|
|
|
## Event-Night Network
|
|
|
|
|
|
|
|
|
|
|
|
See [`ops/unifi-dns.md`](./ops/unifi-dns.md) for UniFi local DNS setup and
|
|
|
|
|
|
WAN-failover testing.
|
|
|
|
|
|
|
|
|
|
|
|
## Staff Runbook
|
|
|
|
|
|
|
|
|
|
|
|
See [`event-runbook/preflight.md`](./event-runbook/preflight.md) for the
|
|
|
|
|
|
pre-event checklist and [`event-runbook/staff-roles.md`](./event-runbook/staff-roles.md)
|
|
|
|
|
|
for per-role instructions.
|
|
|
|
|
|
|
|
|
|
|
|
## Project Plan
|
|
|
|
|
|
|
|
|
|
|
|
The full product specification lives in [`STORYBID.md`](./STORYBID.md).
|
|
|
|
|
|
|
|
|
|
|
|
## Build Roadmap
|
|
|
|
|
|
|
|
|
|
|
|
| Phase | Focus | Status |
|
|
|
|
|
|
|-------|------------------------------------------------|---------|
|
2026-05-02 20:14:15 -05:00
|
|
|
|
| 1 | Foundation – monorepo, auth, org/event models | ✅ done |
|
|
|
|
|
|
| 2 | Live Auction – auctioneer console, bidder view | ✅ done |
|
2026-05-04 14:23:10 -05:00
|
|
|
|
| 3 | Silent Auction – catalog, timers, outbid | ✅ done |
|
|
|
|
|
|
| 4 | Offline Resilience – PWA, outbox, failover | ✅ done |
|
2026-05-04 14:35:54 -05:00
|
|
|
|
| 5 | Event Ops – check-in, checkout, fund-a-need | ✅ done |
|
2026-05-02 19:46:42 -05:00
|
|
|
|
| 6 | Hardening – load test, a11y, backups, docs | ⬜ todo |
|