Created milestone 4 authored by Jeremie Michaud (jdm489)'s avatar Jeremie Michaud (jdm489)
**Milestone 4**
**Action Plan**
* This Milestone:
* As a group:
* Action plan
* Prioritized backlog
* Domain Model
* Glossary
* Jeremie
* Technology requirements (back-end)
* Database schema
* Jorgen
* Technology requirements (back-end)
* Database Schema
* Michael
* Technology requirements (front-end)
* Lucas
* Technology requirements (front-end)
* Next Milestone:
* As a group:
* Everything
**Domain Model **
![370domain-1](uploads/f5632a7726967d68b9a5c3fa44b95295/370domain-1.png)
**Glossary **
* **User**
* The person using the software
* **Receipt**
* A piece of paper containing a list of items purchased from a store
* **Manual Input**
* User types information into
* **OCR** (Optical Character Recognition)
* The electronic conversion of images of text into machine-coded text
* **Search**
* To find something by looking
* **Graphing**
* A class that displays data into graphs
* **Database**
* A structured set of data held in a computer, can be searched
**Database Schema (i.e., physical data model)[optional] **
* Tables:
* ItemCategories
* ItemCategoryId(Integer)(Auto Increment)(Primary Key)
* ItemCategoryName(String)(Unique)
* CreatedAt(Date)(Not Null)
* UpdatedAt(Date)(Not Null)
* Businesses
* BusinessId(Integer)(Auto Increment)(Primary Key)
* BusinessName(String)(Unique)
* CreatedAt(Date)(Not Null)
* UpdatedAt(Date)(Not Null)
* Receipts
* ReceiptId(Integer)(Auto Increment)(Primary Key)
* BusinessId(Businesses.BusinessId)
* Date(Date)
* TotalAmount (Double)(Not Null)
* PicturePath(Text)(Unique)
* CreatedAt(Date)(Not Null)
* UpdatedAt(Date)(Not Null)
* Items
* ItemId(Integer)(Auto Increment)(Primary Key)
* ItemReceipt(Receipts.ReceiptId)
* ItemName(ItemNames.ItemNameRelationId)(Not Null)
* ItemPrice(Integer)(Not Null)
* ItemQuantity(Integer)(Not Null)
* CreatedAt(Date)(Not Null)
* UpdatedAt(Date)(Not Null)
* BusinessRelation
* BusinessRelationId(Integer)(Auto Increment)(Primary Key)
* ReceiptId(Receipts.ReceiptId)(Not Null)
* BusinessId(Businesses.BusinessId)(Not Null)
* CreatedAt(Date)(Not Null)
* UpdatedAt(Date)(Not Null)
* ItemCategoriesRelation
* ItemCategoryRelationId(Integer)(Auto Increment)(Primary Key)
* ItemId(Items.ItemId)
* Categories(ItemCategories.CategoryId)
* CreatedAt(Date)(Not Null)
* UpdatedAt(Date)(Not Null)
* ItemNames
* ItemNameRelationId(Integer)(Auto Increment)(Primary Key)
* ItemName(Text)(Not Null)
* CreatedAt(Date)(Not Null)
* UpdatedAt(Date)(Not Null)
![CMPT370DatabaseSchema](uploads/779706bdd74a051c0ce4e991cb39a4d0/CMPT370DatabaseSchema.png)
**Prioritized Product Backlog **
* List your user stories ordered by priority (you can group by epic)
* “Must include”
* Manual input
* As DaveBossBusiness, I want to be able to manually enter the price so that I know the cost is right
* As DaveBossBusiness, I would like to manually input the tax amount so that the total amount from that receipts taxed the proper amount.
* Saving
* As TomLowIncome, I want be able to save the items I have input into the system so I can see them at a later date.
* “Should include”
* Searching
* As SallyStudent, I’d like to be able to search my purchases by tag/category so that I can see _how_ I spend my money.
* As SallyStudent, I’d like to be able to search my purchases by company/business name so that I can see _where_ I spend my money.
* Categorizing
* As DaveBossBusiness, I want to be able to categorize business purchases so that it is easier to know what I purchased, and when and where I purchased it from.
* As MaryShopaholic, I would like to be able to create my own personal categories so I can track my spending for each of my hobbies.
* OCR
* As SallyStudent, I want to be able to save a picture of her receipt so I can get the textbook code for later.
* As DaveBossBusiness, I capture a lot of receipts for my business and I don’t want to have all my storage space occupied by pictures.
* As SallyStudentand DaveBossBusiness, they don’t have a lot of time/I’d like to save time and would like to be able to scan receipts and have all the information automatically captured to save me time.
* Sharing
* As TomLowIncome, I want to be able to share my spending with my wife so we can both see our household spending. (export save file)
* “Could Include”
* Customization
* As TomLowIncome, I want to set constraints on my budget based on tag/category so that I don’t overspend on unnecessary items.
* As SallyStudent, I can set time-framed budget goals for myself so that I can better plan my finances
* Visualizations
* MaryShopaholic, I want to see my spending visually in different graphs so that I know what I overspend on.
* “Won’t (Exclude)”
*
**Technology **
• Update your technology requirements
* Jorgen & Jeremie (Back-end)
* NodeJs
* SQLite
* TesseractJS
* Sequelize
* Autocorrect in js
* Michael & Lucas (Front-end)
* HTML, CSS, JS
* D3.js Electron
* React
* NodeJs