{"id":22656907,"url":"https://github.com/icelk/kvarn","last_synced_at":"2025-04-10T04:59:30.317Z","repository":{"id":41418225,"uuid":"333366689","full_name":"Icelk/kvarn","owner":"Icelk","description":"An extensible and efficient forward-thinking web server for the future.","archived":false,"fork":false,"pushed_at":"2025-03-25T13:32:28.000Z","size":11622,"stargazers_count":20,"open_issues_count":5,"forks_count":2,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-03T01:12:12.338Z","etag":null,"topics":["rust","web-server"],"latest_commit_sha":null,"homepage":"https://kvarn.org","language":"Rust","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/Icelk.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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":"roadmap.md","authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-01-27T09:22:39.000Z","updated_at":"2025-03-25T13:31:30.000Z","dependencies_parsed_at":"2024-03-23T16:31:13.413Z","dependency_job_id":"5d51deb6-d69c-440b-b478-22342ebc2614","html_url":"https://github.com/Icelk/kvarn","commit_stats":{"total_commits":1250,"total_committers":3,"mean_commits":416.6666666666667,"dds":"0.13759999999999994","last_synced_commit":"974ab2ce1d2422e2207e0caeb4e3322811d53692"},"previous_names":[],"tags_count":16,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Icelk%2Fkvarn","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Icelk%2Fkvarn/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Icelk%2Fkvarn/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Icelk%2Fkvarn/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Icelk","download_url":"https://codeload.github.com/Icelk/kvarn/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248161266,"owners_count":21057554,"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":["rust","web-server"],"created_at":"2024-12-09T10:16:51.470Z","updated_at":"2025-04-10T04:59:30.293Z","avatar_url":"https://github.com/Icelk.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![crates.io version](https://img.shields.io/crates/v/kvarn)](https://crates.io/crates/kvarn)\n![lines of code](https://tokei.rs/b1/github/Icelk/kvarn?style=flat)\n[![license](https://img.shields.io/github/license/Icelk/kvarn)](#contributing)\n[![CI status](https://img.shields.io/github/actions/workflow/status/Icelk/kvarn/main.yml?branch=main)](https://github.com/Icelk/kvarn/actions)\n[![open issues](https://img.shields.io/github/issues-raw/Icelk/kvarn)](https://github.com/Icelk/kvarn/issues)\n[![dependency status](https://deps.rs/repo/github/Icelk/kvarn/status.svg)](https://deps.rs/repo/github/Icelk/kvarn)\n[![commit activity](https://img.shields.io/github/commit-activity/m/Icelk/kvarn?label=commits)](https://github.com/Icelk/kvarn/tree/main/)\n\n\u003cimg align=\"right\" width=\"25%\" src=\"https://kvarn.org/logo.svg\"\u003e\n\n# [Kvarn](https://kvarn.org/)\n\n\u003cblockquote style=\"display: inline-block; margin: 0 1rem\"\u003e\n    \u003cb\n        \u003eA forward-thinking fast web server designed to fit\n        \u003ci\u003eyour\u003c/i\u003e needs, efficiently.\u003c/b\n    \u003e\n\u003c/blockquote\u003e\n\u003cp\u003e\n    Kvarn is a \u003ca href=\"https://rust-lang.org\"\u003erusty\u003c/a\u003e,\n    \u003ca href=\"https://github.com/Icelk/kvarn/blob/main/LICENSE\"\n        \u003eopen-source\u003c/a\n    \u003e, extendable web application framework with\n    \u003ca href=\"https://kvarn.org/extensions/\"\u003enative async everywhere\u003c/a\u003e;\n    \u003ca href=\"https://kvarn.org/features/#graceful-shutdown--handover\"\n        \u003ezero downtime\u003c/a\n    \u003e; and\n    \u003ca href=\"https://kvarn.org/features/#sane-defaults\"\n        \u003esafe \u0026amp; fast defaults\u003c/a\n    \u003e.\n\u003c/p\u003e\n\u003cp\u003e\n    Kvarn is batteries-included (optional defaults) with support for\n    \u003cb\u003eautomatic HTTPS certificates\u003c/b\u003e, \u003cb\u003eHTTP/3\u003c/b\u003e, io_uring everywhere,\n    reverse proxying, auto HTTP/2 push, in-memory caching (proper cache\n    invalidation), server communication provided by\n    \u003ca href=\"https://github.com/Icelk/kvarn/tree/main/ctl/\"\u003ea simple CLI\u003c/a\n    \u003e, and easy website creation through Markdown and\n    \u003ca href=\"https://github.com/Icelk/kvarn/tree/main/chute/\"\u003eChute\u003c/a\u003e.\n\u003c/p\u003e\n\nIf you're looking for an **executable** to run your webserver with, see [Mölla](https://github.com/Icelk/moella).\nUsing Mölla, you can configure your host(s), add a search engine, authentication, and other parts of the\n[Kvarn ecosystem](https://kvarn.org/ecosystem/). More info is available on [the website](https://kvarn.org/moella/).\n\nSee the [changelog](CHANGELOG.md) or visit [our website](https://kvarn.org/) for more info.\n\n# Current state\n\nA stable API is available and the crate is on [crates.io](https://crates.io/crates/kvarn).\nYou can view the latest documentation [online](https://doc.kvarn.org).\n\nWhen using Mölla, you get access to all of Kvarn's extensions and most of it's features.\nIf you need to develop custom extension (like [those on icelk.dev](https://github.com/Icelk/icelk.dev/blob/main/server/src/main.rs#L44-L573))\nyou need to compile Kvarn yourself. Luckily,\n[Mölla makes it easy to add custom extensions](https://github.com/Icelk/icelk.dev/blob/659df7f19b2ac22efbe4d20f0978c9f58964c76b/server/src/main.rs#L13-L21).\n\nTo use the latest and greatest you can add Kvarn as a git dependency, though the latest version is recommended:\n\n```ini\n[dependencies]\nkvarn = { git = \"https://github.com/Icelk/kvarn\" }\n```\n\n## Dependencies\n\nTo increase security, build-times, reliability, and speed, I use dependencies sparingly.\n\nThe two heavy-hitters are `tokio` (async runtime for async networking, file access, and extensions) and `rustls` (for encryption, optional if you want to run a unsafe (often local) web server).\n`brotli` and `flate2` are enabled by default to provide compression, but can be turned off.\n`h2` provides optional (but _strongly preferred_) support for the HTTP/2 protocol.\n\nSee [kvarn.org](https://kvarn.org/cargo-features.) for more details.\n\n## Pushing to production\n\nTake a look at the [sample.service](https://github.com/Icelk/kvarn/blob/main/sample.service)\nfor how to configure systemd to use [kvarnctl](https://kvarn.org/ctl/) to manage Kvarn.\n\nYou can now use `systemctl --user reload kvarn` or similar to reload the server\nif you've changed the config or recompiled (if that's your thing).\nThis ensures ([on Unix](https://kvarn.org/shutdown-handover.#handover)) **NO downtime**. Not even a millisecond.\n\n# Installation\n\n[Mölla](https://github.com/Icelk/moella#installation) is the recommended way to get started with Kvarn.\nYou can download it and other Kvarn tools (`kvarnctl` \u0026 `chute`)\nfor Linux and macOS at [the Releases page](https://github.com/Icelk/moella/releases).\n\nFor Kvarn chute downloads for Linux, go [here](https://github.com/Icelk/kvarn/actions/workflows/chute.yml)\nand download the artefact from the topmost job.\n\n`kvarnctl` is also available as [CI builds](https://github.com/Icelk/kvarn/actions/workflows/kvarnctl.yml).\n\n# Documentation\n\nDocumentation of the main branch can be found at [doc.kvarn.org](https://doc.kvarn.org/).\n\nTo document with information on which cargo features enables the code,\nset the environment variable `RUSTDOCFLAGS` to `--cfg docsrs`\n(e.g. in Fish `set -x RUSTDOCFLAGS \"--cfg docsrs\"`)\nand then run `cargo +nightly doc`.\n\n# Changelog\n\nSee the [changelog](https://github.com/Icelk/kvarn/blob/main/CHANGELOG.md).\n\n# Contributing\n\nThis library, and all other sub-projects in this repository,\nare distributed under the Apache License 2.0.\nSo must all contributions also be.\n\nAll rights are reserved for images and logos unless explicitly stated otherwise.\nYou are free to use them if reasonable credit is given. I reserve the right to order you to remove any usage at will.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ficelk%2Fkvarn","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ficelk%2Fkvarn","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ficelk%2Fkvarn/lists"}