Giter VIP home page Giter VIP logo

toshydev / inspot Goto Github PK

View Code? Open in Web Editor NEW
20.0 1.0 1.0 2.67 MB

Nearby event finder which can filter events by genres and tags and informs the user about the distance as well as the time left until the start of events.

Home Page: https://inspotapp.com

License: GNU General Public License v3.0

JavaScript 20.67% TypeScript 79.33%
events finder google-maps-api javascript jest mongodb-atlas mongoose next-auth nextjs nodejs

inspot's Introduction

GitHub User's stars

Hello there ✌️

From violin to visual studio code.

Codepen Badge Dev.to Badge Linkedin Badge Twitter Badge Facebook Badge Instagram Badge


💙 Personal interests:

  • Coding 💻
  • Violin 🎻
  • Piano 🎹
  • Audio Production 🎧
  • Video Production 🎥

⚡️ Technologies:

  • Python
  • Heroku
  • Docker
  • React
  • Next.js
  • Node.js
  • MongoDB
  • Spring
  • Java
  • JavaScript
  • Git
  • Raspberry Pi
  • GitHub
octocat

Visitors

inspot's People

Contributors

toshydev avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

inspot's Issues

User Story 4 - Event Filter 🎯

User Story 4 - Event Filter

Value proposition

As a user
I want to be able to filter the event list
So that I can focus on events I find interesting

Description

US-4 wireframe

  • A filter bar lets the user filter for genre or custom tags or remove the filter

Acceptance criteria

  • Setting a genre filter should only display events of the selected genre 🖼️
  • Setting a custom tag should only display events with the selected tag in its description or info 🖼️
  • Setting a genre filter and a custom tag should only display events of the selected genre that include the tag in the description or info 🖼️
  • Unsetting the filter should display all events 🖼️

Tasks

  • Create an EventFilter component and pass it the props genre and tags
  • Create states for genre and tags
  • Create a select element for setting the genre state
  • Create an input element for setting the tags state
  • Create a button for resetting the genre and tags states
  • Create a genres variable for the genre select options
  • Create an onSetFilter function that sets the filteredEvents array
  • Replace the events prop in the EventList component with filteredEvents
  • Acceptance criteria with 🖼️ requires component testing

Complexity: XL

User Story 19 - Profile Page 🎯

User Story 19 - Profile Page

Value proposition

As a user
I want to see a profile page
So that I can access my upcoming events, venues and reviews faster

Description

Image

  • A profile page with user infos and upcoming events

Acceptance criteria

  • The ProfilePage renders a filtered EventsList, username, saved items and reviews count 🧪
  • The ProfilePage renders a username and savedEvents count, savedVenues count, userReviews count 🧪

Tasks

  • Create and connect MongoDB collections for users
  • Acceptance criteria with 🧪 requires component testing

Complexity: XL

User Story 9 - Fetch API 🎯

User Story 9 - Fetch API

Value proposition

As a user
I want to see events from the Ticketmaster API
So that I can pick an event from a list of real events

Description

  • Dummy data is replaced by data from the Ticketmaster API

Acceptance criteria

  • Events from the Ticketmaster API are shown instead of events from data.js
  • Error handling is implemented

Tasks

  • Setup fetching logic in the /api folder
  • Include the API key in .env
  • Acceptance criteria with 🧪 requires component testing

Complexity: XL

User Story 17 - Favorite Venues List 🎯

User Story 17 - Favorite Venues Page

Value proposition

**As a user
I want to be able to see favorite venues
So that I can edit my favorite venues

Description

Image

  • A list of saved events

Acceptance criteria

  • The SavedVenuesList component renders a name and FavoriteButton for all venues from the passed venues prop 🧪
  • Unsaving venues from the SavedVenuesList removes the unsaved venue from the list

Tasks

  • Create a SavedEventsList component and pass it an events prop
  • Acceptance criteria with 🧪 requires component testing

Complexity: M

User Story 11 - Spotlight Page 🎯

User Story 11 - Spotlight Page

Value proposition

As a user
I want to land on a spotlight page
So that see suggested events from venues

Description

US-11-SpotlightPage

  • A list of suggested venues with corresponding events is displayed

Acceptance criteria

  • A list of events is rendered with a event title and venue name 🧪

Tasks

  • Fetch a suggested events list with corresponding events
  • Acceptance criteria with 🧪 requires component testing

Complexity: L

User Story 1 - Event List 🎯

User Story 1 - Event List

Value proposition

