- Overview
- Examples
- Setup instructions
- Learning Goals
- Technologies used
- Contributors
- Future features
- Reflections & Wins
- When our team had the chance to dive into some independent learning of new technologies and build something creative we chose. We focused on react's built in
context api
for state management andfunctional programming principles
to build a UI to allow Phish fans to find and play any live Phish audio stream. - Gone Phishin allows a user to:
- Browse by year.
- Browse by show.
- See a list of all tracks broken down by set.
- Click on and listen to any track.
- Use a years drop down from the years or tracks display to be taken to the the years page to switch up the shows data.
- Bookmark favorite shows or type in a url path to navigate the application
- Enter Party Mode and watch the page change in front of you to a more party friendly style. 🤪 🎉 🎛️
- See a user-friendly error display (also available in party mode!)
- Fork this repo by clicking the
Fork
button in the upper right of this page - Clone your new repo down to your local machine in your chosen directory
- Type
npm install
into the command line to install all dependencies - Type
npm start
into to the command line to start the React app. A browser window will appear running a local host url
- Our team learned several new technologies in the course of a week including React's context API and React hooks.
- We chose to use
React's Context API
to manage our application state. which allowed us to pass data through the component tree without having to pass props down manually at every level. - As the application grows, context will help our application stay organized and easy to read and manage as we start to use and manipulate shared state values from multiple components.
- Currently our application takes advantage of a party mode context called
ThemeContext
which allows multiple components to listen for state changes as party mode is toggled on and off, changing component styling. - Take a look at any page display and choose the toggle theme button to see how state (theme, mode) is shared between components.
- We also have a context that holds show data that is shared amongst our components, including our all shows and all tracks data. Note: In the future as more functionality is added, more components will need access to this state.
- We chose to use
- We also used
React Hooks
in our application which allowed us to use state without relying on a class component. We were able to 'hook into' React state and lifecycle features and work with advanced hooks likeuseContext
. - We are currently collaborating with Phish.in and hoping to merge our mobile version of the application so that Phish fans have a mobile friendly of the desktop application.
-
- Favorite Phish Song: It doesn't matter what they play...!
-
- Favorite Phish Song: Catapult
-
- Favorite Phish Song: 'She would have chose a Led Zeppelin API. 🤪 '
Mobile Spec |
---|
- We hope to add more search option functionality, including search by venues, and by song.
- We would like to add a reducer as opposed to state and integrate that with our showContext.
- Wins:
- We enjoyed working as a team and were able to learn several new technologies in just 11 days while imagining and building a really cool application that exceeded our learning goals.
- We were able to collaborate with the creators of our server side code and kept them in mind when designing our application as they were looking for a responsive mobile view of their UI.
- Challenges:
- We ran into troubles trying to implement reducers on our first go when we learned that useReducer doesn't support async actions natively. We plan to incorporate a reducer to clean up or state management in the future by going with a different approach to our reducer actions.