{"id":21745525,"url":"https://github.com/palmerabollo/egov","last_synced_at":"2025-04-13T05:12:52.092Z","repository":{"id":37687981,"uuid":"165316101","full_name":"palmerabollo/egov","owner":"palmerabollo","description":"eGov España - API abierto de acceso a datos púbicos","archived":false,"fork":false,"pushed_at":"2023-03-04T14:37:01.000Z","size":5784,"stargazers_count":24,"open_issues_count":13,"forks_count":0,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-04-13T05:12:46.253Z","etag":null,"topics":["api","community","e-government","graphql","help-wanted","open-data"],"latest_commit_sha":null,"homepage":"https://palmerabollo.github.io/egov/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/palmerabollo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-01-11T21:59:56.000Z","updated_at":"2025-02-08T02:49:20.000Z","dependencies_parsed_at":"2023-02-08T08:16:18.852Z","dependency_job_id":null,"html_url":"https://github.com/palmerabollo/egov","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/palmerabollo%2Fegov","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/palmerabollo%2Fegov/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/palmerabollo%2Fegov/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/palmerabollo%2Fegov/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/palmerabollo","download_url":"https://codeload.github.com/palmerabollo/egov/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248665746,"owners_count":21142123,"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","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":["api","community","e-government","graphql","help-wanted","open-data"],"created_at":"2024-11-26T07:15:52.583Z","updated_at":"2025-04-13T05:12:52.064Z","avatar_url":"https://github.com/palmerabollo.png","language":"TypeScript","funding_links":[],"categories":["Datos Abiertos y Estadísticas"],"sub_categories":["Región de Murcia"],"readme":"# eGov España - API de acceso a datos púbicos\n\n[![Build Status](https://travis-ci.org/palmerabollo/egov.svg?branch=master)](https://travis-ci.org/palmerabollo/egov)\n\n¿Te entra la risa floja cuando oyes hablar de transformación digital? ¿Ya no crees en promesas de datos abiertos? ¿Crees que está feo dilapidar dinero público en \"portalitos\"? Estás en el sitio adecuado.\n\nEl plan es **construir APIs decentes que consulten fuentes de datos públicas** (por ejemplo, páginas web) para poder utilizar los servicios de la administración de forma programática.\n\nPrueba a consultar algunos ejemplos en una demo real:\n* [Ubicación geográfica del código postal \"09400\"](https://bit.ly/egov-demo-1).\n* [Antenas de telefonía de Aranda de Duero](http://bit.ly/egov-demo-2).\n* [Señales de Televisión de Villadiego](http://bit.ly/egov-demo-3).\n* [Cobertura 4G a 800MHz en Aranda de Duero](http://bit.ly/egov-demo-4).\n* [Listado de radares de tráfico](http://bit.ly/egov-demo-5).\n\nFaltan muchos servicios por incluir y no voy a poder hacerlo solo. **¡Colabora!**\n\n# Organización del proyecto\n\nEl proyecto se divide en varios paquetes:\n- **packages/egov-api-server**: Servidor que expone un API [GraphQL](https://en.wikipedia.org/wiki/GraphQL) para acceder a los datos públicos.\n- **packages/egov-data-providers**: Contiene los servicios de consulta que extraen datos de fuentes públicas. El `egov-api-server` utiliza este paquete.\n- **packages/egov-examples**: Ejemplos de uso programático de los servicios de consulta.\n\n## egov-api-server\n\nServidor HTTP que expone un **API GraphQL para acceder a datos públicos reales** ([probar demo](https://bit.ly/egov-demo)). Está desarrollado en Node.js (TypeScript) con [Apollo GraphQL](https://www.apollographql.com/docs/) y es la forma más sencilla de acceder a los datos.\n\n![Example API UI](./images/example-api-ui.png \"Example API UI\")\n\nPuedes consultar el [esquema de datos](./packages/egov-api-server/src/index.ts). He empezado con datos de localizaciones geográficas y de servicios de telecomunicaciones disponibles en la zona (antenas, canales de televisión digital, redes disponibles).\n\n### Instalación local\n\nSólo necesitas [Node.js 10+](https://nodejs.org/es/download/). Debes inicializar el proyecto después de clonarlo por primera vez:\n\n```\ngit clone git@github.com:palmerabollo/egov.git\ncd egov\nnpm install\n```\n\nY ejecutarlo:\n```\nnpm run start:api-server\n```\n\nEn http://localhost:4000 tendrás la interfaz web de acceso al API GraphQL para ejecutar tus consultas. Si te apetece cacharrear, hay más detalles sobre el proceso de desarrollo en la [guía para colaboradores](./CONTRIBUTING.md).\n\n\u003e Nota: algunas administraciones tienen servidores inseguros, afectados por vulnerabilidades (CVE-2009-3555) desde hace más de una década. Esto impide el soporte de Node.js \u003e16 / OpenSSL 3.x. Hay que investigar si se puede ignorar con la variable `SSL_OP_LEGACY_SERVER_CONNECT`.\n\n## egov-data-providers\n\nIncluye la implementación de los proveedores de datos: servicios de consulta que extraen datos de fuentes públicas. Algunos servicios consultan datos cuando se solicitan (online) y otros utilizan datos locales (offline).\n\nCrear un nuevo servicio es muy sencillo. Actualmente están desarrollados los siguientes. Echa un vistazo y propón nuevas [ideas en las issues](https://github.com/palmerabollo/egov/issues?q=is%3Aissue+is%3Aopen+label%3Aideas-providers) o envía tu _pull request_ con nuevos servicios. Es muy fácil.\n\n| Servicio     | Clase | Origen de los datos   | Online  |\n|------------- | ------| --------------------- | ------- |\n| Búsqueda de poblaciones y códigos postales\u003cbr\u003e\u003ci\u003eCategoría: General\u003c/i\u003e | `PostalCodeService` | geonames.org | ❎\u003cbr\u003e\u003csmall\u003e(local file)\u003c/small\u003e |\n| Localización de antenas de telefonía móvil\u003cbr\u003e\u003ci\u003eCategoría: Telco\u003c/i\u003e | `AntennaService` | geoportal.minetur.gob.es | ✅\u003cbr\u003e\u003csmall\u003e(api)\u003c/small \u003e|\n| Comprobación de cobertura 4G a 800MHz\u003cbr\u003e\u003ci\u003eCategoría: Telco\u003c/i\u003e | `NetworkService` | www.llega800.es | ✅\u003cbr\u003e\u003csmall\u003e(api)\u003c/small\u003e |\n| Señales de televisión por ubicación geográfica\u003cbr\u003e\u003ci\u003eCategoría: Telco\u003c/i\u003e | `DigitalTelevisionService` | www.televisiondigital.gob.es | ✅\u003cbr\u003e\u003csmall\u003e(html)\u003c/small\u003e |\n| Radares de tráfico\u003cbr\u003e\u003ci\u003eCategoría: Tráfico\u003c/i\u003e | `TrafficRadarService` | www.dgt.es | ✅\u003cbr\u003e\u003csmall\u003e(html, pdf)\u003c/small\u003e |\n| Información de vehículos\u003cbr\u003e\u003ci\u003eCategoría: Tráfico\u003c/i\u003e | `TrafficVehicleService` | www.dgt.es | ✅\u003cbr\u003e\u003csmall\u003e(html, pdf)\u003c/small\u003e |\n\n## egov-examples\n\nEjemplos de uso programático de los servicios de consulta disponibles en `egov-data-providers`.\n\n```typescript\nimport * as egov from '@egov/data-providers';\n\nlet service = new egov.AntennaService();\nlet antennas = await service.findAntennas(41.73, -5.32);\n\nconsole.table(antennas, ['code', 'latitude', 'longitude']);\n\n// output\n// ┌─────────┬───────────────────────────────────┬───────────┬───────────┐\n// │ (index) │               code                │ latitude  │ longitude │\n// ├─────────┼───────────────────────────────────┼───────────┼───────────┤\n// │    0    │ 'VODAFONE ESPAÑA, S.A. - 144588'  │ 41.471472 │ -4.989911 │\n// │    1    │ 'VODAFONE ESPAÑA, S.A. - 144589'  │ 41.479806 │ -5.048222 │\n// │    2    │ 'ORANGE ESPAGNE, SAU - CYLR2147A' │ 41.471472 │ -4.989911 │\n// │    3    │ 'ORANGE ESPAGNE, SAU - CYLR2223B' │ 41.479806 │ -5.048222 │\n// └─────────┴───────────────────────────────────┴───────────┴───────────┘\n```\n\n# Incubator\n\n## Adaptadores. Soporte de múltiples lenguajes de programación\n\nEl código de eGov está desarrollado en Node.js (TypeScript). Quienes quieran contribuir con nuevos proveedores de datos en otros lenguaje de programación, tienen la posibilidad de que se ejecuten como procesos independientes que expongan un interfaz HTTP. Estos procesos **adaptadores** pueden obtener los datos, procesarlos y ofrecerlos a eGov a través de ese interfaz HTTP.\n\nHay una [prueba de concepto para obtener los radares de tráfico](./adapters/egov-adapter-traffic-radars) con un proceso Python que hace *scraping* de los datos de radares de la DGT. Este proceso se está ejecutando como una función serverless en AWS Lambda.\n\n\u003e data-provider --(http)--\u003e adapter --(http scrape)--\u003e datasource\n\n¿Por qué serverless? Porque es la manera de hacer el proyecto económicamente sostenible, sin tener que pedir dinero por ahora.\n\n# LICENSE\n\nCopyright 2019 - Guido García (guido.garcia AT protonmail DOT com)\n\nLicensed under the GNU Affero General Public License, Version 2.0 (the \"License\"); you may not use this file except in compliance with the License.\n\n## Third parties\n\nSome information about postal codes is provided by [geonames](www.geonames.org) under a [Creative Commons Attribution 4.0 License](http://creativecommons.org/licenses/by/4.0/).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpalmerabollo%2Fegov","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpalmerabollo%2Fegov","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpalmerabollo%2Fegov/lists"}