Giter Site home page Giter Site logo

ibu-software-engineering-project-2024's People

Contributors

almulalic avatar

Watchers

 avatar

ibu-software-engineering-project-2024's Issues

Payment Information

Description:

  • As a registered user, I want to be able to have multiple choices for paying the tickets, which can include various banks or payment gateways like Paypal.

Acceptance Criteria:

  • When a user clicks on the “Buy ticket” button, he should be redirected to a payment form.
  • The payment form should have a toggle slider, allowing him to choose between different payment methods.
  • Credit card and bank payments should be properly validated, and the validation errors should be communicated to the end user.
  • Payment gateway transactions should be handled with official integrations with external services (e.g., the Paypal login pop-up menu).

Delete Events

Description:

  • Organizers should be able to delete their events.

Acceptance Criteria:

  • There should be an “Organizer” section inside the navigation sidebar, which should contain all actions that organizers are allowed to perform.
  • Upon clicking on the “Delete events” button, organizers should be redirected to the “Manage Events” page, which consists of a slide toggle switch and an events list.
  • The slider should be automatically toggled to the “Delete events” value, and the list should show all events that the organizer has created.
  • The event card should incorporate a small badge button in the corner, which should display a trash can icon, indicating that it’s an edit action.
  • If the organizer clicks on the badge, a popup is displayed above it, asking him to confirm his actions. In case that he confirms, the event is deleted and the events list is updated to display new changes.
  • Deletion of an event should trigger necessary refunds and automated mailer notifications if they were configured.

QR Code Ticket Access

Description:

  • As a registered user who bought at least one ticket for an upcoming event, I want to be able to have access to my tickets in QR code form.

Acceptance Criteria:

  • There should be a list of attending events in the “My profile” section.
  • Upon clicking on that event, I should be able to view event details, payment information, and my tickets in QR code form.
  • These codes should be valid for one scan on the day of the event, and they must not be accepted if scanned with systems that don't belong to EventPort.

Venus Maps Access

Description:

  • As a user, I should be able to view the location of an event through Google Maps integration, so that I can easily visualize the event venue and plan my journey accordingly.

Acceptance Criteria:

  • As a user, when viewing the details of an event, I should be able to see a map section displaying the location of the event venue.
  • Clicking on the location marker or a designated map section should open a larger Google Maps view, allowing me to explore the surrounding area.
  • The map should support standard Google Maps functionalities such as zooming in/out, satellite view, and street view for enhanced exploration.

My Events Page

Description:

  • As a registered user of the platform, I want to have access to the "My Events" option. This feature should allow me to view all the events I am attending as well as events that I have liked.

Acceptance Criteria:

  • Upon accessing the "My Events" section, a toggle slider control should be displayed at the top of the page, allowing me to toggle between viewing attending events and liked events.
  • Below the toggle slider, a list of events should be displayed, showing the events filtered by the current filter state.
  • The slider control should have clear labels indicating the two options: "Attending Events" and "Liked Events."
  • When I slide the control to the "Attending Events" position, the list of attending events should be displayed below the slider, showing relevant details such as event title, date, time, and location.
  • When I click on an event that I am attending, I should be able to view the QR ticket code.
  • Similarly, when I slide the control to the "Liked Events" position, the list of liked events is shown below the slider.

Guest Access Control

Description:

  • As an administrator, I want to implement guest user access control so that unregistered users (guests) can view events within the system without the capability to make reservations.

Acceptance Criteria:

  • Guests can view a list of available events, including details such as the event title, date, time, location, description, and any relevant images.
  • Guests cannot initiate or complete the reservation process for any event.
  • If a guest attempts to access reservation functionality, an appropriate error message should be displayed, guiding them towards registering or logging in to proceed.

Event Notification

Description:

  • As a user, I should be able to receive notifications and reminders about upcoming events I've registered for, including details such as event time, location, and any updates or changes, to help me stay informed.

Acceptance Criteria:

  • Users receive notifications via email and/or in-app notifications for events they have registered for.
  • Notifications include event details such as event name, date, time, location, and any updates or changes.
  • Reminders are sent to users a predetermined time before the event starts (e.g., 24 hours before).

Login

Description:

  • As a registered user, I want to be able to login into the application.

Acceptance Criteria:

  • The user must be registered in the system with valid credentials in order to log in into the application.
  • The user must have a verified email address.
  • The login form should include fields for entering an email address and password.
  • Users should be able to specify whether they want to save their session for an extended period of time (often referred to as the remember me option).
  • Upon submission, the system should validate the entered information, providing feedback if any fields are incomplete or if the credentials are invalid.
  • Users should have the option to reset their password if they have forgotten it.
  • After a successful login, users should be directed to the application's dashboard or landing page.

Admin Dashboard

Description:

  • As an administrator, I want to be able to change individual users' basic information and their access levels through a user-friendly interface.

