On week 7, Le Wagon's students are grouped in teams of 4 and tasked with building a clone of Airbnb as a marketplace. We would be using Git and Github for the first time together as a team! Enter all the PRs and pulls from origin master 👩💻
Our idea was to develop an app to promote movie screenings 🎬🍿in secret places. The goal was to allow users to search movie screenings by neighborhood, buy tickets to these movies and also create their own movie sessions. With the user stories in place, we moved on.
Based on the user stories, we defined the data model. Next, we did some wireframing. We drew the components and mockups for the pages required to complete each user story. We also thought about the corresponding routes. Here, the challenge was to understand which routes would be nested and what would be the correct route to display both the sessions created by the users and the sessions purchased by them, all in one view. Once that was settled, we created our app and split tasks.
I coded the controller actions and practised the CRUD operations. Users should be able to create, read, update and delete their own secret sessions.
One of the app's features was to show the venues on a map 🗺, so we integrated with Mapbox to get geolocation! This took us some time to set up but ultimately we were able to show the search results on the map 📍 You can check the result on the left 👈
We also used the pg_search gem to help us with querying the database when the users would type in locations to search for movies.
To handle authentication we used the Devise gem and for authorization we used Pundit. I felt like Pundit is not the most intuitive gem to implement with all its policies and authorizations helpers 🙃 When users were logged in, they would be able to access their dashboard (👈), where they would find their upcoming movie sessions, the past venues they booked and also any movie sessions that they might have created.
With the core features done, we implemented a social media share button that integrated with WhatsApp and Twitter to share the details about the movie sessions.