# A Rails App for your Wedding

Here's a simple rails app for distributing wedding information and managing the guest list. You're probably going to build your own anyway (like me!) but this may be a useful place to start.

Get the Code

> THIS WEBSITE IS AWESOME! Best wedding invite ever.

## Features

- Guests can RSVP, including dietary requirements and plus ones
- Guests can manage their own RSVPs using a secret link in an email (no user name / password needed)
- Responsive design on home page and RSVP pages
- Customizable styling (with Bootstrap) and wording
- Active Admin interface to manage the attendee list
- Optional invisible Google reCAPTCHA integration to avoid spam
- Sets headers to avoid being indexed by search engines

## What does it look like?

For the demo, the wedding is South Pole themed. You can of course change that! Click to expand the image.

### How does it work?

Here's a map of all the flows through the app, from the home page to the RSVP flow and also some of the separate admin interface. Click to expand the image. And here is a higher-resolution PDF version.

This diagram was produced in Realtime Board.

## Reflections

Building this website was fun and an excellent wedding procrastination project. Overall it was well-received, and a few people asked me to make it open source so they could use it for other weddings or wedding-like events.

It's a fairly simple CRUD application, so rails provides an excellent foundation. It's very much a “vanilla” rails application, with almost no fancy JavaScript. An earlier version used some UJS for Plus One management but getting it to be robust and accessible proved to be quite a lot of work, so I opted for the simpler approach. It does make good use of the rails asset pipeline to build a custom bootstrap theme.

I mainly wanted full control over the RSVP fields, for example to ask for song suggestions, and also for guests to be able to manage their own RSVPs. Quite a few people did this, especially for the song suggestions, many of which came in at the last minute! One person registered with two different email addresses and had to be sorted out manually, but overall people seemed to make it through the flow OK.

I put together some Docker compose infrastructure to manage the development environment, and in production I hosted the project on Heroku behind Cloudflare. I used hobby dynos for $7/mo to make sure it didn't cause confusion by going to sleep, and also to get SSL. I probably could have hosted it just on Heroku, but Cloudflare provided some nice analytics and a bit of added assurance on the security side (and some caching that works nicely with the rails asset pipeline, to boot). It was interesting to see that within a few minutes of putting it up, we had lots of traffic from China and eastern Europe. Google reCAPTCHAs were quickly added, especially because I used my personal Google Mail SMTP to send email. Fortunately, we didn't have any spam trouble.

We did eventually take the data offline to code the dietary requirements for the caterer and to make the seating plan. Potentially we could have asked people to select dietary requirements from a dropdown to avoid this, but we didn't know in advance what categories our caterer would want; it took some manual back and forth, but we got there in the end. There was some manual updating of these two sources of truth in the last couple of weeks, but it wasn't much, and by that point I didn't have time to add a seating planner to the website!

I hope this at least provides some ideas for your wedding website, and maybe a good starting point. I've also put some links to other rails wedding websites in the README on GitHub.

Get Started