Acceptance Criteria:

  • There should be an “Administrator” section inside the navigation sidebar, which should contain all actions that administrators are allowed to perform.
  • When an administrator clicks on the “Edit Organizer” item, he should be able to access a dedicated form.
  • The form should include a textual input with autocomplete features that would suggest the user as he is typing their name in the input field.
  • The drop-down menu should display the user's email address and their full name.
  • Upon clicking on one menu item, which selects one user, a card should be filled with that user's information and shown below the input field.
  • The card should contain all user data along with four checkboxes for controlling different access levels.
    Administrators should be able to add or remove the permissions of the user as well as change their basic information.

Refunding Tickets

Description:

  • As a registered user who has purchased at least one ticket for an upcoming event, I want the ability to refund one or more tickets for events that have not yet occurred.

Acceptance Criteria:

  • There should be a list of attendees at events somewhere in the “My profile” section.
  • Upon clicking on that event, I should be able to view event details, payment information, and my bought tickets in QR code form.
  • I should have the ability to see a refund button on each ticket up to 24 hours before the event.
  • Upon clicking on the refund button, I should be able to enter the refund information, after which the ticket should be removed from my profile.

Registration/Sign Up

Description:

  • As a guest, I want to be able to register and create a new account on the application so that I can gain access to its features and services, like ticket purchasing.

Acceptance Criteria:

  • The registration form should include fields for essential information such as name, email address, and password.
  • Additionally, there should be options to register through popular social media platforms such as Google or Facebook with the OAuth protocol.
  • Each field should have its own validation (e.g., that name must be between 3 and 50 characters long), and possible failures should be clearly communicated to users.
  • Email must be considered the primary account identifier, and therefore uniqueness must be enforced.
  • Passwords must follow the latest security standards, and the requirements should be clearly communicated to users (e.g., minimum length, special character requirements).
  • Upon submission, the system should validate the entered information, providing immediate feedback if any fields are incomplete or invalid.
  • Users should have the option to log in immediately after successful registration.
  • Successfully registered users should get a confirmation email.

Like/Unlike Events

Description:

  • As a user, I want to be able to like and unlike events based on my preference, so that I can save them for later or remove them from that list. I also wan't to have an option to view my liked events on my profile page and I want to see the most liked events on the landing page in the "Events in focus" section.

Acceptance criteria:

  • On the events overview page, and card, there should be a heart icon that should allow user to like/unlike event
  • User should be able to view their liked events on the profile page, in the "Liked Events" section
  • User should be able to see most liked events on the landing page in the "Events In Focus" section

Organizer Dashboard

Description:

  • As an organizer, I want to access relevant metrics and statistics related to the events I create.

Acceptance Criteria:

  • There should be an “Organizer” section inside the navigation sidebar, which should contain all actions that organizers are allowed to perform.
  • When an organizer clicks on the “Dashboard” button, a new dashboard page should be displayed.
  • The dashboard page should include most event-relevant metrics like tickets sold, revenue, expenses, refunds, and similar.
  • Organizers should be able to filter these dashboards by event fields.
  • The dashboard should incorporate numerical widgets as well as informative charts.

View Attending Events

Description:

  • As a registered user of the event platform, I want to be able to easily view a list of events that I have RSVP'd to or indicated my attendance for.

Acceptance Criteria:

  • Upon clicking the "Attending Events" option, the system should display a list of all events that the user has confirmed attendance for.
  • Each event entry in the list should include relevant details such as the event name, date, time, location, and any additional pertinent information.
  • Users should have the ability to sort the list of attending events based on different criteria, such as date, name, or location.
  • The system should ensure that only events for which the user has confirmed attendance are displayed in the "Attending Events" section; events for which the user has not responded or declined should not appear.

Landing Page

Description:

  • As a user, I want to access the "EventPort" system through an informative landing page that includes an event search form, a section showcasing the most popular events, and informative content explaining how the system works.

Acceptance Criteria:

  • The landing page should incorporate navigation elements.
  • The event search form should consist of an event search bar, which would filter events by keywords, and a date filter to easily narrow down the search.
  • The “Most Popular Events” section should include 10 most popular events by likes, and they should be ordered by date of the event.
  • The “How It Works” section should consist of multiple subsections that explain how the system works, and it should answer commonly asked questions.

All Events Page

Description:

  • As a user, I should be able to view all events, filter them, and access detailed information for individual events.

Acceptance Criteria:

  • The option to view all events should be available to both guest users and registered users, allowing all users to explore the full range of events offered by the platform.
  • Upon clicking on the drop-down menu, users should be able to select the option to view all events, which should redirect them to the events page.
  • Upon clicking on the events link in the navigation bar, users should be redirected to the events page with no filters selected.
  • Upon clicking on a category link in the navigation bar, users should be allowed to explore events inside that category.
  • All events displayed in the list will be presented in a clear and organized manner, with essential information such as event title, date, location, and description provided for each event.

Authentication Management

Description:

  • As a user of the application, I require efficient and secure authentication management to access the app.

Acceptance Criteria:

  • Passwords should be securely hashed and stored after registration to protect user credentials, ensuring data confidentiality.
  • The login form should incorporate validation checks to ensure that both email address and password fields are filled out before submission.
  • Upon submission, the system should authenticate the user's credentials against the stored data, allowing access only if the entered information matches a registered account.
  • In cases of invalid login attempts, clear error messages should be displayed indicating whether the email address, password, or both are incorrect, aiding users in troubleshooting their login issues.

