# Workout Deck ## Log and Task List ### Mon. 5/18 #### Progress - Generated HackMD - Generated overall app goals #### Task List - [ ] Determine which backend framework to use - [ ] Determine how difficulty will be quantified - [ ] Research how to organize MySQL tables ## App Description - An iOS App for users to have access to highly customizable workouts. - Based on the popular trend to draw random cards from a deck to determine what exercise to do. ## User Stories ### Required - Users can draw cards, and upon doing so will see a corresponding exercise to do. - Users can customize the deck, assigning personalized exercises to various cards. - Sign in/sign out features - Users can share their custom decks with other users. ### Optional - Other users can rate decks based on difficulty or overall quality. - Search capabilities to find decks based on user, difficulty, or other criteria. ## Tech Stack ### Frontend - The front-end will be an iOS Application, which will make it easy for users to gain access to their workouts. It will be implemented using SwiftUI. - (Optional) Web app to make creating/searching custom decks easier. ### Backend - The backend will be built on Flask/NodeJS/Vapor/etc. It will be used to access a database for users to retrieve deck information. ### Database - The app will utilize a MySQL database to store user information. This information will include user info, favorited decks, created decks, etc. ## Models ### User | Attribute | Type | Description | | --------- | ---- | ----------- | | Name | String | A user's real name | | Username | String | A user's registered username, unique for each user, to use to identify their decks | | Login Info | ??? | Need to determine how to securely handle this | | Decks | Array of DeckIDs | The decks the user has saved | | Image | Image | Profile Image | ### Deck | Attribute | Type | Description | | --------- | ---- | ----------- | | ID | Integer | Unique id of a deck | | Name | String | Name of the deck | | Description | String | General description of the deck, created by author | | Author | String | Username of the user who created the deck | | Difficulty | String or Integer or Float* | Difficulty of the deck | | Downloads | Integer | Number of users who have downloaded the deck | | Vote | Integer | Upvotes/downvotes by users based on experience using deck |