{"id":20943941,"url":"https://github.com/eduardoprofe666/aicadocsapi","last_synced_at":"2026-04-27T10:32:18.418Z","repository":{"id":223275104,"uuid":"745732850","full_name":"EduardoProfe666/AicaDocsApi","owner":"EduardoProfe666","description":"📝 Proyecto de Prácticas I de Sistema de Documentación de Aica en Asp.Net 8.0","archived":false,"fork":false,"pushed_at":"2024-04-23T13:36:29.000Z","size":36042,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-12-29T05:50:37.475Z","etag":null,"topics":["aica","api-rest","aspnet","aspnet-core","docs","dotnet","minimal-api","webapi"],"latest_commit_sha":null,"homepage":"https://aicadocsapi.onrender.com","language":"C#","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/EduardoProfe666.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}},"created_at":"2024-01-20T01:30:53.000Z","updated_at":"2024-11-19T19:24:00.000Z","dependencies_parsed_at":"2024-11-18T23:41:34.070Z","dependency_job_id":"343770db-206f-462a-a768-01e4a30bc879","html_url":"https://github.com/EduardoProfe666/AicaDocsApi","commit_stats":null,"previous_names":["eduardoprofe666/aicadocsapi"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/EduardoProfe666/AicaDocsApi","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EduardoProfe666%2FAicaDocsApi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EduardoProfe666%2FAicaDocsApi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EduardoProfe666%2FAicaDocsApi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EduardoProfe666%2FAicaDocsApi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/EduardoProfe666","download_url":"https://codeload.github.com/EduardoProfe666/AicaDocsApi/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EduardoProfe666%2FAicaDocsApi/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32333196,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-26T23:26:28.701Z","status":"online","status_checked_at":"2026-04-27T02:00:06.769Z","response_time":128,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["aica","api-rest","aspnet","aspnet-core","docs","dotnet","minimal-api","webapi"],"created_at":"2024-11-18T23:38:28.733Z","updated_at":"2026-04-27T10:32:18.398Z","avatar_url":"https://github.com/EduardoProfe666.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# AicaDocsApi\n\n![C#](https://img.shields.io/badge/c%23-%23239120.svg?style=for-the-badge\u0026logo=csharp\u0026logoColor=white)\n![.Net](https://img.shields.io/badge/.NET-5C2D91?style=for-the-badge\u0026logo=.net\u0026logoColor=white)\n![Swagger](https://img.shields.io/badge/-Swagger-%23Clojure?style=for-the-badge\u0026logo=swagger\u0026logoColor=white)\n![Postgres](https://img.shields.io/badge/postgres-%23316192.svg?style=for-the-badge\u0026logo=postgresql\u0026logoColor=white)\n![Docker](https://img.shields.io/badge/docker-%230db7ed.svg?style=for-the-badge\u0026logo=docker\u0026logoColor=white)\n![Render](https://img.shields.io/badge/Render-%46E3B7.svg?style=for-the-badge\u0026logo=render\u0026logoColor=white)\n![Railway](https://img.shields.io/badge/Railway-131415?style=for-the-badge\u0026logo=railway\u0026logoColor=white)\n![Test](https://camo.githubusercontent.com/74e33d88a7827d2fafccfcd9325060bc2a1d219d4afa14a71c8852bd876ebe49/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f74657374732d32332532307061737365642d73756363657373)\n\nProyecto de Práctica I de Ingeniería Informática.\n\nSe creó un sistema de para el control de la documentación para el Sistema\nde Gestión de Calidad de la Empresa Laboratorios Farmacéuticos de AICA+.\n\nSe creó una minimal API en Asp.Net Core 8 cumpliendo con todos los requisitos \ncapturados.\n\nSe creó una base de datos en `PostgreSql` robusta con dichos requisitos, y para\nel almacenamiento de los ficheros se empleó [MinIO](https://min.io/)\n\n## 📖 Problemática\n\nEn los Laboratorios Aica se desea llevar un control de la documentación del\nSistema de Gestión de Calidad de la empresa. Esta documentación se organiza\nde acuerdo a un alcance, que puede ser Rector (aplica en toda la empresa) o\nespecífico (aplica en una UEB); un proceso, que corresponde con uno de los\nprocesos definidos en el mapa de procesos de la organización; y un \ntipo de documento, que es definido por los especialistas del Área de Calidad.\nDe estos documentos se conoce el código, título, edición, páginas, fecha\nde vigencia y dos archivos asociados, uno en formato pdf y otro en word. \nSe desea crear un sistema que permita la creación y visualización de esta \ndocumentación. Para ello, se definen los siguientes requisitos:\n- Creación de documentos\n- Búsqueda de documentos, con filtros asociados a cada propiedad del documento\n- Descargar documentos, donde se especifica que archivo se desea descargar (pdf o word) y un motivo de la descarga\n\n\n## 🖼️ Modelo físico de la base de datos\n![modelo fisico](Assets/modelo.png)\n\n## 📶 Configuración de la conexión a la base de datos\nPara poder configurar la conexión a la base de datos en PostgreSQL siga los siguientes pasos:\n1. Cree/Actualice en la ruta raíz del proyecto un archivo `appsettings.json`\n2. En dicho archivo coloque las siguientes líneas, sustituyendo `INFO` por la información \ncorrespondiente en cada caso: \n``` json\n}\n    (...),\n    \"ConnectionStrings\": {\n        \"PostgreSQLConnection\": \"Server=INFO;Port=INFO;Database=INFO;User Id=INFO;password=INFO\"\n    }\n}\n```\n3. Si no tiene la base de datos de Aica, en la consola escriba el siguiente comando: `dotnet ef database update`.\nAsegúrese que tiene las `Migrations`, si no ejecute antes el comando: `dotnet ef migrations add InitialCreate`\n\n## 📶 Configuración de la conexión a MinIO\n\u003e [!IMPORTANT]\n\u003e Se debe tener instalado `MinIO Server` y tener configurado el usuario necesario \n\u003e con permiso de escritura-lectura y el `bucket` en el cual se almacenarán los datos\n\u003e con la estructura de carpetas `/pdf` y `/word`\n\nPara poder configurar la conexión a MinIO siga los siguientes pasos:\n1. Cree/Actualice en la ruta raíz del proyecto un archivo `appsettings.json`\n2. En dicho archivo coloque las siguientes líneas, sustituyendo `INFO` por la información\n   correspondiente en cada caso:\n``` json\n}\n    (...),\n    \"Minio\": {\n       \"Endpoint\": \"INFO\",\n       \"AccessKey\": \"INFO\",\n       \"SecretKey\": \"INFO\",\n       \"Bucket\": \"INFO\"\n    }\n}\n```\n\nOtra posible forma de probar la api es usando el servidor de prueba en la nube de MinIO,\nusando los siguientes datos en el archivo `appsettings.json`:\n``` json\n}\n    (...),\n    \"Minio\": {\n       \"Endpoint\": \"play.min.io\",\n       \"AccessKey\": \"testuser\",\n       \"SecretKey\": \"testuser\",\n       \"Bucket\": \"aica-docs\"\n    }\n}\n```\n\n## 🚀 Despliegue\n\n\u003e [!NOTE]\n\u003e Estos despliegues son solamente para probar la Api en entornos de despliegue,\n\u003e no es para el uso extensivo de la misma.\n\nSe realizó un despliegue de prueba de los 3 servicios básicos de la API:\n- Despliegue del servidor Asp.Net en [Render](https://aicadocs.onrender.com/)\n- Despliegue de la base de datos en [ElephantSQL](https://api.elephantsql.com/)\n- Despliegue del servidor de MinIO en [Railway](https://railway.app/)\n\n## 🎦 AicaDocs UI\n\nSe realizó una prueba en `Razor Pages` para ilustrar como sería un posible escenario\nde consumo de la api. La página se encuentra en el [siguiente enlace](https://aica-docs-ui.onrender.com)\n\n## 🎯 Pruebas de integración automatizadas\n\nSe diseñaron y ejecutaron pruebas de integración automatizadas a la api en la rama \u003cLilian\u003e. \nEl último resultado de las pruebas se encuentra en el ![siguiente enlace](https://github.com/EduardoProfe666/AicaDocsApi/runs/21948336273#r0)\n\n## 👥 Autores\n\u003ctable\u003e\n    \u003ctbody\u003e\n        \u003ctr\u003e\n            \u003ctd align=\"center\" valign=\"top\" width=\"40%\"\u003e\u003ca href=\"https://github.com/LilyRosa\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/135471998?v=3?s=100\" width=\"100px;\" alt=\"Lilian Rosa Rojas Rodríguez\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eLilian Rosa Rojas Rodríguez\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr/\u003e \u003c/td\u003e\n            \u003ctd align=\"center\" valign=\"top\" width=\"40%\"\u003e\u003ca href=\"https://github.com/EduardoProfe666\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/119138695?v=3?s=100\" width=\"100px;\" alt=\"Eduardo Alejandro González Martell\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eEduardo Alejandro González Martell\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr/\u003e \u003c/td\u003e\n        \u003c/tr\u003e\n    \u003c/tbody\u003e\n\u003c/table\u003e\n\n## 👥 Tutores\n- Dr. Carlos Ramón López Paz\n- Msc. Ana Lilian Infante Abreu\n\n## 👥 Especialistas\n\u003ctable\u003e\n    \u003ctbody\u003e\n        \u003ctr\u003e\n            \u003ctd align=\"center\" valign=\"top\" width=\"70%\"\u003e\u003ca href=\"https://github.com/pedrydev\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/54073823?v=3?s=100\" width=\"100px;\" alt=\"Ing. Pedro Velázquez Borrero\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eIng. Pedro Velázquez Borrero\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr/\u003e \u003c/td\u003e\n        \u003c/tr\u003e\n    \u003c/tbody\u003e\n\u003c/table\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feduardoprofe666%2Faicadocsapi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feduardoprofe666%2Faicadocsapi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feduardoprofe666%2Faicadocsapi/lists"}