No description
Find a file
2026-01-04 17:07:36 -08:00
data small quality of life improvements, partner name field, gitignore user data 2026-01-02 18:51:41 -08:00
public better style 2026-01-04 17:07:36 -08:00
.gitignore small quality of life improvements, partner name field, gitignore user data 2026-01-02 18:51:41 -08:00
docker-compose.yml mount data to local 2026-01-02 20:17:58 -08:00
Dockerfile hehehehe 2026-01-02 15:10:48 -08:00
env.example hehehehe 2026-01-02 15:10:48 -08:00
package.json hehehehe 2026-01-02 15:10:48 -08:00
README.md small quality of life improvements, partner name field, gitignore user data 2026-01-02 18:51:41 -08:00
server.js track emails, better admin portal 2026-01-02 19:21:44 -08:00

Birthday Booking Portal

A simple, mobile-friendly booking portal for vacation house bed reservations.

Quick Start

  1. Copy env.example to .env and configure your trip dates:

    cp env.example .env
    
  2. Edit .env with your trip details:

    TRIP_START=2026-03-13
    TRIP_END=2026-03-16
    SITE_TITLE=Your Party Name
    ADMIN_PATH=your-secret-admin-path
    
  3. Add room images to public/images/ (optional but nice)

  4. Run with Docker:

    docker-compose up -d
    
  5. Visit http://localhost:3000

  6. Admin panel at http://localhost:3000/your-secret-admin-path

Development (without Docker)

If running in the node toolbox:

npm install
cp env.example .env
npm run dev

Room Configuration

Edit data/rooms.json to customize rooms and beds. Each room has:

  • id: unique identifier
  • name: display name
  • blurb: short description
  • images: array of paths to images in /images/
  • overflow: if true, room is deprioritized in suggestions
  • beds: array of beds with id and type (single/double)

Note: Room configuration (rooms.json) is tracked in git, while user data (userdata.json - bookings, guests, bulletin board) is gitignored and created automatically on first run.

Features

  • Browser fingerprint + name-based guest registration
  • Smart bed suggestions prioritizing room continuity
  • Couple mode prefers double beds, solo prefers singles
  • Overflow rooms used only when others are full
  • Cork board-style bulletin board for ride coordination
  • Mobile-optimized, sharp-cornered aesthetic
  • Admin overview with guest lists and room occupancy