A headshot of Gavin Henderson

Gavin Henderson

Mystery Santa

October 1, 2020

I was tasked with organising this years Secret Santa for my extended family. Usually we all get together and put all the names in a hat. This year with the whole global epidemic thing going on thats not something that we can do, and I suspected lots of other people might find themselves in a similar position. So I decided to build a platform to facilitate Secret Santa.

MysterySanta is a simple and free Secret Santa generator app. It takes in a list of people and names and then sends a text to everyone letting them know who they have to get a present for.

The UI is built using React, Apollo GraphQL and ChakraUI. The backend is built using NodeJS and Apollo Server. The entire system is deployed using Heroku.

You can visit the website and try it out yourself at mysterysanta.co.uk.

Source Code:

Screenshot of the app in an iphone frame

Architecture Overview

The architecture of the platform consists of a few parts. There is a React frontend that uses Apollo GraphQL Client to communicate to the backend. The backend is a NodJS server using Apollo GraphQL Server to host a GraphQL schema and resolvers. The front and backend and both hosted separately on Heroku. The backend communicates sends SMS notifications to all the participants via the Twilio API.

Architecture Diagram

If I was to put more time into the project the first thing I would do is write UI tests using React Testing Library. This would facilitate a refactor of the frontend which is sorely needed, it got pretty messy towards the end. After that I have a pretty long list of features that would be useful for example wish lists. I am probably not going to invest anymore time into this project unless it becomes a roaring success.

Thanks for reading! If you have any questions about this project or any other of my projects, let me know!