Meet App - A PWA with Serverless Backend
Meet App - A PWA with Serverless Backend
The Meet App is a Progressive Web Application (PWA) designed to fetch upcoming events using the Google Calendar API. This app allows users to filter events by city, display event details, and visualize data through interactive charts. The app is built using React with a Test-Driven Development (TDD) approach and a serverless architecture powered by AWS Lambda.
The app is fully functional offline, can be installed on mobile and desktop devices, and includes data visualizations like scatter plots and pie charts. The app is responsive, cross-platform, and optimized for performance.
Users can filter events by a specified city and view upcoming events.
Users can toggle visibility of event details with the ability to expand or collapse the information.
Users can customize how many events are displayed.
The app works offline by displaying cached data without an internet connection.
Users can install the app as a shortcut on their device's home screen.
The app includes visual charts to display the distribution of events per city (scatterplot) and the popularity of event categories (pie chart).
· JavaScript library for building the user interface.
· CSS preprocessor used for styling the app, including the component-specific styles
· A charting library for React, used to create responsive and customizable data visualizations such as bar charts, line charts, and pie charts.
· Library for measuring web performance metrics.
· For responsive and consistent design components.
· Error tracking service integrated for logging frontend errors.
· Library for showing progress bars during asynchronous operations like API calls.
· Provides offline support and caching functionality, improving app load time and enabling offline use.
· A set of libraries used for service worker caching and offline functionality.
· Used to make network requests to the API endpoints.
· For parsing query parameters in URLs.
· Used to store tokens and event data on the client side.
· Serverless computing service that handles the authentication and other backend logic (using Serverless Framework).
· For configuring & deploying the serverless functions to AWS.
· Provides access to Google services like Google Calendar. Specifically, the google.calendar module is used to fetch calendar events.
· For authentication via Google’s OAuth2 flow to get access to calendar events.
· Test-Driven Development
· For unit and integration testing.
· For testing React components with a focus on user interactions.
· For BDD tests based on Gherkin scenarios.
· For end-to-end testing with a headless Chrome browser.
· For hosting the MEET app.
· For performance auditing and ensuring the app meets PWA requirements.
· For automated testing and deployments.
The project follows a TDD methodology, where tests are written before the actual code implementation. This ensures that the app is robust and designed to meet its requirements. TDD enables continuous quality control throughout the development process, helping to deliver a reliable and optimized product.
Data visualizations enhance user engagement, providing quick insights into event distributions across cities and the popularity of event genres through charts.
The target users are individuals seeking events in different cities, both for personal and professional purposes. This could include general users, friends, colleagues, or potential employers interested in viewing the app's functionality.
The project progresses through several phases, starting with defining user stories and test scenarios. The next steps involve implementing serverless functions, integrating with the Google Calendar API, and visualizing event data. Offline functionality is also implemented to ensure usability in poor network conditions. Testing—unit, integration, and end-to-end—ensures the app is thoroughly tested for performance and reliability.
In addition, advanced features can be added, such as using the Lambda inline editor for serverless implementation or styling the app with React-Bootstrap to enhance the design.
This project combines modern web development techniques and offers hands-on experience with serverless architecture, PWAs, and TDD, providing a well-rounded understanding of key technologies for future web development.