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
Real-time Seat Counter
Uses Firebase Firestore real-time listeners to instantly update remaining seats and auto-disable the form when full.
Form Validation & Seat Cap
Built-in validation (name, phone, email, seat count) and a per-user cap of three seats.
GAS Export to Sheets
Google Apps Script enables automatic appending of Firestore booking data to a Google Spreadsheet.
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.