48 lines
1.4 KiB
Markdown
48 lines
1.4 KiB
Markdown
# 🏄 Cabo Bachelor Party Voting App
|
|
|
|
Real-time group voting for the bachelor party — hotels, golf, nightlife, excursions, and full itineraries.
|
|
|
|
## Quick Start
|
|
|
|
```bash
|
|
cd cabo-voting-app
|
|
npm install
|
|
node server.js
|
|
# → http://localhost:3001
|
|
```
|
|
|
|
## Features
|
|
|
|
- **Real-time WebSocket voting** — all clients update instantly
|
|
- **5 categories** — Hotels, Golf, Nightlife, Excursions, Full Itineraries
|
|
- **Budget planner tab** — quick compare for 8, 10, and 12 guys across Budget, Balanced, and Splurge tracks
|
|
- **Add suggestions** — anyone can propose new venues
|
|
- **Admin approval** — pending options require approval before going live
|
|
- **Responsive** — works on desktop and mobile
|
|
|
|
## Data
|
|
|
|
Votes are stored in `data/votes.json` (created on first run). Edit directly or use the admin panel.
|
|
System seed data auto-refreshes researched package options and budget scenarios while preserving existing votes and user-added options.
|
|
|
|
For hosted deployments, set `DATA_DIR` or `DATA_FILE` so mutable vote data lives outside the Git checkout.
|
|
|
|
## Deployment
|
|
|
|
The app can run directly under `systemd` with:
|
|
|
|
```bash
|
|
PORT=3021 DATA_DIR=/srv/state/cabo-voting node server.js
|
|
```
|
|
|
|
Traefik can then reverse proxy to the chosen host port.
|
|
|
|
See [Gitea Issues](https://gitea.tophermayor.com/TopherMayor/cabo-voting-app/issues) for the UI/UX roadmap.
|
|
|
|
## Tech Stack
|
|
|
|
- Node.js + Express
|
|
- WebSocket (ws)
|
|
- Vanilla JS frontend (no framework)
|
|
- No database — JSON file persistence
|