Every year my family gets together for the first night of Passover. Basically, this involves everyone convening around a large table, taking turns reading through a "Hagaddah" - or "ceremonial text" - and then sharing a large turkey dinner. Naturally, due to Covid, this year that's out of the question, and it can be a bummer for a lot of Jewish people, especially since feeling of distance and isolation are already constants in everyone's lives. Thankfully, it's 2020 and video chatting exists so that we can still all be together for dinner without literally "being together". But what about the ceremony? How can people across the country take turns reading from the same book? That's what HaggaDOS is for!
What it does
It's not hard to find a Haggadah online, plenty of sites offer scans, transcriptions, pdfs, and even a couple of .tex files. But even if you could share a URL with everyone, it would still be difficult to keep 10+ scattered people on the same page, so I created a tool that displays an online Hagaddah, page by page, and syncs each person's digital copy. Basically everyone sees the same passage at once, someone reads it out loud, then when it's time to go to the next passage, they click "Next" and everybody's copy automatically turns the page in unison. No one gets left behind!
How I built it
It was surprisingly easy thanks to the MERN stack! Each family gets it's own virtual "room" with a URL they can share to invite others into. Each room is maintained in a mongo db, which stores it's name and current page. When a user enters a URL, the Haggadah is preloaded to a the current page that is stored in the DB. When they press "Prev" or "Next", the page number is updated in the DB, and then everyone else's phone/tablet/laptop/etc jumps to the new page.
Accomplishments that I'm proud of
This has certainly been the fastest I've ever put together a project. Once I had the idea, the entire backend(which is just API endpoints) was done it 2 hours. The frontend took a little longer(I'm no UI expert) but still was finished with time to spare before the holiday. It's very exciting to realize how quickly an idea can come to reality with all these modern frameworks. And it's responsive!
What's next for HaggaDOS
Hopefully, this will be the only year we ever need it, but if it's something that people find useful, I'd love to embed video chat directly into the page, that way people can see their loved ones and the current passage to read at once, instead of switching back and forth between the browser and Zoom.
Try It out
express.js, mongodb, node.js, react