Quick-reference checklist ************************* This checklist is a rough guide to productionizing applications as part of arXiv NG. - [ ] Code quality goals are met or exceeded. - [ ] 90%+ of statements are exercised by :ref:`automated tests `. - [ ] :ref:`Integration tests for each external dependency/upstream service `. - [ ] :ref:`Static checks pass (mypy) `. - [ ] :ref:`Pylint passes at 9/10 or better `. - [ ] :ref:`Pydocstyle passes `. - [ ] (UI only) Meets or exceeds WCAG 2.1 Level A. - [ ] Documentation: - [ ] Repository has a ``gh-pages`` branch with :ref:`architectural ` and :ref:`code API documentation `. - [ ] An :ref:`OpenAPI schema ` describing the service API (with examples) is present in ``schema/``, with references to JSON Schema as appropriate. - [ ] A :ref:`JSON Schema ` document for each API resource is present in ``schema/resources/``. - [ ] Application considerations: - [ ] Implementation is consistent with :ref:`internal-architecture-flask-implementation`. - [ ] :ref:`All parameters in the application configuration have informative doc-strings `. - [ ] :ref:`WSGI module (or other entry-point) creates a persistent Flask application object `. - [ ] A :ref:`status endpoint ` is defined that indicates the readiness of the service to handle requests. Should reflect availability of :ref:`upstream dependencies `. - [ ] The :ref:`application factory ` initializes connections to all :ref:`upstream dependencies `. - [ ] :ref:`A uWSGI config is present `. - [ ] :ref:`A Dockerfile that extends the arXiv base image is present `. - [ ] A ``docker-compose.yml`` configuration is present, demonstrating deployment for dev/test purposes. - [ ] Deployment considerations: - [ ] A Helm chart is present in ``deploy/``. - [ ] A readiness probe is defined for the deployment that uses the status endpoint. - [ ] Resource limits for the deployment are explicitly set. - [ ] Details about the deployment/scaling considerations and dependencies (including upstream services) are documented in ``DEPLOYMENT.md`` in the root of the repository. - [ ] :ref:`Travis is configured ` to package and distribute the Helm chart on tagged commits. - [ ] :ref:`Travis is configured ` to deploy the application using the Helm chart to development and/or staging namespaces, as appropriate.