Skip to content
Juan Mendoza edited this page Dec 18, 2021 · 27 revisions

Old version of the SRS here: https://docs.google.com/document/d/1mmAk5t32UTLhX_8dvx6iRNlINQKe7qjKIkIjuiJq5cU/edit?usp=sharing

1.1 Purpose

Shakshuka is a recipe planning and meal preparation app that helps users manage their recipes, plan meals, and eat better. Users using their App or the browser interface to upload, download and search for recipes with the data safely stored in the cloud server.

1.2 Scope

Shakshuka is designed for any user who wants to store his or her recipes online without worrying about losing them later. The App will provide features for adding, deleting, updating and backup. Users can upload and download not just recipes but also photos of their dishes. All users can bookmark their favorite recipes to retrieve them later. The App also allow users to convert between metric and imperial systems. A search feature will also be available to allow users to find recipes either by name or by cuisine types. Any user can sign up for this App with an email account or with their Google or Apple accounts.

1.3 Definitions

User: Anyone signs up with his/her email or Google or Apple account. Tag: A category or categories for types of cuisines, cooking methods, or ingredients. Search: Allows users to search by using tags or keywords.

2.1 Product Components

2.1.1 The Client

The front-end will be developed using the Flutter SDK for cross platform compatibility. It will provide the users with sign up and login services. Additional stateless and stateful widgets will be provided for users to add, update, tag, upload, and view recipes and images.

2.1.2 The Server

Server and Database: The back-end for Shakshuka will be powered by Firebase and Firestore NoSQL database. It will provide adds, updates and deletes for recipes and images. User management will be using Firebase Authentication.

2.1.3 The Database

The database for Shakshuka will be Firestore NoSQL database. It will be used to store user account information, recipes, tags and images.

2.2 Users

Users will be required to create an account. A user will have the choice of using a personal Google Account or Apple Account, or can register using a personal email account. If the personal email is used, the user will first be required to provide their email, full name, and a password inorder to create a permanent reusable account login. Once the user is logged in, they will be able to browse recipes and execute any feature outlined in section 1.3.

3. Requirements

3.1 UI Requirements

  • Login page
  • On-Boarding page
  • Bottom navigation bar
  • Recipe page
  • Groceries page
  • Meal plan page
  • Floating action button
  • Search page

3.2 Functional Requirements

ID: FR1

On-boarding page

Description: The user will be able to sign with their account be that an apple, google, or email account or register a new account. rationale: necessary to separate user recipes by account id. dependency: N/A

ID: FR2

Bottom navigation

Description: a navigation bar located at the bottom of the screen enabling users to quickly access different pages of the app. rational: Users need a way to quickly and easily navigate to different parts of the app. dependency: FR1

ID: FR3

Recipes page

Description: A page specific to each user that displays all of their recipes. Includes a method to retrieve recipes from the firestore database and a function that takes in user input from the application and inserting that data into the firestore database. rational: Allow users to view and manage all of their recipes. Users need a way to retrieve their recipes from the cloud in order recover recipes when signing in on a new device and a way to store their recipes in the cloud as a backup. dependency: FR1, FR2

ID: FR4

Add floating action button

description: floating action button for users to tap on and create recipes rational: enable users to to create their own recipes dependencies: FR3

ID: FR5

Meal plan page

Description: Displays a list of weeks. Each week button will take the user to a screen that displays that week's meal prep plan. rational: dependencies:

ID: FR6

Grocery List page

Description: Displays what ingredients the user must buy. rational: dependencies:

ID: FR7

Search Page

Description: Has a search bar that accepts users' search queries. Displays a grid of recipe tags that will filter results. rational: dependencies:

3.3 Non-Functional Requirements

  • Security: Protect user information
  • Compatibility: The App will function on all browsers and mobile devices
  • Usability: The App will load within 1 second
  • Recipe Recommendations: Recipes Page will recommend recipes

4. Prioritization

  • Prototype for UI
  • Schema for the database

5. Diagrams

  • Wire frame Wire Frame

  • Database schema ERD Database

  • Class Diagram Class Diagram

  • Prototype prototype

  • Sequence Diagram Sequence Diagram

  • Use Case Diagram use case diagram