As a user
I want a to see a list of events
So that I can inform myself about my options on each day

Description

US-1 wireframe

  • A list of all events that are present in the data

Acceptance criteria

  • All events from the data should be displayed on the EventListPage 🖼️
  • Each event should display an event name and date 🖼️

Tasks

  • Create a dummy data file events.json
  • Create an EventListPage component and pass it an events prop
  • Create an EventPreview component and pass it an event prop
  • Display the event.title and event.date in the EventPreview component
  • Acceptance criteria with 🖼️ requires component testing

Complexity: S

Localisation/German

inSpot is only available in english
The app currently only supports events in Germany but the app language is english.

Add a german version of the app
Translate pages, buttons and instruction text to the german language.

Translator plugins and translation apps
Automatic translations can translate the app into requests languages.

User Story 16 - Favorite Button 🎯

User Story 16 - Favorite Button

Value proposition

As a user
I want to be able to mark venues as favorite
So that I can save venues I'm interested in

Description

Image

  • A Favorite Button is available for Venues

Acceptance criteria

  • The VenuePreview component renders a favorite button 🧪
  • The VenueDetail component renders a favorite button 🧪
  • Clicking the favorite button toggles the favorite property for the venue in the local state store

Tasks

  • Create a FavoriteButton that accepts a venue id
  • Acceptance criteria with 🧪 requires component testing

Complexity: L

User Story 18 - Review Venue 🎯

User Story 18 - Review Venue

Value proposition

As a user
I want to be able to write a review for a venue
So that I can share my experience with other users

Description

Image

  • A review section with a form and review list is visible.

Acceptance criteria

  • The VenueDetail component renders a form ReviewSection 🧪
  • The VenueDetail component renders a rating (1-5) based on ratings in reviews 🧪
  • The VenueDetail component renders the number of reviews 🧪
  • The ReviewSection component renders a form ReviewForm and a list of reviews ReviewList 🧪
  • Submitting a review with the ReviewForm adds a review to the ReviewList 🧪

Tasks

  • Create and connect MongoDB collections for venues and reviews respectively
  • Acceptance criteria with 🧪 requires component testing

Complexity: XL

User Story 10 - Venues List 🎯

User Story 10 - Venues List

Value proposition

As a user
I want a to see a list of venues
So that I see which venues are available

Description

US-10-VenuesList

  • A list of venues is shown

Acceptance criteria

  • All venues passed to the VenuesList are rendered 🧪
  • A heading is rendered for each venue in the list 🧪

Tasks

  • Create a VenuesList component and pass it a prop venues
  • Acceptance criteria with 🧪 requires component testing

Complexity: M

User Story 20 - User Login 🎯

User Story 20 - User Login

Value proposition

As a user
I want to be able to log in with popular services
So that I can have my data stored securely in a database

Acceptance criteria

  • Log in with GitHub, Google etc is possible
  • Privacy policy and terms and conditions are available in the footer of the ProfilePage

Tasks

  • Implement next/auth

Complexity: XL

User Story 3 - Event Details 🎯

User Story 3 - Event Details

Value proposition

As a user
I want a see details about the event
So that I can read a description of the event

Description

US-3 wireframe

  • Precise, no unnecessary information

Acceptance criteria

  • The event title, startDate, endDate, startTime, endTime, address should be displayed 🖼️
  • A description and link of the event should be displayed if available 🖼️

Tasks

  • Create an EventDetailPage component and pass it an event prop
  • Render all event information available in the page
  • Acceptance criteria with 🖼️ requires component testing

Complexity: S

User Story 2 - Location Page 🎯

User Story 2 - Location Page

Value proposition

As a user
I want to be able to see a list of cities
So that I can filter events by location

Description

US-2 wireframe

  • List of cities to set a location from

Acceptance criteria

  • Cities which are present in the data should be displayed 🖼️
  • Each city should display a city name 🖼️

Tasks

  • Create an array of cities from all event locations in events.json
  • Create a LocationPage component and pass it a cities array as a prop
  • Map through cities and render each city as a list item with a city name
  • Acceptance criteria with 🖼️ requires component testing

Complexity: S

User Story 14 - Save Button 🎯

User Story 14 - Save Button

Value proposition

As a user
I want to be able to mark events as saved
So that I can save events I'm interested in

Description

Image

  • A Save Button is available for Events

Acceptance criteria

  • The EventPreview component renders a save button 🧪
  • The EventDetail component renders a save button 🧪
  • Clicking the save button toggles the save property for the event in the local state store

