{"id":44638732,"url":"https://github.com/impulse-sw/impulse-kit","last_synced_at":"2026-05-05T20:35:11.717Z","repository":{"id":281142803,"uuid":"938383964","full_name":"impulse-sw/impulse-kit","owner":"impulse-sw","description":"Web services and tools for Impulse","archived":false,"fork":false,"pushed_at":"2026-02-11T19:52:16.000Z","size":576,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"unstable","last_synced_at":"2026-02-12T03:55:51.707Z","etag":null,"topics":["dsl-interpreter","http3","json-simd","leptos","msgpack","openapi","opentelemetry","salvo","static-server","web-development","yaml-configuration"],"latest_commit_sha":null,"homepage":"","language":"Rust","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/impulse-sw.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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-02-24T21:44:29.000Z","updated_at":"2026-02-11T19:52:19.000Z","dependencies_parsed_at":"2025-04-06T13:23:10.938Z","dependency_job_id":"e5a03f02-e8b7-4288-a725-ec721fcdcc9a","html_url":"https://github.com/impulse-sw/impulse-kit","commit_stats":null,"previous_names":["impulse-sw/cc-services","impulse-sw/impulse-kit"],"tags_count":42,"template":false,"template_full_name":null,"purl":"pkg:github/impulse-sw/impulse-kit","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/impulse-sw%2Fimpulse-kit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/impulse-sw%2Fimpulse-kit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/impulse-sw%2Fimpulse-kit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/impulse-sw%2Fimpulse-kit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/impulse-sw","download_url":"https://codeload.github.com/impulse-sw/impulse-kit/tar.gz/refs/heads/unstable","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/impulse-sw%2Fimpulse-kit/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29452148,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-14T15:52:44.973Z","status":"ssl_error","status_checked_at":"2026-02-14T15:52:11.208Z","response_time":53,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["dsl-interpreter","http3","json-simd","leptos","msgpack","openapi","opentelemetry","salvo","static-server","web-development","yaml-configuration"],"created_at":"2026-02-14T18:07:23.855Z","updated_at":"2026-02-14T18:07:23.901Z","avatar_url":"https://github.com/impulse-sw.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# impulse-kit\n\nCollection of Rust libraries, frameworks and programs to build better Internet.\n\n## Overview\n\n### Impulse Server Kit\n\nServer Kit is a simply configurable backend framework based on [Salvo](https://github.com/salvo-rs/salvo). It is simple enough and powerful.\n\n[Server Kit Documentation](./impulse-server-kit/README.md)\n\n### Impulse Server Kit DSL\n\nServer Kit provides DSL-to-API prototype translator to simplify development:\n\n- automated version bumping on breaking changes\n- automated OpenAPI spec generation\n- automated OpenTelemetry instrumenting.\n\nSK DSL allows you to export server API prototypes (you just need to implement endpoints' logic) and Rust \u0026 JS clients for this API.\n\n[SK DSL Documentation](./impulse-server-kit-dsl/README.md)\n\n### Impulse Static Server\n\nStatic Server is simple frontend-to-client provider built with Server Kit. You can edit `static-server.yaml` to specify Server Kit parameters.\n\nOn its own, Static Server serves all files from one of distribution folders:\n\n- `/usr/local/frontend-dist`\n- `{CURRENT_EXE_PATH}/dist`\n\nAnd more! It internally redirects all requests without file extension to `index.html`, and your SPA apps can run smoothly.\n\nAlso, you can use Static Server as a library to include frontend router to your backend application:\n\n```rust\n  let router = impulse_server_kit::get_root_router(\u0026state)\n    .hoop(\n      affix_state::inject(state.clone())\n        .inject(setup.clone())\n        .inject(connect_sea_orm().await?)\n        .inject(auth_cli),\n    )\n    .push(crate::api::auth_router())\n    .push(crate::api::chat_router())\n    .push(impulse_static_server::frontend_router()?); // include it in the end for correct redirects\n```\n\nAlso, you can specify distribution path:\n\n```rust\n  ...\n    .push(impulse_static_server::frontend_router_from_given_dist(\u0026PathBuf::from(\"/any/other/folder\"))?);\n```\n\n[Static Server Documentation](./impulse-static-server/README.md)\n\n### `impulse-utils`\n\n`impulse-utils` is a bunch of fullstack utils:\n\n- common error types: `ServerError`, `ClientError` and `ErrorResponse`\n- unified result types: `MResult\u003cT\u003e = Result\u003cT, ServerError\u003e` and `CResult\u003cT\u003e = Result\u003cT, ClientError\u003e`\n- backend response types for Salvo and Server Kit: `ok!()`, `plain!(str)`, `html!(str)`, `file_upload!(pathbuf, filename)`, `json!(ser)` and `msgpack!(ser)`\n- `ExplicitServerWrite` backend trait which uses only `\u0026mut Response` to respond unlike `ServerResponseWriter::write(self, req, depot, res)`\n- MsgPack extraction traits for `reqwest::Response` and `salvo::Request`\n- MsgPack send trait for `reqwest::RequestBuilder`\n- SIMD JSON support\n\nIn a way, `impulse-utils` is useful in many cases such as error handling and response writing.\n\n[`impulse-utils` Documentation](./impulse-utils/README.md)\n\n### Impulse UI Kit\n\nUI Kit is just superstructure above Leptos framework. It provides:\n\n- simple application entrypoint\n- logging support with `log`\n- automated light/dark themes (with Tailwind support)\n- utils to perform request to the backend (`impulse_ui_kit::router::endpoint` and `impulse_ui_kit::router::redirect` functions)\n\nStartup example:\n\n```rust\nfn main() {\n  impulse_ui_kit::setup_app(log::Level::Info, Box::new(move || { view! { \u003cApp /\u003e }.into_any() }))\n}\n```\n\n[UI Kit Documentation](./impulse-ui-kit/README.md)\n\n[UI Kit Example](https://github.com/impulse-sw/impulse-ui-kit-example)\n\n## Rust Toolchain\n\n**This repository actively uses `nightly` toolchain.** While these frameworks and libraries are battle-tested anyway, consider not to choose `impulse-kit` to use if you are not aware of `nightly` toolchain.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fimpulse-sw%2Fimpulse-kit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fimpulse-sw%2Fimpulse-kit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fimpulse-sw%2Fimpulse-kit/lists"}