Description : The "Today" widget for the dashboard must be designed according the the mock-ups provided. Implement a high-fidelity prototype for the widget, allowing limited interaction with the UI elements.
Required
Design "Today" UI of panel according to mock-up.
Allow limited interactivity with panel, via front-end objects.
Description : The "Closet Manage" view for viewing closet items must be designed according the the mock-ups provided. Implement a high-fidelity prototype, allowing limited interaction with the UI elements. This should allow for adding and deleting clothes from the closet.
Required
Design "Closet Manage" view according to mockup provided.
Add a link to this new page in the Closet widget.
Enable adding, deleting, and editing of clothes.
Enable sorting interaction (minimal).
Allow limited interactivity with panel, via front-end objects.
Description: Since transitioning into using MongoDB as the database and using its data to display on the front-end, there are a few issues with clothingID. MongoDB creates its own ID for each clothing item we add to the database.
Required
Remove functionality that generates clothingID
Ensure that id generated by MongoDB is used as the clothingID for all components using it.
Description : Using the schema plan generated, implement the schema in the database. Populate the database with sample data which will be used for testing future API calls.
Description: Documentation should be provided in the README. The audience of this document would be be both developers (potential contributers) as well as users of the project.
Required
High level introduction and description of the project.
Description: Create the UI for the Budget Manage View, which serves as a control panel for Budget related functions for Closetr. This includes the option to set a new budget, over different date ranges, and options such as allowing rollover.
Required
Create display of current budget as a progress bar.
Display message of current spending, and customized suggestions (Tentative).
Allow setting new budget, and different options, and saving these options.
Description: User should be greeted with log in screen when they visit the app. There will be a field for a Username and Password, which must be filled before they can press "Log In." Once they click on the "Log In", they are redirected to the dashboard.
Required
Create log-in screen with username and password fields, and "Log In" button.
Add restriction to "Log In" button, requiring the username and password fields to be filled out first.
Configure router to load Log In screen on startup.
Redirect user to dashboard upon clicking "Log In" button.
Description: An API is required to return all clothing pieces in the database in a JSON format. The API must be connected to a route that the front-end can call.
Required
Create API to return clothing articles in JSON format.
Description: There is currently no backend API to support the Log Outfit function. A new API should be created which takes an array of clothing as input, the date (possibly), and the username (ID), and stores that entry in the database.
Required
Backend:
Create model for outfit entry, which includes clothingID, userID, and date.
Create API for logging an outfit, which uses POST to receive clothingID, userID, token, and date. The user must be authenticated using their token, then the entry is added to the database.
Create API for getting all clothes that are logged for today's date (or a specific date). Takes date and userID as input and returns logged clothes for that date.
Description: Support filtering clothing purchases by date range (with from date, and to date), as well as filtering from within last (month, week, etc.)
Required
Use purchaseDate attribute of clothing, create a pipe that takes a closetList, and date range (from and to) which returns all clothing items that were purchased within the date range.
closetList should be filtered every time the user changes the date selectors.
Description: This is part of a longer project to refactor angular components. In this part, a table component will be created for use in multiple pages. Examples of usage include the list of purchases table. For now, this is a static table, with the possibility of sort functionality.
Required
Controller/Service:
Create a new ui-table component in the shared folder.
Allow the ui-table to take an array of objects as input.
The ui-table will display the table of data using the style defined in the list of purchases table.
Allow ui-table to have simple style configurations (e.g. border-style).
Replace the tables in budget-widget and spending-manage components with ui-table.
Description: This is part of a longer project to refactor angular components. In this part, the input fields and buttons will be refactored for easier usability and cleaner code. In particular, the input fields are the full width fields in add-clothing and edit-clothing (for example), and the buttons are the full width buttons as well.
Required
Controller/Service:
Create new components for each input field/button style. Copy the styles and functionality from existing code.
Put the new components in shared folder.
Modify all pages that are using the newly refactored components.
Description: The Back-end APIs for updating clothing doesn't account for different users. The routes should be changed so that they accept a user ID, and they should only update clothing for a specific user. The Database models should be changed as well. Each user will have it's own closetList as a property, which is an associative array of clothing.
Required
Perform database cleanup as necessary.
Change APIs so that they account for an extra parameter userID when updating database.
Change front-end services and controllers so that they pass in an extra parameter userID when making HTTP requests.
Description: Add a dropdown menu that is triggered when the user clicks the profile icon. It should have three options to start: profile, settings, and sign out.
Required
Add dropdown menu when user clicks profile icon.
Three menu options: 'My Profile', 'Settings', and 'Sign Out'
Description: Improve the display of the Log Outfit search results, particularly the mobile view because it the content goes beyond the container. Also fix issues regarding adding clothing from search results.
Required
Ensure content for search results doesn't exceed container.
(Optional) Add pictures of clothing that are displayed as search results.
Fix issue where adding clothing results in adding that clothing item back into the closet list. It should only add it to the Log Outfit Clothing list.
Description : The "Add Clothing" panel for the "Log Outfit" functionality must be designed according the the mock-ups provided. Implement a high-fidelity prototype for the widget, allowing limited interaction with the UI elements.
Required
Design "Add Clothing" panel for "Log Outfit" functionality, according to mock-up.
Allow limited interactivity with panel, via front-end objects.
Description: Closet Service is always returning empty list of clothes on the initial call in closet-widget. In the service, the list of clothes is returned before it is populated by the API call.
Required
Ensure that closet list returns all clothes properly on start of app.
Description: Create the UI for the Spending Manage View, which serves as a control panel for Spending related functions for Closetr. This includes the the option to search logged spending over periods of time, and allowing to change the number of results displayed. Also includes link to 'Budget Manage View' (possible) and possibly offering suggestions based on current spending compared to budget.
Required
Create table view for listing logged spending.
Create filters to view logged spending, such as date range, and other filters on items.
Description: This is a temporary feature, which may be changed/modified once a better solution is found. Create two APIs: one to log in a user, and one to register a user.
The Log In API will be called when the a user attempts to log in. The input is a username and password, and will return true if the user provided valid credentials, and false otherwise.
The Register API will be called when the user attempts to sign up. The input is a name, username, and password. It will return true, with the new user's data, if a user with the provided data has been successfully created. It will return false otherwise (e.g. if a user with the same provided username already exists).
Required
Create API for registering a new user, with the above specifications.
Create API for logging in a user, with the above specifications.
Link the front-end functionality and UI with the two APIs.
For the case of Sign Up API, display UI error when there is an attempt to create a new user with an existing username.
For the case of Sign In API, display UI error when the provided username and password doesn't match records.
Description : The "Log Outfit UI" panel must be designed according the the mock-ups provided. Implement a high-fidelity prototype for the widget, allowing limited interaction with the UI elements. This includes the search bar (and the UI for auto-search results). It also includes a panel of closet cards representing clothes logged for a daily outfit.
Required
Design search bar component of "Log Outfit" UI according to mock-up.
Design panel of closet cards.
Allow limited interactivity with UI, via front-end objects.
Description: User should be able to sign up for an account. There will be a sign-up button available on the log-in screen, which (when clicked) will redirect to the sign-up screen. The user's name, username, password (and confirmation) will be asked. After everything is filled out properly, the user can click "sign up" and they will be redirected to the dashboard.
Required
Create sign-up screen with "name," "username," "password," and "confirm password" fields, and a "Sign Up" button.
Add restriction to "Sign Up" button, requiring all above fields to be filled properly, and the passwords to match.
Configure "sign up" button in the log-in screen, and configure it to redirect to the sign-up screen.
Enable "sign up" button only when all input is validated as described.
Once the user clicks "sign up" in the sign-up screen, redirect to dashboard.
Description: This is part of a longer project to refactor angular components. In this part, several folders will be renamed and made, and components will be moved to appropriate folder categories.
Required
Controller/Service:
Rename each of shared, pipes, models, guards, animations, and services to the same name but starting with _ (underscore). Example: _models.
Create a new folder components
In components, create two folders: page-full and page-partial.
Put all existing components appropriately into one of the above folders (page-full or page-partial).
Description : The "Closet" widget for the dashboard must be designed according the the mock-ups provided. Implement a high-fidelity prototype for the widget, allowing limited interaction with the UI elements. This includes cards for that contain information about clothing articles.
Required
Design "Closet" UI of panel according to mock-up.
Design cards for each article of clothing.
Allow limited interactivity with panel, via front-end objects.
Description: This is part of a longer project to refactor angular front-end. In this part, the css file styles.scss, global-variables.scss, and custom.scss will be refactored so that each css file is isolated for a specific function.
Required
CSS:
Create a styles folder.
Break up the above mentioned scss files into separate files that provide styling specific to some function/page.
Description: Add a new page that houses and displays user data. Includes: their name, biography (optional), picture, and masked password. From this page, they are able to change any of their data (except username, password for later). This page is linked to from the 'My Profile' button in the user menu.
Required
UI:
Create new page that display's user's profile.
Page includes name, biography, picture, and masked password.
Enable toggling edit button, so that user may upload new picture, change name, and biography.
Add save button.
Back End:
Create API that returns user data. The API will require a valid JWT token (logged in user).
Create API that amends user data. The API will require a valid JWT token (logged in user).
Controller/Service:
Create HTTP call to above (get user data) API in the user service, and call this service in the controller.
Create HTTP call to above (amend user data) API in the user service, and call this service in the controller.
Description: This is part of a longer project to refactor angular components. In this part, the icon (edit, close) buttons, and the sort/filter components (in closet-widget, closet-manage pages) will be refactored.
Required
Controller/Service:
Create new component for edit and close buttons.
Create a new component for filter selectors. Allow option for a decorative icon.
Copy the styles and functionality from existing code.
Put the new components in shared folder.
Modify all pages that are using the newly refactored components.
Description: Add Authorization Guard to front-end project so that visitors are redirected to the login page if they are not signed in. When user is not logged in, they can only access the login and register pages. If they are logged in, they may access all pages except the login and register pages.
Description : The "Spending" widget for the dashboard must be designed according the the mock-ups provided. Implement a high-fidelity prototype for the widget, allowing limited interaction with the UI elements. This includes the "Budget" section.
Required
Design "Spending" UI of panel according to mock-up.
Design "Budget" section.
Allow limited interactivity with panel, via front-end objects.
Description: There is no API for deleting existing clothing. Create API to support this functionality, and then stop usage of updating local closetList whenever a clothing item is deleted.
Required
Create API for deleting existing clothing.
Use API when user clicks 'x' on clothing card.
Remove functionality of updating local closetList when remove existing clothing. Instead update closetList using API to get all clothes.