{"id":49443108,"url":"https://github.com/detivenc/ktortemplatedockerized","last_synced_at":"2026-04-29T21:02:49.292Z","repository":{"id":235661368,"uuid":"770615697","full_name":"detivenc/ktortemplatedockerized","owner":"detivenc","description":"A simple web service template for creating an Ktor+PostgreSQL+Docker+JWT app","archived":false,"fork":false,"pushed_at":"2026-04-23T19:23:15.000Z","size":2211,"stargazers_count":1,"open_issues_count":1,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-04-23T21:24:52.884Z","etag":null,"topics":["docker","exposed","jwt","kotlin","ktor","kubernetes"],"latest_commit_sha":null,"homepage":"","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/detivenc.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-03-11T21:16:35.000Z","updated_at":"2026-04-23T19:23:17.000Z","dependencies_parsed_at":"2024-04-24T06:41:13.210Z","dependency_job_id":"6adb246a-0bd3-49b7-bf3a-28d939c9fe57","html_url":"https://github.com/detivenc/ktortemplatedockerized","commit_stats":null,"previous_names":["detivenc/springtemplatedockerized","detivenc/ktortemplatedockerized"],"tags_count":0,"template":true,"template_full_name":null,"purl":"pkg:github/detivenc/ktortemplatedockerized","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/detivenc%2Fktortemplatedockerized","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/detivenc%2Fktortemplatedockerized/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/detivenc%2Fktortemplatedockerized/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/detivenc%2Fktortemplatedockerized/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/detivenc","download_url":"https://codeload.github.com/detivenc/ktortemplatedockerized/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/detivenc%2Fktortemplatedockerized/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32443576,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-29T20:22:27.477Z","status":"ssl_error","status_checked_at":"2026-04-29T20:22:26.507Z","response_time":110,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: 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","exposed","jwt","kotlin","ktor","kubernetes"],"created_at":"2026-04-29T21:02:48.231Z","updated_at":"2026-04-29T21:02:49.282Z","avatar_url":"https://github.com/detivenc.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://skillicons.dev\"\u003e\n    \u003cimg src=\"https://skillicons.dev/icons?i=githubactions,kubernetes,docker,kotlin,postgres,ktor\u0026perline=7\" /\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003ch1 align=\"center\"\u003eKtor Template Dockerized\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003ePlantilla profesional de Ktor lista para producción con Docker, Kubernetes e integración de IA.\u003c/strong\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://img.shields.io/github/license/DeTiveNC/ktortemplatedockerized\" alt=\"Licencia\" /\u003e\n  \u003cimg src=\"https://img.shields.io/github/contributors/DeTiveNC/ktortemplatedockerized?color=dark-green\" alt=\"Colaboradores\" /\u003e\n  \u003cimg src=\"https://img.shields.io/github/stars/DeTiveNC/ktortemplatedockerized?style=social\" alt=\"Estrellas\" /\u003e\n  \u003cimg src=\"https://img.shields.io/github/issues/DeTiveNC/ktortemplatedockerized\" alt=\"Issues\" /\u003e\n\u003c/p\u003e\n\n---\n\n## 🚀 Descripción General\n\nEsta plantilla proporciona una base sólida y escalable para construir backends modernos utilizando **Ktor**. Está diseñada con un enfoque \"listo para producción\", incluyendo contenerización, integración con bases de datos, seguridad JWT y soporte experimental para agentes de IA mediante **Koog**.\n\nEl proyecto utiliza **Amper**, la herramienta de construcción simplificada de JetBrains, para una experiencia de configuración más limpia en comparación con los setups tradicionales de Gradle.\n\n### ✨ Características Principales\n\n- ⚡ **Ktor 3.4.0**: Framework web asíncrono de alto rendimiento para Kotlin.\n- 📦 **Docker \u0026 Compose**: Contenerización fluida y entorno de desarrollo local listo.\n- 🎡 **Helm**: Gestión de despliegues simplificada mediante charts de Helm para Kubernetes.\n- 🗄️ **Exposed 1.1.1**: Framework SQL de tipado seguro para Kotlin.\n- 🔐 **Seguridad JWT**: Endpoints protegidos mediante autenticación JWT.\n- 🤖 **Integración de IA**: Soporte integrado para agentes de IA utilizando la librería Koog.\n- 🛠️ **Sistema de Construcción Amper**: Configuración basada en YAML para dependencias y builds.\n\n---\n\n## 📁 Estructura del Proyecto\n\n```text\n├── .github/workflows   # Pipelines de CI/CD\n├── gradle/             # Catálogo de versiones (libs.versions.toml)\n├── ktortemplatedockerized-chart/ # Chart de Helm para despliegue\n├── src/\n│   ├── Application.kt  # Punto de entrada de la aplicación\n│   └── plugins/        # Configuraciones de características de Ktor\n│       ├── AI.kt       # Configuración de Agentes de IA\n│       ├── Databases.kt# Configuración de Exposed \u0026 PostgreSQL\n│       ├── Routing.kt  # Definición de endpoints de la API\n│       ├── Security.kt # Configuración de JWT \u0026 Autenticación\n│       └── ...\n├── module.yaml         # Configuración de construcción de Amper\n├── Dockerfile          # Build optimizado multi-etapa\n└── docker-compose.yaml # Stack de desarrollo local\n```\n\n---\n\n## 🛠️ Comenzando\n\n### Requisitos Previos\n\n- **JDK 21+**\n- **Docker \u0026 Docker Compose**\n- **Amper** (Incluido mediante el wrapper `./amper`)\n\n### Instalación y Ejecución\n\n1. **Clonar el repositorio:**\n   ```bash\n   git clone https://github.com/DeTiveNC/ktortemplatedockerized.git\n   cd ktortemplatedockerized\n   ```\n\n2. **Ejecutar localmente (Desarrollo):**\n   ```bash\n   ./amper run\n   ```\n\n3. **Ejecutar con Docker Compose:**\n   ```bash\n   docker-compose up --build\n   ```\n\n---\n\n## 🔒 Seguridad y Configuración\n\nLa aplicación se configura a través de `resources/application.yaml` y variables de entorno.\n\n| Variable      | Descripción                      | Valor por Defecto                           |\n|---------------|----------------------------------|---------------------------------------------|\n| `DB_URL`      | URL de conexión JDBC             | `jdbc:postgresql://localhost:5432/postgres` |\n| `DB_USERNAME` | Usuario de la base de datos      | `postgres`                                  |\n| `DB_PASSWORD` | Contraseña de la base de datos   | `postgres`                                  |\n| `JWT_SECRET`  | Clave secreta para firma JWT     | `change-this-secret-in-production`          |\n\n\u003e [!IMPORTANT]\n\u003e Cambia siempre el `JWT_SECRET` y las credenciales de la base de datos antes de desplegar en un entorno de producción.\n\n---\n\n## 🔌 Endpoints de la API\n\n- **Health:** `GET /health` -\u003e Retorna `{\"status\": \"UP\"}`\n- **Auth:** `POST /auth/login` -\u003e Retorna un token JWT.\n- **Secure:** `GET /secure` -\u003e (Requiere JWT) Saluda al usuario autenticado.\n- **AI Chat:** `POST /ai/chat` -\u003e (Requiere JWT) Interfaz con el agente de IA.\n\n---\n\n## 🚢 Despliegue\n1. Construye la imagen de Docker:\n   ```bash\n   docker build -t ktor-app:latest .\n   ```\n\n2. Instala el Chart de Helm:\n   ```bash\n   helm install ktortemplatedockerized ./ktortemplatedockerized-chart\n   ```\n\n3. (Opcional) Actualiza el Chart:\n   ```bash\n   helm upgrade ktortemplatedockerized ./ktortemplatedockerized-chart\n   ```\n\n---\n\n## 🤝 Contribuir\n\n¡Las contribuciones son bienvenidas! Siéntete libre de enviar un Pull Request.\n\n1. Haz un Fork del proyecto.\n2. Crea tu rama de características (`git checkout -b feature/NuevaCaracteristica`).\n3. Realiza tus cambios (`git commit -m 'Añadir NuevaCaracteristica'`).\n4. Sube los cambios a tu rama (`git push origin feature/NuevaCaracteristica`).\n5. Abre un Pull Request.\n\n---\n\n## 📄 Licencia\n\nDistribuido bajo la **Licencia MIT**. Consulta `LICENSE` para más información.\n\n---\n\n\u003cp align=\"center\"\u003e\n  Hecho con ❤️ por \u003ca href=\"https://github.com/detivenc\"\u003eNicolas Cao\u003c/a\u003e\n\u003c/p\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdetivenc%2Fktortemplatedockerized","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdetivenc%2Fktortemplatedockerized","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdetivenc%2Fktortemplatedockerized/lists"}