Skip to content
clearlakeport edited this page Sep 30, 2021 · 27 revisions

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

We haven't transferred it over because of the GitHub public/private problem.

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
  • Buttom navigation bar
  • Recipe page
  • Groceries page
  • 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. rational: Allow users to view and manage all of their recipes. Dependency: 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

4. Prioritization

  • Prototype for UI
  • Schema for the database

5. Diagrams

  • Wire frame Wire Frame

  • Database schema

Clone this wiki locally