-
Notifications
You must be signed in to change notification settings - Fork 0
Project Requirements
Eric Xu edited this page May 15, 2022
·
31 revisions
in no particular order
- (UR-1) The user (employees of dealership) can sign into their account, or register if they do not have an account
- (UR-2) The dealer will enter a VIN number into the application which will auto-fill information about the vehicle.
- (UR-3) The user can view all the cars available from a “Browse models” page
- (UR-4) The user will be able to view specific information regarding each car in the dealer’s lot that is available (advanced safety features, miles driven, engine specifications, etc)
- (UR-5) The user will be able to filter for specific cars by feature (safety feature, body type, energy source)
- (UR-6) The user will be able to sort vehicles by criteria (sale price, mileage, profit)
- (UR-7) The application will calculate the net profit of a certain vehicle.
- (UR-8) The application will calculate the amount of time a vehicle has been sitting in inventory.
- (SR-1) The user will use the app via a web or mobile browser
- (SR-2) Database service that holds user information (mySQL)
- (SR-3) Information about a vehicle from its VIN number are obtained through automated API calls
- (SR-4) Have API endpoint for adding, removing vehicles, as well as sorting.
- (SR-5) Have API endpoint for sorting by parameters.
- (SR-6) Mechanism to allow user to upload a CSV file with vehicle VIN and pertaining information.
- (SR-6) Exposed functions for API i/f interface
- Employees of the car dealer
- (FR-1) Requirement from (UR-1): The user (employee of car dealer) will sign in or create an account to access the application.
- (FR-2) Requirement from (UR-2): User can manually enter a VIN number and sales information or upload a CSV with that information and the service will conduct API calls to gather information about the vehicle and store it in a database.
- (FR-3) Requirement from (UR-3): All the vehicles from the database will be presented in a 'Browse Vehicles' page as a card for easy readability and to quickly understand all the vehicles available on one page.
- (FR-4) Requirement from (UR-4): Each 'card' representing a vehicle on the 'Browse Vehicles' page will link to a dynamically routed landing page that shows in a table all the information about that vehicle including specifications, features, and sales information.
- (FR-5) Requirement from (UR-5): On the 'Browse Vehicles' page, dropdowns on the top of the page allow the user to filter by vehicle specs (type, body, make, fuel type, electrification level, drive type, country manufacturers, year), and filter by safety features (adaptive cruise control, rear parking camera, and many more)
- (FR-6) Requirement from (UR-6): On the 'Browse Vehicles' page, dropdowns on the top of the page allow the user to choose what parameters to sort by (price, date added, profit, mileage, and more).
- (FR-7) Requirement from (UR-7): Under each 'card' representing a vehicle in inventory as well as its dynamically routed landing page, a field automatically presents the profit of the vehicle (sale-dealer price).
- (FR-8) Requirement from (UR-8): Under each 'card' representing a vehicle in inventory as well as its dynamically routed landing page, a field presents when a vehicle was updated in inventory as well as a sorting option by updated date.
- (FR-1) Requirement from (UR-1): API endpoints are secured to prevent man-in-the-middle attacks if a user is not logged in.
- (FR-2) General: Material UI is used throughout the front-end for a seamless, easy-to-use, and easy-to-navigate interface.
- (FR-3) General: A search bar in the 'Browse Vehicles' page allows the user to search for a car by make or model, even after selecting filtering or sorting criteria.
- (FR-4) General: Because the solution is targeted toward small car dealers (expected less than 1000 vehicles in inventory), filtering is done by the React component (front-end) level to avoid multiple API calls and query finds. Also, it was decided that all the vehicles are presented on one page as opposed to using pagination so that the user can easily filter and sort through all the vehicles without going through multiple pages.
- (UC-1): From FR-1, the user will go to the address http://localhost:3000/, choose sign-up to create their account and register.
- (UC-2): From FR-2, the employees can enter a VIN number which pulls down information from online sources to add the vehicle to the inventory.
- (UC-3): From FR-3, a card on the 'Browse Vehicle' page presents an overview of the vehicle's information in an easy-to-digest manner.
- (UC-4): From FR-4, each card links to its own landing page with more information.
- (UC-5): From FR-5, the user is able to narrow their browsing results by choosing one or more filters to apply.
- (UC-6): From FR-6, the user will be able to sort the vehicles by certain parameters.
- (UC-7): From FR-7, the employees will be presented with the profit the dealer will gain for each vehicle.
- (UC-8): From FR-8, the employees will be presented with the date the vehicle was added to the inventory.
Some Github branches include a README for that User Story... refer to those for more details on specific progress, scope, and architecture.
- (US-1): Create Proof-of-Concept Java back-end application.
- (US-2): Navigation bar and page routing.
- (US-6): Set up Amazon RDS database for concurrent testing.
- (US-10a,b): Connect Java Proof-Of-Concept to React front-end, implement Browse Vehicle page.
- (US-12): Remove vehicles, add status tag to vehicle object.
- (US-13): Add/remove vehicle by VIN.
- (US-14): Dynamic routing for individual landing page.
- (US-15): Sign up and login.
- (US-16a): Filteirng by features.
- (US-16b): Sorting by parameters.
- (US-17): Secure API endpoints.
- (US-18): Confirmation when vehicle is removed.
- (US-19): Confirmation when vehicle is added.
- (US-20): Unit testing for backend.