Dev Blog: How We Chose Our Stack
Hello World! My name is Antonio and I am a Pharmaceutical Sciences major (yes, you read that right) at the University of Michigan. On the MHacks Core Team, I act as sassadmin — or rather sysadmin — which means I handle our system architecture and health.
The Problem
Preparing for a hackathon is like a hackathon itself. Between logistics, design, tech, and everything else that goes on behind the scenes, there’s always something that gets forgotten or not given enough love.
At MHacks, our tech stack was in need of some TLC. It had seen years of changes brought in from different tech teams and contributors, last-moment fixes to prevent catastrophic events moments before the hackathon started, and a general lack of consistency. There were no reviews, no tests, no standards. Suffice to say, it was a hodge-podge of things we needed without enough time to implement them.
Over the life of MHacks, we’ve seen about 5 completely different tech stacks for the website/backend, 3 different apps for either iOS or Android, and a few extraneous repos along the way (and for the record, those numbers are probably low-balling it). This year, we wanted to be better organized. We wanted to choose something that people would enjoy working with, as well as something that newcomers would have some knowledge of. It needed to be simple and powerful, but most importantly robust.
The Solution
From these three principles, we came up with “unchained” (a play on the fact that we used Django for the stack last year). Unchained is a MERN (Mongo, Express, React/Redux, Node.js) based stack that we feel will be our (hopefully) last rendition of the MHacks stack. We also use Docker for everything DevOps, including setting up our development environments, so everyone on the team is on the same page.
Docker
By using Docker, we were also able to simplify deployments to the point where we can deploy through a simple Slack command. This allows people that may not have the exact know-how for getting everything up and running to focus more on development than deployment. (And speaking of Docker, I’ll be giving a tech talk at MHacks X about all things Docker, so be sure to drop by if you’re interested!)
Standards and Consistency
To make sure our code abides by our coding standards, we run everything against ESLint. We also use Prettier to help make everything clean and readable for the MHacks generations to come. In combination with both of those passing, we require Pull Requests to go through multiple reviews to make sure things will work the way they should.
A Community-Friendly Stack
In my opinion though, the best part about this stack is that everything is customizable. We wanted to create a stack that other hackathons would be able to use without much hassle. To support this initiative, we are using FreeNode IRC to offer support for the platform we’ve set up and help people with getting setup and contributing to their own stack. We encourage you to reach out with any questions you might have and we’ll do our best to help you get up and running!
Now this all may be nice and dandy, but the best solution can often be subjective. I wouldn’t be surprised if next year you came to find a new blog post here by someone other than me about the next stack that we moved to. Hackathons are always evolving.
You’ll be hearing from me again in the near future, so stay tuned for our next Dev Blog post! In the meantime, feel free to get in contact with me at me@antoniomika.me or at antoniomika on FreeNode IRC.
Cheers,
- Antonio
Want more MHacks goodness? Check out our last post: Introducing: Hacker Office Hours
Questions? Comments? Concerns? Compliments (we like these!)? Shoot us an email (hackathon@umich.edu), message us on Facebook, DM us on Twitter, or tag us on Instagram!