{"id":22929939,"url":"https://github.com/genocs/genocs-aspire","last_synced_at":"2025-08-12T14:32:56.881Z","repository":{"id":252641476,"uuid":"840760976","full_name":"Genocs/genocs-aspire","owner":"Genocs","description":".NET Aspire demo app with Genocs library","archived":false,"fork":false,"pushed_at":"2024-11-23T13:08:44.000Z","size":1070,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-11-23T14:22:06.599Z","etag":null,"topics":["aspire","clean-architecture"],"latest_commit_sha":null,"homepage":"","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/Genocs.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},"funding":{"open_collective":"genocs","custom":["https://www.buymeacoffee.com/genocs"]}},"created_at":"2024-08-10T15:50:19.000Z","updated_at":"2024-11-23T13:08:50.000Z","dependencies_parsed_at":"2024-08-15T11:07:33.309Z","dependency_job_id":null,"html_url":"https://github.com/Genocs/genocs-aspire","commit_stats":null,"previous_names":["genocs/genocs-aspire"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Genocs%2Fgenocs-aspire","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Genocs%2Fgenocs-aspire/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Genocs%2Fgenocs-aspire/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Genocs%2Fgenocs-aspire/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Genocs","download_url":"https://codeload.github.com/Genocs/genocs-aspire/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":229690640,"owners_count":18108261,"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":["aspire","clean-architecture"],"created_at":"2024-12-14T10:19:46.136Z","updated_at":"2025-08-12T14:32:56.858Z","avatar_url":"https://github.com/Genocs.png","language":"C#","funding_links":["https://opencollective.com/genocs","https://www.buymeacoffee.com/genocs","https://www.buymeacoffee.com/genocs)!","https://opencollective.com/genocs/contribute"],"categories":[],"sub_categories":[],"readme":"\u003c!-- PROJECT SHIELDS --\u003e\n[![License][license-shield]][license-url]\n[![Build][build-shield]][build-url]\n[![Downloads][downloads-shield]][downloads-url]\n[![Contributors][contributors-shield]][contributors-url]\n[![Forks][forks-shield]][forks-url]\n[![Stargazers][stars-shield]][stars-url]\n[![Issues][issues-shield]][issues-url]\n[![Discord][discord-shield]][discord-url]\n[![Gitter][gitter-shield]][gitter-url]\n[![Twitter][twitter-shield]][twitter-url]\n[![Twitterx][twitterx-shield]][twitterx-url]\n[![LinkedIn][linkedin-shield]][linkedin-url]\n\n[license-shield]: https://img.shields.io/github/license/Genocs/genocs-aspire?color=2da44e\u0026style=flat-square\n[license-url]: https://github.com/Genocs/genocs-aspire/blob/main/LICENSE\n[build-shield]: https://github.com/Genocs/genocs-aspire/actions/workflows/build_and_test.yml/badge.svg?branch=main\n[build-url]: https://github.com/Genocs/genocs-aspire/actions/workflows/build_and_test.yml\n[downloads-shield]: https://img.shields.io/nuget/dt/GenocsAspire.Multitenancy.svg?color=2da44e\u0026label=downloads\u0026logo=nuget\n[downloads-url]: https://www.nuget.org/packages/GenocsAspire.Multitenancy\n[contributors-shield]: https://img.shields.io/github/contributors/Genocs/genocs-aspire.svg?style=flat-square\n[contributors-url]: https://github.com/Genocs/genocs-aspire/graphs/contributors\n[forks-shield]: https://img.shields.io/github/forks/Genocs/genocs-aspire?style=flat-square\n[forks-url]: https://github.com/Genocs/genocs-aspire/network/members\n[stars-shield]: https://img.shields.io/github/stars/Genocs/genocs-aspire.svg?style=flat-square\n[stars-url]: https://img.shields.io/github/stars/Genocs/genocs-aspire?style=flat-square\n[issues-shield]: https://img.shields.io/github/issues/Genocs/genocs-aspire?style=flat-square\n[issues-url]: https://github.com/Genocs/genocs-aspire/issues\n[discord-shield]: https://img.shields.io/discord/1106846706512953385?color=%237289da\u0026label=Discord\u0026logo=discord\u0026logoColor=%237289da\u0026style=flat-square\n[discord-url]: https://discord.com/invite/fWwArnkV\n[gitter-shield]: https://img.shields.io/badge/chat-on%20gitter-blue.svg\n[gitter-url]: https://gitter.im/genocs/\n[twitter-shield]: https://img.shields.io/twitter/follow/genocs?color=1DA1F2\u0026label=Twitter\u0026logo=Twitter\u0026style=flat-square\n[twitter-url]: https://twitter.com/genocs\n[linkedin-shield]: https://img.shields.io/badge/-LinkedIn-black.svg?style=flat-square\u0026logo=linkedin\u0026colorB=555\n[linkedin-url]: https://www.linkedin.com/in/giovanni-emanuele-nocco-b31a5169/\n[twitterx-shield]: https://img.shields.io/twitter/url/https/twitter.com/genocs.svg?style=social\n[twitterx-url]: https://twitter.com/genocs\n\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"./assets/repository-description.png\" alt=\"icon\"\u003e\n\u003c/p\u003e\n\n\n# Genocs .NET Aspire solution\n\nThis repo contains a set of services you can use to build an enterprise solution based on .NET. The solution is open source and built to be PRODUCTION READY. The solution is built on top of .NET8, it is designed and maintained by Genocs. \n\n\n## Introduction\n\nThe solution is composed by a set of services:\n\n- ApiGateway       https://localhost:5000  | http://localhost:5001\n- Identity         https://localhost:5010  | http://localhost:5011\n- Products         https://localhost:5020  | http://localhost:5021\n- Orders           https://localhost:5030  | http://localhost:5031\n- Notifications    https://localhost:5040  | http://localhost:5041\n\n- Multitenancy     https://localhost:5700  | http://localhost:5701 \n- Blazor Host      https://localhost:5900  | http://localhost:5901\n- Blazor Client    https://localhost:5910  | http://localhost:5911\n\n\n## The idea\n\n***Build a software library to be cloud agnostic***\n\nBuilding a software library to be cloud agnostic has several advantages. First, it allows developers to create applications that can be deployed on any cloud platform without having to rewrite code or make major changes. This makes it easier for developers to quickly deploy their applications across multiple cloud providers. Additionally, it reduces the cost of development and maintenance since developers don’t have to write separate code for each cloud provider. Finally, it increases the scalability of applications since they can be easily deployed on different cloud platforms with minimal effort. \n\n***Cloud agnostic by use of Containers***\n\nThe advantages of using containers are numerous. Containers provide a lightweight, portable, and isolated environment for applications to run in, allowing them to be easily moved between different systems. This makes it easier to deploy applications quickly and reliably across different environments. Additionally, containers can help reduce resource consumption by running multiple applications on the same host, as each container is isolated from the others. This helps to improve efficiency and scalability. Finally, containers provide an additional layer of security, as they are isolated from the underlying operating system and other applications.\n\n## Documentation\n\nYou can find a useful documentation about how to use the library. The documentation contains the complete set of libraries, template, CLI that altogether make the *genocs ecosystem* a comprensive set of tools to build enterprise solutions.\n\nDocumentation available at [Genocs Blog](https://genocs-blog.netlify.app/library/)\n\n## Infrastructure\n\nIn this section you can find the infrastructure components you need to execute the solution. Infrastucture components are the database, the enterprice servise bus, the distributed logging, monitoring, tracing systems along with database and many more.\nYou can use **Docker compose** to setup the infrastructure components just by running few commands.\n\n\n``` bash\ncd ./containers\n# Setup the infrastructure\ndocker compose -f ./infrastructure-bare.yml --env-file ./.env --project-name genocs up -d\ndocker compose -f ./infrastructure-monitoring.yml --env-file ./.env --project-name genocs up -d\ndocker compose -f ./infrastructure-scaling.yml --env-file ./.env --project-name genocs up -d\ndocker compose -f ./infrastructure-security.yml --env-file ./.env --project-name genocs up -d\n\n# Use this file only in case you want to setup sqlserver database (no need if you use postgres)\ndocker compose -f ./infrastructure-sqlserver.yml --env-file ./.env --project-name genocs up -d\n\n# Use this file only in case you want to setup elk stack\ndocker compose -f ./infrastructure-elk.yml --env-file ./.env --project-name genocs up -d\n\n# Use this file only in case you want to setup AI ML components prepared by Genocs\ndocker compose -f ./infrastructure-ml.yml --env-file ./.env --project-name genocs up -d\n```\n\n`infrastructure-bare.yml` allows to install the basic infrastructure components. They are:\n- [RabbitMQ](https://rabbitmq.com)\n- [Redis](https://redis.io)\n- [MongoDB](https://mongodb.com)\n- [Postgres](https://www.postgresql.org/).\n\nYou can run them locally:\n\n- [RabbitMQ](http://localhost:15672): `localhost:15672`\n- Redis: `localhost:6379`\n- MongoDB: `localhost:27017`\n- Postgres: `localhost:5432`\n\n\n`infrastructure-monitoring.yml` allows to install the monitoring infrastructure components. They are:\n- [Prometheus](https://prometheus.io/)\n- [Grafana](https://grafana.com/)\n- [InfluxDB](https://www.influxdata.com/)\n- [Jaeger](https://www.jaegertracing.io/)\n- [Seq](https://datalust.co/seq)\n\n\nYou can run them locally:\n\n- [Prometheus](localhost:9090): `localhost:9090`\n- [Grafana](localhost:3000): `localhost:3000`\n- [InfluxDB](localhost:8086): `localhost:8086`\n- [Jaeger](localhost:16686): `localhost:16686`\n- [Seq](localhost:5341): `localhost:5341`\n\n\n`infrastructure-scaling.yml` allows to install the scaling infrastructure components. They are:\n- Fabio\n- Consul\n\n`infrastructure-security.yml` allows to install the security infrastructure components.\n\nInside the file you can find:\n\n- vault (Hashicorp)\n\nThe script below allows to setup the infrastructure components. This means that you can find all the containers inside the same network.\n\nThe network is called `genocs`.\n\n``` yml \nnetworks:\n  genocs:\n    name: genocs-network\n    driver: bridge\n```\n\nRemember to add the network configuration inside your docker compose file to setup the network, before running the containers.\n\n\n## ***Kubernetes cluster***\n\nYou can setup the application inside a Kubernetes cluster.\n\nCheck the repo [enterprise-containers](https://github.com/Genocs/enterprise-containers) to setup a Kubernetes cluster. \nThere you can find scripts, configuration files and documentation to setup a cluster from scratch.\n\n## Support\n\nUse [**api-workbench**](./api-workbench.rest) inside Visual Studio code with [REST Client](https://marketplace.visualstudio.com/items?itemName=humao.rest-client) plugin \n\n## Configuration\n\n``` json\n   \"app\": {\n    \"name\": \"Demo WebApi\",\n    \"service\": \"demo-service\",\n    \"instance\": \"01\",\n    \"version\": \"v1.0\",\n    \"displayBanner\": false,\n    \"displayVersion\": false\n  },\n  \"consul\": {\n    \"enabled\": false,\n    \"url\": \"http://localhost:8500\",\n    \"service\": \"demo-service\",\n    \"address\": \"docker.for.win.localhost\",\n    \"port\": \"5070\",\n    \"pingEnabled\": true,\n    \"pingEndpoint\": \"health\",\n    \"pingInterval\": 3,\n    \"removeAfterInterval\": 3\n  },\n  \"fabio\": {\n    \"enabled\": false,\n    \"url\": \"http://localhost:9999\",\n    \"service\": \"demo-service\"\n  },\n  \"httpClient\": {\n    \"type\": \"fabio\",\n    \"retries\": 3,\n    \"services\": {},\n    \"requestMasking\": {\n      \"enabled\": true,\n      \"maskTemplate\": \"*****\"\n    },\n    \"correlationIdHeader\": \"x-correlation-id\"\n  },\n  \"logger\": {\n    \"level\": \"information\",\n    \"excludePaths\": [ \"/\", \"/ping\", \"/metrics\" ],\n    \"excludeProperties\": [\n      \"api_key\",\n      \"access_key\",\n      \"ApiKey\",\n      \"ApiSecret\",\n      \"ClientId\",\n      \"ClientSecret\",\n      \"ConnectionString\",\n      \"Password\",\n      \"Email\",\n      \"Login\",\n      \"Secret\",\n      \"Token\"\n    ],\n    \"console\": {\n      \"enabled\": false\n    },\n    \"elk\": {\n      \"enabled\": false,\n      \"url\": \"http://localhost:9200\"\n    },\n    \"file\": {\n      \"enabled\": false,\n      \"path\": \"logs/logs.txt\",\n      \"interval\": \"day\"\n    },\n    \"seq\": {\n      \"enabled\": false,\n      \"url\": \"http://localhost:5341\",\n      \"apiKey\": \"secret\"\n    },\n    \"azure\": {\n      \"enabled\": false,\n      \"connectionString\": \"\"\n    },\n    \"tags\": {}\n  },\n  \"jaeger\": {\n    \"enabled\": false,\n    \"serviceName\": \"users\",\n    \"udpHost\": \"localhost\",\n    \"udpPort\": 6831,\n    \"maxPacketSize\": 65000,\n    \"sampler\": \"const\",\n    \"excludePaths\": [ \"/\", \"/ping\", \"/metrics\" ]\n  },\n  \"jwt\": {\n    \"certificate\": {\n      \"location\": \"certs/localhost.pfx\",\n      \"password\": \"test\",\n      \"rawData\": \"\"\n    },\n    \"issuer\": \"genocs-identity-service\",\n    \"validIssuer\": \"genocs-identity-service\",\n    \"validateAudience\": false,\n    \"validateIssuer\": true,\n    \"validateLifetime\": true,\n    \"expiry\": \"01:00:00\"\n  },\n  \"metrics\": {\n    \"enabled\": false,\n    \"influxEnabled\": false,\n    \"prometheusEnabled\": false,\n    \"influxUrl\": \"http://localhost:8086\",\n    \"database\": \"test\",\n    \"env\": \"local\",\n    \"interval\": 5\n  },\n  \"prometheus\": {\n    \"enabled\": false,\n    \"endpoint\": \"/metrics\"\n  },\n  \"mongodb\": {\n    \"connectionString\": \"mongodb://localhost:27017\",\n    \"database\": \"genocs-users-service\",\n    \"seed\": false\n  },\n  \"outbox\": {\n    \"enabled\": false,\n    \"type\": \"sequential\",\n    \"expiry\": 3600,\n    \"intervalMilliseconds\": 2000,\n    \"inboxCollection\": \"inbox\",\n    \"outboxCollection\": \"outbox\",\n    \"disableTransactions\": false\n  },\n  \"rabbitMq\": {\n    \"connectionName\": \"users-service\",\n    \"retries\": 3,\n    \"retryInterval\": 2,\n    \"conventionsCasing\": \"snakeCase\",\n    \"logger\": {\n      \"enabled\": false\n    },\n    \"username\": \"guest\",\n    \"password\": \"guest\",\n    \"virtualHost\": \"/\",\n    \"port\": 5672,\n    \"hostnames\": [\n      \"localhost\"\n    ],\n    \"requestedConnectionTimeout\": \"00:00:30\",\n    \"requestedHeartbeat\": \"00:01:00\",\n    \"socketReadTimeout\": \"00:00:30\",\n    \"socketWriteTimeout\": \"00:00:30\",\n    \"continuationTimeout\": \"00:00:20\",\n    \"handshakeContinuationTimeout\": \"00:00:10\",\n    \"networkRecoveryInterval\": \"00:00:05\",\n    \"exchange\": {\n      \"declare\": true,\n      \"durable\": true,\n      \"autoDelete\": false,\n      \"type\": \"topic\",\n      \"name\": \"users\"\n    },\n    \"queue\": {\n      \"declare\": true,\n      \"durable\": true,\n      \"exclusive\": false,\n      \"autoDelete\": false,\n      \"template\": \"users-service/{{exchange}}.{{message}}\"\n    },\n    \"context\": {\n      \"enabled\": true,\n      \"header\": \"message_context\"\n    },\n    \"spanContextHeader\": \"span_context\"\n  },\n  \"redis\": {\n    \"connectionString\": \"localhost\",\n    \"instance\": \"users-service:\",\n    \"database\": 0\n  },\n  \"swagger\": {\n    \"enabled\": false,\n    \"reDocEnabled\": false,\n    \"name\": \"v1\",\n    \"title\": \"API\",\n    \"version\": \"v1\",\n    \"routePrefix\": \"swagger\",\n    \"includeSecurity\": true\n  },\n  \"security\": {\n    \"certificate\": {\n      \"header\": \"Certificate\"\n    }\n  },\n  \"azureKeyVault\": {\n    \"enabled\": false,\n    \"name\": \"gnx-keyvault\",\n    \"managedIdentityId\": \"secret\",\n  },\n  \"vault\": {\n    \"enabled\": false,\n    \"url\": \"http://localhost:8200\",\n    \"authType\": \"token\",\n    \"token\": \"secret\",\n    \"username\": \"user\",\n    \"password\": \"secret\",\n    \"kv\": {\n      \"enabled\": true,\n      \"engineVersion\": 2,\n      \"mountPoint\": \"kv\",\n      \"path\": \"users-service/settings\"\n    },\n    \"pki\": {\n      \"enabled\": true,\n      \"roleName\": \"users-service\",\n      \"commonName\": \"users-service.demo.io\"\n    },\n    \"lease\": {\n      \"mongo\": {\n        \"type\": \"database\",\n        \"roleName\": \"users-service\",\n        \"enabled\": true,\n        \"autoRenewal\": true,\n        \"templates\": {\n          \"connectionString\": \"mongodb://{{username}}:{{password}}@localhost:27017\"\n        }\n      }\n    }\n  }\n```\n---\n\n## Enterprise Application\n\nInside **./src/apps** folder you can find a full-fledged application composed by:\n- ApiGateway\n- Identity Service\n- Order Service\n- Product Service\n- SignalR Service\n\nIn that way you can test the entire flow.\n\n**TODO**: Add a architecture diagram to show the components and how they interact with each other.\n\n### How to BUILD \u0026 RUN the application\n\nThe build and run process can be done by using docker-compose\n\n``` bash\ncd src/apps\n\n# Build with docker compose\ndocker compose -f ./docker-compose.yml -f ./docker-compose.override.yml --env-file ./local.env --project-name genocs-app build\n\n# *** Before running the solution remember to check ***\n# *** if the infrastructure services were setup     ***\n\n# Run with docker compose\ndocker compose -f ./docker-compose.yml --env-file ./local.env --project-name genocs-app up -d\n\n# Clean Docker cache\ndocker builder prune\n```\n\n\nFollowing commands are useful to build and push the images one by one\n\n``` bash\ncd src/apps\n\n# Build the api gateway\ndocker build -t genocs/apigateway:1.0.0 -t genocs/apigateway:latest -f ./apigateway.dockerfile .\n\n# Build the identity service\ndocker build -t genocs/identities:1.0.0 -t genocs/identities:latest -f ./identity-webapi.dockerfile .\n\n# Build the order service\ndocker build -t genocs/orders:1.0.0 -t genocs/orders:latest -f ./containers/order-webapi.dockerfile .\n\n# Build the product service\ndocker build -t genocs/products:1.0.0 -t genocs/products:latest -f ./product-webapi.dockerfile .\n\n# Build the signalr service\ndocker build -t genocs/signalr:1.0.0 -t genocs/signalr:latest -f ./signalr-webapi.dockerfile .\n\n\n# Push on Dockerhub\ndocker push genocs/apigateway:1.0.0\ndocker push genocs/apigateway:latest\ndocker push genocs/identities:1.0.0\ndocker push genocs/identities:latest\ndocker push genocs/orders:1.0.0\ndocker push genocs/orders:latest\ndocker push genocs/products:1.0.0\ndocker push genocs/products:latest\ndocker push genocs/signalr:1.0.0\ndocker push genocs/signalr:latest\n```\n\n\n### Deploy in a cloud instance\n\nYou can deploy Demo Application with one click in Heroku, Microsoft Azure, or Google Cloud Platform: \n\n[\u003cimg src=\"https://www.herokucdn.com/deploy/button.svg\" height=\"30px\"\u003e](https://heroku.com/deploy?template=https://github.com/heartexlabs/label-studio/tree/heroku-persistent-pg)\n[\u003cimg src=\"https://aka.ms/deploytoazurebutton\" height=\"30px\"\u003e](https://portal.azure.com/#create/Microsoft.Template/uri/https%3A%2F%2Fraw.githubusercontent.com%2Fheartexlabs%2Flabel-studio%2Fmaster%2Fazuredeploy.json)\n[\u003cimg src=\"https://deploy.cloud.run/button.svg\" height=\"30px\"\u003e](https://deploy.cloud.run)\n\n## License\n\nThis project is licensed with the [MIT license](LICENSE).\n\n## Changelog\n\nView Complete [Changelog](https://github.com/Genocs/microservice-template/blob/main/CHANGELOG.md).\n\n## Community\n\n- Discord [@genocs](https://discord.com/invite/fWwArnkV)\n- Facebook Page [@genocs](https://facebook.com/Genocs)\n- Youtube Channel [@genocs](https://youtube.com/c/genocs)\n\n\n## Support\n\nHas this Project helped you learn something New? or Helped you at work?\nHere are a few ways by which you can support.\n\n- ⭐ Leave a star! \n- 🥇 Recommend this project to your colleagues.\n- 🦸 Do consider endorsing me on LinkedIn for ASP.NET Core - [Connect via LinkedIn](https://www.linkedin.com/in/giovanni-emanuele-nocco-b31a5169/) \n- ☕ If you want to support this project in the long run, [consider buying me a coffee](https://www.buymeacoffee.com/genocs)!\n  \n\n[![buy-me-a-coffee](https://raw.githubusercontent.com/Genocs/blazor-template/main/assets/buy-me-a-coffee.png \"buy-me-a-coffee\")](https://www.buymeacoffee.com/genocs)\n\n## Code Contributors\n\nThis project exists thanks to all the people who contribute. [Submit your PR and join the team!](CONTRIBUTING.md)\n\n[![genocs contributors](https://contrib.rocks/image?repo=Genocs/blazor-template \"genocs contributors\")](https://github.com/genocs/blazor-template/graphs/contributors)\n\n## Financial Contributors\n\nBecome a financial contributor and help me sustain the project. [Support the Project!](https://opencollective.com/genocs/contribute)\n\n\u003ca href=\"https://opencollective.com/genocs\"\u003e\u003cimg src=\"https://opencollective.com/genocs/individuals.svg?width=890\"\u003e\u003c/a\u003e\n\n\n## Acknowledgements\n- [devmentors](https://github.com/devmentors)\n- [abp](https://github.com/abpframework)\n\n\n- simple changes","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgenocs%2Fgenocs-aspire","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgenocs%2Fgenocs-aspire","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgenocs%2Fgenocs-aspire/lists"}