TECHNOLOGIES

System Architecture

image_2022-11-06_182512428.png

BACKEND STACK

NodeJS + ExpressJS

(Server Framework + Event Loop)

We chose NodeJS & ExpressJS for our server framework since we have a lot of experience with these. The other reason why we chose to use NodeJS was because NodeJS is a non-blocking,event-driven I/O loop that is capable to handle data-intensive operations.

MongoDB (NoSQL Database)

We chose MongoDB for our database because of the same reason that we chose the above server framework: experience.

We are used to using MERN stack (MongoDB, ExpressJS, ReactJS and NodeJS) for our projects.

Another reason why we chose MongoDB is because it provides a nice API that can be used seamlessly using JavaScript

(instead of having to write SQL commands that are prone to error).

Google Cloud Storage (Blobstore)

We use Google Cloud Storage to store all of our Blobs (Binary Large Objects),which includes images and audio files. Almost the same reason as the previous technologies, we chose this because of our experience with it and also because it provides a nice JavaScript API that we can use.

FRONTEND STACK

React Native (Mobile App Development)

We chose React Native to build our mobile app because of its capability to automatically generate builds both for Android and ios. This means that we only need to write code once, and the app can be run on Apple and Android. Another reason that we chose this was because we're very familiar with JavaScript and ReactJS, and React Native is not that different from ReactJS.

Google Maps API (Map & Place data)

We decided to use Google Maps API for the following functionalities: rendering a map, fetching locations within the map and the ability to get user's current location (geolocation). However, we're not really using this API directly, instead, we decided to use an NPM library called "react-native-maps". It provides a nice interface for us to render the map within our react native application.