Language: Python 3.7.
Framework: Django, Django Rest Framework
Libraries: django-allauth, celery
Storage: PostgreSQL, Redis for cache and queues. May also use lazy queues over PostgreSQL, may shift non-lazy queues to RabbitMQ.
Front-end:
- any popular framework chosen by front-end team,
- plot lib should be the same we will use in CI/CD.
I would take a look at d3.js/c3.js:
- d3 is very flexible: can do anyhting including anymations, efficient,
- d3 is low level, hard to get unless you already do,
- c3 provides a higher level abstraction, which is really easy to use,
- c3 might not cover all our needs, but we can add our own high-level abstractions on top of d3.
We can take a look at Data Science oriented plot libs, but last time I took a look, which was 3 years ago, they all had some of the following flaws:
- python centric, no way to use in js front-end
- hard to extend, which may bite later
Use docker + docker-compose for local working copies. A backend and a front-end in the separate docker images, this makes it easy to ignore each others mumbo jumbo.
Use Amazon EKS, keep docker images there as close as possible to their dev versions. Staging server for dev
branch.
Start with push into dev, review later. PRs when need to discuss/ask for advice. Switch to PRs only when we are out of rapid dev stage.