{"id":15136963,"url":"https://github.com/expresscpp/expresscpp","last_synced_at":"2025-10-23T11:32:09.266Z","repository":{"id":40731767,"uuid":"222133111","full_name":"expresscpp/expresscpp","owner":"expresscpp","description":"Fast, unopinionated, minimalist web framework for C++ Perfect for building REST APIs","archived":false,"fork":false,"pushed_at":"2022-12-11T13:52:50.000Z","size":746,"stargazers_count":92,"open_issues_count":7,"forks_count":16,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-01-30T18:38:44.556Z","etag":null,"topics":["api","boost","conan","cpp17","expressjs","great","rest"],"latest_commit_sha":null,"homepage":"https://gitlab.com/expresscpp/expresscpp","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/expresscpp.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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-11-16T17:13:22.000Z","updated_at":"2024-10-31T21:37:23.000Z","dependencies_parsed_at":"2023-01-27T00:30:50.011Z","dependency_job_id":null,"html_url":"https://github.com/expresscpp/expresscpp","commit_stats":null,"previous_names":[],"tags_count":23,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/expresscpp%2Fexpresscpp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/expresscpp%2Fexpresscpp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/expresscpp%2Fexpresscpp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/expresscpp%2Fexpresscpp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/expresscpp","download_url":"https://codeload.github.com/expresscpp/expresscpp/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":237821708,"owners_count":19371811,"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","boost","conan","cpp17","expressjs","great","rest"],"created_at":"2024-09-26T06:42:11.604Z","updated_at":"2025-10-23T11:32:03.917Z","avatar_url":"https://github.com/expresscpp.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ExpressCpp\n\nFast, unopinionated, minimalist web framework for C++\nPerfect for building REST APIs\n\n![Logo of ExpressCpp](./doc/logo_expresscpp.png)\n\n[![Conan](https://api.bintray.com/packages/expresscpp/expresscpp/expresscpp%3Aexpresscpp/images/download.svg)](https://bintray.com/expresscpp/expresscpp/expresscpp%3Aexpresscpp/_latestVersion)\n[![pipeline status](https://gitlab.com/expresscpp/expresscpp/badges/master/pipeline.svg)](https://gitlab.com/expresscpp/expresscpp/commits/master)\n[![expresscpp_http](https://gitlab.com/expresscpp/expresscpp/badges/master/coverage.svg?job=test:linux:gcc9)](https://gitlab.com/expresscpp/expresscpp/commits/)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![c++17](https://img.shields.io/badge/C++-17-blue.svg?style=flat\u0026logo=c%2B%2B)](https://en.wikipedia.org/wiki/C%2B%2B17)\n\n## Design goals\n\nExpressCpp aims to be for C++ the same as express for Node.JS including its ecosystem of middlewares and extensions.\n\nExpress and Node.JS:\n\n```js\nconst express = require('express');\nconst app = express();\napp.get('/', (req, res) =\u003e res.send('Hello World!'));\nconst port = 3000;\napp.listen(port, () =\u003e console.log(`Listening on port ${port}!`));\n```\n\nExpressCpp:\n\n```cpp\n#include \"expresscpp/expresscpp.hpp\"\nint main() {\n  auto expresscpp = std::make_shared\u003cexpresscpp::ExpressCpp\u003e();\n  expresscpp-\u003eGet(\"/\", [](auto /*req*/, auto res) { res-\u003eSend(\"hello world!\"); });\n  constexpr uint16_t port = 3000u;\n  expresscpp-\u003eListen(port,[=](auto /*ec*/) { std::cout \u003c\u003c \"Listening on port \" \u003c\u003c port \u003c\u003c std::endl; }).Run();\n  return 0;\n}\n```\n\n## Using me\n\n### conan\n\n```bash\nconan remote add expresscpp https://api.bintray.com/conan/expresscpp/expresscpp/\n```\n\nadd this to you conan file:\n\n```txt\nexpresscpp/0.11.0@expresscpp/testing\n```\n\nthis to your cmake:\n\n```cmake\nfind_package(expresscpp)\n# ...\ntarget_link_libraries(my_target PRIVATE expresscpp::expresscpp)\n```\n\n### vendoring as subdirectory\n\n```cmake\nadd_subdirectory(thirdparty/expresscpp)\n# ...\ntarget_link_libraries(my_target PRIVATE expresscpp::expresscpp)\n```\n\n### installing and using find_package\n\n```cmake\ngit clone https://gitlab.com/expresscpp/expresscpp.git\ncd expresscpp\nmkdir build\ncd build\ncmake ..\nmake -j\nsudo make install\n\nfind_package(expresscpp)\n# ...\ntarget_link_libraries(my_target PRIVATE expresscpp::expresscpp)\n```\n\n## Build instructions (e.g. ubuntu)\n\n### Dependencies\n\n- boost[asio, beast, uuid]\n- nlohmann/json\n- libfmt\n- gtest (optional)\n\n#### Conan\n\n```bash\nsudo apt install -y cmake gcc-9 g++-9 python3-pip\n\n# conan for dependency management\nsudo pip3 install conan --upgrade\n\nmkdir -p build\ncd build\ncmake .. -DEXPRESSCPP_USE_CONAN_DEPENDENCIES=ON\ncmake --build . -j\n```\n\n#### Debian\n\n```bash\nsudo apt install -y cmake gcc-9 g++-9\n\n# get debian dependencies\nsudo apt install -y libboost-all-dev nlohmann-json3-dev libfmt-dev libgtest-dev\n\nmkdir -p build\ncd build\ncmake ..\ncmake --build . -j\n```\n\n## Features/Examples\n\n| name                 | file                                                                         |\n|----------------------|------------------------------------------------------------------------------|\n| url query params     | [./example/query_params.cpp](./example/query_params.cpp)                     |\n| url params           | [./example/url_params.cpp](./example/url_params.cpp)                         |\n| auth-like middleware | [./example/middleware_auth_like.cpp](./example/middleware_auth_like.cpp)     |\n| log-like middleware  | [./example/middleware_logger_like.cpp](./example/middleware_logger_like.cpp) |\n| error handler        | [./example/error_handler.cpp](./example/error_handler.cpp)                   |\n| variadic middlewares | [./example/multiple_handlers.cpp](./example/multiple_handlers.cpp)           |\n| subrouting           | [./example/router.cpp](./example/router.cpp)                                 |\n\n## Official Middlewares\n\n| name                       | file                                                     |\n|----------------------------|----------------------------------------------------------|\n| static file provider       | [./example/serve_static.cpp](./example/serve_static.cpp) |\n| favicon provider(embedded) | [./example/favicon.cpp](./example/serve_favicon.cpp)     |\n\n- expresscpp-logger -\u003e TODO\n- expresscpp-grpc-proxy -\u003e TODO\n- expresscpp-reverse-proxy -\u003e TODO\n- expresscpp-basic-auth -\u003e TODO\n\n## Similiar projects\n\n| name                | repo                                         |\n|---------------------|----------------------------------------------|\n| BeastHttp           | https://github.com/0xdead4ead/BeastHttp/     |\n| crow (unmaintained) | https://github.com/ipkn/crow                 |\n| Simple-Web-Server   | https://gitlab.com/eidheim/Simple-Web-Server |\n| restinio            | https://github.com/stiffstream/restinio      |\n| served              | https://github.com/meltwater/served          |\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fexpresscpp%2Fexpresscpp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fexpresscpp%2Fexpresscpp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fexpresscpp%2Fexpresscpp/lists"}