Shopping4Chow

Shopping 4 Chow

Shopping 4 Chow is a web/mobile app that will be used for food related activities like creating shopping list, custom recipes as well as custom Meal Plans. It will also contain a list of commonly and uncommonly used ingredients as well as pictures. This is a personal project with only 1 member.

The purpose of this app is to make it easier to create and manage Shopping list for recipes. After selecting a recipe, the ingredients as well as the quantity will be added to the shopping list. If multiple recipes are selected, all the ingredients are added to the list and any overlapping ingredients are added together. For instance if one recipes calls for 1 lbs of chicken and another calls for ½ pounds then both will be added to the total amount of 1.5 lbs of chicken on the Shopping list.

The Architecture

Authentication

Authentication will use AWS Cognito

Backend

The Backend is currently using Java 16 Spring and Hibernate, but a cloned Go and possible Rust version are being considered to see if there are any performance improvements or optimization.

CICD

Jenkins will be used in combination with the AWS CodeBuild plugin tool for deployments to AWS.

Database

For storing data like Food, Recipes etc Postgresql will be used and AWS RDS for hosting.

Environment

Development, Testing and Production

Frontend

For the frontend React will be used. Hosting will be through s3. Mobile will use either React Native or Flutter. Pros and Cons for both are being considered.

Hosing

This app will be hosted on AWS and use multiple Serverless services like Fargate. This will require the entire app to run on a docker container.

Infrastructure as code

Terraform

Project Management

Clubhouse, https://clubhouse.io/, will be used for Project Management to keep track of tasks and issues.

Static Storage

Images will be stored on AWS s3

Upgrades

Currently this app is being designed with a Monolithic Architecture approach using Services and Data Access Object (DAO). After the initial release, a plan to redesign using Microservices and GRPC will be implemented. Kubernetes will also be considered if the cost justifies the upgrade.

Version Control

GIT

Testing

For java, Junit & Mockito will be used for Testing and writing Mock Tests respectively.

Leave a comment

Your email address will not be published. Required fields are marked *