Tasks

  • Create a SaveEventButton that accepts an event id
  • Acceptance criteria with 🧪 requires component testing

Complexity: L

User Story 6 - Current Location 🎯

User Story 6 - Current Location

Value proposition

As a user
I want a to be able to use my current device location
So that I can get the exact distance to events

Description

  • An additional choice called Current Location is available on the LocationPage

Acceptance criteria

  • The LocationPage renders an additional item with the value of userLocation 🖼️
  • Clicking the Current Location entry should ask the user for permission to access the device location
  • The EventListPage should render events with the same city as the user

Tasks

  • Add an additional local storage state userLocation and let it default to false
  • If userLocation true, use userLocation as default location, else set to false
  • Acceptance criteria with 🖼️ requires component testing

Complexity: L

User Story 5 - Location Navigation 🎯

User Story 5 - Location Navigation

Value proposition

As a user
I want to be able to navigate between the pages
So that I can adjust the location and move back to the previous page

Description

US-5 wireframe

  • A navigation header with a location button and a back button

Acceptance criteria

  • The EventListPage component renders link to the LocationPage 🖼️
  • The LocationPage and EventDetailsPage components render a link back to the EventListPage 🖼️

Tasks

  • Add a Link to the EventListPage that has the href attribute /pages/location
  • Add a Link to the LocationPage and EventDetailPage that has the href attribute /
  • Acceptance criteria with 🖼️ requires component testing

Complexity: S

User Story 7 - Event Distance 🎯

User Story 7 - Event Distance

Value proposition

As a user
I want to see the distance to events in the EventListPage and EventDetailPage
So that I can decide on an event based on distance

Description

  • The distance to the event from the user's location is shown

Acceptance criteria

  • Setting the userLocation to true should display the distance to events in the EventListPage
  • Setting the userLocation to true should display the distance to events in the EventDetailPage
  • Moving towards an event should decrease the displayed distance
  • Moving away from an event should increase the displayed distance

Tasks

  • Implement an API for resolving Geolocations and calculate the distance using the Haversine formula.
  • Acceptance criteria with 🖼️ requires component testing

Complexity: M

User Story 8 - Time Until Event 🎯

User Story 8 - Time Until Event

Value proposition

As a user
I want to see the time left until an event starts
So that I can plan my time better

Description

  • The time left until the start of the event is displayed

Acceptance criteria

  • All events on the EventListPage display the timeLeft 🖼️
  • An event on the EventDetailPage display the timeLeft 🖼️
  • If an event is in the past, it is not displayed on the EventListPage 🖼️
  • The timeLeft value is refreshed every minute

Tasks

  • Set a useEffect() on the EventListPage with an interval of 1 min
  • Acceptance criteria with 🖼️ requires component testing

Complexity: XL

User Story 12 - Navigation Bar 🎯

User Story 12 - Navigation Bar

Value proposition

As a user
I want to see a navigation bar
So that I can navigate between the Venues and Explore pages

Description

US-12-NavigationBar

  • A navigation bar with Explore and Venues links

Acceptance criteria

  • The NavigationBar component renders two links 🧪

Tasks

  • Create the NavigationBar component and link to the respective pages
  • Acceptance criteria with 🧪 requires component testing

Complexity: S

User Story 15 - Saved Events Page 🎯

User Story 15 - Saved Events Page

Value proposition

As a user
I want to be able to see saved events
So that I can find saved events easily

Description

Image

  • A list of saved events

Acceptance criteria

  • The SavedEventsList component renders a headline, date, SaveButton for all events from the passed events prop 🧪
  • Unsaving events from the SavedEventsList removes the unsaved event from the list
  • A Saved Link is displayed in the header on all pages 🧪

Tasks

  • Create a SavedEventsList component and pass it an events prop
  • Create and add a SavedEvents Link to the global header
  • Acceptance criteria with 🧪 requires component testing

Complexity: M

User Story 13 - Venue Details 🎯

User Story 13 - Venue Details

Value proposition

As a user
I want to see a venue details page
So that I can see important information about the chosen venue

Description

Image

  • A venue details page with information like address and upcoming events

Acceptance criteria

  • The VenueDetailsPage renders the name, address and a picture of the venue if available
  • A list of previews of upcoming events of the chosen venue are rendered

Tasks

  • Create a VenueDetailsPage component and pass it a venue prop
  • Fetch events for the passed venue prop
  • Acceptance criteria with 🧪 requires component testing

Complexity: M

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.