My first group project at Lewagon was to create an Airbnb type marketplace. We could choose any idea as long as it had a booking feature. I decided on motorcycles, and luckily my teammates liked it. I hadn't ridden in 5 years but there was one particular motorcycle I was itching to try: the popular Kawasaki Ninja 400. But of the few rental companies I could find, none offered it. Surely, somebody out there wanted to make some side money and rent it to me!
Rails
Javascript
Bootstrap
Cloudinary
Mapbox
Heroku
We spent the greater part of a Saturday discussing the features we would implement, approaching the project as if we were building an MVP. The core features would be searching, booking, and a show page for each motorcycle. Next, we mapped out our database schema so that we would have a solid foundation for approaching the backend. Once we completed that, and given the time crunch of the bootcamp, we decided to use a tool I was already familiar with for doing low fidelity mockups: Balsamiq. I did a mock up of our website page by page, drawing inspiration from other websites, and decided to keep the design simple and clean. We spent a lot of time preparing before we wrote a single line of code, but this proved beneficial as we had few hiccups along the way once we got to coding.
I started off by building the backend and making sure that the core models, controllers, views, and database were set up and working properly, testing the CRUD actions in both the console as well as in the app. Then I worked on the design of the homepage trying my best to make it inviting. I find that getting the hompage done, at least a working version in the early stages of a project fuels motivation and gives me a good sense of how I want the general site design to be.
After the homepage, I worked on the show page and booking feature. The part that had me scratching my head most was how to set up an "upcoming bookings" page and a "past bookings" page, both for the host (motorcycle owner) and the customer (renter). In the end, I created additional booking controller actions to separate host bookings and client bookings, and created separate pages and tabs in the UI. My teammate T.J. tackled the search and search results pages, integrating Mapbox's API to display search results on a map as markers. When I finished my core tasks, I assisted T.J. by updating the UI to match with the rest of the site. All in all, I learned a ton from doing this project and it was really our first attempt of taking everything we had learned and putting it together into a viable product.