{"id":26614471,"url":"https://github.com/singhalsonal/todos-java21-k8s","last_synced_at":"2026-04-13T13:02:56.055Z","repository":{"id":283901714,"uuid":"953240196","full_name":"SinghalSonal/todos-java21-k8s","owner":"SinghalSonal","description":"Todos crud api with Java 21, Spring 3.4+, Gradle, Mongodb, Redis, and K8s","archived":false,"fork":false,"pushed_at":"2025-03-22T22:31:57.000Z","size":57,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-22T23:22:34.719Z","etag":null,"topics":["java21","k8s","k8s-cluster","kubernetes","mongodb","redis","spring"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SinghalSonal.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-03-22T22:16:09.000Z","updated_at":"2025-03-22T22:32:00.000Z","dependencies_parsed_at":"2025-03-22T23:22:47.111Z","dependency_job_id":"cd990939-4585-4ee3-8c37-716eed7db45e","html_url":"https://github.com/SinghalSonal/todos-java21-k8s","commit_stats":null,"previous_names":["singhalsonal/todos-java21-k8s"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SinghalSonal%2Ftodos-java21-k8s","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SinghalSonal%2Ftodos-java21-k8s/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SinghalSonal%2Ftodos-java21-k8s/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SinghalSonal%2Ftodos-java21-k8s/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SinghalSonal","download_url":"https://codeload.github.com/SinghalSonal/todos-java21-k8s/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245212550,"owners_count":20578484,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["java21","k8s","k8s-cluster","kubernetes","mongodb","redis","spring"],"created_at":"2025-03-24T05:19:51.696Z","updated_at":"2026-04-13T13:02:56.022Z","avatar_url":"https://github.com/SinghalSonal.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# todos-java21-k8s\n\nTodos crud api built using modern tech stack: \n\n* Java 21\n* Gradle 8+\n* Spring Boot 3.4+\n    * Spring Initializr (vscode extension)\n    * Spring Web   \n    * Spring Data: Spring Data MongoDB and Spring Data Redis are used for data access.\n* Cloud Resources\n    * MongoDB\n    * Redis\n* Kubernetes Container\n    * k8s cluster in Docker Desktop\n    * Tilt\n\n## Local Development Setup\n\nHere's how to set up and run the project locally using Docker and Gradle:\n\n### Prerequisites\n\n*   \n*   Java 21 JDK installed.\n*   Gradle installed (or use the Gradle wrapper).\n*   Kubernetes cluster \n    * example: Docker Desktop installed and running with Kubernetes enabled or kind cluster in local\n*   Tilt (mac: brew install tilt)\n\n### Steps\n\n1.  **Build the Application with Gradle:**\n\n    ```bash\n    ./gradlew build\n    ```\n\n    This command builds the application, runs tests, and creates a JAR file in the `build/libs` directory.\n\n3. **Run the application with tilt**\n    \n    ```bash\n    tilt up \n    ```\n\n    This command will execute `TiltFile`, which creates k8s resources defined in `k8s_yaml` folder and start the application, mongodb and redis in k8s cluster.\n\n3. **Stop the services**\n    \n    ```bash\n    tilt down\n    ```\n    This command will stop the k8s deployments and services started by tilt.\n\n### Additional Gradle Commands\n\n*   **Clean:** `./gradlew clean` - Removes the `build` directory.\n*   **Test:** `./gradlew test` - Runs the unit and integration tests.\n\n### Accessing the Application\n\nOnce the application is running, you can access it at `http://localhost:8080`.\nPostman collection and environment files are available at `src/test/resources/postman`.\n\n## Next Phase - libraries / extensions planned\n\n*   **Reactive:**: Spring Web Reactive\n*   **Gateway:** Spring Cloud Gateway\n*   **Rate Limiting:** Resilience4j, Circuit Breaker\n*   **Health/Metrics:** Spring Boot Actuator\n*   **Observability:** Micrometer\n*   **Logging/Security:** Spring Boot Aop, Logback/LogStash\n*   **Security:**: Spring Boot Security, JWT token\n\n## Personal Note\n\nWhile my professional background provided opportunities in .NET and related Azure cloud tech stack, I thoroughly enjoyed learning \u0026 coding in Java \u0026 Go, as well as containerization with Docker and Kubernetes.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsinghalsonal%2Ftodos-java21-k8s","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsinghalsonal%2Ftodos-java21-k8s","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsinghalsonal%2Ftodos-java21-k8s/lists"}