Reference no: EM133351772
Web application development project
Synopsis
Your team has to take over a web application development project. The overall goal is to expand the original project, add new features and expand documentation. You will have to assess existing code and NOT start an application from scratch.
The application is following a standard full-stack architecture using the MEVN stack (MongoDB, Express, VueJS, Node).
This is a prototype implementation, e.g. we are not following all best practices for securing a web application.
Requirements
a. Add user login capabilities to the application. The front-end should have a login page that allows a user to login. When a user is not logged in, they should not see and be able to access the menu option pertaining to client and event management. They should only see the dashboard. Users can have 2 roles: viewers or editors. Viewers, for instance, should be allowed to access the "Find Client" and "Find Event" pages but not the "Client Intake Form", the "Create Event Form" or the functionalities related to editing client or event information. Editors can access all pages/functionalities.
You need to create a login page, update navigation, and also update the backend. You will not need to create user registration, password reset etc. functionalities. Passwords should be sent and stored as "hashed strings" (see https://stackoverflow.com/questions/43092071/how-should-istore-salts-and-passwords-in-mongodb for a simple example). Users and their roles will be set up in the database directly by a DB admin. Users will not need access across organizations (they will essentially belong to one organization/instance only).
b. Add Services at the data layer and implement CRUD functionality.
Events offer a list of services. The list of services is currently hard-coded. You need to create functionality that allows the creation, modification, and soft deletion (active/not active) of services for an instance (meaning the list of services can be different for different organizations). The navigation in the front-end must be extended to reflect the new functionality and page(s) have to be implemented that allow users to create and edit the services. When an event is created it should pull the list of services from an API endpoint and only show currently active services.
Users with the Role "Viewer" need to be able to see the List of Services but won't be able to create or edit them. Editors will be able to access all pages/functionalities related to Services.
c. The Dashboard page should be extended with a Pie or Doughnut chart that shows clients by zip code.
When you work on the front-end during Sprint 1, you can use "hard-coded" data for the graph. During Sprint 3, you need to create an API endpoint to provide the data dynamically.
Attachment:- Synopsis.rar