Each year, the Sparkbox Apprentices end their time here with a project designed to challenge the skills they’ve learned throughout their time in the program, from Git and Github to Sass, Ruby, Rails, and beyond. This year’s apprenticeship culminated with a project we call Lamp Post.
Lamp Post is an aggregate of local events—in our case tech events. It offers a quick-to-scan, simple UI so users can identify meetups in their area on a single site.
Four developers, a technical director, a project manager, and their “client” (played by Ben) walk into a conference room…
We learned one thing quickly: prioritization is hard. So many ideas, so many directions. Our project wouldn’t be what it is without Drew, who spent a good deal of time going over project goals and breaking tasks into small, digestible, and meaningful chunks of work. We moved in single-week sprints, over a total of nine weeks, meeting every Wednesday to check progress and set new objectives for the next week. Each morning, we had a quick stand-up to go over what we completed, what we were working on, and how our individual progress may be halted by the team.
ZenHub is a wonderful tool that allowed us to integrate a kanban board directly into Github, so we could identify issues in the same place we solved them (the Google Chrome extension is a must).
Slack, too, was integral to our process, allowing for speedy communication and collaboration. Finally, good ol’ Google Hangouts became imperative for both the scheduled and impromptu remote meetings.
There are a dozen sites similar to Lamp Post: Meetup.com, Eventbrite…even Facebook has event pages. We wanted our project site to be different in a few ways. First, Lamp Post would be a single-source culmination of the other similar sites. It would include every single meetup we could possibly find, making it an ideal location to quickly find tech meetups in the local community. Second, the site would make it easy to identify events relevant to a user’s free time and personal interests, via a short description and set of filterable topic tags. Finally, the site would be beautiful, responsive, and mobile-friendly (because if you are going to build tech for tech people, it has to be done correctly).
Lamp Post includes an About page, authored by Austin, who offered so much help. The page offers an explanation of Lamp Post as a whole. We’ve also incorporated a Submit form so community members can easily add their own meetup events (with admin approval).
A major requirement of our project was to “make it beautiful.” Beauty may seem like a silly goal prior to the creation of any functionality, but well-designed sites are intuitively seen as “better.” And boy, did Marshall deliver! He created mock-ups in Sketch, including a grey/yellow color palette, Gotham font, and a flippable JS-powered event card. He even came up with the name “Lamp Post.” We were super impressed.
We accessed the different designs with Invision, a prototyping tool new to nearly all of us. This allowed us to quickly access the mockups of different pages, discuss, and implement relatively quickly. We’ve included multiple responsive breakpoints into the design—using a mobile-first approach—to create the best experience on every size device.
Directed by our tech lead, Ryan, we decided well-tested, well-documented code would be an absolute must. Our first week was spent setting things up—Github for version control, Circle CI and Code Climate for testing, and Heroku and Rails for automated staging and deployments.
To ease the work of data entry, we utilized Rails Admin, a Rails Engine that creates a GUI to manage our application database. We were extremely happy with how simple it was to use and found setup a breeze. Rails Admin is a great “backend place-holder,” allowing developers to focus on building a working application and devoting only a small amount of our time to data management. We’re also leveraging Carrierwave to handle event logo image uploads and ActsAsTaggableOn to build our tag-related filtering.
For styles, frontend, and—well—everything, Rails is an awesome framework. We were able to implement partials and compile Sass just by making sure things were in the correct folders.
Ben, as mentioned above, acted as our client in the process. After all, Lamp Post was his idea. We were extremely lucky to have someone so well-versed in the code side of the project as our client. Ben broke milestones into achievable goals and often identified great technical methods for accomplishing the tasks we were given. One particularly meaningful brainstorming session had Ben wireframing responsive design for us on the conference room markerboard—not something most clients are able to do.
Almost all the technologies and tools we employed throughout the build phase don’t directly address the problem that our application set out to solve. Understanding a client’s problem—which, in this case, was having multiple sources for multiple meetups—and seeing the solution can be much harder than simply learning how to use Rails or Sass, or whatever else.
In this case, the solution was to create a simple event listing with minimal cruft and a focus on content.
Working together in a clean cohesive manner was the biggest challenge and lesson that we all took away from this experience. The management and guidance we received from our mentors proved more valuable than any language or framework we could have learned over the duration of our apprenticeship.