I like doing things myself when I absolutely shouldn't.
Having never seriously worked in the frontend, I decided my wedding was the perfect low-stakes, low-stress, casual environment to try it out.
So thats what I did. Instead of using The Knot to manage RSVPs like everybody else, I cobbled together a shitty webapp.
You can find it here.
(Update Sep '24: Sike you can't! You think I'm gonna keep managing that infra? Dream on pal.)
$0.000231 / GB / Minute
$0.000463 / vCPU / Minute
$5.00
free credit every monthwedding-api is a FastAPI hackjob hosted on Railway. Railway is a handy IAAS alternative to Heroku that I saw mentioned on Reddit. I don't know much about it other than the fact its cheap, easy to use, and has a cool choo-choo train logo. YMMV.
The API has three endpoints.
POST /rsvp/
- Accept an RSVP object via JSON and store it in the DB.GET /rsvps/
- Retrieve a list of all RSVP objects in the DB via JSON.
GET /rsvps_csv/
- Download a CSV file containing all RSVP objects in the DB.The latter two sit behind an API key. This 'key' is just configured as local env var on Railway and very professionally provided to the FE client by the user.
I expected to hit this second endpoint maybe a handful of times to monitor progress, and the third endpoint exactly once when it was time to make table arrangements. Probably not very secure at all? Eat your heart out, TMZ.
Data is passed to Mongo via the MongoDB SDK which is handy. I'm a relational guy but at this small of scale and with this low of stakes it was nice to follow the path of least resistance.
wedding is a React app hacked together with next to no React knowledge and furious web searching.
I chose React because it's what I've touched before. Live fast, die young.
My app uses ReactRouter to provide client-side routing so users can navigate around the site without having to make separate requests. This enables me to provide a slightly more performant experience with very limited (read: free) resources.
The RSVP submission form
The form submitted