|
|
**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
|
|
|
|