{"id":50275391,"url":"https://github.com/jpcadena/territoria","last_synced_at":"2026-05-27T20:01:29.403Z","repository":{"id":357478786,"uuid":"1237150617","full_name":"jpcadena/territoria","owner":"jpcadena","description":"Streamlit UI Dashboard","archived":false,"fork":false,"pushed_at":"2026-05-13T01:25:12.000Z","size":122,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-05-13T01:32:41.906Z","etag":null,"topics":["dashboard","dashboard-ui","python","streamlit","streamlit-application","streamlit-dashboard"],"latest_commit_sha":null,"homepage":"https://territoria-jpcadena.streamlit.app/","language":"Python","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/jpcadena.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","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":"2026-05-12T23:31:51.000Z","updated_at":"2026-05-13T01:25:16.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/jpcadena/territoria","commit_stats":null,"previous_names":["jpcadena/territoria"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/jpcadena/territoria","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jpcadena%2Fterritoria","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jpcadena%2Fterritoria/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jpcadena%2Fterritoria/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jpcadena%2Fterritoria/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jpcadena","download_url":"https://codeload.github.com/jpcadena/territoria/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jpcadena%2Fterritoria/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33581559,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-27T02:00:06.184Z","response_time":53,"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":["dashboard","dashboard-ui","python","streamlit","streamlit-application","streamlit-dashboard"],"created_at":"2026-05-27T20:01:27.407Z","updated_at":"2026-05-27T20:01:29.391Z","avatar_url":"https://github.com/jpcadena.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🌱 Territoria Dashboard\r\n\r\n\u003ca name=\"readme-top\"\u003e\u003c/a\u003e\r\n\r\n\u003cbr /\u003e\r\n\u003cdiv align=\"center\"\u003e\r\n  \u003ch1 align=\"center\"\u003eTerritoria Dashboard System\u003c/h1\u003e\r\n\r\n  \u003cp align=\"center\"\u003e\r\n    Monitoreo agrícola avanzado con IA Multimodal para cultivos de Cacao y Banano.\r\n    \u003cbr /\u003e\r\n    \u003ca href=\"https://territoria-jpcadena.streamlit.app/\"\u003e\u003cstrong\u003eExplorar App en Vivo »\u003c/strong\u003e\u003c/a\u003e\r\n    \u003cbr /\u003e\r\n    \u003cbr /\u003e\r\n    \u003ca href=\"https://github.com/jpcadena/territoria/issues\"\u003eReport Bug\u003c/a\u003e\r\n    ·\r\n    \u003ca href=\"https://github.com/jpcadena/territoria/issues\"\u003eRequest Feature\u003c/a\u003e\r\n  \u003c/p\u003e\r\n\u003c/div\u003e\r\n\r\n[![Streamlit App](https://static.streamlit.io/badges/streamlit_badge_black_white.svg)](https://territoria-jpcadena.streamlit.app/)\r\n\r\n\u003cdetails\u003e\r\n  \u003csummary\u003eTabla de Contenidos\u003c/summary\u003e\r\n  \u003col\u003e\r\n    \u003cli\u003e\u003ca href=\"#acerca-del-proyecto\"\u003eAcerca del Proyecto\u003c/a\u003e\u003c/li\u003e\r\n    \u003cli\u003e\u003ca href=\"#stack-tecnológico\"\u003eStack Tecnológico\u003c/a\u003e\u003c/li\u003e\r\n    \u003cli\u003e\u003ca href=\"#empezando\"\u003eEmpezando\u003c/a\u003e\u003c/li\u003e\r\n    \u003cli\u003e\u003ca href=\"#configuración\"\u003eConfiguración\u003c/a\u003e\u003c/li\u003e\r\n    \u003cli\u003e\u003ca href=\"#despliegue\"\u003eDespliegue\u003c/a\u003e\u003c/li\u003e\r\n    \u003cli\u003e\u003ca href=\"#licencia\"\u003eLicencia\u003c/a\u003e\u003c/li\u003e\r\n  \u003c/ol\u003e\r\n\u003c/details\u003e\r\n\r\n## Acerca del Proyecto\r\n\r\nEste sistema integra una arquitectura robusta de recolección de datos y análisis predictivo. Diseñado bajo principios **SOLID** y **GRASP**, permite transformar imágenes capturadas en campo en diagnósticos fitopatológicos accionables mediante IA.\r\n\r\n**Componentes clave:**\r\n\r\n* **Captura:** Interfaz móvil vía AppSheet para recolección offline/online.\r\n* **Orquestación:** Workflows automatizados en Make.com.\r\n* **Inteligencia:** Análisis multimodal con Google Gemini IA.\r\n* **Visualización:** Dashboard interactivo desarrollado en Streamlit.\r\n\r\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\r\n\r\n### Stack Tecnológico\r\n\r\n#### Core \u0026 IA\r\n\r\n[![Python][python-shield]][python-url]\r\n[![Streamlit][streamlit-shield]][streamlit-url]\r\n[![Pandas][pandas-shield]][pandas-url]\r\n\r\n#### Automatización \u0026 Data\r\n\r\n[![Make][make-shield]][make-url]\r\n[![AppSheet][appsheet-shield]][appsheet-url]\r\n[![Google Sheets][google-sheets-shield]][google-sheets-url]\r\n\r\n#### Herramientas de Desarrollo\r\n\r\n[![Ruff][ruff-shield]][ruff-url]\r\n[![Visual Studio Code][visual-studio-code-shield]][visual-studio-code-url]\r\n\r\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\r\n\r\n## Empezando\r\n\r\n### Prerrequisitos\r\n\r\n* [![uv][uv-shield]][uv-url] instalado en el sistema.\r\n\r\n### Instalación\r\n\r\n1. Clonar el repositorio\r\n\r\n   ```bash\r\n   git clone https://github.com/jpcadena/territoria.git\r\n    ```\r\n\r\n2. Instalar dependencias y sincronizar el entorno\r\n\r\n    ```bash\r\n    uv sync\r\n    ```\r\n\r\n3. Ejecutar la aplicación\r\n\r\n    ```bash\r\n    uv run streamlit run app.py\r\n    ```\r\n\r\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\r\n\r\n## Configuración\r\n\r\nPara garantizar la seguridad de los datos y la portabilidad del código, este proyecto utiliza **Streamlit Secrets**.\r\n\r\n### Desarrollo Local\r\n\r\nCree un archivo en la raíz del proyecto siguiendo la ruta `.streamlit/secrets.toml`. Este archivo está excluido del control de versiones para proteger sus credenciales:\r\n\r\n```toml\r\nCSV_URL = \"https://docs.google.com/spreadsheets/d/e/.csv\"\r\nAPP_ID = \"tu-app-id-de-appsheet\"\r\n```\r\n\r\n### Producción (Streamlit Cloud)\r\n\r\nPara el despliegue en la nube, Streamlit Community Cloud gestiona las variables de entorno de forma segura a través de su propia bóveda de secretos cifrados.\r\n\r\n1. Acceda al panel de su aplicación en [share.streamlit.io](https://share.streamlit.io).\r\n2. Diríjase a **Settings \u003e Secrets**.\r\n3. Pegue sus credenciales respetando el formato TOML:\r\n\r\n   ```toml\r\n   CSV_URL = \"https://docs.google.com/spreadsheets/d/e/.csv\"\r\n   APP_ID = \"tu-app-id-de-appsheet\"\r\n   ```\r\n\r\n## Despliegue\r\n\r\nEste proyecto está optimizado para un despliegue ágil en **Streamlit Community Cloud**. Siga estos pasos para poner su dashboard en producción:\r\n\r\n1. **Fork del Repositorio**: Realice un fork de este proyecto a su cuenta personal de GitHub.\r\n2. **Nueva Aplicación**: Acceda a [share.streamlit.io](https://share.streamlit.io) y cree una nueva aplicación vinculando su fork.\r\n3. **Entrypoint**: Asegúrese de que el archivo de entrada sea `src/territoria/sessions/session_5.py`.\r\n4. **Configuración de Secrets**: Antes del despliegue final, vaya a **Advanced Settings \u003e Secrets** y pegue sus variables de entorno:\r\n\r\n   ```toml\r\n   CSV_URL = \"https://docs.google.com/spreadsheets/d/e/.csv\"\r\n   APP_ID = \"tu-app-id-de-appsheet\"\r\n   ```\r\n\r\n5. **Lanzamiento**: Haga clic en **Deploy**. La aplicación estará lista en un par de minutos.\r\n\r\n## Licencia\r\n\r\nDistribuido bajo la Licencia MIT. Consulte el archivo LICENSE para obtener más detalles sobre el uso y distribución del código.\r\n\r\n## Contacto\r\n\r\n[![Outlook][outlook-shield]](mailto:jpcadena@espol.edu.ec?subject=[GitHub]territoria)\r\n\r\n[outlook-shield]: https://img.shields.io/badge/Microsoft_Outlook-0078D4?style=for-the-badge\u0026logo=microsoft-outlook\u0026logoColor=white\r\n[uv-shield]: https://img.shields.io/badge/uv-toolkit-blue?logo=uv\u0026style=flat-square\r\n[uv-url]: https://docs.astral.sh/uv/getting-started/installation/\r\n[python-shield]: https://img.shields.io/badge/python-3670A0?style=for-the-badge\u0026logo=python\u0026logoColor=ffdd54\r\n[python-url]: https://www.python.org/\r\n[visual-studio-code-shield]: https://img.shields.io/badge/Visual_Studio_Code-007ACC?style=for-the-badge\u0026logo=visual-studio-code\u0026logoColor=white\r\n[visual-studio-code-url]: https://code.visualstudio.com/\r\n[ruff-shield]: https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/charliermarsh/ruff/main/assets/badge/v1.json\r\n[ruff-url]: https://beta.ruff.rs/docs/\r\n[streamlit-shield]: https://img.shields.io/badge/Streamlit-%23FE4B4B.svg?style=for-the-badge\u0026logo=streamlit\u0026logoColor=white\r\n[streamlit-url]: https://streamlit.io/\r\n[pandas-shield]: https://img.shields.io/badge/Pandas-150458.svg?style=for-the-badge\u0026logo=pandas\u0026logoColor=white\r\n[pandas-url]: https://pandas.pydata.org/\r\n[google-sheets-shield]: https://img.shields.io/badge/Google%20Sheets-%2334A853?style=for-the-badge\u0026logo=googlesheets\u0026logoColor=white\r\n[google-sheets-url]: https://docs.google.com/spreadsheets/create\r\n[make-url]: https://www.make.com/en\r\n[make-shield]: https://img.shields.io/badge/Make.com-4353FF?style=for-the-badge\u0026logo=make\u0026logoColor=white\r\n[appsheet-shield]: https://img.shields.io/badge/AppSheet-4285F4?style=for-the-badge\u0026logo=appsheet\u0026logoColor=white\r\n[appsheet-url]: https://www.appsheet.com\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjpcadena%2Fterritoria","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjpcadena%2Fterritoria","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjpcadena%2Fterritoria/lists"}