{"id":22433170,"url":"https://github.com/andresweitzel/grpc_ip_geolocation_api_integration_nodejs","last_synced_at":"2026-04-11T00:15:13.942Z","repository":{"id":196290342,"uuid":"694853016","full_name":"andresWeitzel/gRPC_IP_Geolocation_API_Integration_Nodejs","owner":"andresWeitzel","description":"gRPC protobuf api for the integration of IPWHOIS.IO services implemented with Nodejs, Expressjs, Jest, Testing, others.","archived":false,"fork":false,"pushed_at":"2025-01-24T21:47:13.000Z","size":1226,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-01T12:46:16.566Z","etag":null,"topics":["expressjs","grpc","ip-location-api","ip-whois","jest","morgan","nodejs","nodemon","protobuf","protocol-buffers","tdd","testing","unit-testing"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/andresWeitzel.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":"2023-09-21T20:40:50.000Z","updated_at":"2024-12-24T05:04:50.000Z","dependencies_parsed_at":"2024-12-19T04:29:16.774Z","dependency_job_id":"382d7878-fda0-485f-8363-44bb1ba643b7","html_url":"https://github.com/andresWeitzel/gRPC_IP_Geolocation_API_Integration_Nodejs","commit_stats":null,"previous_names":["andresweitzel/grpc_ip_geolocation_api_integration_nodejs"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andresWeitzel%2FgRPC_IP_Geolocation_API_Integration_Nodejs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andresWeitzel%2FgRPC_IP_Geolocation_API_Integration_Nodejs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andresWeitzel%2FgRPC_IP_Geolocation_API_Integration_Nodejs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andresWeitzel%2FgRPC_IP_Geolocation_API_Integration_Nodejs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/andresWeitzel","download_url":"https://codeload.github.com/andresWeitzel/gRPC_IP_Geolocation_API_Integration_Nodejs/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245806327,"owners_count":20675296,"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":["expressjs","grpc","ip-location-api","ip-whois","jest","morgan","nodejs","nodemon","protobuf","protocol-buffers","tdd","testing","unit-testing"],"created_at":"2024-12-05T22:14:09.104Z","updated_at":"2025-12-30T23:23:00.150Z","avatar_url":"https://github.com/andresWeitzel.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"![Index app](./doc/assets/gRPC.png)\n\n\u003cdiv align=\"right\"\u003e\n    \u003ca href=\"./translation/README.es.md\" target=\"_blank\"\u003e\n      \u003cimg src=\"./doc/assets/translation/arg-flag.jpg\" width=\"10%\" height=\"10%\" /\u003e\n  \u003c/a\u003e \n   \u003ca href=\"./README.md\" target=\"_blank\"\u003e\n      \u003cimg src=\"./doc/assets/translation/eeuu-flag.jpg\" width=\"10%\" height=\"10%\" /\u003e\n  \u003c/a\u003e\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n# gRPC\\_IP\\_Geolocation\\_API\\_Integration\\_Nodejs\n\n\u003c/div\u003e  \n\ngRPC protobuf api for the integration of IPWHOIS.IO services implemented with Nodejs, Expressjs, Jest, Testing, others.\n\n*   [Playlist Prueba de Funcionalidad](https://www.youtube.com/playlist?list=PLCl11UFjHurD2RjD9OiBfyKpsgwEzZzBv)\u003ca href=\"https://www.youtube.com/playlist?list=PLCl11UFjHurD2RjD9OiBfyKpsgwEzZzBv\" target=\"_blank\"\u003e \u003cimg src=\"./doc/assets/social-networks/yt.png\" width=\"5%\" height=\"5%\" /\u003e \u003c/a\u003e\n*   [IPWHOIS.io api doc](https://ipwhois.io/documentation)\n\n\u003cbr\u003e\n\n## Index 📜\n\n\u003cdetails\u003e\n \u003csummary\u003e See \u003c/summary\u003e\n\n \u003cbr\u003e\n\n### Section 1) Description, configuration and technologies\n\n*   [1.0) Project Description.](#10-description-)\n*   [1.1) Project Execution.](#11-project-execution-)\n*   [1.2) Project setup from scratch](#12-project-setup-from-scratch-)\n*   [1.3) Technologies.](#13-technologies-)\n\n### Section 2) Endpoints and Examples\n\n*   [2.0) EndPoints and resources.](#20-endpoints-and-resources-)\n\n### Section 3) Functionality Testing and References\n\n*   [3.0) Functionality test.](#30-functionality-test-)\n*   [3.1) References.](#31-references-)\n\n\u003cbr\u003e\n\n\u003c/details\u003e\n\n\u003cbr\u003e\n\n## Section 1) Description, configuration and technologies\n\n### 1.0) Description [🔝](#index-)\n\n\u003cdetails\u003e\n  \u003csummary\u003eSee\u003c/summary\u003e\n \u003cbr\u003e\n\n### 1.0.0) General Description\n\n*\n\n### 1.0.1) Description Architecture and Operation\n\n*\n\n\u003cbr\u003e\n\n\u003c/details\u003e\n\n### 1.1) Project Execution [🔝](#index-)\n\n\u003cdetails\u003e\n   \u003csummary\u003eSee\u003c/summary\u003e\n   \u003cbr\u003e\n\n#### 1.1.0) Initial settings\n\n*   Once a work environment has been created through some IDE, we clone the project\n\n```git\ngit clone https://github.com/andresWeitzel/gRPC_Netflix_CRUD_Nodejs\n```\n\n*   We position ourselves on the project\n\n```git\ncd 'projectName'\n```\n\n*   We install the latest LTS version of [Nodejs(v18)](https://nodejs.org/en/download).\n*   We install all the necessary libraries\n\n```git\nnpm i\n```\n\n*   The environment variables used in the project are maintained to simplify their configuration process. It is recommended to add the corresponding file (.env) to the .gitignore.\n*   The following script configured in the project's package.json is responsible for\n    *   Raise the server with express (productive environment)\n    *   Raise the server with express and nodemon (local dev environment)\n\n```git\n\"scripts\": {\n    \"dev\": \"nodemon src/server.js\",\n    \"start\": \"node src/server.js\"\n  },\n```\n\n*   We run the app from a terminal for a local environment.\n\n```git\nnpm run dev\n```\n\n*   We run the app from a terminal for a productive environment.\n\n```git\nnpm start\n```\n\n*   If a message appears indicating that port 8080 is already in use, we can terminate all dependent processes and run the app again\n\n```git\nnpx kill-port 8080\nnpm run dev or npm start\n```\n\n\u003cbr\u003e\n\n\u003c/details\u003e\n\n### 1.2) Project configuration from scratch [🔝](#index-)\n\n\u003cdetails\u003e\n   \u003csummary\u003eSee\u003c/summary\u003e\n  \u003cbr\u003e\n\n#### 1.2.0) Initial settings\n\n*   Once a work environment has been created through some IDE, we clone the project\n\n```git\ngit clone https://github.com/andresWeitzel/gRPC_Netflix_CRUD_Nodejs\n```\n\n*   We position ourselves on the project\n\n```git\ncd 'projectName'\n```\n\n*   We install the latest LTS version of [Nodejs(v18)](https://nodejs.org/en/download)\n*   We open a terminal from vsc\n*   We initialize a nodejs project\n\n```git\nnpm init -y\n```\n\n*   We create a .gitignore file and add the necessary files (for the moment node\\_modules)\n\n```git\nnode_modules\n```\n\n*   We create a direct source (src) to add all the logic of our app\n*   We install the plugin for [express (framework)](https://www.npmjs.com/package/express)\n\n```git\nnpm i express\n```\n\n*   We install the plugin for [cors (resource management)](https://www.npmjs.com/package/cors)\n\n```git\nnpm i cors\n```\n\n*   We install the plugin for [dotenv (environment variables)](https://www.npmjs.com/package/dotenv)\n\n```git\nnpm i dotenv\n```\n\n*   We install the plugin for [morgan-middleware (errors, formats, etc)](https://expressjs.com/en/resources/middleware/morgan.html)\n\n```git\nnpm i morgan\n```\n\nWe install uuid for unique ids\n\n```git\nnpm i uuid\n```\n\n*   We install the plugin for [nodemon (autoreload server)](https://www.npmjs.com/package/nodemon) globally\n\n```git\nnpm i -g nodemon\n```\n\n*   We install the plugin for [nodemon (autoreload server)](https://www.npmjs.com/package/nodemon) for development\n\n```git\nnpm i nodemon --save-dev\n```\n\n*   We install the libraries for the [gRPC compiler](https://www.npmjs.com/package/@grpc/proto-loader)\n\n```git\nnpm i @grpc/proto-loader\n```\n\n*   The environment variables used in the project are maintained to simplify their configuration process. It is recommended to add the corresponding file (.env) to the .gitignore.\n*   The following script configured in the project's package.json is responsible for\n    *   Raise the server with express (productive environment)\n    *   Raise the server with express and nodemon (local dev environment)\n\n```git\n\"scripts\": {\n    \"dev\": \"nodemon src/server.js\",\n    \"start\": \"node src/server.js\"\n  },\n```\n\n*   We run the app from a terminal for a local environment.\n\n```git\nnpm run dev\n```\n\n*   We run the app from a terminal for a productive environment.\n\n```git\nnpm start\n```\n\n*   If a message appears indicating that port 8080 is already in use, we can terminate all dependent processes and run the app again\n\n```git\nnpx kill-port 8080\nnpm run dev or npm start\n```\n\n\u003cbr\u003e\n\n\u003c/details\u003e\n\n### 1.3) Tecnologías [🔝](#índice-)\n\n\u003cdetails\u003e\n  \u003csummary\u003eVer\u003c/summary\u003e\n \u003cbr\u003e\n\n| **Tecnologías** | **Versión** | **Finalidad** |\\\n| ------------- | ------------- | ------------- |\n| [SDK](https://www.serverless.com/framework/docs/guides/sdk/) | 4.3.2  | Inyección Automática de Módulos para Lambdas |\n| [NodeJS](https://nodejs.org/en/) | 14.18.1  | Librería JS |\n| [VSC](https://code.visualstudio.com/docs) | 1.72.2  | IDE |\n| [Postman](https://www.postman.com/downloads/) | 10.11  | Cliente Http |\n| [CMD](https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/cmd) | 10 | Símbolo del Sistema para linea de comandos |\n| [Git](https://git-scm.com/downloads) | 2.29.1  | Control de Versiones |\n\n\u003c/br\u003e\n\n| **Plugin** | **Descripción** |\\\n| -------------  | ------------- |\n| [Serverless Plugin](https://www.serverless.com/plugins/) | Librerías para la Definición Modular |\n\n\u003c/br\u003e\n\n| **Extensión** |\\\n| -------------  |\n| Prettier - Code formatter |\n| YAML - Autoformatter .yml (alt+shift+f) |\n\n\u003cbr\u003e\n\n\u003c/details\u003e\n\n\u003cbr\u003e\n\n## Sección 2) Endpoints y Ejemplos.\n\n### 2.0) Endpoints y recursos [🔝](#índice-)\n\n\u003cdetails\u003e\n  \u003csummary\u003eVer\u003c/summary\u003e\n\u003cbr\u003e\n\n\u003cbr\u003e\n\n\u003c/details\u003e\n\n\u003cbr\u003e\n\n## Sección 3) Prueba de funcionalidad y Referencias.\n\n### 3.0) Prueba de funcionalidad [🔝](#índice-)\n\n\u003cdetails\u003e\n  \u003csummary\u003eVer\u003c/summary\u003e\n\u003cbr\u003e\n\n\u003c/details\u003e\n\n### 3.1) Referencias [🔝](#índice-)\n\n\u003cdetails\u003e\n  \u003csummary\u003eVer\u003c/summary\u003e\n \u003cbr\u003e\n\n#### IPWHOIS.io api doc\n\n*   [Data Api](https://ipwhois.io/documentation)\n\n#### Documentación\n\n*   [Guía gRPC](https://www.ionos.es/digitalguide/servidores/know-how/que-es-grpc/)\n*   [Arquitectura protocolo gRPC](https://www2.deloitte.com/es/es/blog/todo-tecnologia/2021/grpc-vs-rest-api.html)\n*   [Web Api Spotify](https://developer.spotify.com/documentation/web-api/tutorials/getting-started)\n*   [Implementación Arquitectura grpc part 1](https://netflixtechblog.com/practical-api-design-at-netflix-part-1-using-protobuf-fieldmask-35cfdc606518)\n*   [Implementación Arquitectura grpc part 2](https://netflixtechblog.com/practical-api-design-at-netflix-part-2-protobuf-fieldmask-for-mutation-operations-2e75e1d230e4)\n*   [Análisis de tiempo de ejecución protocolos Api's](https://www.youtube.com/watch?v=ryUIRdAgD00)\n\n#### Ejemplos código\n\n*   [Ejemplo base](https://www.honeybadger.io/blog/building-apis-with-node-js-and-grpc/)\n*   [Integración Api restful con rpc](https://blog.logrocket.com/communicating-between-node-js-microservices-with-grpc/)\n*   [Crud grpc express-nodejs](https://blog.logrocket.com/creating-a-crud-api-with-node-express-and-grpc/)\n*   [Videotutorial Crud grpc express-nodejs](https://www.youtube.com/watch?v=xBO7RohEhOY)\n\n#### Protocolo buffer (protobuf)\n\n*   [Documentación recomendada](https://blog.logrocket.com/creating-a-crud-api-with-node-express-and-grpc/)\n\n*   [Crud grpc express-nodejs](https://blog.logrocket.com/creating-a-crud-api-with-node-express-and-grpc/)\n\n*   [Videotutorial Crud grpc express-nodejs](https://www.youtube.com/watch?v=xBO7RohEhOY)\n\n#### Librerías\n\n*   [Manejo de validaciones con express-validator](https://medium.com/dataseries/introduction-to-request-body-validation-in-express-apps-with-express-validator-7b9725ca780d)\n*   [Doc oficial express-validator](https://express-validator.github.io/docs/guides/getting-started)\n\n#### Remark-lint\n\n*   [remark-lint-emphasis-marker](https://www.npmjs.com/package/remark-lint-emphasis-marker)\n*   [remark-preset-lint-recommended](https://www.npmjs.com/package/remark-preset-lint-recommended)\n*   [remark-reference-links](https://www.npmjs.com/package/remark-reference-links)\n\n#### Jest\n\n*   [Environment vars solution](https://stackoverflow.com/questions/48033841/test-process-env-with-jest)\n\n\u003cbr\u003e\n\n\u003cbr\u003e\n\n\u003c/details\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandresweitzel%2Fgrpc_ip_geolocation_api_integration_nodejs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fandresweitzel%2Fgrpc_ip_geolocation_api_integration_nodejs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandresweitzel%2Fgrpc_ip_geolocation_api_integration_nodejs/lists"}