Front-End Development for Practice Space Rental App
For the class INFO 340: Client-Side Web Development final project assignment, my team of 4 created an interactive web application to provide Seattle musicians a place to find practice spaces to rent.
Goal of Project
Working with fundamental JavaScript functions and data types
Structuring a web page using React Components
Using React props and state to make a web page interactive
Accessing and processing external data through AJAX
Designing and implementing a full-featured web application
Synthesizing skills, tools, and concepts from across the course
Creating new web pages from scratch
Applying iterative development and modifying existing web projects
Writing semantically rich and accessible HTML
Using CSS to give pages complex formatting and layouts
Harnessing media queries and CSS frameworks to produce responsive web pages
Project Problem/Domain
Question of Interest
Our project wants to help musicians who are looking for practice spaces. By this, we mean a space, maybe purpose-built or maybe being repurposed, for people to practice playing music. We recognized that there is no shortage of musicians in Seattle, but many people live in apartments or other shared living spaces where they wouldn’t want to disturb their neighbors by playing.
Individual communities may have music spaces, such as the rooms in the dorm buildings on West Campus, but there is a lack of a database for spaces in the greater Seattle area. Additionally, attempts to solve this problem tend to have few, if any filters, and tend to be concentrated on one city or locality, without the ability for users to list their own free spaces.
Existing Solutions
mushRoom is a web page that connects hosts to musicians looking to rent practice areas. However, mushRoom only appears to operate in the UK and Paris, so this is not of much use to Seattle area musicians. mushRoom also handles all of the payment from the renter to the host, and charges a 15% commission while doing this.
Practice Space Seattle attempts to solve this problem by connecting Seattle musicians to rehearsal and recording spaces, venues for performances, instrument maintenance, and other useful services. However, the way this operates is through a Facebook group (which was last active in 2017).
App Description
Users
There are two different users that will be using our application and each interacts with the app in different ways. We have a ‘host’ which is a user that is advertising their practice space onto our site, and we have the ‘musician’ who is seeking out a practice space on our site.
Host users have capabilities that musician users do not, such as uploading a profile about their practice space with information such as location, cost, times to rent, current equipment, etc.
Musicians have the capabilities of creating a personal profile about themselves such as a user rating, where they are located etc. and have abilities to select music spaces for certain times and dates.
Creating new web pages from scratch
Applying iterative development and modifying existing web projects
Writing semantically rich and accessible HTML
Using CSS to give pages complex formatting and layouts
Harnessing media queries and CSS frameworks to produce responsive web pages
Project Problem/Domain
Question of Interest
Our project wants to help musicians who are looking for practice spaces. By this, we mean a space, maybe purpose-built or maybe being repurposed, for people to practice playing music. We recognized that there is no shortage of musicians in Seattle, but many people live in apartments or other shared living spaces where they wouldn’t want to disturb their neighbors by playing.
Individual communities may have music spaces, such as the rooms in the dorm buildings on West Campus, but there is a lack of a database for spaces in the greater Seattle area. Additionally, attempts to solve this problem tend to have few, if any filters, and tend to be concentrated on one city or locality, without the ability for users to list their own free spaces.
Existing Solutions
mushRoom is a web page that connects hosts to musicians looking to rent practice areas. However, mushRoom only appears to operate in the UK and Paris, so this is not of much use to Seattle area musicians. mushRoom also handles all of the payment from the renter to the host, and charges a 15% commission while doing this.
Practice Space Seattle attempts to solve this problem by connecting Seattle musicians to rehearsal and recording spaces, venues for performances, instrument maintenance, and other useful services. However, the way this operates is through a Facebook group (which was last active in 2017).
App Description
Users
There are two different users that will be using our application and each interacts with the app in different ways. We have a ‘host’ which is a user that is advertising their practice space onto our site, and we have the ‘musician’ who is seeking out a practice space on our site.
Host users have capabilities that musician users do not, such as uploading a profile about their practice space with information such as location, cost, times to rent, current equipment, etc.
Musicians have the capabilities of creating a personal profile about themselves such as a user rating, where they are located etc. and have abilities to select music spaces for certain times and dates.
Functionality
Hosts Our hosts will be able to upload information about their rental space to be displayed on our site and are able to manage rental dates/time confirmations.
MusiciansMusicians will be able to browse the rental spaces published on the app, sign up/ confirm dates and times of rental. Monetary exchange is dealt with off the site, similar to a Facebook marketplace.
What will our users see?
Hosts Can view profile of musician that has requested their space (things such as their user rating, profile picture, and profile description)
Musicians Can view profiles of hosts including price, location, time of rental opening, and any equipment available at the location.
How will this help?
This app would allow musicians and hosts to post practice spaces that are available for other people to use (whether free or for a charge), and allow other users to search through them. This lets musicians find practice spaces that are convenient for them to use and fit into their schedules.
Design Draft
Using Figma the team designed basic page designs and workflow before construction of the site. We also created a brand identity by picking a color scheme and created a logo for our website.
App Draft 1
After creating the designs for our product it was time to design the project structure. We first created a static webpage using HTML and CSS to design the basic structure for all elements of the webpage.
We utilized bootstrap to style most of our elements, including the navbar bootstrap styling and image carousel structures.
Our application had 4 interactive pages:
A landing page that displays all posted spaces
A rental page that displays information about a specific space which also allows users to sign up to rent the selected space
A host set up page, allowing hosts to create a profile and upload information about their space to our site
A profile page to display information about the host and their listed spaces
App Draft 2
From the static webpage we added interactivity by creating react components and interactivity, client-side routing and navigation, and using external data.
Creating React Components and Interactivity
Built a clear Component hierarchy that renders 2-3 levels of the DOM tree
Components used props to pass data between components, such as space details between pages and view cards
Components used states to keep track of any dynamic values, such as likes, amount of data, and AJAX fetching
User login. Needed to support other interaction such as profile display
Filter inputs influence the display of spaces, such as by price and by likes
Client-Side Routing and Navigation
Implemented routes, to create paths of navigation that a user might take
Used path parameters to direct users to specific rent or profile pages
Using External Data
Connecting our app to Firebase to manage data
Profile information is sent to the database when a profile is created and then fetched to use for displays
Loaded the external data via an AJAX request using Promise-based
fetch()
function for JSON data