{"id":31651389,"url":"https://github.com/skyzerozx/isekai_orpheus_bot","last_synced_at":"2025-10-07T08:55:01.779Z","repository":{"id":41551866,"uuid":"438120512","full_name":"SkyZeroZx/Isekai_Orpheus_Bot","owner":"SkyZeroZx","description":"FrontEnd para el proyecto Isekai Bot","archived":false,"fork":false,"pushed_at":"2022-08-28T19:58:47.000Z","size":41860,"stargazers_count":7,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-04-09T22:46:34.187Z","etag":null,"topics":["angular","cypress","e2e-testing","jasmine","karma","pwa","sonarqube","unit-testing"],"latest_commit_sha":null,"homepage":"https://isekai-orpheus-bot.vercel.app/#/login","language":"TypeScript","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/SkyZeroZx.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-12-14T04:46:47.000Z","updated_at":"2024-04-09T22:46:34.188Z","dependencies_parsed_at":"2023-01-16T18:15:45.065Z","dependency_job_id":null,"html_url":"https://github.com/SkyZeroZx/Isekai_Orpheus_Bot","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/SkyZeroZx/Isekai_Orpheus_Bot","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SkyZeroZx%2FIsekai_Orpheus_Bot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SkyZeroZx%2FIsekai_Orpheus_Bot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SkyZeroZx%2FIsekai_Orpheus_Bot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SkyZeroZx%2FIsekai_Orpheus_Bot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SkyZeroZx","download_url":"https://codeload.github.com/SkyZeroZx/Isekai_Orpheus_Bot/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SkyZeroZx%2FIsekai_Orpheus_Bot/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278747540,"owners_count":26038707,"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","status":"online","status_checked_at":"2025-10-07T02:00:06.786Z","response_time":59,"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":["angular","cypress","e2e-testing","jasmine","karma","pwa","sonarqube","unit-testing"],"created_at":"2025-10-07T08:54:58.681Z","updated_at":"2025-10-07T08:55:01.772Z","avatar_url":"https://github.com/SkyZeroZx.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Isekai Orpheus Bot\n\n\u003cp align=\"center\"\u003e\n\u003ca href=\"https://sonarcloud.io/project/overview?id=SkyZeroZx_Isekai_Orpheus_Bot\" target=\"_blank\"\u003e\n\u003cimg src=\"https://sonarcloud.io/api/project_badges/measure?project=SkyZeroZx_Isekai_Orpheus_Bot\u0026metric=alert_status\" alt=\"Quality Gate\" /\u003e\u003c/a\u003e\n\u003ca href=\"https://sonarcloud.io/project/overview?id=SkyZeroZx_Isekai_Orpheus_Bot\" target=\"_blank\"\u003e\n\u003cimg src=\"https://sonarcloud.io/api/project_badges/measure?project=SkyZeroZx_Isekai_Orpheus_Bot\u0026metric=coverage\" alt=\"Coverage\" /\u003e\u003c/a\u003e\n\u003ca href=\"https://sonarcloud.io/project/overview?id=SkyZeroZx_Isekai_Orpheus_Bot\" target=\"_blank\"\u003e\n\u003cimg src=\"https://sonarcloud.io/api/project_badges/measure?project=SkyZeroZx_Isekai_Orpheus_Bot\u0026metric=vulnerabilities\" alt=\"Vulnerabilities\" /\u003e\u003c/a\u003e\n\u003ca href=\"https://sonarcloud.io/project/overview?id=SkyZeroZx_Isekai_Orpheus_Bot\" target=\"_blank\"\u003e\n\u003cimg src=\"https://sonarcloud.io/api/project_badges/measure?project=SkyZeroZx_Isekai_Orpheus_Bot\u0026metric=bugs\" alt=\"Bugs\" /\u003e\u003c/a\u003e\n\u003ca href=\"https://sonarcloud.io/project/overview?id=SkyZeroZx_Isekai_Orpheus_Bot\" target=\"_blank\"\u003e\n\u003cimg src=\"https://sonarcloud.io/api/project_badges/measure?project=SkyZeroZx_Isekai_Orpheus_Bot\u0026metric=security_rating\" alt=\"Security Rating\" /\u003e\u003c/a\u003e\n\u003ca href=\"https://sonarcloud.io/project/overview?id=SkyZeroZx_Isekai_Orpheus_Bot\" target=\"_blank\"\u003e\n\u003cimg src=\"https://sonarcloud.io/api/project_badges/measure?project=SkyZeroZx_Isekai_Orpheus_Bot\u0026metric=code_smells\" alt=\"Code Smells\"/\u003e\u003c/a\u003e\n\u003ca href=\"https://sonarcloud.io/project/overview?id=SkyZeroZx_Isekai_Orpheus_Bot\" target=\"_blank\"\u003e\n\u003cimg src=\"https://sonarcloud.io/api/project_badges/measure?project=SkyZeroZx_Isekai_Orpheus_Bot\u0026metric=sqale_rating\" alt=\"Maintainability Rating\"/\u003e\u003c/a\u003e\n\u003cimg src=\"https://badgen.net/badge/Built%20With/TypeScript/bl\" alt=\"Build With TypeScript\" /\u003e\n\u003cimg src=\"https://img.shields.io/badge/Made%20for-VSCode-1f425f.svg\" alt=\"Build With TypeScript\" /\u003e\n\u003c/p\u003e\n\n_Es el modulo web del sistema de gestion de tramites registrados via ChatBot y seguimiento de tramites_\n\n_Adicionalmente funciona como PWA(Progresive Web App) que puede integrarse en cualquier dispositivo movil_\n\n## :ledger: Index\n\n- [Pre-Requisitos](#pre-requisitos-)\n- [Instalación](#instalación-)\n- [PWA](#ejecutando-como-PWA-)\n- [Desarrollo](#desarollo-%EF%B8%8F)\n  - [Unit-Test](#pruebas-unitarias-jasminekarma%EF%B8%8F)\n  - [E2E-Test](#Pruebas-End-To-End-)\n- [Analisis de calidad de codigo](#analisis-de-calidad-de-codigo)\n- [Integración Continua](#integración-continua)\n- [Despliegue](#despliegue-)\n  - [Build](#build)\n  - [Docker](#docker)\n- [Construido](#construido-con-%EF%B8%8F)\n- [Autores](#autores-)\n\n## Comenzando 🚀\n\n_Estas instrucciones te permitirán obtener una copia del proyecto en funcionamiento en tu máquina local para propósitos de desarrollo y pruebas._\n\n_Puede visualizar una Demo del Proyecto en el siguiente enlace : https://isekai-orpheus-bot.vercel.app/#/login_\n\n_**Administrador**_\n\n```\nadminDemo@gmail.com\nAdmin2\n```\n\n_**Tramitador**_\n\n```\ntramitadorDemo@gmail.com\nAdmin2\n```\n\nMira **Deployment** para conocer como desplegar el proyecto.\n\n### Pre-requisitos 📋\n\n_Software requerido_\n\n```\nNodeJS \u003e= 14.X\nNPM \u003e= 8.X\nAngularCli \u003e= 13.X\n```\n\n_Software opcional_\n\n```\nVisual Studio Code ( O el editor de su preferencia)\n```\n\n### Instalación 🔧\n\n_Para ejecutar un entorno de desarrollo_\n\n_Previamente ejecutar el comando en la terminal para descargar \"node_modules\" para el funcionamiento del proyecto_\n\n```\nnpm install\n```\n\n_Previamente configurar la ruta del API que consumira nuestro proyecto en el archivo **\"src/environments/environment.ts\"** campo **API_URL**_\n\n_Para ejecutar un servidor de pruebas local usar el comando donde **\"PUERTO\"** sera el puerto donde deseamos ejecutar el proyecto , por default **ng serve** ejecuta el puerto 4200_\n\n```\nng serve --port [PUERTO]\n```\n\n_Dirigirse a la ruta http://localhost:4200/#/login/ se tendra la pantalla de Login del sistema existiendo 2 roles_\n\n_**Login** : Apartado de inicio de sesion para ambos tipos de roles_\n\n![Login](/docs/Layout/login.PNG)\n\n_**Change Password** : Apartado para el cambio de contraseña_\n\n![Change Password](/docs/Layout/change_password.PNG)\n\n_**DashBoard** : Apartado con graficos sobre las cantidad de estados con filtros de fechas_\n\n![DashBoard 1](/docs/Layout/dashboard_1.PNG)\n\n![DashBoard 2](/docs/Layout/dashboard_2.PNG)\n\n![DashBoard 3](/docs/Layout/dashboard_3.PNG)\n\n_**Rol Administrador** : Rol que gestiona Usuarios y Documentos , comparte el dashboard con el rol tramitador_\n\n_*Usuarios*_\n\n![Admin Users](/docs/Layout/admin_users.PNG)\n\n_*Documentos*_\n\n![Admin Docs](/docs/Layout/admin_docs.PNG)\n\n_**Rol Tramitador** : Rol que gestiona los tramites de los estudiantes , comparte el dashboard con el rol administrador_\n\n_*Tramites*_\n\n![Tramitador Tramites](/docs/Layout/tramitador_1.PNG)\n\n![Tramitador Tramites](/docs/Layout/tramitador_2.PNG)\n\n![Tramitador Tramites](/docs/Layout/tramitador_3.PNG)\n\n_**Tracking** : Apartado para el seguimiento del tramite por parte de los estudiantes_\n\n![Tracking](/docs/Layout/tracking.PNG)\n\n## Ejecutando como PWA 👨🏻‍💻\n\n_Para ejecutar como PWA(Progressive Web App) , previamente debe tenerse instalado la libreria http-serve_\n\n```\nnpm install --global http-server\n```\n\n_Una vez instalada proceder a ejecutar el siguiente comando , que nos permite ejecutar en entorno local nuestra PWA_\n\n```\nnpm run start-pwa\n```\n\n_Este comando se encuentra configurado en el archivo *package.json de la raiz del proyecto por default ejecuta el puerto 8080*_\n\n_La PWA se encuentra configurada para ejecutarse en la vista Tracking para consulta de tramites_\n\n![PWA 1](/docs/Layout/pwa/pwa_1.PNG)\n\n![PWA 2](/docs/Layout/pwa/pwa_2.PNG)\n\n![PWA 3](/docs/Layout/pwa/pwa_3.PNG)\n\n_Se cuenta con soporte de notificaciones Push integrado en el modulo de Tracking_\n\n_Se creo el archivo *src/custom-service-worker.js* para la gestion de evento de notificaciones personalizado_\n\n![PWA 4](/docs/Layout/pwa/pwa_4.PNG)\n\n## Desarollo ⚙️\n\n_Se crearon 2 tipos de pruebas siendo las primeras las pruebas unitarias en Jasmine y Karma que son integradas por Angular_\n\n_Las segundo tipo de pruebas son las Automatizadas E2E en Cypress para la verificacion funcional del sistema_\n\n### Pruebas Unitarias Jasmine/Karma⌨️\n\n_Las pruebas unitarias en Jasmine y Karma verifican la funcionalidad adecuada y logica del codigo asi como la cobertura del codigo_\n\n_Para ejecutar las pruebas unitarias ejecutar el siguiente comando en la terminal de la raiz del proyecto, el cual levanta el servidor local del test runner Karma_\n\n```\nng test\n```\n\n![Unit Test](/docs/unit/unit_2.PNG)\n\n_Para obtener la cobertura del codigo de esta pruebas ejecutar el siguiente comando para obtener un reporte detallado de las pruebas_\n\n_La carpeta con la cobertura del codigo se creara en la raiz del proyecto con la siguiente ruta coverage/Isekai_Bot/index.html el cual se puede visualizar_\n\n```\nng test --code-coverage\n```\n\n![Unit Coverage](/docs/unit/unit_coverage.PNG)\n\n### Pruebas End-To-End 🔩\n\n_Para ejecutar las pruebas E2E en Cypress del sistema ejecutar el siguiente comando en la terminal de la raiz del proyecto_\n\n_El cual ejecuta Cypress en modo headless las pruebas E2E_\n\n```\nnpm run e2e:ci\n```\n\n![E2E Execution 1](/docs/e2e/e2e_1.PNG)\n\n![E2E Execution 2](/docs/e2e/e2e_2.PNG)\n\n_Para obtener un summary del reporte de pruebas ejecutar el siguiente comando_\n\n```\nnpm run e2e:coverage\n```\n\n![E2E Coverage](/docs/e2e/e2e_summary.PNG)\n\n_Para visualizar el reporte grafico de la cobertura de codigo de las pruebas E2E en la raiz del proyecto ubicarse en la ruta coverage-e2e/Icov-report/index.html_\n\n![E2E Coverage](/docs/e2e/e2e_coverage.PNG)\n\n## Analisis de calidad de codigo\n\n_**Pre requisitos**_\n\n_En la raiz del proyecto se tiene el archivo *sonar-project.properties* el cual tiene las propiedades necesarias para ejecutarlo sobre un SonarQube_\n\n_Configurar los apartados : *sonar.host.url* , *sonar.login* *sonar.password* con los datos de su instancia correspondiente_\n\n```\nSonaqube \u003e= 9.X\n```\n\n![SonarQube Properties](/docs/sonar/sonar_properties.PNG)\n\n_Las pruebas fueron realizas sobre *SonarQube 9.4* para ejecutar el analisis de codigo ejecutar el comando:_\n\n```\nnpm run sonar\n```\n\n![SonarQube Coverage 1](/docs/sonar/sonar_cobertura.PNG)\n\n![SonarQube Coverage 2](/docs/sonar/sonar_cobertura_2.PNG)\n\n## Integración Continua\n\n_Se realizo un CI con SonarCloud para metricas de calidad de codigo (https://sonarcloud.io/project/overview?id=SkyZeroZx_Isekai_Orpheus_Bot)_\n\n![SonarQube Coverage 3](/docs/sonar/sonar_cobertura_3.PNG)\n\n_Se creo la carpeta `.github/workflows` con el archivo `build.yml` que contiene los pasos para desplegar mediante GitHub Actions nuestro CI_\n\n![CI 1](/docs/ci/ci-1.png)\n\n![CI 1](/docs/ci/ci-2.png)\n\n## Despliegue 📦\n\n### Build\n\n_Previamente configurar la ruta del API que consumira nuestro proyecto en el archivo src/environments/environment.prod.ts campo API_URL_\n\n_Para realizar el despligue a produccion del proyecto ejecutar el siguiente comando_\n\n```\nng build --configuration production\n```\n\n_El cual creara la carpeta \"dist\" en la raiz de nuestro proyecto el cual podemos desplegar en cualquier servidor que ejecute HTML CSS y JS_\n\n_A su vez en un hosting con certificado HTTPS se podra ejecutar como una PWA que se podra \"instalar\"_\n\n### Docker\n\n_Para desplegar el proyecto mediante Docker se tiene los archivos `Dockerfile` y `docker-compose.prod.yaml`, los cuales tienen preconfigurado la imagen y dependencias necesarias para levantar el proyecto_\n\n_Para construir la imagen y ejecutarla tenemos el siguiente comando_\n\n_Ejecutar el siguiente comando en la raiz del proyecto_\n\n```\n docker-compose -f docker-compose.prod.yaml up --build\n```\n\n![Docker 1](/docs/docker/docker-1.png)\n\n![Docker 2](/docs/docker/docker-2.png)\n\n_En caso de requerir volver a ejecutar el contenedor del proyecto previamente creado ejecutar el comando:_\n\n```\n docker-compose -f docker-compose.prod.yaml up\n```\n\n## Construido con 🛠️\n\n_Las herramientas utilizadas son:_\n\n- [Angular](https://angular.io/docs) - El Framework para Desarrollo Web\n- [NPM](https://www.npmjs.com/) - Manejador de dependencias\n- [Jasmine](https://jasmine.github.io/) - Framework Testing para pruebas unitarias\n- [Karma](https://karma-runner.github.io/latest/index.html) - Test Runner para pruebas unitarias\n- [Cypress](https://www.cypress.io/) - Framework para pruebas E2E\n- [Docker](https://www.docker.com/) - Para el despliegue de aplicaciones basado en contenedores\n- [SonarQube](https://www.sonarqube.org/) - Evaluacion de codigo\n- [Visual Studio Code](https://code.visualstudio.com/) - Editor de Codigo\n- [Prettier](https://prettier.io/) - Formateador de Codigo\n- [TabNine](https://www.tabnine.com/) - Autocompletador de Codigo\n- [Argon DashBoard](https://demos.creative-tim.com/argon-dashboard-angular/#/documentation/tutorial) - Plantilla Web Utilizada\n\n## Versionado 📌\n\nUsamos [GIT](https://git-scm.com/) para el versionado.\n\n## Autores ✒️\n\n_Los integrantes del proyecto_\n\n- **Jaime Burgos Tejada** - _Developer_ - [SkyZeroZx](https://github.com/SkyZeroZx) - email : jaimeburgostejada@gmail.com\n- **Omar Ramos More** - _Documentación \u0026\u0026 Manual Testing_ - [Vengenace](https://github.com/Vengenace)\n- **Gianfranco Alfaro Mariño** - _Documentación \u0026\u0026 Manual Testing_ - [Franco](https://github.com/Gianfranco622)\n\n## Licencia 📄\n\nEste proyecto está bajo la Licencia - mira el archivo [LICENSE.md](LICENSE.md) para detalles\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fskyzerozx%2Fisekai_orpheus_bot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fskyzerozx%2Fisekai_orpheus_bot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fskyzerozx%2Fisekai_orpheus_bot/lists"}