π± EventAmplify: Event Experience and Management Solutions
We built an event management app called EventAmplify. The app allows users to create, manage, and attend events. It includes features such as user authentication, profile creation, event and activity management, navigation assistance, GDPR compliance, analytics generation, and more. The app is designed to provide a seamless experience for both event organizers and attendees.
A mobile app needs to be developed that allows both the organization and attendance of an event. The process includes creating an event, adding activities, opening registrations, implementing mobile-on-mobile access control (QR code?), scheduling, navigation, data sharing, and generating relevant data. Research should be conducted on various requirements, roles, etc. For this course, at least one relevant API should be used, and consideration should be given to designing an API that aligns with the functionalities if we wish to store data on more than an in-memory database.
Since it's an app for Zuyd, the recognizable Zuyd branding should be incorporated. It's essential to think about when someone downloads an app on their phone and identify use cases suitable for a mobile app. Who will be downloading the app?
The clients expect a clear idea of the app, based on wireframes, before the start of week 7. Actual programming is to be done afterward. Further specifications and requirements should be discussed with the client, documented, translated into a design, implemented, and tested to ensure it meets the specified criteria.
Maintaining internal and external consistency among all products is crucial. Different requirements, starting from the Software Requirements Specification (SRS) through design and implementation, should be traced back in the testing process (traceability). Additionally, for PI 9, demonstrate a solution-oriented attitude, shared responsibility for the group process, and constructive collaboration.
You have the flexibility to choose tools and Agile processes for the mobile app development, but it should be well justified. Note that the supervising teacher may not have knowledge or experience with your chosen tools, potentially impacting the level of support provided.
- Framework: Expo React Native
- Programming Language: JavaScript
- Database: Firebase Firestore
- API Integration: Firebase Authentication API
- Version Control: Git/GitHub
- Project Management: GitHub Projects
- Documentation: Markdown
- Clone this repository:
git clone https://github.com/Nah-Nova/EventAmplify
- Open the project in Visual Studio Code.
- Run the following commands in your terminal:
npm install
expo start
- Open the project in the Expo Go app on your mobile device.
!!! IMPORTANT !!! if you want to run this project locally, you will need to create a firebase project and add the config object to the firebase.js file in the src folder. Otherwise, you will not be able to use the app or ask me for the config object.
- Create a new Firebase project.
- Enable Firebase Authentication and Firestore.
- Create a new web app and copy the config object.
- Create a new file named
firebase.js
in thesrc
folder. - Paste the config object into the file and export it as
firebase
.
- Create an account or log in using Google.
- Create your profile with photo age and job.
- Explore profiles and connect with matches.
- Communicate securely through messaging.
Code | Omschrijving | Eigenaar | Prioriteit | F / NF |
---|---|---|---|---|
REQ-001 | De app moet het managen van verschillende activiteiten binnen een evenement faciliteren. | Ontwikkelaarsteam | Hoog | F |
REQ-002 | De app moet een functie voor gebruikersregistratie voor evenementen hebben. | Ontwikkelaarsteam | Hoog | F |
REQ-003 | De app moet een functie voor mobiel-op-mobiel registratie hebben. | Ontwikkelaarsteam | Middel | F |
REQ-004 | De app moet navigatiefuncties hebben om gebruikers te leiden op de evenementenlocatie door middel van een kaart. | Ontwikkelaarsteam | Hoog | F |
REQ-005 | De app moet ontworpen worden in overeenstemming met de huisstijl en esthetische richtlijnen van Zuyd Hogeschool. | Ontwikkelaarsteam | Hoog | F |
REQ-006 | De app moet voldoen aan de GDPR en andere relevante gegevensbescherming regelgeving. | Ontwikkelaarsteam | Hoog | NF |
REQ-007 | De app moet in staat zijn om evenementengegevens en -analyses te genereren. | Ontwikkelaarsteam | Hoog | F |
REQ-008 | De app moet evenementgegevens en -analyses kunnen delen. | Ontwikkelaarsteam | Middel | F |
REQ-009 | De prestaties van de app moeten betrouwbaar zijn, met snelle laadtijden en minimale uitvaltijd. | Ontwikkelaarsteam | Hoog | NF |
REQ-0010 | De app moet compatibel zijn met de mobiele besturingssystemen iOS en Android. | Ontwikkelaarsteam | Hoog | F |
REQ-011 | De app moet een integratie van pushnotificaties voor event updates en herinneringen hebben. | Ontwikkelaarsteam | Gemiddeld | F |
REQ-012 | De app moet de mogelijkheid hebben voor gebruikers om feedback te geven over evenementen en activiteiten. | Ontwikkelaarsteam | Gemiddeld | F |
REQ-013 | De app moet evenementinformatie in de app real time bijwerken. | Ontwikkelaarsteam | Hoog | F |
REQ-014 | De app moet multi-taalondersteuning (Nederlands en Engels) bevatten. | Ontwikkelaarsteam | Laag | F |
REQ-015 | De app moet integratie met sociale media platforms voor het delen van evenement details bevatten. | Ontwikkelaarsteam | Laag | F |
REQ-017 | De app moet beveiligde betaling gateway voor eventuele ticketverkoop of donaties bevatten. | Ontwikkelaarsteam | Hoog | NF |
REQ-018 | De app moet implementatie van een interactieve plattegrond van de evenementenlocatie hebben. | Ontwikkelaarsteam | Hoog | F |
REQ-019 | De app moet de mogelijkheid bieden om voorkeuren aan te passen in een profiel. | Ontwikkelaarsteam | Gemiddeld | F |
REQ-020 | De app moet offline toegankelijkheid van kritieke app-informatie bieden. | Ontwikkelaarsteam | Hoog | NF |
REQ-022 | De app moet ondersteuning bieden voor toegankelijkheidsfuncties zoals schermlezers en tekst-naar-spraak. | Ontwikkelaarsteam | Hoog | NF |
REQ-023 | De app moet mogelijkheid voor live streaming van evenementen binnen de app bieden. | Ontwikkelaarsteam | Gemiddeld | F |
REQ-024 | De app moet ingebouwde enquΓͺte- en pollfuncties voor directe gebruikersfeedback tijdens evenementen bevatten. | Ontwikkelaarsteam | Gemiddeld | F |
REQ-025 | De app moet integratie met kalender apps voor het opslaan van evenementdata en herinneringen bevatten. | Ontwikkelaarsteam | Gemiddeld | F |
REQ-026 | De app moet end-to-end encryptie voor alle gebruikers communicatie binnen de app bieden. | Ontwikkelaarsteam | Hoog | NF |
REQ-027 | De app moet een backend beheerderspaneel voor het bijwerken en beheren van app-inhoud bieden. | Ontwikkelaarsteam | Hoog | NF |
REQ-028 | De app moet automatische synchronisatie van evenementgegevens tussen de app en de website van het evenement bieden. | Ontwikkelaarsteam | Hoog | F |
REQ-029 | De app moet een functie voor noodmeldingen en veiligheidsinstructies binnen de app bieden. | Ontwikkelaarsteam | Hoog | F |
REQ-030 | De app moet optimalisatie voor energie-efficiΓ«ntie om batterijgebruik te minimaliseren bieden. | Ontwikkelaarsteam | Gemiddeld | NF |
- UC1 Evenement creatie
- UC2 Activiteiten beheer
- UC3 Toegang controleren
- UC4 Toegang krijgen
- UC5 Navigatie Assistentie
Hieronder volgt een uitbreiding van Use Case 1/8
Use Case | UC1: Evenementen creatie |
---|---|
Description | De organisator maakt een evenement aan |
Actor | Organisator |
Trigger(s) | De organisator wilt een evenement maken |
Pre-Conditions | De organisator heeft een account |
Post-Conditions | Er is een evenement aangemaakt |
Steps | |
Actor (Organisator) | System |
1.De organisator klikt op | |
events | |
1a.Het systeem laat de event pagina zien | |
2.De organisator klikt op een | |
locatie | |
2a.Het systeem de evenementen van de gekozen locatie zien | |
3.De organizator klikt op | |
"add event | |
3a.Het systeem laat de vragenlijst voor een event zien | |
4.De organizator vult de | |
gegevens van het evenement in | |
4a.Het systeem geeft aan dat de gegevens goed zijn ingevuld | |
4b.Het systeem geeft een foutmelding bij het invullen van de gegevens | |
5.De organizator gaat terug | |
naar de lijst van de locatie | |
5a.Het systeem voegt het nieuwe evenement aan de lijst toe | |
Main Success Scenario | 1 - 1a - 2 - 2a - 3 - 4 - 4a - 5 - 5a |
Alternative Scenarios | |
(Fout bij invullen gegevens) | 1 - 1a - 2 - 2a - 3 - 4 - 4b |
Use Case | UC02: Activiteit beheren |
---|---|
Description | De organisator beheert een activiteit |
Actor | Organisator |
Trigger(s) | De organisator wil een activiteit beheren |
Pre-Conditions | De organisator heeft een account en een evenement gemaakt |
Post-Conditions | Er is een activiteit beheerd |
Steps | |
Actor (Organisator) | System |
1. De organisator klikt op | |
events | |
1a. Het systeem laat de eventpagina zien | |
2. De organisator kiest een | |
locatie | |
2a. Het systeem laat de evenementen van de gekozen locatie zien | |
3. De organisator kiest een | |
evenement | |
3a. Het systeem laat de evenementinformatie zien | |
4. De organisator klikt op | |
"add activity" | |
5. De organisator vult de | |
activiteitinformatie in en | |
klikt op opslaan | |
5a. Het systeem voegt de nieuwe activiteit toe aan het evenement | |
5b. Het systeem geeft een foutmelding bij het toevoegen van de | |
activiteit | |
6. De organisator klikt op de | |
edit knop van een activity | |
7. De organisator past de | |
gegevens aan | |
7a. Het systeem slaat de aangepaste activiteit op | |
8. De organisator klikt op de | |
verwijder knop | |
8a. Het systeem verwijdert de activiteit uit het evenement | |
Main Success Scenario | 1 - 1a - 2 - 2a - 3 - 3a - 4 - 5 - 5a |
Alternative Scenarios | |
(Foutmelding bij activiteit | 1 - 1a - 2 - 2a - 3 - 3a - 4 - 5 - 5b |
maken) | |
(Activiteit aanpassen) | 1 - 1a - 2 - 2a - 3 - 3a - 6 - 7 - 7a |
(Activiteit verwijderen) | 1 - 1a - 2 - 2a - 3 - 3a - 6 - 8 - 8a |
Use Case | UC03: Toegang controleren |
---|---|
Description | Een medewerker controleert de aanwezigheid van een bezoeker |
Actor | Medewerker |
Trigger(s) | Er komt een bezoeker naar het evenement |
Pre-Conditions | Er is een evenement gaande waar bezoekers voor zijn ingeschreven |
Post-Conditions | De aanwezigheid van bezoekers is gecontroleerd en vastgelegd |
Steps | |
Actor (Medewerker) | System |
1.De medewerker opent de | |
app | |
1a. Het systeem toont een lijst van evenementen waarvoor aanwezigheid | |
moet worden gecontroleerd. | |
2.De medewerker selecteert | |
het relevante evenement | |
2a. Het systeem toont de gegevens van het evenement | |
3.De medewerker klikt op | |
de scan knop | |
3a. Het systeem opent de qr-code voor het scannen van de bezoeker's | |
aanwezigheid. | |
4.De medewerker laat de | |
bezoeker scannen | |
4a. Het systeem controleert of de bezoeker is ingeschreven voor het | |
evenement en markeert de aanwezigheid als juist. | |
4b. Het systeem geeft een foutmelding als de bezoeker niet is | |
ingeschreven | |
Main Success Scenario | 1 - 1a - 2 - 2a - 3 - 3a - 4 - 4a |
Alternative Scenario | |
(Bezoeker niet aangemeld) | 1 - 1a - 2 - 2a - 3 - 3a - 4 - 4b |
Use Case | UC04: Toegang krijgen |
---|---|
Description | Een bezoeker laat zijn toegang controleren |
Actor | Bezoeker |
Trigger(s) | Er komt een bezoeker naar het evenementengebouw |
Pre-Conditions | Er is een evenement waar de bezoeker voor is ingeschreven |
Post-Conditions | De toegang van de bezoeker is gecontroleerd |
Steps | |
Actor (Bezoeker) | System |
1. De bezoeker opent de | |
app | |
1a. Het systeem laat de homepage zien waar de evenementen staan | |
waar de bezoeker voor is ingeschreven. | |
2. De bezoeker klikt op de | |
scan knop | |
2a. Het systeem opent de camera. | |
3. De bezoeker scant de | |
qr-code van de medewerker | |
bij het evenement | |
3a. Het systeem zet de bezoeker op aanwezig. | |
3b. Het systeem geeft een foutmelding bij het aanwezig zetten van | |
de bezoeker. | |
4. UC05 | |
Main Success Scenario | 1 - 1a - 2 - 2a - 3 - 3a |
Alternative Scenarios | |
(Foutmelding bij | 1 - 1a - 2 - 2a - 3 - 3b |
controleren toegang) | |
(Toegang controleren en | 1 - 1a - 2 - 2a - 3 - 3a - 4 |
navigatie openen) |
Use Case | UC05: Navigatie assisteren |
---|---|
Description | Een bezoeker opent zijn navigatie naar een evenement |
Actor | Bezoeker |
Trigger(s) | UC04 |
Pre-Conditions | UC04 |
Post-Conditions | De bezoeker is bij de locatie van een evenement aangekomen |
Steps | |
Actor (Bezoeker) | System |
1. De bezoeker opent de | |
homepage | |
1a. Het systeem laat de homepage zien waar de evenementen staan | |
van de bezoeker waar hij/zij voor is ingeschreven. | |
2. De bezoeker klikt het | |
evenement waar hij | |
aanwezig bij is | |
2a. Het systeem laat de evenementdetails zien. | |
3. De bezoeker klikt op de | |
kaart knop | |
3a. Het systeem laat de kaart zien met de route die de bezoeker | |
moet lopen. | |
Main Success Scenario | 1 - 1a - 2 - 2a - 3 - 3a |
Here are all the diagrams with added value for EventAmplify, all following UML specifications. With slight modifications to fit the project.
- id: Unique identifier for each user.
- displayName: User's name.
- bio: User's biography.
- location: Latitude and longitude of the user.
- photoUrl: User's photo.
- role: User's role which could be organizer or attendee.
- timestamp: Server timestamp of the user.
- id: Unique identifier for each event.
- locationId: Unique identifier for each location.
- event: entire events object.
- location: entire locations object.
- timestamp: Server timestamp of the event.
- id: Unique identifier for each event.
- locationId: Unique identifier for each location.
- event: entire events object.
- location: entire locations object.
- timestamp: Server timestamp of the event.
- id: Unique identifier for each location.
- name: Location's name.
- location: Latitude and longitude of the location. address: 'Nieuw Eyckholt 300, 6419 DJ Heerlen, Netherlands'.
- photoUrl: Location's photo.
- timestamp: Server timestamp of the location.
- id: Unique identifier for each event.
- title: Event's title.
- description: Event's description.
- location: Latitude and longitude of the event.
- photoUrl: Event's photo.
- timestamp: Server timestamp of the event.
- organizer: Organizer's id.
- attendees: List of attendees' ids.
- startDate: Event's start date.
- endDate: Event's end date.
- startTime: Event's start time.
- endTime: Event's end time.
- activities: List of Activities in the event
- organizer: Organizer's id.
- attendees: List of attendees' ids.
- id: Unique identifier for each organizer.
- displayName: Organizer's name.
- bio: Organizer's biography.
- location: Latitude and longitude of the organizer.
- photoUrl: Organizer's photo.
- role: Organizer's role which is organizer.
- timestamp: Server timestamp of the organizer.
- id: Unique identifier for each attendee.
- displayName: Attendee's name.
- bio: Attendee's biography.
- location: Latitude and longitude of the attendee.
- photoUrl: Attendee's photo.
- role: Attendee's role which is attendee.
- timestamp: Server timestamp of the attendee.
- id: Unique identifier for each activity.
- title: Activity's title.
- description: Activity's description.
- location: Object including: Latitude, Longitude, Room: 'A1.203', Route: 'how to get to A1.203'.
- time: activities start time.
- photoUrl: Activity's photo.
- timestamp: Server timestamp of the activity.
The Acceptance Test Report provides a comprehensive summary of the testing conducted on the EventAmplify application. This report outlines the test objectives, scope, environment, executed test cases, and the overall results for each requirement.
The primary objectives of the acceptance testing were to verify the successful implementation and functionality of key features within the EventAmplify application. This includes user authentication, profile creation, event and activity management, navigation assistance, GDPR compliance, analytics generation, and other specified requirements.
The acceptance tests focus on validating the functionalities specified in the project requirements. The scope covers user authentication, profile creation, event and activity management, navigation assistance, GDPR compliance, analytics generation, and other features deemed critical for the application.
The acceptance tests were conducted in a controlled environment with the following specifications:
- Devices: iOS and Android smartphones
- Operating Systems: Latest versions on test devices
- Testing Tools: Expo Go app, Firebase console
- Test Case 1.1: Verify user registration with valid email and password.
- Result: [Pass]
- Test Case 1.2: Validate user login functionality with correct credentials.
- Result: [Pass]
- Test Case 1.3: Check error handling for incorrect login credentials.
- Result: [Pass]
- Test Case 2.1: Confirm users can create a detailed profile with required information.
- Result: [Pass]
- Test Case 2.2: Validate the ability to edit profile information.
- Result: [Pass]
- Test Case 2.3: Ensure proper display of error messages for incomplete profile information.
- Result: [Pass]
- Test Case 3.1.1.1: Verify that organizers can create a new location.
- Result: [Pass]
- Test Case 3.1.1.2: Validate the ability to edit details of an existing location.
- Result: [Pass]
- Test Case 3.1.1.3: Confirm organizers can delete a location.
- Result: [Pass]
- Test Case 3.1.2.1: Verify that organizers can create a new event.
- Result: [Pass]
- Test Case 3.1.2.2: Validate the ability to edit details of an existing event.
- Result: [Pass]
- Test Case 3.1.2.3: Confirm organizers can delete an event.
- Result: [Pass]
- Test Case 3.1.3.1: Ensure that organizers can generate a QR code for event check-in.
- Result: [Pass]
- Test Case 3.1.3.2: Validate that the QR code links correctly to the event details.
- Result: [Pass]
- Test Case 3.1.4.1: Verify that organizers can create a new activity for an event.
- Result: [Pass]
- Test Case 3.1.4.2: Validate the ability to edit details of an existing activity.
- Result: [Pass]
- Test Case 3.1.4.3: Confirm organizers can delete an activity.
- Result: [Pass]
- Test Case 3.1.5.1: Ensure that organizers can access analytics for attendees.
- Result: [Pass]
- Test Case 3.1.5.2: Verify that the attendee list is accurate and up-to-date.
- Result: [Pass]
- Test Case 3.2.1.1: Confirm that attendees can choose a location.
- Result: [Pass]
- Test Case 3.2.1.2: Verify that attendees can view and select an event at the chosen location.
- Result: [Pass]
- Test Case 3.2.2.1: Validate that attendees can view details of the selected event.
- Result: [Pass]
- Test Case 3.2.2.2: Confirm that the event details screen includes relevant information.
- Result: [Pass]
- Test Case 3.2.3.1: Ensure attendees can check in by scanning the organizer's QR code.
- Result: [Pass]
- Test Case 3.2.3.2: Verify that the QR code check-in links to the attended event on the home screen.
- Result: [Pass]
- Test Case 3.2.4.1: Validate that attendees can sign up for activities associated with the attended event.
- Result: [Pass]
- Test Case 3.2.4.2: Confirm that signed-up activities are displayed on the attendee's profile.
- Result: [Pass]
- Test Case 3.2.5.1: Verify that attendees can access the map screen for the attended event.
- Result: [Pass]
- Test Case 3.2.5.2: Ensure the map displays the event location and activity markers.
- Result: [Pass]
- Test Case 3.2.6.1: Validate that attendees can access additional information about the event.
- Result: [Pass]
- Test Case 3.2.6.2: Confirm that the event information screen provides a comprehensive overview.
- Result: [Pass]
- Test Case 4.1.1: Verify that the map screen is accessible from the event details.
- Result: [Pass]
- Test Case 4.1.2: Check that the map displays the correct event location.
- Result: [Pass]
- Test Case 4.1.3: Ensure all activities are shown as markers on the map.
- Result: [Pass]
- Test Case 4.1.4: Validate the accuracy of activity markers on the map.
- Result: [Pass]
- Test Case 4.1.5: Confirm that tapping an activity marker provides details about the activity.
- Result: [Pass]
- Test Case 5.1.1: Verify that the application only collects and stores necessary user data.
- Result: [Pass]
- Test Case 5.1.2: Confirm that user consent is explicitly obtained before collecting any personal information.
- Result: [Pass]
- Test Case 5.1.3: Ensure that users can review and modify their consent settings in the profile settings.
- Result: [Pass]
- Test Case 5.2.1: Validate that the Google Authentication process includes OAuth screens.
- Result: [Pass]
- Test Case 5.2.2: Confirm that users can select and control the types of data shared from their Google account.
- Result: [Pass]
- Test Case 5.2.3: Ensure that the application adheres to the selected data sharing preferences from the OAuth screens.
- Result: [Pass]
- Test Case 5.3.1: Verify that sensitive information, such as API keys and secrets, are stored as environment variables.
- Result: [Pass]
- Test Case 5.3.2: Confirm that the application does not expose sensitive information in the client-side code.
- Result: [Pass]
- Test Case 5.4.1: Validate that Firestore is used for secure storage of user data.
- Result: [Pass]
- Test Case 5.4.2: Confirm that Firestore rules and permissions are appropriately configured to restrict unauthorized access.
- Result: [Pass]
- Test Case 6.1.1: Verify that organizers can access analytics only for events they have created.
- Result: [Pass]
- Test Case 6.1.2: Confirm that the analytics screen displays the event name, picture, and check-in times.
- Result: [Pass]
- Test Case 6.1.3: Validate that only relevant and non-sensitive information is included in the analytics view.
- Result: [Pass]
- Test Case 6.2.1: Ensure that attendees do not have access to analytics data.
- Result: [Pass]
- Test Case 6.2.2: Verify that the analytics screen is restricted for non-organizer users.
- Result: [Pass]
- Test Case 6.2.3: Confirm that organizers cannot access analytics for events they did not create.
- Result: [Pass]
- User Authentication: [Pass]
- Profile Creation: [Pass]
- Event and Activity Management: [Pass]
- Navigation Assistance: [Pass]
- GDPR Compliance: [Pass]
- Analytics Generation: [Pass]
[Specify if any features were not tested or not implemented]
Based on the testing results, it is recommended to address any identified issues and perform additional testing, if necessary, before considering deployment.
The EventAmplify application has undergone extensive acceptance testing, and the documented results serve as verification of the successful implementation of all specified features. The application is deemed ready for deployment, pending any necessary adjustments based on the test findings.
This project is licensed under the MIT License.