{"id":18756890,"url":"https://github.com/aiursoftweb/infrastructures","last_synced_at":"2025-04-05T02:08:05.484Z","repository":{"id":42049625,"uuid":"129679454","full_name":"AiursoftWeb/Infrastructures","owner":"AiursoftWeb","description":"Mirror of: https://gitlab.aiursoft.cn/aiursoft/infrastructures","archived":false,"fork":false,"pushed_at":"2025-01-02T19:08:38.000Z","size":12754,"stargazers_count":112,"open_issues_count":36,"forks_count":32,"subscribers_count":12,"default_branch":"master","last_synced_at":"2025-01-06T05:02:49.571Z","etag":null,"topics":["microservice","platform","website"],"latest_commit_sha":null,"homepage":"https://www.aiursoft.com","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/AiursoftWeb.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":"2018-04-16T03:28:14.000Z","updated_at":"2025-01-02T19:08:41.000Z","dependencies_parsed_at":"2023-01-30T17:45:29.939Z","dependency_job_id":"4d05236f-f484-422e-8d62-9c4ec30da01b","html_url":"https://github.com/AiursoftWeb/Infrastructures","commit_stats":{"total_commits":2657,"total_committers":20,"mean_commits":132.85,"dds":"0.37674068498306357","last_synced_commit":"185d08e97ad8b26be6c9ee4350dc8fa1e3de7d3c"},"previous_names":["aiursoftweb/nexus"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AiursoftWeb%2FInfrastructures","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AiursoftWeb%2FInfrastructures/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AiursoftWeb%2FInfrastructures/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AiursoftWeb%2FInfrastructures/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AiursoftWeb","download_url":"https://codeload.github.com/AiursoftWeb/Infrastructures/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247276164,"owners_count":20912288,"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":["microservice","platform","website"],"created_at":"2024-11-07T17:38:38.075Z","updated_at":"2025-04-05T02:08:05.466Z","avatar_url":"https://github.com/AiursoftWeb.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Aiursoft Infrastructures\n\n[![MIT licensed](https://img.shields.io/badge/license-MIT-blue.svg)](https://gitlab.aiursoft.cn/aiursoft/infrastructures/-/blob/master/LICENSE)\n[![Pipeline stat](https://gitlab.aiursoft.cn/aiursoft/infrastructures/badges/master/pipeline.svg)](https://gitlab.aiursoft.cn/aiursoft/infrastructures/-/pipelines)\n[![Test Coverage](https://gitlab.aiursoft.cn/aiursoft/infrastructures/badges/master/coverage.svg)](https://gitlab.aiursoft.cn/aiursoft/infrastructures/-/pipelines)\n[![NuGet version (Aiursoft.Identity)](https://img.shields.io/nuget/v/Aiursoft.Identity.svg)](https://www.nuget.org/packages/Aiursoft.Identity/)\n[![ManHours](https://manhours.aiursoft.cn/r/gitlab.aiursoft.cn/aiursoft/Infrastructures.svg)](https://gitlab.aiursoft.cn/aiursoft/Infrastructures/-/commits/master?ref_type=heads)\n[![Website](https://img.shields.io/website?url=https%3A%2F%2Fwww.aiursoft.com%2F%3Fshow%3Ddirect)](https://www.aiursoft.com)\n\nAiursoft micro-services platform. Powered by ASP.NET Core.\n\n## What is Aiursoft Infrastructures\n\nAiursoft Infrastructures provides many valuable services and simplifies web application development.\n\nAiursoft Infrastructures is a project, runs at the application level, using micro-services design and powers all Aiursoft applications.\n\n![overview](./doc/overview.png)\n\nAiursoft Infrastructures provides a central platform for an entire enterprise. So the enterprise can focus on business app development.\n\nThe enterprise can deploy their dedicated instance of Aiursoft Infrastructures and build their apps with it.\n\n## Example apps\n\nThere are some example apps based on Aiursoft Infrastructures.\n\n* [Kahla](https://gitlab.aiursoft.cn/Aiursoft/Kahla)\n* [AiurDrive](https://gitlab.aiursoft.cn/Aiursoft/AiurDrive)\n* [Warp](https://gitlab.aiursoft.cn/Aiursoft/Warp)\n* [Tracer](https://gitlab.aiursoft.cn/Aiursoft/Tracer)\n\n## Features\n\n* Integrated user authentication https://directory.aiursoft.com (OAuth, Social authenticate, password reset)\n* Account management center https://account.aiursoft.com (Profile editing, Two-FA, social account, switch email)\n* Developer center https://developer.aiursoft.com (App creation and permission management, basic debugging tools)\n* File storage system https://probe.aiursoft.com (Compress, Clear EXIF, customize domain-name)\n* Message queue https://stargate.aiursoft.com (Auto message clear, WebSocket push, channel authentication)\n* Home web page https://www.aiursoft.com (Terms, privacy)\n* Wiki center https://wiki.aiursoft.com (Read document)\n* Cross-platform deployment (Supports Windows, Linux, and Docker)\n\n## How to deploy\n\n### Brief steps\n\n* Get a domain name. (Like aiursoft.com)\n* Get a new server.\n* Create DNS record.\n* Execute the install command on your server.\n\n### Get a server\n\nGet a brand new Ubuntu 18.04 server.\n\n* Server must be Ubuntu 18.04. (20.04 and 16.04 is not supported)\n* Server must have a public IP address. (No local VM)\n* Server must have access to the global Internet. (Not Chinese network)\n\n[Azure](https://www.azure.com), [Vultr](https://www.vultr.com/?ref=7274488) or [DigitalOcean](https://www.DigitalOcean.com) is suggested.\n\n### Install on a server\n\nCreate a wildcard domain record to your server's public IP.\n\n\u003e Example: Resolve *.aiur.io to 123.123.123.123\n\nExecute the following command on the server (Replace the `instance.name` to your own brand name):\n\n```bash\ncurl -sL https://gitlab.aiursoft.cn/aiursoft/infrastructures/-/raw/master/install.sh | sudo bash -s aiur.io instance.name master\n```\n\n### Upgrade your server\n\nIf we released a newer version, and you can upgrade your server via:\n\n```bash\ncurl -sL https://gitlab.aiursoft.cn/aiursoft/infrastructures/-/raw/master/upgrade.sh | sudo bash -s instance.name master\n```\n\nAlso, you can run that upgrade script to repair some issues with your Infrastructures instance.\n\n## The design of Infrastructures\n\n---\ntitle: Project dependency diagram\n---\nstateDiagram-v2\n    Aiursoft.Canon --\u003e Aiursoft.Scanner.Abstractions\n    Aiursoft.AiurProtocol --\u003e Aiursoft.Canon\n    Aiursoft.AiurProtocol --\u003e Aiursoft.CSTools\n    Aiursoft.AiurProtocol --\u003e Aiursoft.AiurProtocol.Abstractions\n    Aiursoft.AiurProtocol.Server --\u003e Aiursoft.AiurProtocol\n    Aiursoft.CSTools --\u003e Aiursoft.Scanner.Abstractions\n    Aiursoft.WebTools --\u003e Aiursoft.CSTools\n    Aiursoft.WebTools --\u003e Aiursoft.Scanner.Abstractions\n    DemoApiApp.Sdk --\u003e Aiursoft.AiurProtocol\n    DemoApiApp --\u003e DemoApiApp.Sdk\n    DemoApiApp --\u003e Aiursoft.WebTools\n    DemoApiApp --\u003e Aiursoft.AiurProtocol.Server\n\n### Basic Services\n\nThe basic services are used to support the operation of the entire platform. It is the basis for the expansion of the subsequent infrastructure and user services throughout the platform. The basic services mainly include the user's authentication, authorization, application authentication, authorization, and allow the user's self-registration and self-registration of the application. At the same time, the underlying service is also responsible for the user's underlying data and the underlying data of the application, as well as the user's set of credentials and the set of credentials for the application.\n\n### Infrastructures\n\nInfrastructure refers to some common software tools that the platform can provide on an infrastructure-based basis. Such software tools are similar to static file storage, object storage, CDN, message queues, caching, and the like. Such services need to be registered in the underlying service and use the application authentication service and the application authorization service to check if the visitor has permission to invoke the infrastructure.\n\n### Applications\n\nBefore discussing the user service layer, all of the underlying services and infrastructure we discussed were oriented toward other sub-services rather than user-oriented. Still, they only provided data interfaces for other service calls. Obviously, as a mature platform, developers and users should not implement the registration of services and the management of permissions by calling interfaces. Therefore, we need to develop additional programs that provide such a user-oriented terminal that allows users to operate through a concise interface and logic.\n\nIn addition to the user interface that OAuth itself needs to provide login, this layer should also provide more basic service in the microservice platform. According to the results of the needs analysis, there are account management services and developer center services in this layer. Both services rely on the infrastructure of the previous layer and provide user-oriented functionality.\n\nAny high-level service is built on the micro-service platform. But the requirements they solve are actually based on the decisions of the companies that use the microservices platform. In other words, regardless of the company's decision-making to build search engines, forums, company homepages, feedback centers, recruitment centers, etc., the platform should be able to support. But the entire process of this part should follow the process followed by a separate software system.\n\n## How to run locally\n\nRunning the entire micro-service platform is very complicated and requires a lot of computing resources. Before you try to run the platform, we strongly suggest running only one specific service. Running one service is very easy and simple.\n\nTo run one service instance locally, execute `dotnet run` under which folder with the project file `.csproj` you want to run.\n\nAs for each one of the sub-projects in it is a simple ASP.NET Core web project. You can reference more documents via the official ASP.NET document for how to run:\n\nhttps://docs.microsoft.com/en-us/aspnet/core/getting-started/?tabs=windows#run-the-app\n\n### Database\n\nIn debugging environment, we are using [Microsoft SQL Server LocalDb](https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/sql-server-express-localdb?view=sql-server-ver15) by default. You can change the connection string in `appsettings.json` to use your own `SQL Server` instance.\n\nIn our production environment, we are using [Microsoft SQL Server](https://www.microsoft.com/en-us/sql-server).\n\nWe are using [Entity Framework Core](https://docs.microsoft.com/en-us/ef/core/) to control our database. It supports different types of databases. So our services can switch between different databases easily.\n\n## How to contribute\n\nThe document is [here](https://wiki.aiursoft.com/Welcome/How%20to%20contribute.md).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faiursoftweb%2Finfrastructures","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faiursoftweb%2Finfrastructures","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faiursoftweb%2Finfrastructures/lists"}