Team JASYA present Grub

Grub it while it's hot!

We created an app to help those less fortunate and reduce food waste. Once users have created an account and logged in, they can list and reserve items, view items in their local area or within a specified radius and delete items that have been collected. The app is targeted towards individuals and small businesses. We believe in using our knowledge in technology to create an impactful app to help those in need.

Grub Demo Video | Northcoders Project Presentations

Grub Demo Video | Northcoders Project Presentations

Team JASYA

Yusef TumiPreview: Yusef Tumi

Yusef Tumi

Arran StenhousePreview: Arran Stenhouse

Arran Stenhouse

James MilminePreview: James Milmine

James Milmine

Sara GagginoPreview: Sara Gaggino

Sara Gaggino

Alan HuntPreview: Alan Hunt

Alan Hunt

Tech Stack

We used: BE: Mongoose, MongoDB (hosted with Mongo Atlas), Express, Jest, Supertest, Passport.js, Node.JS FE: React Native, React Native maps, React Native google places autocomplete, Expo, Android Studio, Axios.

Our tech stack choices were made to try to optimise the users experience and also to explore wider technologies outside of the PERN stack we have become used to. We decided to switch from postgres to MongoDB as it can scale more easily as the app grows and also has some excellent geographic query capabilities when paired with mongoose. The app also needed to host user provided images so we chose Cloudinary as it has a simple and intuitive promise based API and also can scale well. Protecting user information and securing the backend was done using passport.js using two strategies, a local strategy requiring the user to provide login credentials passed via axios and protected using SSL, and also a jsonwebtoken strategy that enables the client application to continue querying the API endpoints provided they have the appropriate token. By default, login tokens are valid for 7 days and when they expire the client redirects the user to the login page to use the local strategy to authenticate and provide a new token. To complete the backend we used express and Node.js and hosted the service on Render, with the MongoDB database hosted on MongoDB Atlas. For the front end we decided to develop a native Android application using React Native using Expo and Android Development Studio as this also allows for the possibility of making the app cross platform with iOS with minimal changes. As our application is geographic in nature we utilise react-native-maps that provides access to the Google Maps SDK for React Native on Android and also the react native google places autocomplete library to query the Google Maps geocoding API so the user can easily enter locations into the app. Throughout the development we used GIT for collaboration and used JEST and supertest for testing.

Tech StackPreview: Tech Stack