Starting Development on GraceSoft RSVP
We’ve officially started development on GraceSoft RSVP, a mobile-first, real-time wedding operations dashboard built around syncing with Google Sheets.
The idea came from a simple real-world question:
“Is it possible to build a live dashboard connected to a Google Spreadsheet that updates automatically as the spreadsheet changes?”
The answer was yes. But rather than build a simple spreadsheet viewer, we decided to approach the problem as an operational platform.
The vision
GraceSoft RSVP helps couples, coordinators and wedding helpers manage guest operations in real time.
The goal is to turn familiar spreadsheet workflows into a responsive, mobile-friendly dashboard. Instead of asking people to learn a custom admin panel, we let the spreadsheet itself be the content management system. Users keep updating guest information in Google Sheets, and the dashboard reflects the changes live.
Why Google Sheets?
One of the most interesting engineering aspects of this project is that the source data is intentionally flexible. We may not always control:
- column naming
- column order
- optional fields
- spreadsheet formatting
So the application can’t rely on hardcoded indexes or rigid schemas. The dashboard has to adapt. Rather than binding UI components directly to spreadsheet cells, that led us toward building:
- dynamic header mapping
- normalisation layers
- typed transformation pipelines
- resilient data parsing
Core architecture
Google Sheets
↓
Google Sheets API
↓
Normalisation Layer
↓
Typed Guest Models
↓
Dashboard API
↓
Reactive Mobile UI
Instead of exposing the spreadsheet directly to the frontend, the server turns raw spreadsheet data into structured internal models. That gives us schema flexibility, safer parsing, a cleaner frontend architecture, reusable analytics and room to scale.
Technical goals
Dynamic header mapping
The dashboard should keep working even if spreadsheet columns are renamed or moved. All of these should map correctly:
RSVP
RSVP Status
rsvp_status
Guest RSVP
This calls for normalisation utilities, synonym matching and defensive parsing.
Real-time updates
The dashboard should update without a page refresh. The first version will likely poll using SWR refresh intervals. Later phases may introduce Server-Sent Events (SSE), streaming updates, activity feeds and reactive state syncing.
Typed data models
All spreadsheet data will be transformed into typed models:
type Guest = {
id: string;
name: string;
side?: string;
pax?: number;
rsvpStatus?: string;
arrivalStatus?: string;
diet?: string;
table?: string;
};
This keeps external datasets, application logic and presentation layers cleanly separated.
Mobile-first operations UI
Coordinators and helpers will mostly use the dashboard on their phones during live events. So the UI is designed mobile-first, with touch-friendly cards, responsive layouts, searchable guest lists, real-time status indicators and operational analytics.
Planned dashboard views
Operations dashboard. A high-level overview showing total guests, confirmed RSVPs, arrivals, dietary analytics and live activity updates.
Arrival view. A view-only guest list showing who has arrived, which side they’re on, dietary restrictions and table information. It’s built for coordinators, helpers, ushers and logistics support.
Nice-to-have features
- QR-based guest check-in
- Passcode-protected dashboards
- Activity logs
- Live sync streams
- Operational analytics
Tech stack
- Next.js 15
- TypeScript
- Tailwind CSS
- shadcn/ui
- Recharts
- Google Sheets API
- SWR
- Zod
Hosting will likely be on Vercel.
Security and API design
The raw spreadsheet will never be exposed publicly. The application uses:
- server-side fetching from Google Sheets
- a service account with read-only permissions
- internal normalisation pipelines
- credentials managed through environment variables
The spreadsheet acts as a backend CMS, while the frontend stays a structured operational interface.
Beyond weddings
What started as a wedding helper tool quickly grew into something broader: a lightweight platform for running real-time events. The same architecture could eventually support conferences, ministry events, church attendance, volunteer operations, registration workflows and hospitality coordination.
Next steps
- Set up syncing with Google Sheets
- Build normalisation utilities
- Implement typed guest models
- Create responsive dashboard layouts
- Implement real-time updates through polling
- Design reusable analytics components
We’ll keep documenting the process publicly as the project evolves.
Originally published on DEV.