Challenge Overview
Challenge Overview
-
Refactor the existing code to follow the 3-tier architecture
Project background
Proteus platform targeted to achieve resource efficiency, focus on Lean process, standards and policies by assisting in automating device on-boarding and device acceptance process
More specifically, Platform designed to have integration with NMT tools in order to perform device registration and validation for given devices
Technology Stack
-
Backend
-
Python 2.7
-
Flask
-
MySql
-
Celery + Flower + Redis
-
-
Frontend
-
React - React Hooks and Material UI
-
Individual Requirements
The existing code has the front-end and back-end code mixed up, we want to refactor the code to follow the 3-tier architecture, so that the front-end and back-end can be deployed separately.
In existing code, some front-end pages are implemented as flask templates, and some pages are implemented with React.js, and these pages are compiled and served by the flask.
After refactoring, all front-end pages should be moved into a front-end project using React.js only, and it will communicate with the back-end through the exposed REST API. For any new or updated React.js code, make sure you follow the same pattern as existing code.
Please also remove the current LDAP authentication, and make the login api return a JWT token, all the other APIs should be protected by the JWT token in Authorization Header. (Note that we will change to use Okta SSO later).
The existing code will also interact with several external systems:
-
BCG API - you should mockup this API
-
VA (Validation) API - you should mockup this API
-
Devices Connection (check the celery tasks code) - you can define a separate “topcoder-dev” environment variable to skip these code.
We also created a code analysis document earlier for the existing app (using a slightly older codebase), you may find it helpful: https://docs.google.com/document/d/1rmMulEQLEVpCjobz0wl3cbQYIsQFdtlRGblWOSUWmms/edit#heading=h.x296ek6b6z98
Final Submission Guidelines
Submission Deliverable
-
Source code with two directories for front-end and back-end separately
-
Detailed Deployment and Verification Guide