Files
cabo-voting-app/README.md
2026-04-30 10:52:21 -07:00

1.7 KiB

🏄 Cabo Bachelor Party Voting App

Real-time group voting for the bachelor party — hotels, golf, nightlife, excursions, and full itineraries.

Quick Start

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
  • Price trend graphs — each option shows a live line graph from price-watch automation runs
  • 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. Price-watch automation runs append time-series snapshots in price-watch/history.jsonl, which the app turns into per-option trend lines.

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:

PORT=3021 DATA_DIR=/srv/state/cabo-voting node server.js

Traefik can then reverse proxy to the chosen host port.

See Gitea Issues for the UI/UX roadmap.

Tech Stack

  • Node.js + Express
  • WebSocket (ws)
  • Vanilla JS frontend (no framework)
  • No database — JSON file persistence