A progressive web app created with test-driven development, the Google Calendar API, and Amazon Web Services.
The Meet app is a progressive web application with a serverless backend, offering offline access to upcoming events in specific cities. Its responsive design ensures seamless display across devices, delivering an optimized user experience. Developed via Test-driven development, it prioritizes code quality and test coverage for increased app performance.
This app uses serverless functions to handle backend operations without the need for maintaining server infrastructure. For example, when a user requests upcoming events or chooses to filter events by city, the serverless backend can respond to these requests by retrieving and processing any data from the database.
With the use of serverless architecture, the app maintains scalability, and cost-effectiveness--while giving any user seamless access to the event information. Using serverless functions is an efficient option for a modern web app.
-
Clone this repository
-
Go to the project directory
cd project-folder
-
Install project dependencies
npm install
-
Start the server at localhost:3000 in the default web browser
npm run start
- As a user, I should be able to filter events by city So that I can see a list of events taking place in that city.
-
Scenario: When the user hasn't searched for a city, show upcoming events from all cities
- Given I have navigated to the main page but have not specified a city
- When I look at the events list
- Then I should see events from all cities
-
Scenario: User should see a list of suggestions when they search for a city
- Given I have navigated to the main page
- When I start typing in the search box to search for a city
- Then I should see a list of city names that match my input as suggestions
-
Scenario: User can select a city from the suggested list
- Given the list of suggested cities is displayed
- When I click on a city name from the suggestions
- Then I should only see events happening in the selected city
- As a user, I should be able to expand an event to see more details and collapse it to hide those details, So that I can switch my focus between the event list and a single event.
-
Scenario: An event element is collapsed by default
- Given I have navigated to the main page
- When I look at the list of events
- Then the list should be minimized with each event showing only the summary
-
Scenario: User can expand an event to see details
- Given an event is collapsed
- When I click on an event's "SHOW DETAILS" button
- Then the container should expand to show all event information
-
Scenario: User can collapse an event to hide details
- Given an event is expanded
- When I click on the event's "hide details" button
- Then the event should collapse by hiding the event details
- As a user, I should be able to specify the number of events I want to view at a time, So that I can limit the amount of information displayed in the app based on preference.
-
Scenario: When user hasn’t specified a number, 32 events are shown by default
- Given I have navigated to the main page
- When I have not specified a number of events to view
- Then 32 events should be displayed as the default
-
Scenario: User can change the number of events displayed
- Given I have navigated to the main page
- When I can specify thea number of events to be displayed in the app
- Then see the desired result on the page
- As a user, I should be able to view events and use the app even when I'm offline, So that I can access event information without an internet connection, ensuring I have the information I need at any time.
-
Scenario: Show cached data when there’s no internet connection
- Given I have previously visited the page and loaded event data
- When I access the app without an internet connection
- Then I should see the previously cached event data
-
Scenario: Show error when user changes search settings (city, number of events)
- Given I am accessing the app without an internet connection
- When I try to change the search settings like city or number of events
- Then I should see an error message indicating the action cannot be completed offline
- As a user, I should be able to add a shortcut of the app to my device's home screen, So that I can quickly access the app without having to navigate through my browser, making it feel more like a native app.
- Scenario: User can install the meet app as a shortcut on their device home screen
- Given I am using a compatible browser on my device
- When I choose to add the app to my home screen
- Then the app should be added as a shortcut on my home screen for easier access
- As a user, I should be able to see charts describing the data about selected events, such as the number of upcoming events in each city, So that I can see the frequency of events in different locations to learn about the culture in selected cities.
- Scenario: Show a chart with the number of upcoming events in each city
- Given I am on the main page
- When I navigate to the chart section
- Then I should see a chart displaying the number of upcoming events in each city