{"id":20674759,"url":"https://github.com/ramirisu/fitoria","last_synced_at":"2025-06-16T06:07:53.856Z","repository":{"id":65510043,"uuid":"578487410","full_name":"Ramirisu/fitoria","owner":"Ramirisu","description":"fitoria is a modern C++20, cross-platform web framework.","archived":false,"fork":false,"pushed_at":"2024-07-01T04:21:11.000Z","size":19165,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-19T21:23:24.324Z","etag":null,"topics":["cpp","cpp20","http","http-server","linux","macos","unix-domain-socket","web","websocket","windows"],"latest_commit_sha":null,"homepage":"https://ramirisu.github.io/fitoria/","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsl-1.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Ramirisu.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE_1_0.txt","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":"2022-12-15T07:08:22.000Z","updated_at":"2024-07-01T04:20:39.000Z","dependencies_parsed_at":"2024-05-12T00:26:37.752Z","dependency_job_id":"a36be6fa-ba04-4b85-8a81-df9d40639fcb","html_url":"https://github.com/Ramirisu/fitoria","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Ramirisu/fitoria","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ramirisu%2Ffitoria","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ramirisu%2Ffitoria/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ramirisu%2Ffitoria/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ramirisu%2Ffitoria/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Ramirisu","download_url":"https://codeload.github.com/Ramirisu/fitoria/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ramirisu%2Ffitoria/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260109578,"owners_count":22960034,"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":["cpp","cpp20","http","http-server","linux","macos","unix-domain-socket","web","websocket","windows"],"created_at":"2024-11-16T21:07:17.080Z","updated_at":"2025-06-16T06:07:53.826Z","avatar_url":"https://github.com/Ramirisu.png","language":"C++","readme":"# Fitoria\n\n[![build](https://github.com/Ramirisu/fitoria/actions/workflows/build_matrix.yml/badge.svg)](https://github.com/Ramirisu/fitoria/actions/workflows/build_matrix.yml)\n[![codecov](https://codecov.io/gh/Ramirisu/fitoria/branch/main/graph/badge.svg?token=YDZ6KGEV0A)](https://codecov.io/gh/Ramirisu/fitoria)\n![std](https://img.shields.io/badge/std-20-blue.svg)\n![platform](https://img.shields.io/badge/platform-windows%2Flinux%2Fmacos-blue)\n![license](https://img.shields.io/badge/license-BSL--1.0-blue)\n\n**fitoria** is a modern C++20, cross-platform web framework.\n\nThe library is ***experimental*** and still under development, not recommended for production use.\n\n## Table of Contents\n\n- [Fitoria](#fitoria)\n  - [Table of Contents](#table-of-contents)\n  - [Features](#features)\n  - [Getting Started](#getting-started)\n  - [Building](#building)\n  - [License](#license)\n\n## Features\n\n- Ease to use: APIs are designed based on C++20 coroutine and highly integrated with `optional` and `expected` to provide better error handling mechanisms\n- Cross-platform, write once and run across Windows, Linux and MacOS\n- Support HTTP/1.1\n- Support SSL up to TLS 1.3\n- Support Unix Domain Socket\n- Support WebSocket\n\nMore details can be found in the [documentation](https://ramirisu.github.io/fitoria/)\n\n## Getting Started\n\nThe following example demonstrates how to create a simple ``http_server`` and attach handlers to it. ([Getting Started Example](https://github.com/Ramirisu/fitoria/blob/main/example/web/basic/getting_started.cpp))\n\n```cpp\n\n#include \u003cfitoria/web.hpp\u003e\n\nusing namespace fitoria;\nusing namespace fitoria::web;\n\nauto hello_world() -\u003e awaitable\u003cresponse\u003e\n{\n  co_return response::ok()\n      .set_header(http::field::content_type, mime::text_plain())\n      .set_body(\"Hello World!\");\n}\n\nauto echo(std::string body) -\u003e awaitable\u003cresponse\u003e\n{\n  co_return response::ok()\n      .set_header(http::field::content_type, mime::text_plain())\n      .set_body(body);\n}\n\nint main()\n{\n  auto ioc = net::io_context();\n  auto server = http_server::builder(ioc)\n                    .serve(route::get\u003c\"/\"\u003e(hello_world))\n                    .serve(route::post\u003c\"/echo\"\u003e(echo))\n                    .build();\n\n  server.bind(\"127.0.0.1\", 8080);\n\n  ioc.run();\n}\n\n```\n\n## Building\n\nPlatform\n\n- Linux\n- Windows\n- MacOS\n\nCompiler (C++20)\n\n- GCC 13\n- MSVC 17 2022\n- Clang 15\n\nDependencies\n\n|    Library     | Minimum Version |          | Note                                       |\n| :------------: | :-------------: | :------: | :----------------------------------------- |\n| `boost::asio`  |    `1.85.0`     | required |                                            |\n| `boost::beast` |    `1.85.0`     | required |                                            |\n| `boost::json`  |    `1.85.0`     | required |                                            |\n|  `boost::url`  |    `1.85.0`     | required |                                            |\n|  `boost::pfr`  |    `1.85.0`     | required |                                            |\n|     `fmt`      |    `10.0.0`     | required |                                            |\n|     `zlib`     |                 | optional |                                            |\n|    `brotli`    |                 | optional |                                            |\n|   `openssl`    |                 | optional |                                            |\n|   `doctest`    |                 | optional | required when `FITORIA_BUILD_TESTS=ON`.    |\n| `boost::scope` |    `1.85.0`     | optional | required when `FITORIA_BUILD_TESTS=ON`.    |\n| `boost::uuid`  |    `1.85.0`     | optional | required when `FITORIA_BUILD_EXAMPLES=ON`. |\n\nCMake\n\n| Option                           | Description                              | Value  | Default |\n| :------------------------------- | :--------------------------------------- | :----: | :-----: |\n| FITORIA_BUILD_EXAMPLES           | Build examples                           | ON/OFF |   OFF   |\n| FITORIA_BUILD_TESTS              | Build tests                              | ON/OFF |   OFF   |\n| FITORIA_DISABLE_OPENSSL          | Do not enable OpenSSL dependent features | ON/OFF |   OFF   |\n| FITORIA_DISABLE_ZLIB             | Do not enable ZLIB dependent features    | ON/OFF |   OFF   |\n| FITORIA_DISABLE_BROTLI           | Do not enable Brotli dependent features  | ON/OFF |   OFF   |\n| FITORIA_DISABLE_LIBURING         | Do not enable liburing                   | ON/OFF |   OFF   |\n| FITORIA_ENABLE_CODECOV           | Enable code coverage build               | ON/OFF |   OFF   |\n| FITORIA_ENABLE_CLANG_TIDY        | Enable clang-tidy check                  | ON/OFF |   OFF   |\n| FITORIA_ENABLE_ADDRESS_SANITIZER | Compile with `-fsanitize=address`        | ON/OFF |   OFF   |\n\n```sh\n\ngit clone https://github.com/Ramirisu/fitoria.git\ncd fitoria/\ncmake -B build -DFITORIA_BUILD_EXAMPLES=ON -DFITORIA_BUILD_TESTS=ON\ncmake --build build\ncd build \u0026\u0026 ctest \u0026\u0026 cd ..\n\n```\n\n## License\n\nThis project is distributed under the [Boost Software License 1.0](https://www.boost.org/LICENSE_1_0.txt).\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Framirisu%2Ffitoria","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Framirisu%2Ffitoria","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Framirisu%2Ffitoria/lists"}