{"id":13771419,"url":"https://github.com/gemrest/windmark","last_synced_at":"2025-09-11T08:35:36.777Z","repository":{"id":56953822,"uuid":"474556213","full_name":"gemrest/windmark","owner":"gemrest","description":"🏗️ Elegant \u0026 Highly Performant Async Gemini Server Framework for the Modern Age","archived":false,"fork":false,"pushed_at":"2025-07-08T06:16:45.000Z","size":532,"stargazers_count":14,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-08-16T12:23:39.000Z","etag":null,"topics":["framework","gemini","gemini-server"],"latest_commit_sha":null,"homepage":"https://docs.rs/windmark","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gemrest.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,"zenodo":null},"funding":{"github":["fuwn"],"custom":["https://fuwn.me","https://gem.rest"],"ko_fi":"debian"}},"created_at":"2022-03-27T06:38:16.000Z","updated_at":"2025-08-10T03:03:58.000Z","dependencies_parsed_at":"2024-07-17T04:46:17.439Z","dependency_job_id":"315376f3-98bd-4cf9-b203-820eac067511","html_url":"https://github.com/gemrest/windmark","commit_stats":{"total_commits":151,"total_committers":1,"mean_commits":151.0,"dds":0.0,"last_synced_commit":"4161c2606f0a2c5228cdc5f5c1261bbb670a2cd4"},"previous_names":[],"tags_count":39,"template":false,"template_full_name":null,"purl":"pkg:github/gemrest/windmark","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gemrest%2Fwindmark","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gemrest%2Fwindmark/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gemrest%2Fwindmark/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gemrest%2Fwindmark/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gemrest","download_url":"https://codeload.github.com/gemrest/windmark/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gemrest%2Fwindmark/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274602271,"owners_count":25315199,"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","status":"online","status_checked_at":"2025-09-11T02:00:13.660Z","response_time":74,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["framework","gemini","gemini-server"],"created_at":"2024-08-03T17:00:51.289Z","updated_at":"2025-09-11T08:35:36.765Z","avatar_url":"https://github.com/gemrest.png","language":"Rust","funding_links":["https://github.com/sponsors/fuwn","https://fuwn.me","https://gem.rest","https://ko-fi.com/debian"],"categories":["Servers"],"sub_categories":["Graphical"],"readme":"# Windmark\n\n[![crates.io](https://img.shields.io/crates/v/windmark.svg)](https://crates.io/crates/windmark)\n[![docs.rs](https://docs.rs/windmark/badge.svg)](https://docs.rs/windmark)\n[![github.com](https://github.com/gemrest/windmark/actions/workflows/check.yaml/badge.svg?branch=main)](https://github.com/gemrest/windmark/actions/workflows/check.yaml)\n\nWindmark is an elegant and highly performant async Gemini server framework for\nthe modern age!\n\nNow supporting both [Tokio](https://tokio.rs/) and [`async-std`](https://async.rs/)!\n\n## Usage\n\n\u003e [!NOTE]\n\u003e A macro-based \"`struct`-router\" is in active development as a simplified\n\u003e alternative to the standard server creation approach. Check out\n\u003e [Rossweisse](./rossweisse/) for more information!\n\n### Features\n\n| Feature            | Description                                                                                             |\n| ------------------ | ------------------------------------------------------------------------------------------------------- |\n| `default`          | Base Windmark framework using [Tokio](https://tokio.rs/)                                                |\n| `logger`           | Enables the default [`pretty_env_logger`](https://github.com/seanmonstar/pretty-env-logger) integration |\n| `auto-deduce-mime` | Exposes `Response`s and macros that automatically fill MIMEs for non-Gemini responses                   |\n| `response-macros`  | Simple macros for all `Response`s                                                                       |\n| `tokio`            | Marks [Tokio](https://tokio.rs/) as the asynchronous runtime                                            |\n| `async-std`        | Marks [`async-std`](https://async.rs/) as the asynchronous runtime                                      |\n| `prelude`          | Exposes the `prelude` module containing the most used Windmark features                                 |\n\n### Add Windmark and Tokio as Dependencies\n\n```toml\n# Cargo.toml\n\n[dependencies]\nwindmark = \"0.4.0\"\ntokio = { version = \"1.26.0\", features = [\"full\"] }\n\n# If you would like to use the built-in logger (recommended)\n# windmark = { version = \"0.4.0\", features = [\"logger\"] }\n\n# If you would like to use the built-in MIME deduction when `Success`-ing a file\n# (recommended)\n# windmark = { version = \"0.4.0\", features = [\"auto-deduce-mime\"] }\n\n# If you would like to use macro-based responses (as seen below)\n# windmark = { version = \"0.4.0\", features = [\"response-macros\"] }\n```\n\n### Implementing a Windmark Server\n\n```rust\n// src/main.rs\n\nuse windmark::response::Response;\n\n#[windmark::main]\nasync fn main() -\u003e Result\u003c(), Box\u003cdyn std::error::Error\u003e\u003e {\n  windmark::router::Router::new()\n    .set_private_key_file(\"windmark_private.pem\")\n    .set_certificate_file(\"windmark_public.pem\")\n    .mount(\"/\", |_| Response::success(\"Hello, World!\"))\n    .set_error_handler(|_|\n      Response::permanent_failure(\"This route does not exist!\")\n    )\n    .run()\n    .await\n}\n```\n\n### Implementing a Windmark Server Using Rossweisse\n\n```rust\n// src/main.rs\n\nuse windmark::response::Response;\n\n#[rossweisse::router]\nstruct Router;\n\n#[rossweisse::router]\nimpl Router {\n  #[rossweisse::route(index)]\n  pub fn index(\n    _context: windmark::context::RouteContext,\n  ) -\u003e Response {\n    Response::success(\"Hello, World!\")\n  }\n}\n\n// ...\n```\n\n## Examples\n\nExamples can be found within the\n[`examples/`](https://github.com/gemrest/windmark/tree/main/examples) directory\nalong with a rundown of each of their purposes and useful facts.\n\nRun an example by cloning this repository and running `cargo run --example example_name`.\n\n## Modules\n\nModules are composable extensions which can be procedurally mounted onto Windmark\nrouters.\n\n### Examples\n\n- [Simple Stateless Module](https://github.com/gemrest/windmark/blob/main/examples/stateless_module.rs)\n  \\- Mounts the `/smiley` route, returning an 😀 emoji\n- [Simple Stateful Module](https://github.com/gemrest/windmark/blob/main/examples/stateful_module.rs)\n  \\- Adds a click tracker (route hit tracker) that additionally notifies before and after route visits\n- [Windmark Comments](https://github.com/gemrest/windmark-comments) - A fully featured comment engine\n  for your capsule\n\n## License\n\nThis project is licensed with the\n[GNU General Public License v3.0](https://github.com/gemrest/windmark/blob/main/LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgemrest%2Fwindmark","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgemrest%2Fwindmark","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgemrest%2Fwindmark/lists"}