Challenge Overview
Challenge Objectives
-
Implement Rest API in Python/Flask/MongoDB
Project Background
-
Telecom providers sell products such as broadband and mobile phone contracts. These contracts consist of products of different types and capabilities and that are then sold in different markets. In this project we’re building a forecasting tool to predict variables like volume base, gross adds, churn, net migrations, average revenue per customer, etc
-
We’re implementing the application backend in this challenge
-
In the follow-up challenges we will integrate with the frontend and third party APIs and build a test suite.
Technology Stack
-
Python
-
Flask
-
MongoDb
Code access
The base code is available in the forums and contains user build & configuration instructions and user management endpoints. API specification document (swagger) is available in the repository.
Individual requirements
Base code already contains endpoints for security and user management. The following endpoints are in scope of this challenge:
-
Security (/me, /resetPassword, /forgotPassword)
-
Data import endpoint (sample document is provided in the forums)
-
Forecasting endpoints
These endpoints allow the user to create a new forecast, update an existing one (ex lock it), get forecast values, list existing forecasts etc -
User settings
These endpoints save user settings - favourite charts, chart settings -
Lookup endpoints
These endpoints provide raw lookup values for various dropdowns in the app
General requirements
-
Unit tests are out of scope.
-
All configuration parameters should be extracted to a common settings module. Sensitive configuration parameters should be set from environment variables (DB URL, credentials, etc).
-
Logging is required for all service calls
-
Base code contains lint configuration and your submission should pass the same lint checks (PEP8, etc)
What To Submit
-
All source code
-
Deployment guide
-
Postman collection containing sample calls for all endpoints (success/failure)
-
Verification guide - how to set up the environment, start the API, and verification screenshots