-
Notifications
You must be signed in to change notification settings - Fork 4
Design and Planning
- Rev 1.3.2 2019-11-30 - Update component urls
- Rev 1.3.1 2019-11-30 - Remove Social login feature
- Rev 1.3 2019-11-24 - Add action and reducer for posting outfit image
- Rev 1.2 2019-11-20 - Change Edit and Search functionalities
- Rev 1.1 2019-11-15 - Update API specification
- Rev 1.0 2019-10-19 - Initial submission
Each rectangle is schema, consists of attributes for the model. Underlined attributes indicate primary key. Data type for each field is specified in the bracket. (M2M refers to ManyToMany, FK refers to Foreign Key). ‘user’ field for each model contains logged in user connected by foreign key relation. Bidirectional arrow means many to many relations.
Outfit: ‘items’ contains many to many relation table connecting Item and Outfit instance. ‘photo’ is a link to the image representing the outfit. ‘date’ is the date when the specific outfit record is created. ‘satisfaction’ is the int type index( 0-5 scale) representing the user’s satisfaction towards the specific outfit (default : null).
Item: 'outfits' contains many-to-many relation table connecting Item and Outfit instance. ‘tags’ contains many to many relation table connecting Item and Tag instance.
Tag : 'name' is the specific descriptor for each tag. (white, black, stripes etc.) ‘items’ contains many-to-many relation table connecting Tag and Item instance.
Urls for each view
- Browse - /browse, /main(when logged in, default redirection)
- OutfitDetail - /outfitDetail/:id
- Calendar - /calendar
- Login - /login
- Signup - /signup
- LandingPage - /main (when not logged in, default redirection)
- CreateOutfit - /createOutfit
(Dotted lines refer to subcomponent relationships and Solid lines refer to Redirect/link relationships) (the Logout container is loaded on all containers except Main, Login and Signup)
- LoginReducer
- isLoggedIn
- loginErr
- signupErr
- OutfitReducer
- outfits: Array of all outfits in database
- selectedOutfit
- imageUrl
- satisfactionData
- items
- ItemReducer
- items: all items in database
- selectedOutfitItems: Array of items in selected outfit
- selectedItem
- TagReducer
- tags: all tags in database
- selectedTag
- WeatherReducer
- todayWeather
- selectedDayWeather
- ImageReducer
- imageUrl
- items: result of ML API run on outfit image
Reducer | Action | Function |
---|---|---|
Login | logIn() | send ID/Password, and receive result |
logOut() | Logout current user | |
signUp() | Send input user info, check valid, and receive result | |
resetErr() | Initialize error states for login and signup | |
Outfit | getClassificationData(outfitImage) | Get classified outfit data from ML API |
getOutfits() | Get all outfits user have | |
getSpecificOutfit(outfitId) | Get specific outfit by outfit_id | |
createOutfit(image, classifiedData) | Create new outfit data with image, containing items, etc | |
deleteOutfit() | Delete specific outfit | |
editOutfit(outfitId) | Edit content that specific outfit has | |
setOutfitSatisfaction(satisfaction, outfitId) | Set satisfaction data to specific outfits | |
getOutfitByItem(item) | Get all outfits that contains specific item | |
Item | getItemByTags(tagCombination) | Get all items that contains specific tag combination |
editItem(itemId) | Edit tags of specific item | |
addNewItem(tagCombination) | Add custom item info to outfit | |
deleteItem() | Delete all connection with tags that item has | |
createTag(tag) | Create new tag of item | |
Tag | editTag(tagId) | Edit tag of item |
deleteTag() | Delete tag that has no connection with any item | |
Weather | getWeather() | Get Weather information of that day |
getSpecificWeather(timeStamp) | Get Weather information of day specified by timestamp | |
Image | postImage(image) | Send outfit image to backend |
Model | API | GET | POST | PUT | DELETE |
---|---|---|---|---|---|
User | user/login | X | Log in user | X | X |
user/logout | Log out user | X | X | X | |
user/ | Get Logged-in state | Create new user | X | X | |
Outfit | /outfit | Load all outfits of the current user | Create new outfit | X | X |
/outfit/:outfit_id | Get detail of selected outfit | X | Edit selected outfit information | Delete selected outfit | |
/outfit/:outfit_id/item | Get item list of selected outfit | Create new item for selected outfit | X | X | |
/outfit/:outfit_id/:item_id | X | X | Edit selected item in relation to the selected outfit | Delete selected item from selected outfit | |
Item | /item/:item_id | Get detail of selected item | X | Edit selected item information | Delete selected Item |
/item/:item_id/outfit | Get outfits that contain the selected item | X | X | X | |
/item/:item_id/tag | Get tag list of selected item | Create new tag for selected item | X | X | |
/item/:item_id/:tag_id | X | X | Edit selected tag in relation to the selected item | Delete selected tag from selected item | |
Tag | /tag/:tag_id | Get detail of selected tag | X | Edit selected tag | Delete selected tag |
/tag/:tag_id/item | Get items that contain the selected tag | X | X | X | |
Weather | /weather | Get weather info of current day | X | X | X |
/weather/:timeStamp | Get weather info of selected day | X | X | X | |
Image | /image | X | Send outfit image to backend and run ML | X | X |
Page | Tasks | Priority | Time(days) | Sprint | Assignees | Finished |
---|---|---|---|---|---|---|
Log in | Log in user | Low | 1 | 3 | 김해수 | O |
Log out | Log out user | Low | 1 | 3 | 김해수 | O |
Sign in | Create new user | Low | 1 | 5 | 김해수 | O |
Redirection login on error | Low | 1 | 5 | 김해수 | O | |
Browse | Load outfits from database | Mid | 1 | 3 | 주성연 | O |
Route to other components | Low | 1 | 3 | 주성연 | O | |
Recommendation | Get weather info from API | Mid | 1 | 4 | 김해수 | O |
Get outfits that match weather profile | Mid | 2 | 4 | 김해수 | O | |
Upload | Photo upload from filesystem | High | 1 | 3 | 정소영 | O |
Make API call for component classification | High | 2 | 3 | 정소영 | O | |
Map DeepFashion classes to our classification system | Mid | 1 | 3 | 정소영 | O | |
Outfit tagging interface | High | 4 | 3 | 주성연 | O | |
Upload item to database | Mid | 2 | 3 | 주성연 | O | |
Log satisfaction data | Low | 2 | 3 | 주성연 | O | |
Calendar | Component interface design | Low | 3 | 4 | 정소영 | O |
Route to detail component | Low | 1 | 4 | 정소영 | X | |
Search | Component interface design | Low | 4 | 3,5 | 김해수 | O |
Autocomplete search query | High | 4 | 4 | 곽태원, 정소영 | X | |
Search item by tag/outfit by item | Very High | 3 | 5 | 곽태원 | O | |
Filter Search results by weather and satisfaction values | Very High | 3 | 5 | 김해수, 곽태원 | X | |
Outfit detail | Load information from database | Mid | 1 | 4 | 주성연 | O |
Component interface design | Low | 4 | 4 | 주성연 | O | |
Outfit edit | Edit mode interface (same with tagging interface) | Low | 1 | 5 | 주성연 | O |
Edit item/tag only for current outfit | Mid | 3 | 5 | 주성연 | O |
Front-end (React) unit testing will be conducted through Jest and Enzyme. Back-end (Django) will be tested with the default python unit test module. We aim for code coverage to be >80% in all occasions.
API functionalities will be tested through the same frameworks (Jest, Enzyme, Python Unit Test), also utilizing mock data to emulate database behavior
We will use Travis CI for integration testing.
We will use Microsoft Azure for deployment.