After handing over the application, the client encountered problems while modifying and redeploying it. The primary issue was that the application consistently crashed because Docker's depends_on only ensures that the database container starts, not that it is fully initialized and ready for connections. As a result, the app attempted to connect too early, leading to unexpected failures. After discussing the real behavior of depends_on with a colleague, I implemented a custom management command that runs before the main application command. This script continuously checks the database connection and only allows the application to start once the database is fully ready. This entirely resolved the startup crash and made the deployment flow reliable.
The second issue involved the client not understanding certain API endpoints. Instead of sending static documentation or explanations, I integrated Swagger-UI into the backend, allowing the client to explore endpoints interactively and understand request and response structures clearly. To maintain production quality and simplify the client's workflow, I also deployed the Dockerized application including the API documentation to an EC2 instance with a reverse proxy. This allowed the client to access live documentation through a simple public IP, ensuring clarity, stability, and ease of use.