Web Development, Front End, Back End
JavaScript • React.js • Next.js • Domain-Driven Design • MongoDB • Tailwind CSS
This project was built as part of a custom wedding website created for two friends. While my collaborator, Meyvi Medina, focused on the design and informational content, I was responsible for developing the RSVP system and guest management functionality. The goal was to allow guests to RSVP directly from the couple’s wedding site and give the couple a streamlined interface for tracking and managing their guest list.
The project consists of two main parts:
The key features include:
Couples have full control over their guest list through a dedicated admin dashboard. Each invited party is displayed in a sortable table, with detailed fields including guest names, party size, RSVP status, and contact information.
I implemented a search and filter system to allow couples to quickly locate guests or narrow down the view by RSVP status (e.g., Attending, Declined, No Response). This makes it easy to plan seating or follow up with those who haven’t responded.
To support both manual entry and bulk uploading, I added the ability to import guest data from a CSV file. The system parses the file, validates each entry, and populates the dashboard accordingly. Couples can also export their full guest list to CSV, providing a reliable backup and a simple way to share data with vendors.
All create, read, update, and delete (CRUD) actions are handled through Next.js API routes and persist to MongoDB, while React state management keeps the UI responsive and real-time.
Guests receive a personalized invitation that includes a unique QR code linking directly to the RSVP page. Upon arriving at the page, they are prompted to search for their party by entering any name associated with their group.
Once a party is selected, the app checks their RSVP status. If they have not yet responded, a dynamic RSVP form is displayed. This form automatically adjusts based on the number of guests in the party, allowing each individual to indicate whether they’re attending, choose meal preferences, and leave optional notes (such as dietary needs, song requests, or accessibility requests).
If the party has already submitted an RSVP, they’re taken to a confirmation page summarizing their responses. From there, they can click an "Edit RSVP" button to make changes if needed — a feature designed with flexibility and real-world use in mind.
I handled conditional rendering, form state, and dynamic field generation using React, with all data stored and retrieved via Next.js API routes and MongoDB. Form validation ensures required fields are completed before submission, and success/failure feedback is clearly communicated to the guest.
This flow not only simplifies the RSVP process for guests, but also ensures accurate, structured data for the couple’s planning needs.
To create a smooth, scalable RSVP experience for guests of all types, I implemented robust conditional rendering and custom validation logic throughout the RSVP flow.
The forms dynamically adjusts based on user input:
Each member of the party can be RSVP’d individually. The system ensures that required fields are completed for every attendee before submission is allowed. To prevent incorrect or partial data, the form includes:
All form responses are immediately stored in MongoDB and reflected in the admin dashboard. A post-submission confirmation screen summarizes responses, with an “Edit RSVP” option in case guests need to make changes later.
These features were implemented using controlled components in React, ensuring that all form logic is centralized, reusable, and easy to maintain.
This project was a unique opportunity to apply full-stack development skills to a real-world event that deeply mattered to people I care about. While Meyvi focused on the content and styling of the wedding website, I was solely responsible for architecting and building the guest-facing RSVP system and the admin-facing guest list manager.
From designing dynamic forms that accommodate complex party structures to building a responsive dashboard that helps couples stay organized, every feature was built with usability, scalability, and data integrity in mind. I leaned heavily on React and Next.js for a smooth client experience, and used MongoDB to handle flexible data models that fit the unpredictability of real guest data.
This project showcased not only my technical skills, but also my ability to think like a product owner, prioritize features that matter to users, and build tools that solve real problems.