Overview - KazztheCajun/petfoodweb GitHub Wiki
Frontend:
For this project my App will only have two main views:
- A Front page that provides user login/signup and some information about the App
- A Main page that displays the household and pet information and provides the main user interface functions.
Front/Login/Signup page:
On this page the user will be able to read about why they should use this app, some history about what inspired this app, and Login to an existing household or create a new one. New features, updates, and other important news will also be displayed when appropriate. This page will only be seen by new users and users that don’t have an active login. The basic layout of the front page will be like below:
Main page:
This page will be where users spend 90% of their time on the app. This page will display the household signed into/created, any pets that are stored in it, and detailed information such as charts and graphs derived from the food/treat data tracked for a selected pet. This page will also provide user input to add/remove pets, add new food/treats given to pets. Below I have a basic planned layout for the main page:
Backend:
Because the main job of the frontend in this App will be to provide a view into the Model, the backend will oversee processing signup/login requests, storing and processing any changes to the Household database made by users, and formatting data to be displayed in various infographics. In addition to this, it will also need to maintain a database of Pet Food items that is updated on a regular schedule. Because I think the JSON format will work better for this project than traditional SQL, MongoDB is my choice for the backend database. To facilitate communication between the frontend and backend, I will build a REST API to smoothly handle sending and receiving data as well as building graphs and charts for the detailed information displays. Lastly, to maintain the Food/Treat item database, a web crawler will run periodically that checks public info on pet food sites to get the caloric and nutritional for each item.