How vivian-olivia/forward works
Forward is a GKDI Tangerang anniversary event site: visitors discover the event, ministries, and related gatherings, then can submit RSVP/contact details. The home page composes the main experience; the app layout adds the envelope introduction and music player. The RSVP API validates and normalizes submitted data before handing it to a Google Apps Script webhook that appends a spreadsheet row. The excerpts establish the registration backend, but do not show the form’s submission wiring, so that connection is omitted. Several page sections are represented from the tree rather than sampled implementation.
Main entry points: page.tsx Home page · EventDetail.tsx Event details · KeepInTouch.tsx Keep in touch · layout.tsx App layout
Components 23
Event experience
- Home page
app/page.tsx - App layout
app/layout.tsx - Hero section
components/Hero.tsx - Event details
components/EventDetail.tsx - Ministry gallery
components/OurMinistries.tsx - Upcoming events
components/UpcomingEvents.tsx - Countdown
components/Countdown.tsx - Footer
components/Footer.tsx - Envelope intro
components/EnvelopeIntro.tsx - Music player
components/MusicPlayer.tsx - Ministry photos
public/Photos
Visitor engagement
- Keep in touch
components/KeepInTouch.tsx - Event constants
lib/event.ts - Message templates
lib/message-templates.ts
RSVP processing
- Phone utilities
lib/phone.ts - RSVP endpoint
app/api/rsvp/route.ts - Sheets webhook client
lib/google-sheets.ts
External services
- Apps Script webhook
docs/apps-script-webhook.gs - Registrant spreadsheet
- Google Maps
- Google Calendar
Other components
- Visitor
Connections 26
- Visitor → Home page: opens
- Home page → Hero section: renders
- Home page → Event details: renders
- Home page → Ministry gallery: renders
- Home page → Upcoming events: renders
- Home page → Keep in touch: renders
- Home page → Footer: renders
- App layout → Home page: wraps
- App layout → Envelope intro: wraps
- App layout → Music player: renders
- Hero section → Countdown: uses
- Ministry gallery → Ministry photos: displays
- Event details → Event constants: reads
- Event details → Message templates: reads
- Event details → Google Maps: embeds and links
- Event details → WhatsApp: opens inquiry
- Upcoming events → Google Maps: links locations
- Upcoming events → Google Calendar: creates reminders
- Keep in touch → Message templates: builds message
- Keep in touch → Phone utilities: validates
- Keep in touch → WhatsApp: opens chat
- Visitor → RSVP endpoint: submits RSVP
- RSVP endpoint → Phone utilities: normalizes
- RSVP endpoint → Sheets webhook client: appends registrant
- Sheets webhook client → Apps Script webhook: posts row
- Apps Script webhook → Registrant spreadsheet: writes row