With such strict conditions, the best approach is to be flexible. According to the principles of agile, iterative development, we modified our architecture and changed the conceptual ideas as required.
The primary rule is not to focus too much on a rigidly defined technology stack, choosing a particular solution and being afraid to deviate from the plan. Following the LEAN approach, we delayed most of the initial features and ideas at the early development stages with the intention of introducing them later.
We chose the tools that, we believed, would give us the chance of meeting the deadline for the project without compromising quality. Those were Python, Django, and Celery for backend; Vue.js for frontend; Docker, Compose and AWS for DevOps and a flexible microservices architecture.