Brian Cassriel Brian Cassriel
4 min read
Infinity Site

InfinitySite Homepage

This project was built for my Software Engineering Capstone course. Since Software Engineering is a collaborative field, this was not a typical “everyone pick a project and do it” type of course. Instead, I worked in a team of three students to bring a randomly generated website to life using Agile methodologies. This post will tell the story of how this project came to life, while the GitHub README defines the techincal intricacies.

Design Overview

As decided by two random dice rolls, our website theme would be “Star Wars”, and our topic would be “Locations.” We had free reign to create any kind of website we wanted as long as it incorporated these two ideas. The project we built was a Yelp-style reviews site that was only for Star Wars themed theme park attractions. When I tell people this, they usually ask, “Are there Star Wars rides than just at Disneyland?” To which, I usually answer “Not really.” But we had fun nonetheless! It turns out there are three Disney-owned theme parks that have Star Wars themed attractions: Disneyland, Disney World, and Disneyland Paris.

One of the main design choices that guided the interaction model and front end user experience was the Google Earth inspired location picker. The globe on the homepage can be spun and zoomed in on thanks to the wonderful team at mapbox, who host this web component with a reasonably inclusive free tier. The decision to use this globe model meant that web components would be dynamically displayed on the homepage instead of navigating to a different page.

We built a responsive, beautiful, microservices-based site that contains all its functionality in only the homepage.

SCRUM

My teammates — Christopher Uy and Martha Dempkey — did great work in building essentials for the site. While Martha was particularly focused on the front end design, and Chris on the database implementation, we all made improvements all over the stack. The most important thing here to my professional development was doing SCRUM.

This project was developed in typical two-week sprints using JIRA with User Stories & Acceptance Criteria, GitHub Actions for Continuous Integration, and Test Driven Development. I learned a ton about project management during this process. I had never built a project of this scale with others that were actively developing in parallel before.

  • Constant communication was essential, and JIRA helped us keep our design ideas in line. Descriptive, well thought-out user stories and definitive acceptance criteria made the definition of done easy to check.
  • Requiring Pull Request reviews was the best way to double check that everything was ready to be merged into the main branch. While individuals builds were sometimes broken, our main branch was almost never down.

Takeaways

Containerization

The ability to spin up services on the fly is very powerful and allows for healthy separation between concerns.

SCRUM

This methodology helps organize software teams in ways that assist with designing, planning, and checking whether the proper work has been completed. These are often things that teams struggle with, so having a process to govern them is essential.

Learning On the Job

This project included many tools that I was not completely familiar or comfortable with. Jumping in and starting development using a stack you are not totally at home in is an essential skill and I enjoyed expanding my palette in this project.