96 lines
2.4 KiB
Markdown
96 lines
2.4 KiB
Markdown
|
|
---
|
||
|
|
type: project
|
||
|
|
status: active
|
||
|
|
source: git.alwisp.com
|
||
|
|
repo: jason/storybid
|
||
|
|
repo_url: https://git.alwisp.com/jason/storybid
|
||
|
|
language: TypeScript
|
||
|
|
branch: main
|
||
|
|
tags:
|
||
|
|
- repo
|
||
|
|
- jason
|
||
|
|
- stroybook
|
||
|
|
- storybid
|
||
|
|
updated: 2026-05-29
|
||
|
|
---
|
||
|
|
|
||
|
|
# storybid
|
||
|
|
|
||
|
|
**Repository:** [jason/storybid](https://git.alwisp.com/jason/storybid) · branch `main` · TypeScript
|
||
|
|
|
||
|
|
## Summary
|
||
|
|
|
||
|
|
Self-hosted charity auction platform — live and silent auctions with offline-first PWA bidding, Socket.io real-time updates, Stripe payments, and SMS OTP auth
|
||
|
|
|
||
|
|
## Current status
|
||
|
|
|
||
|
|
Active. Synced from Gitea on 2026-05-29.
|
||
|
|
|
||
|
|
## Documentation overview
|
||
|
|
|
||
|
|
# 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)
|
||
|
|
|
||
|
|
```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
|
||
|
|
# 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`](./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
|
||
|
|
|
||
|
|
…(truncated — see repo)
|
||
|
|
|
||
|
|
## Notes
|
||
|
|
|
||
|
|
- Project file auto-created from repo documentation.
|