1. Single flask app in docker with in-memory SQL with /create
and /vote
without any reliability or queing or caching
- (/) Conda env
- (/) Flask app skeleton
- (/) Plain docker image
- (/) Proper logging and basic config file
- (/) Proper metrics
- (/)
Status
endpoint, or rather, readiness + liveness probe - (/)
Create
endpoint dummily accepting parameters - (/)
Vote
endpoint dummily accepting parameters - (/) In-memory DB added to dependencies and initialised with a test write, as a part of readiness probe
- (/) DDL statements
- (/)
Create
endpoint to check if pollId is free and persist its input parameters - (/)
Vote
endpoint to check first whether pollName exists and to persist its input parameters according to poll's settings - (/)
Report
endpoint to return poll's results in an aggregated form - (/) Externally specifiable config file
- (/) PyTest + Flask test suite
- (/) Publish to dockerhub
- (/) Flake8 linting
- (/) Explore GitHub Actions for continuous testing
- (/) Explore GitHub Actions for DockerHub push
- (/) Minikube deployment (not supporting multi-instance deployment)
- () TBD
- () In-memory cache for the DB reads
- () Prometheus instance for local deployments and testing
- () Extend Minikube deployment accordingly
- () TBD
- () Extend Minikube deployment accordingly
- () TBD
- () Load ballancer with https allowed only
- () TBD
- (/) Fix packaging and distribution
- () Introduce SQLAlchemy
- () Proper Type Hints
- () Solve the double stdout logging, and pre-logging outputs
- () Fix the pip freeze setuptools bug
- () Specifying the set of actors in advance
- () Throw differential privacy into the mix by allowing "switch of the true vote" to another option with certain probability
- () Decorators for simplified arg-parse and logging handling
- () extend
Report
endpoint with actuall stats analysis - () separate runtime and test dependencies