A sanitized, generic, and reusable event website starter built with React, Vite, and Tailwind CSS. Designed for rapid deployment of event landing pages.
- 🎨 Modern Design: Clean, responsive UI with Tailwind CSS.
- 📝 Content-Driven: All event data (Agenda, Speakers, FAQ) is managed in
src/content/. - 🚀 Performance: Fast build and load times with Vite.
- 🔒 Sanitized: No hardcoded secrets or PII.
-
Clone and Install
git clone <your-repo-url> cd event-website-template npm install
-
Develop
npm run dev
-
Build
npm run build
Modify the files in src/content/ to update the site data:
config.ts: General site info (Name, Date, Venue, Social Links).agenda.ts: Schedule of events.speakers.ts: Speaker profiles (Ids, bios, photos).sponsors.ts: Sponsor logos and tiers.faq.ts: Questions and answers.
Place your images in public/ or src/assets/. Update references in the content files.
- Update
tailwind.config.jsto change the brand colors (colors.brand.primary). - Edit
src/index.cssfor global styles.
The included Registration form is mocked by default. To save data to a Google Sheet:
-
Create a Google Sheet
- Create a new Google Sheet.
- Add headers in the first row:
timestamp,firstName,lastName,email,ticketType,dietary.
-
Add Apps Script
- Go to Extensions > Apps Script.
- Copy and paste the following code:
function doPost(e) { var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); var data = JSON.parse(e.postData.contents); sheet.appendRow([ new Date(), data.firstName, data.lastName, data.email, data.ticketType, data.dietary ]); return ContentService.createTextOutput(JSON.stringify({ "result": "success" })) .setMimeType(ContentService.MimeType.JSON); }
-
Deploy as Web App
- Click Deploy > New deployment.
- Select type: Web app.
- Description: "Form Handler".
- Execute as: Me.
- Who has access: Anyone (Important!).
- Click Deploy and copy the Web App URL.
-
Connect to Form
- In
src/components/RegistrationForm.tsx, replace the mock logic with afetchcall to your Web App URL:
await fetch('YOUR_WEB_APP_URL', { method: 'POST', body: JSON.stringify(data), headers: { "Content-Type": "text/plain" } // Use text/plain to avoid CORS preflight options });
- In
- Copy
.env.exampleto.env. - Set
VITE_ENABLE_ANALYTICS=true. - Configure your analytics provider in
src/content/config.tsorsrc/App.tsx.
- Import this repo into Vercel.
- Vercel will automatically detect Vite.
- Deploy!
- "New site from Git".
- Build command:
npm run build. - Publish directory:
dist.
MIT © 2026 VentureStudio, Ahmedabad University