d'ora is a music social media app that allows you to share albums and songs, along with a rating or blurb about each. Along with sharing your own music, you will be able to see and react to what other users are sharing as well! Curious as to what music is popular? You can see what songs and albums are trending. Can't remember what song you're thinking of? Use our search function to help narrow it down!
Client Installation Instructions
- Fork on GitHub and clone down this repository
- Run
npm install
to ensure dependancies are installed - Touch a
.env.local
file - add
REACT_APP_SERVER_URL=http://localhost:3001
to.env.local
- In your terminal, run the command
npm run start
to start the client - Navigate to http://localhost:3000/ to interact with the web app
Server Installation Instructions
- Fork our d'ora Server repository on GitHub and clone it down
- Run
npm install
to ensure dependancies are installed - Touch a
.env
file - add
JWT_SECRET="[SECRET_KEY_HERE]"
in the.env
- Run
nodemon
to start server
Last.fm API Key
- Go to the Last.fm API site and make a Last.fm account to get an API key.
- Fill out the application and you'll get an API key!
- In the
.env.local
file, addREACT_APP_API_KEY=[YOUR_API_KEY_HERE]
(make sure there are no spaces). - You should be good to go!
- JavaScript
- Express
- Tailwind
- MongoDB and Mongoose
- Node.js
- JWT
- Bcrypt for Node.js
- React
d'ora is a react
based Node.js application. The backend of our project dora Server
uses Express.js along with a noSQL database called mongoDB
. dora Client
uses axios
to connect with an API and gather information on songs and artist, which the user can interact with. Javascript
is used throughout server and client sides. EJS
(Embedded JavaScript Templating) and Tailwind
are both used to design the interface that the user inteacts with. JWT
(JSON Web Token) is used to protect a users data and authenticate them.
We will using the last.fm API at the moment.
Method | URL | Action | Description |
---|---|---|---|
GET | / | READ | Takes the user to the homepage (not logged in) |
GET | /login | Read | Takes the user to the login page |
POST | /login | Create | Accepts a payload of data and logs a user in |
GET | /signup | Read | Takes the user to the sign up page |
POST | / | Create | Creates a new user and redirects the user to the homepage |
GET | /logout | Read | Logs a user out and sends them back to the home page |
Method | URL | Action | Description |
---|---|---|---|
GET | / | Read | Takes the user to the homepage (logged in) |
GET | /profile/:userId | Read | Takes the user to their user page |
GET | /profile/:userId/edit | Read | Takes the user to their edit user page |
PUT | /profile/:userId | Update | Posts the updated user info and sends user to profile |
VERB | URL | Action | Notes |
---|---|---|---|
GET | / | Read | Render the Home Page (logged in) |
GET | /post/new | Render a new post form | |
POST | / | Create | Create a new post and have it show in feed |
GET | /post/:id | Read | Get more info on a post in the feed |
GET | /post/:id/edit | Read | Render an edit post form |
PUT | /post/:id | Update | Update a post’s information |
DELETE | /post/:id | Destroy | Delete a post |
Homepage
Song/Album Info
- as a user I want to create/edit/delete an account
- as a user I want to be able to post a song or album with a comment about it
- as a user I want to be able to delete and edit a post I make
- as a user I want to be able to see posts created by other users
- as a user I want to be able to see other users
- as a user I want to be able to see a trending page with all of the trending songs and albums
- as a user I want to be able to interact with other peoples posts
- as a user I want to be able to search a song or album and have the information displayed to me
As a group, we wanted to create something that we felt passionate and excited about. After discussing and brainstorming we came back to music and decided to create a social media app where users can engage with their friends by posting songs, music, and engaging with others. We utalized Miro primarlily to communicate and plan out our project. We had a brainstorming table, a bug board, a weekly tracker of what we did everyday, and visual representations of our app. We didn't have any merge or Github issues, primarliy because our group was exceptional with communication on what files were being worked on and when a pull request was made, it was quickly merged and pulled down.
We also utalized discord as a way to work outside of class and share code snippets, share screens, and just aid in communication. Our focus was in helping each other and filling in each other's weaknesses to be a better team and create something visually appealing and useful.
- We wanted to implament reactions on each post so that other users could add a "like/dislike/etc" to a post. We ran out of time and weren't able to get this fully working.
- We were unable to integrate local storage into our app.
- In
/post/new
we wanted to add a search song input that searches the api and autofills the blank form, but ran out of time.
Group wise, we didn't have too many major hurdles. We worked well, communicated well, and we think the unsolved problems could have been solved with another day or two or work.
- user is able to post a song/album
- a feed that shows what songs/albums other user's have posted
- a trending page with trending songs and albums
- search function for songs and albums
- editing and updating user profile
- allow users to play a song/album embedded on the site
- users are able to react to other's people's posts
- logo for our app
- delete profile