Certificate
Kotlin track certificate: criteria, project brief, rubric.
Kotlin — certificate
EXAMPLE
# ===== Award criteria ===== # Pass: >= 70%; Distinction >= 85%. # # 1. Project structure (10) # 2. Idiomatic Kotlin (15) # 3. Null safety + types (10) # 4. Coroutines (15) # 5. JVM (Spring Boot / Ktor) (15) # 6. Tests (15) # 7. Build + deploy (Docker) (10) # 8. Communication (10) # ===== Project brief ===== # Ship a small Kotlin service: # - Spring Boot or Ktor; pick one # - 4+ endpoints with validation # - Postgres via Exposed / sqlDelight / JPA # - Coroutines for async operations # - Test coverage > 70% (JUnit 5 + MockK + Testcontainers) # - Multi-stage Dockerfile producing a < 80 MB image # - GitHub Actions CI (gradle build + test on every PR) # - README + ARCHITECTURE + RUNBOOK # Ideas: # - URL shortener # - Task tracker API # - Inventory service # - Webhook receiver # ===== Sample structure ===== # shop/ # src/main/kotlin/ # com/example/shop/ # Application.kt # api/ # domain/ # storage/ # config/ # src/test/kotlin/... # src/main/resources/application.yml # build.gradle.kts # Dockerfile # docker-compose.yml # README.md # docs/ARCHITECTURE.md # ===== Marking sheet (example) ===== # 1. Structure 9/10 layered, small files # 2. Idiomatic 13/15 data class, sealed, scope functions # 3. Null safety 9/10 no !! in production paths # 4. Coroutines 13/15 structured scopes, no GlobalScope # 5. JVM API 14/15 Spring Boot or Ktor done cleanly # 6. Tests 13/15 MockK + Testcontainers # 7. Deploy 9/10 multi-stage Docker, distroless base # 8. Communication 9/10 README, ADRs, runbook # Total: 89/100 -> Distinction # ===== Patterns to internalise ===== # - val + nullable types in signatures # - data class for value carriers # - sealed class for closed hierarchies # - Coroutines with structured scopes # - JUnit 5 + MockK + Testcontainers for tests # - Multi-stage Docker; distroless base in production # - JVM tuning if needed (G1, ZGC) # ===== Pitfalls ===== # - !! everywhere -> defeats null safety # - GlobalScope in production # - Mutable JPA entities + data class (don't) # - No test coverage on critical paths # - 'Latest' tags shipped to production
Why it matters
Kotlin certificate: ship a Spring Boot or Ktor service with idiomatic Kotlin + coroutines + tests + Docker + CI. The same shape works for backends and CLI tools; pin the rubric and the cert demonstrates production-quality work.
Tip: Tweak the snippet with Try it Yourself », then sit the quiz at the bottom of the page.
Discussion
Loading…