View Event Details

Description:

  • As a user, I should be able to view detailed information about an event by clicking on the card associated with it.

Acceptance Criteria:

  • When I click on an event from the list within the "Attending Events" section, I can see event details, like venue, location, and the number of reserved seats.
  • If applicable, there should be options to interact with the event, such as RSVPing (if not already attending).

Social Sharing

Description:

  • As a user, I should have the option to easily share details about events I've purchased tickets for on social media platforms.

Acceptance Criteria:

  • The application should provide seamless integration with popular social media platforms such as Facebook, Twitter, and LinkedIn.
  • An easily accessible "Share" button or icon should be available on the event details page or within the ticket purchasing flow.
  • Users should be able to share event details, including the event title, date, time, location, and a brief description.
  • When sharing event details, the system should generate dynamic links that lead recipients directly to the event page within the application.

Reserve Seat

Description:

  • As a registered user aiming to buy a ticket for an event with seating preferences, I should be able to select a seat from the available options.

Acceptance Criteria:

  • Event organizers should have the option to mark tickets with seating options when creating the initial event.
  • Users should be able to select an available seat as part of the ticket purchase process.
  • Users should only be permitted to choose from available seats, and their selection should be retained for up to 15 minutes after completing the form. After this time period, the selected seats should be released.

Edit Profile

Description:

  • As a user, I want to be able to easily edit profile details by accessing the "Edit Profile" option in the drop-down menu.

Acceptance Criteria:

  • Upon opening the sidebar menu, users should be able to click on the “Edit Profile” button under the “User” section.
  • This option should be available only for registered users.
  • After making the necessary edits, users should have the option to save their changes.
  • Upon saving, the system should validate and, if the form is correct, update the user's profile with the modified information.

Edit Events

Description:

  • Organizers should have the ability to modify the events they have created.

Acceptance Criteria:

  • There should be an “Organizer” section inside the navigation sidebar, which should contain all actions that organizers are allowed to perform.
  • Upon clicking on the “Manage Events” button, organizers should be redirected to the “Manage Events” page, which consists of a slide toggle switch and an events list.
  • The slider should be automatically toggled to the “Edit Events” value, and the list should show all events that the organizer has created.
  • The event card should incorporate a small badge button in the corner, which should display a pen icon, indicating that it’s an edit action.
  • If the organizer clicks on the badge, a new modal window with prefilled values should appear with the same form as used for creation. The modal should follow the same principles as the create modal.

Event Rating And Review

Description:

  • As a user, I want to be able to rate and review events that I have attended, so that I can share my experiences with others and help them make informed decisions about which events to attend.

Acceptance criteria:

  • On the events overview page, there should be an option to rate events with 1 to 5 stars.
  • Also, there should be a comment input which would allow users to share their experience with the event or organizer.
  • Organizers should be able to see metrics on the dashboard.

Create Events

Description:

  • As an event organizer, I want to be able to create new events by filling out and submitting the create form.

Acceptance Criteria:

  • There should be a dedicated “Create Event” button visible on the right side of the navigation bar. Upon clicking on that button, the organizer should be redirected to the events page, and the form should automatically open in a modal window.
  • There should be a dedicated “Create Event” button visible in the navigation sidebar that should have the same behavior as the “Create Event” button in the navigation bar.
  • Form values should persist as query parameters, which would enable users to save and share the form by sending the URL.
  • The form should incorporate all fields that are necessary for event creation, like name, description, venue, time, and ticket types.
  • Form should incorporate a dynamic form for ticket types which should enable organizers to create custom ticket types, and assign capacity that they are willing to allocate to that ticket type.
  • Upon submission, the form should be validated, and every error should be clearly communicated to the organizer.
    If the form is accepted, a new event is created, and the organizer is redirected to the events page.

Purchase Confirmation And Error Handling

Description:

  • As a user, when I make a purchase on the platform, I want to receive a confirmation of my purchase to ensure that the transaction was successful. Additionally, I expect the system to handle any errors encountered during the purchase process effectively.

Acceptance Criteria:

  • Upon completing a purchase transaction, the user should receive a confirmation message indicating that the purchase was successful.
  • If any errors occur during the purchase process (e.g., payment failure), the system should promptly notify the user.
  • Error messages should be clear and concise, providing information on the nature of the error and steps the user can take to resolve it.

Event Search Form

Description:

  • As a user, I should be able to search for specific events using keywords such as city, country, or venue so that I can quickly find events that match my interests or criteria.

Acceptance Criteria:

  • The option to filter events should be available to both guest users and registered users.
  • The search form should be implemented on the events page.
  • The reduced version, with the most common filter options, should be displayed on the landing page.
  • The search filter should contain an input field where users can enter keywords (city, venue, or location) related to the events they are looking for.
  • Upon entering a keyword or phrase or pressing the search button, the system will retrieve and display relevant events matching the search query.
  • If no events match the search query, the system will provide clear feedback to the user, indicating that no results were found and suggesting alternative search terms or actions.

Setup E2E Tests

Description:

E2E Should be set up with the wdio package and there should be some sample tests available.

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.