{"id":13578793,"url":"https://github.com/userver-framework/userver","last_synced_at":"2025-04-29T18:44:45.634Z","repository":{"id":37038903,"uuid":"439011383","full_name":"userver-framework/userver","owner":"userver-framework","description":"Production-ready C++ Asynchronous Framework with rich functionality","archived":false,"fork":false,"pushed_at":"2025-04-25T11:31:45.000Z","size":30536,"stargazers_count":2588,"open_issues_count":140,"forks_count":316,"subscribers_count":53,"default_branch":"develop","last_synced_at":"2025-04-25T12:32:54.647Z","etag":null,"topics":["async","asynchronous","coroutines","cplusplus","cplusplus-17","cpp17","database-access","framework","grpc","high-availability","http","http-client","http-server","microservices","mongo","postgres","postgresql","redis","server","web"],"latest_commit_sha":null,"homepage":"https://userver.tech","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/userver-framework.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":"CODEOWNERS","security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":"AUTHORS","dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2021-12-16T14:06:27.000Z","updated_at":"2025-04-25T11:31:49.000Z","dependencies_parsed_at":"2024-04-12T22:39:37.787Z","dependency_job_id":"40faaac4-fd01-4bd6-914e-b03f2e0afa03","html_url":"https://github.com/userver-framework/userver","commit_stats":{"total_commits":5309,"total_committers":330,"mean_commits":"16.087878787878786","dds":0.8979092107741571,"last_synced_commit":"7eb7ed383c9f24667fad37e5c33840702c70ed40"},"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/userver-framework%2Fuserver","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/userver-framework%2Fuserver/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/userver-framework%2Fuserver/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/userver-framework%2Fuserver/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/userver-framework","download_url":"https://codeload.github.com/userver-framework/userver/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251562175,"owners_count":21609506,"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":["async","asynchronous","coroutines","cplusplus","cplusplus-17","cpp17","database-access","framework","grpc","high-availability","http","http-client","http-server","microservices","mongo","postgres","postgresql","redis","server","web"],"created_at":"2024-08-01T15:01:33.781Z","updated_at":"2025-04-29T18:44:45.611Z","avatar_url":"https://github.com/userver-framework.png","language":"C++","readme":"# userver [\u003cimg src=\"./scripts/docs/img/logo.svg\" align='right' width=\"10%\"\u003e](https://userver.tech/)\n\n| Service Templates | Develop / Green Trunk  | v2.0 | v1.0 |\n|-------------------|------------------------|------|------|\n| Core: | [![CI](https://github.com/userver-framework/service_template/actions/workflows/ci.yml/badge.svg) ![Docker build](https://github.com/userver-framework/service_template/actions/workflows/docker.yaml/badge.svg)](https://github.com/userver-framework/service_template/) | [[➚]](https://github.com/userver-framework/service_template/tree/v2.0) | [[➚]](https://github.com/userver-framework/service_template/tree/v1.0.0) |\n| PostgreSQL: | [![CI](https://github.com/userver-framework/pg_service_template/actions/workflows/ci.yml/badge.svg) ![Docker build](https://github.com/userver-framework/pg_service_template/actions/workflows/docker.yaml/badge.svg)](https://github.com/userver-framework/pg_service_template/) | [[➚]](https://github.com/userver-framework/pg_service_template/tree/v2.0) | [[➚]](https://github.com/userver-framework/pg_service_template/tree/v1.0.0) |\n| gRPC+PostgreSQL: | [![CI](https://github.com/userver-framework/pg_grpc_service_template/actions/workflows/ci.yml/badge.svg) ![Docker build](https://github.com/userver-framework/pg_grpc_service_template/actions/workflows/docker.yaml/badge.svg)](https://github.com/userver-framework/pg_grpc_service_template)| [[➚]](https://github.com/userver-framework/pg_grpc_service_template/tree/v2.0) | [[➚]](https://github.com/userver-framework/pg_grpc_service_template/tree/v1.0.0) |\n| gRPC+Mongo: | [![CI](https://github.com/userver-framework/mongo_grpc_service_template/actions/workflows/ci.yml/badge.svg) ![Docker build](https://github.com/userver-framework/mongo_grpc_service_template/actions/workflows/docker.yaml/badge.svg)](https://github.com/userver-framework/mongo_grpc_service_template)| — | — |\n\n**userver** is an open source asynchronous framework with a rich set of abstractions\nfor fast and comfortable creation of C++ microservices, services and utilities.\n\nThe framework solves the problem of efficient I/O interactions transparently for\nthe developers. Operations that would typically suspend the thread of \nexecution do not suspend it. Instead of that, the thread processes other\nrequests and tasks and returns to the handling of the operation only when it is\nguaranteed to execute immediately: \n\n```cpp\n#include \u003cuserver/easy.hpp\u003e\n#include \"schemas/key_value.hpp\"\n\nint main(int argc, char* argv[]) {\n    using namespace userver;\n\n    easy::HttpWith\u003ceasy::PgDep\u003e(argc, argv)\n        // Handles multiple HTTP requests to `/kv` URL concurrently\n        .Get(\"/kv\", [](formats::json::Value request_json, const easy::PgDep\u0026 dep) {\n            // JSON parser and serializer are generated from JSON schema by userver\n            auto key = request_json.As\u003cschemas::KeyRequest\u003e().key;\n\n            // Asynchronous execution of the SQL query in transaction. Current thread\n            // handles other requests while the response from the DB is being received:\n            auto res = dep.pg().Execute(\n                storages::postgres::ClusterHostType::kSlave,\n                // Query is converted into a prepared statement. Subsequent requests\n                // send only parameters in a binary form and meta information is\n                // discarded on the DB side, significantly saving network bandwidth.\n                \"SELECT value FROM key_value_table WHERE key=$1\", key\n            );\n\n            schemas::KeyValue response{key, res[0][0].As\u003cstd::string\u003e()};\n            return formats::json::ValueBuilder{response}.ExtractValue();\n        });\n}\n```\n\nAs a result, with the framework you get straightforward source code,\navoid CPU-consuming context switches from OS, efficiently\nutilize the CPU with a small amount of execution threads.\n\n\nYou can learn more about history and key features of userver from our \n[publications and videos](https://userver.tech/dc/d30/md_en_2userver_2publications.html).\n\n## Other Features\n\n* Efficient asynchronous drivers for databases (MongoDB, PostgreSQL, Valkey,\n  Redis, ClickHouse, MySQL/MariaDB, YDB ...) and data transfer protocols\n  (HTTP/{1.1, 2.0}, gRPC, AMQP 0-9-1, Kafka, TCP, TLS,\n  WebSocket ...), tasks construction and cancellation.\n* Rich set of high-level components for caches, tasks, distributed locking,\n  logging, tracing, statistics, metrics, JSON/YAML/BSON.\n* Functionality to change the service configuration on-the-fly.\n* On-the-fly configurable drivers, options of the deadline propagation,\n  timeouts, congestion-control.\n* Comprehensive set of asynchronous low-level synchronization primitives and\n  OS abstractions. \n\n\n[See the docs for more info](https://userver.tech/de/d6a/md_en_2index.html).\n","funding_links":[],"categories":["Web Application Framework","\u003ca name=\"cpp\"\u003e\u003c/a\u003eC++","C++"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fuserver-framework%2Fuserver","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fuserver-framework%2Fuserver","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fuserver-framework%2Fuserver/lists"}