New Project: Gift Exchange Web App
Back when I was still super pregnant I attended a fun, informal working meetup with some old colleagues of mine. Despite having made no progress on any particular project and feeling as if I had nothing to contribute, everybody was super supportive of my needs and feelings, and asked me a lot of kind questions. Yeah, they’re that kind of awesome folks.
While I did hear some of the classic “you just gotta make time” input, they also struck down a mental block I’d been having: the idea that if you’re going to create something, it must be creative, new, and unique. This idea had been weighing on me; it’d been preventing me from getting much of anything done or even started for that matter. My friends pointed out that if I wanted to create, I should just create - I don’t need to break new ground just to keep my hand in and make something fun.
They also pointed out I should work on something close to home - what was going on in my current life that I thought could benefit from technology (again, regarless of whether that software or app already existed)? Being pregnant at the time I had a few vague ideas, but nothing that I had time to get much past some initial brainstorming.
Now, though? A new opportunity has presented itself!
For Christmas my family has decided to do gifting by drawing your giftee’s name from a hat (as opposed to everyone buying gifts for everyone else). But we don’t all live in the same state - how were we going to do this remotely?
TECHNOLOGY TO THE RESCUE!
Thus my little Gift Exchange web app began. Man, it feels good to have a project.
MVP Featureset⌗
To test my ability to actually finish something, I want the initial app to be as stripped down as possible:
- Create your party (give it a name)
- Enter participants
- Anonymously match participants
- Create a link for each participant to see their matched person
There’s obviously a lot of room here for additional or more complex functionality. In a perfect world I’d have a minimal featureset that didn’t even require a database, but I want a way for the host/creator to be hands-off after the initial setup. IE, the matching information needs to persist.
Plus, even though I just said I wanted to keep the fuctionality stripped down and simple, having a DB seems a basic enough technical feature for future iterations.
Visual Design⌗
Always a sucker for a simple “slide” flow, that’s what I’m opting for here: a single modal with set of steps or “slides” for each piece of input. Of course, I also want to avoid importing any big component libraries, so I’ll be building this slide flow myself.
Technical Design⌗
Some initial technical decisions I’ve made:
Frontend⌗
- React. I know this, man.
- No TypeScript, because ugh so much work, especially for something so small
- Tailwind CSS; again, for such a small project using a whole component library is overkill
Database⌗
Cloud Firestore, maybe? As I’ve always skewed towards frontend development, DB selection isn’t exactly my forte; I’m looking for something simple to set up and use. Given the size of the project, I don’t really see a need for a relational DB either. So let’s just throw some data in a pile and see what happens!
Additionally, I’m already using Firebase to host this blog, so exploring some of its additional functionality doesn’t seem like a big stretch for me. Am I wrong? WE’LL SEE!
Next Steps⌗
I’m going to move on this as fast as I can. I’ve talked a lot about time being a strong limiting factor as a parent (now of 2), and I’m hyper-aware of what that means for any project I take on, be it technical work or straight-up housework. This project will be a test of my ability to cut scope and not get lost in the weeds…as well as getting it done before my mother-in-law just uses a spreadsheet to complete the gift exchange without me. 😂