This is a serverless, progressive web application (PWA) with React using a test-driven development (TDD) technique. The application uses the Google Calendar API to fetch upcoming events.
The project was built using create-react-app boiler plate code. Use npm run start, to run the project on localhost: 3000
- Filter events by city.
- Show/hide event details.
- Specify number of events.
- Use the app when offline.
- Add an app shortcut to the home screen.
- View a chart showing the number of upcoming events by city
- Given user hasn’t searched for any city
- When the user opens the app
- Then the user should see a list of all upcoming events
- Given the main page is open
- When user starts typing in the city textbox
- Then the user should see a list of cities (suggestions) that match what they’ve typed
- Given the user was typing “Berlin” in the city textbox And the list of suggested cities is showing
- When the user selects a city (e.g., “Berlin, Germany”) from the list
- Then their city should be changed to that city (i.e., “Berlin, Germany”) And the user should receive a list of upcoming events in that city
- Given the main page is open
- When user looks at all the events
- Then the events should be collapsed by default
- Given the user is on a particular collapsed event
- When user clicks on a link to expand the event
- Then the event will expand to show all the details
- Given the user is on a particular expanded event
- When user clicks on a link to collapse the event
- Then the event will collapse to hide all the details
- Given the user is on the events page
- When the user has not selected a number of events to show
- Then the page will show 32 events by default
- Given the user is on the events page
- When the user selects the number of events to display
- Then the page will show the number of events that the user selected
- Given there is no internet connection
- When the user visits the meet app
- Then the page will show the cached data of the app
- Given there is no internet connection
- When the user changes the settings (city, time range)
- Then the page will display an error
- Given the page is open
- When the user visits that page
- Then the page will display a chart with the number of upcoming events in each city
- The app must be a React application.
- The app must be built using the TDD technique.
- The app must use the Google Calendar API and OAuth2 authentication flow.
- The app must use serverless functions (AWS lambda is preferred) for the authorization server instead of using a traditional server.
- The app’s code must be hosted in a Git repository on GitHub.
- The app must work on the latest versions of Chrome, Firefox, Safari, Edge, and Opera, as well as on IE11.
- The app must display well on all screen sizes (including mobile and tablet) widths of 1920px and 320px.
- The app must pass Lighthouse’s PWA checklist.
- The app must work offline or in slow network conditions with the help of a service worker.
- Users may be able to install the app on desktop and add the app to their home screen on mobile.
- The app must be deployed on GitHub Pages.
- The API call must use React axios and async/await.
- The app must implement an alert system using an OOP approach to show information to the user.
- The app must make use of data visualization (recharts preferred).
- The app must be covered by tests with a coverage rate >= 90%.
- The app must be monitored using an online monitoring tool.