メインコンテンツにスキップ

standup-tallinn

A stylish single-page event site for a women's stand-up comedy night in Tallinn. Built for fast and simple seat booking — no payments, just good vibes and a real-time booking tracker 💥

AI Summary

Stand-Up Tallinn Booking Site

Provides a template event-booking site that manages seat reservations with Firebase and exports data to Google Sheets via GAS.

Target Users

Beginner-to-intermediate GAS developers who want to manage bookings in Firestore and automatically export them to Google Sheets for organizers.

Problems Solved

Building real-time seat management and organizer-friendly data export from scratch requires significant front- and back-end effort.

Tags

Main Features

1
Real-time Seat Counter

Uses Firebase Firestore real-time listeners to instantly update remaining seats and auto-disable the form when full.

2
Form Validation & Seat Cap

Built-in validation (name, phone, email, seat count) and a per-user cap of three seats.

3
GAS Export to Sheets

Google Apps Script enables automatic appending of Firestore booking data to a Google Spreadsheet.

4
Minimal Dependencies & Easy Deploy

Uses only Vanilla JS and Tailwind CSS, making the site deploy-ready on Netlify with minimal setup.

Usage Examples

Write Firestore booking data to Google Sheet

/**
 * Deploy this as a WebApp. The site sends booking data via HTTP POST
 * and this Apps Script appends it to a Google Sheet.
 */
function doPost(e) {
  // Parse the incoming JSON string
  const data = JSON.parse(e.postData.contents);
  // Target spreadsheet and sheet
  const ss = SpreadsheetApp.openById('YOUR_SPREADSHEET_ID');
  const sheet = ss.getSheetByName('bookings');

  // Build a row: timestamp, name, email, phone, seats
  const row = [new Date(), data.name, data.email, data.phone, data.seats];
  sheet.appendRow(row); // Append to the end

  // Return JSON response (CORS-friendly)
  return ContentService
    .createTextOutput(JSON.stringify({status: 'ok'}))
    .setMimeType(ContentService.MimeType.JSON);
}

Deploy the script as a Web App. When the front-end sends a fetch() POST with booking info, the data is appended to the specified Google Sheet automatically.