*Meet is a React Application was created following a test-driven development (TDD) process. The main goal of the application is to utilise test-driven development to build a serverless, progressive web application (PWA). The application uses the google calendar API to fetch and display upcoming events to the user.
In recent years serverless application as well as progressive web applications (PWAs) have grown in popularity in the tech space and are considered to be the future of development. Both concepts offer immense benefits to both the users and developers. It reduces the general development costs (time, labour and money) and offers the user a unique advantage of being able to access and interact with the APP even without internet connection.
*Severless: No or low backend maintenance costs, improved availability(always) and easy to scale.
PWAs: combiines the advantages of both a normal web app/site and native applications. Most importantly, it is the framework which allows us to implement offline functionlity of web apps such as the meet app.
All said, the meet app bring is built to reap the benefits of serverless achitechture and functions as a normal web app, allowing users to add the meet app to the home screens on mobile and desktop and browse offline.
Hosted on gh-pages:
https://jessinmacdon.github.io/meet
- React
- Google Calendar API
- OAuth2
- AWS serverless functions
- Jest-cucumber
- Enzyme
- Pupeteer
- Atatus-spa
- Recharts
- React-Bootstrap
This was the very project of it's kind in my portfolio. AWS serverless functions were particularly tricky to deal with, due to the difficulty to identify errors and the extreme space and indentation sensitivity of the yml file, which I was not used to mainly writting in Javascript.
Even though design wasn't the main focus of this project, I had to make it at least OK looking :). This was difficult to do without the use of bootstrap to style. Even though Bootstrap came with its own difficulties, it was still the the best option for this project in that it saved me a lot of time.
This was the first project or first time encountering the TTD approach. I would definitely work on more projects using this approach and be mindful of the number of test to write (Write test, not too many, just enought o guide the development process and achieve a great test coverage score).
- The ins and outs of TDD and BDD - test first code later!
- Intruduction to AWS serverless functions
- Jest
- Creating charts to implement data visualisation
- PWAs which I find particularly interesting and would definitely be revisiting for my future projects.
- 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.
Feature 1: As a user, I want to be able to able to show/hide event details so that I can see more/less information about an event.
- Given the main page is open
- When the user searches for a city and the events are loaded
- Then the event details will be collapsed
- Given the list of events have been loaded
- When the user clicks show details for an event
- Then the event will expand to show more details about that event
- Given the show details button of an event has been clicked And the details are expanded
- When the user clicks on “hide details”
- Then the expanded detail will collapse to hide details
Feature 2: As a user, I should be able to specify the number of events I will like to see in the app so that I can see more or fewer events in the list at a time
- Given a city has been selected
- When the user doesn’t specify the number of events they want to view on a page
- Then 32 events will be shown by default
- Given a city has been selected
- When the user types in the desired number of events into the “number of events” box
- Then the desired number of events will be loaded for the respective city
Feature 3: As a user, I should be able to use the app offline so that I can see events viewed the last time I was online
- Given the app has been recently accessed online
- When the user accesses the app while offline
- Then the events they viewed when they were previously online will be shown
- Given the app is accessed offline
- When the user makes changes to settings like city or time-range
- Then tan error message will be shown
Feature 4: As a user, I should be able to see a chart showing the upcoming events in each city so that I know what events are organized in which city.
- Given a city has been selected
- When the list of events is shown
- Then on top of the list, a chart that shows the type of upcoming events will be displayed
This is how the app will look on your desktop (larger screens)