{"id":13587054,"url":"https://github.com/framesurge/perseus","last_synced_at":"2026-01-15T22:20:14.014Z","repository":{"id":37022299,"uuid":"386577829","full_name":"framesurge/perseus","owner":"framesurge","description":"A state-driven web development framework for Rust with full support for server-side rendering and static generation.","archived":false,"fork":false,"pushed_at":"2025-08-02T22:27:02.000Z","size":180592,"stargazers_count":2237,"open_issues_count":26,"forks_count":89,"subscribers_count":13,"default_branch":"main","last_synced_at":"2026-01-13T04:11:52.316Z","etag":null,"topics":["isomorphic","rust","ssg","ssr","transitional-app"],"latest_commit_sha":null,"homepage":"https://framesurge.sh/perseus/en-US","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/framesurge.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2021-07-16T09:12:53.000Z","updated_at":"2025-12-29T11:55:02.000Z","dependencies_parsed_at":"2023-12-12T23:23:14.154Z","dependency_job_id":"d8c68c8b-7fdb-4156-9a61-e47735663a03","html_url":"https://github.com/framesurge/perseus","commit_stats":{"total_commits":997,"total_committers":26,"mean_commits":38.34615384615385,"dds":0.3029087261785356,"last_synced_commit":"49930255c8551e7340623cbaca9931cbd0d2f79b"},"previous_names":["arctic-hen7/perseus"],"tags_count":75,"template":false,"template_full_name":null,"purl":"pkg:github/framesurge/perseus","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/framesurge%2Fperseus","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/framesurge%2Fperseus/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/framesurge%2Fperseus/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/framesurge%2Fperseus/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/framesurge","download_url":"https://codeload.github.com/framesurge/perseus/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/framesurge%2Fperseus/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28472626,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-15T22:13:38.078Z","status":"ssl_error","status_checked_at":"2026-01-15T22:12:11.737Z","response_time":62,"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":["isomorphic","rust","ssg","ssr","transitional-app"],"created_at":"2024-08-01T15:05:59.566Z","updated_at":"2026-01-15T22:20:13.990Z","avatar_url":"https://github.com/framesurge.png","language":"Rust","funding_links":[],"categories":["Rust","rust"],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003ePerseus\u003c/h1\u003e\n\n[![Book](https://img.shields.io/badge/Book-framesurge.sh-informational?style=for-the-badge)](https://framesurge.sh/perseus/en-US/docs)\n[![API Docs](https://img.shields.io/docsrs/perseus?label=API%20Docs\u0026style=for-the-badge)](https://docs.rs/perseus)\n[![Crate Page](https://img.shields.io/crates/v/perseus?style=for-the-badge)](https://crates.io/crates/perseus)\n[![Top Language](https://img.shields.io/github/languages/top/framesurge/perseus?style=for-the-badge)]()\n[![Discord Chat](https://img.shields.io/discord/820400041332179004?label=Discord\u0026style=for-the-badge)](https://discord.gg/PgwPn7dKEk)\n\nPerseus is a blazingly fast frontend web development framework built in Rust with support for generating page state at build-time, request-time, incrementally, or whatever you'd like! It supports reactivity using [Sycamore](https://github.com/sycamore-rs/sycamore), and builds on it to provide a fully-fledged framework for developing modern apps.\n\n-   📕 Supports static generation (serving only static resources)\n-   🗼 Supports server-side rendering (serving dynamic resources)\n-   🔧 Supports revalidation after time and/or with custom logic (updating rendered pages)\n-   🛠️ Supports incremental regeneration (build on demand)\n-   🏭 Open build matrix (use any rendering strategy with anything else)\n-   🖥️ CLI harness that lets you build apps with ease and confidence\n-   🌐 Full i18n support out-of-the-box with [Fluent](https://projectfluent.org)\n-   🏎 Lighthouse scores of 100 on desktop and over 95 on mobile\n-   ⚡ Support for *hot state reloading* (reload your entire app's state after you make any code changes in development, Perseus is the only framework in the world that can do this, to our knowledge)\n\n## What's it like?\n\nHere's a taste of Perseus (see [the _tiny_ example](https://github.com/framesurge/perseus/tree/main/examples/comprehensive/tiny) for more):\n\n```rust,ignore\nuse perseus::prelude::*;\nuse sycamore::prelude::*;\n\n#[perseus::main(perseus_axum::dflt_server)]\npub fn main\u003cG: Html\u003e() -\u003e PerseusApp\u003cG\u003e {\n    PerseusApp::new()\n        .template(\n            Template::build(\"index\")\n                .view(|cx| {\n                    view! { cx,\n                        p { \"Hello World!\" }\n                    }\n                })\n                .build()\n        )\n}\n```\n\nCheck out [the book](https://framesurge.sh/perseus/en-US/docs) to learn how to turn that into your next app!\n\n## Quick start\n\nIf you want to start working with Perseus right away, run the following commands and you'll have a basic app ready in no time! (Or, more accurately, after Cargo compiles everything...)\n\n``` shell\ncargo install perseus-cli\nperseus new my-app\ncd my-app/\nperseus serve -w\n```\n\nThen, hop over to \u003chttp://localhost:8080\u003e and see a placeholder app, in all its glory! If you change some code, that'll automatically update, reloading the browser all by itself. (This rebuilding might take a while though, see [here](https://framesurge.sh/perseus/en-US/docs/next/fundamentals/compilation-times/) for how to speed things up.)\n\n## Aim\n\nSupport every major rendering strategy and provide developers the ability to efficiently create super-fast apps with Rust and a fantastic developer experience!\n\n## Motivation\n\nThere is a sore lack of Rust frameworks for frontend development that support more than just SPAs and client-side rendering, and so Perseus was born. We need something like NextJS for Wasm. But why stop there?\n\n## Contributing\n\nWe appreciate all kinds of contributions, check out our [contributing guidelines](https://github.com/framesurge/perseus/blob/main/CONTRIBUTING.md) for more information! Also, please be sure to follow our [code of conduct](https://github.com/framesurge/perseus/blob/main/CODE_OF_CONDUCT.md).\n\nYou can also chat about Perseus on [our channel on Sycamore's Discord server](https://discord.com/invite/GNqWYWNTdp).\n\nPerseus wouldn't be posible without the hard work of all these wonderful people!\n\n\u003ca href=\"https://github.com/framesurge/perseus/graphs/contributors\"\u003e\n  \u003cimg src=\"https://contrib.rocks/image?repo=framesurge/perseus\" /\u003e\n\u003c/a\u003e\n\n## License\n\nSee [`LICENSE`](https://github.com/framesurge/perseus/blob/main/LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fframesurge%2Fperseus","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fframesurge%2Fperseus","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fframesurge%2Fperseus/lists"}