{"id":21581537,"url":"https://github.com/thoughtscript/kotlin_2024","last_synced_at":"2026-04-29T14:38:46.219Z","repository":{"id":245654946,"uuid":"805103409","full_name":"Thoughtscript/kotlin_2024","owner":"Thoughtscript","description":"Experiments with Kotlin","archived":false,"fork":false,"pushed_at":"2024-12-29T23:22:02.000Z","size":82,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-04T18:19:31.164Z","etag":null,"topics":["docker-compose","kotlin","ktor"],"latest_commit_sha":null,"homepage":"","language":"Kotlin","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/Thoughtscript.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"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,"zenodo":null}},"created_at":"2024-05-23T22:23:26.000Z","updated_at":"2025-05-13T00:38:47.000Z","dependencies_parsed_at":"2024-06-23T07:02:25.775Z","dependency_job_id":"158f6b7e-d1be-4ff5-b94a-f136d233d62e","html_url":"https://github.com/Thoughtscript/kotlin_2024","commit_stats":null,"previous_names":["thoughtscript/kotlin_2024"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Thoughtscript/kotlin_2024","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Thoughtscript%2Fkotlin_2024","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Thoughtscript%2Fkotlin_2024/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Thoughtscript%2Fkotlin_2024/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Thoughtscript%2Fkotlin_2024/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Thoughtscript","download_url":"https://codeload.github.com/Thoughtscript/kotlin_2024/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Thoughtscript%2Fkotlin_2024/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32429611,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-29T13:34:34.882Z","status":"ssl_error","status_checked_at":"2026-04-29T13:34:29.830Z","response_time":110,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["docker-compose","kotlin","ktor"],"created_at":"2024-11-24T14:12:51.577Z","updated_at":"2026-04-29T14:38:46.202Z","avatar_url":"https://github.com/Thoughtscript.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"# kotlin_2024\r\n\r\n[![](https://img.shields.io/badge/Kotlin-1.9.22-purple.svg)](https://kotlinlang.org/) [![](https://img.shields.io/badge/ktor-2.3.11-purple.svg)](https://ktor.io/docs/welcome.html)\r\n[![](https://img.shields.io/badge/gradle-8.7-blue.svg)](https://docs.gradle.org/current/userguide/userguide.html)\r\n\r\nExperiments with `Kotlin` and `Ktor` using `Docker` and `Gradle`.\r\n\r\nRevisiting  `Kotlin` since it's been a while.\r\n\r\n## Setup and Installation\r\n\r\n```bash\r\ndocker-compose up\r\n\r\n# If using Docker Compose Engine V2:\r\ndocker compose up\r\n```\r\n\r\n\u003e The `Kotlin` container will exist after starting since it just runs some code and stops. Check the Docker logs to see the outputs and verify it's working.\r\n\r\n## API\r\n\r\n\u003e See [./test.sh](./test.sh)\r\n\r\n## TODO Study List\r\n\r\n\u003e Summary: build a REST CRUD API, practice some basics, and figure out all the dev env setup.\r\n\r\n- [x] Practice Kotlin basics\r\n- [x] Implement API endpoints in `Ktor`\r\n- [x] Review some `Gradle` basics\r\n  - [x] Verify adding **Version Variables** in KTS\r\n- [x] Add newest `Gradle` with `Kotlin` and dependencies\r\n  - [x] Update Desktop `Gradle` version to `8.7` to correctly initialize the `ktor` image\r\n  - [x] Correctly initialize the `ktor` image with `8.7`\r\n- [x] Dockerize everything with correct commands\r\n  - [x] Ensure `Kotlin` installed correctly\r\n  - [x] Verify compilation and build only requires plugins not `kotlinc`\r\n  - [x] Determine if `kotlinc` is required at all (and if it's even present)\r\n- [x] Review `Gradle` build topics specific to `Kotlin`\r\n\r\n## Resources and Links \r\n\r\n1. https://kotlinlang.org/\r\n2. https://github.com/ktorio/ktor-documentation/tree/2.3.11/codeSnippets/snippets/tutorial-http-api\r\n3. https://stackoverflow.com/questions/37231560/best-way-to-null-check-in-kotlin\r\n4. https://www.baeldung.com/kotlin/void-type\r\n5. https://dev.to/nfrankel/the-pitfall-of-implicit-returns-41ln\r\n6. https://www.geeksforgeeks.org/returns-jumps-and-labels-in-kotlin/\r\n7. https://dev.to/vtsen/understand-kotlin-function-literal-with-receiver-by-example-1d13\r\n8. https://kotlinlang.org/docs/lambdas.html\r\n9. https://www.baeldung.com/kotlin/finding-element-in-list\r\n10. https://www.baeldung.com/kotlin/lists\r\n11. https://www.baeldung.com/kotlin/static-methods\r\n12. https://www.kodeco.com/books/kotlin-coroutines-by-tutorials/v2.0/chapters/5-async-await\r\n13. https://kotlinlang.org/docs/classes.html#companion-objects\r\n1. https://www.baeldung.com/kotlin/singleton-classes\r\n1. https://kotlinlang.org/docs/null-safety.html#checking-for-null-in-conditions\r\n2. https://kotlinlang.org/docs/properties.html#late-initialized-properties-and-variables\r\n2. https://www.baeldung.com/kotlin/checking-lateinit\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthoughtscript%2Fkotlin_2024","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthoughtscript%2Fkotlin_2024","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthoughtscript%2Fkotlin_2024/lists"}