- Users are first greeted with a login page where accounts can be created.
- After logging in, the user is prompted to grant location access, crucial for the application's functionality.
- An external API (EDMTrain) is used to fetch event data, including latitude and longitude information about the venues.
- Events happening within a 100-mile radius of the user are fetched using coordinates.
- Information provided includes EventID, Venue, Location (City), performing artists, and event date.
- Users can upvote an event and see the number of people who have upvoted it.
- Button to view events upvoted by the current user.
- Filters available for date, venue, and artists.
- Button to show a list of users interested in a particular event.
- Privacy toggle button allowing users to set their preference for sharing their interested events.
- Event Router methods:
- Get all events
- Upvote an event
- Count interested users for an event
- User Router methods:
- Create a user
- Get users' interested events
- Toggle privacy
- Get all users interested in a particular event
- Interested Events: Schema containing eventID, performers (artists), location, venue, date, and referenced users.
- Users: Schema containing username, name, passwordHash, referenced events, and isEventsPublic (privacy toggle).
- Error handler
- Token extractor
- User extractor
- Request logger
- Notifications for user actions (login, create user, upvote, etc.).
- Additional styling for the website.
- Console error when clicking "Show interested events" button.
- Reset filter functionality only resets the date filter and not venue and artist filters.
- Integration with an API to fetch venue ratings.
- IDE: Webstorm
- Front-end:
- Vite + React
- Dependencies: axios, react prop types, react-dom
- Dev dependencies: eslint
- Back-end:
- Node
- MongoDB
- Dependencies: bcrypt, express, jsonwebtoken, mongoose, mongoose unique validator, dotenv, cross-env, cors
- Dev dependencies: nodemon
- Clone the repo and open it in your preferred IDE.
- Navigate to the backend folder in the terminal and install dependencies using
npm i. - Similarly, navigate to the frontend folder and install dependencies using
npm i. - Create a free MongoDB cloud database to store user information and interested events.
- Obtain an API key from EDMTrain for fetching event data.
- Create a
.envfile in the root of the backend directory and store the MongoDB URI, port, and secret key. - Create another
.envfile in the root of the frontend folder and store the EDMTrain API key.
- In the backend folder, run
npm run devto start the backend server. - In the frontend folder, run
npm run devto start the frontend. - Access the website via the provided localhost link.