Pokédex Manager / Compose to bring it up and a quality chain that does not skip persistence.
Operations
Docker Compose brings up MongoDB and the application; the container initializes indexes before the server, and an incompatible index contract blocks startup instead of running against an ambiguous database. GitHub Actions runs a dependency audit, lint, formatting, types, integration tests against a real MongoDB, and the build.
Docker Compose brings up MongoDB and the application with local development values.
The container initializes and verifies the indexes before starting the server.
GitHub Actions runs the audit, lint, formatting, types, tests, and build on every push.
How I built it
Initialization is idempotent: it creates or verifies indexes, deletes no documents, and fails if an existing index contradicts the expected contract, so nothing starts against an ambiguous database. Integration tests run against a real MongoDB, because per-account isolation and unique indexes are exactly what a test double does not check.