{"id":13806791,"url":"https://github.com/importantimport/hatsu","last_synced_at":"2025-04-04T16:11:17.933Z","repository":{"id":182221924,"uuid":"668140281","full_name":"importantimport/hatsu","owner":"importantimport","description":"🩵 Self-hosted \u0026 Fully-automated ActivityPub Bridge for Static Sites.","archived":false,"fork":false,"pushed_at":"2025-03-05T14:27:43.000Z","size":2943,"stargazers_count":185,"open_issues_count":9,"forks_count":5,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-03-28T15:07:35.724Z","etag":null,"topics":["activity-stream","activitypub","docker","federation","fediverse","hacktoberfest","hatsu","rust","social-network","webfinger"],"latest_commit_sha":null,"homepage":"https://hatsu.cli.rs","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/importantimport.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":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"custom":["https://donate.lol/eth/0xaBdB3f715198A4d7e6591b6ebBE8Ccf235e5D752"]}},"created_at":"2023-07-19T05:54:18.000Z","updated_at":"2025-03-27T11:58:10.000Z","dependencies_parsed_at":"2023-11-11T15:21:52.559Z","dependency_job_id":"78042018-0889-4e82-a320-a2dfc371aba5","html_url":"https://github.com/importantimport/hatsu","commit_stats":{"total_commits":989,"total_committers":5,"mean_commits":197.8,"dds":0.004044489383215333,"last_synced_commit":"ca2b92dca79a2ae6e944f232b176359dc28047e1"},"previous_names":["importantimport/hatsu"],"tags_count":32,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/importantimport%2Fhatsu","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/importantimport%2Fhatsu/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/importantimport%2Fhatsu/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/importantimport%2Fhatsu/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/importantimport","download_url":"https://codeload.github.com/importantimport/hatsu/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247208142,"owners_count":20901570,"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":["activity-stream","activitypub","docker","federation","fediverse","hacktoberfest","hatsu","rust","social-network","webfinger"],"created_at":"2024-08-04T01:01:16.238Z","updated_at":"2025-04-04T16:11:17.908Z","avatar_url":"https://github.com/importantimport.png","language":"Rust","funding_links":["https://donate.lol/eth/0xaBdB3f715198A4d7e6591b6ebBE8Ccf235e5D752"],"categories":["Applications","Rust"],"sub_categories":["Web"],"readme":"# Hatsu「初」\n\n[![MSRV](https://img.shields.io/badge/rust-1.80%2B-red)](.clippy.toml)\n[![License](https://img.shields.io/github/license/importantimport/hatsu)](LICENSE)\n[![Matrix](https://img.shields.io/matrix/importantimport%3Amatrix.org)](https://matrix.to/#/#importantimport:matrix.org)\n\nSelf-hosted \u0026 Fully-automated ActivityPub Bridge for Static Sites.\n\n[![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/importantimport/hatsu?quickstart=1)\n\n## About\n\nHatsu is a self-hosted bridge that interacts with Fediverse on behalf of your static site.\n\nNormally it can do all the:\n\n- When a Fediverse user searches for a user of your site (`@catch-all@example.com`), redirects to the corresponding user of the Hatsu instance.\n- When a Fediverse user searches for your site URL (`https://example.com/hello-world`), redirects to the corresponding post on the Hatsu instance.\n- Accepts follow requests and pushes new posts to the follower's homepage as they become available.\n- Receive replies from Fediverse users and backfeed to your static site.\n\nBest of all, these are fully automated! Just set it up once and you won't need to do anything else.\n\n### Features\n\n- Self hostable, easy to deploy.\n  - Comes with [Docker](https://hatsu.cli.rs/admins/install-docker.html).\n- Works with any SSGs and most static hosting services.\n  - Use Feed instead of Webmention to check updates.\n  - It is not required that the site support microformats2.\n  - Redirection in many ways, including purely static files.\n  - Backfeed in many ways. [WIP]\n- High performance.\n  - Backend is written in Rust.\n  - Supports aarch64.\n  \u003c!-- - Frontend is written in Rust. --\u003e\n\n### Installation\n\nRead the [documentation](https://hatsu.cli.rs) to get started.\n\n### Fediverse compatibility\n\nHatsu uses the same library as [Lemmy](https://github.com/LemmyNet/lemmy), [Activitypub-Federation](https://github.com/LemmyNet/activitypub-federation-rust), so it should behave similarly in practice.\n\nIn addition to this, Hatsu is also enabled:\n\n- [signed_fetch_actor](https://docs.rs/activitypub_federation/latest/activitypub_federation/config/struct.FederationConfigBuilder.html#method.signed_fetch_actor)\n  - Hatsu performs an HTTP signature on each request. This ensures compatibility with [Mastodon instances with secure mode enabled](https://docs.joinmastodon.org/admin/config/#authorized_fetch) and [GoToSocial](https://docs.gotosocial.org/en/latest/federation/federating_with_gotosocial/#access-control).\n- [http_signature_compat](https://docs.rs/activitypub_federation/latest/activitypub_federation/config/struct.FederationConfigBuilder.html#method.http_signature_compat)\n  - Like Lemmy, Hatsu enables this by default for [Pleroma](https://git.pleroma.social/pleroma/pleroma/-/issues/2939) compatibility.\n\nIf you're not sure whether it's a Hatsu or Activitypub-Federation compatibility issue, you should open new issue in Hatsu first.\n\n\u003c!-- ### TODO\n\n- Upgrade dependencies\n  - axum 0.7\n    - https://github.com/LemmyNet/activitypub-federation-rust/issues/87\n    - utoipa-swagger-ui 5.0\n  - axum-extra 0.9\n    - use typed-routing (https://github.com/tokio-rs/axum/issues/2218, https://github.com/ibraheemdev/matchit/issues/13)\n  - activitypub-federation 0.5\n    - https://github.com/tokio-rs/axum/pull/2398\n    - https://github.com/hyperium/hyper-util/pull/66\n  - Using AFIT / RPITIT instead of `async-trait`\n- Performance improvements\n  - https://github.com/TechEmpower/FrameworkBenchmarks/issues/8501#issuecomment-1780275745\n  - sonic-rs (required nightly) / simd-json\n  - uuid-simd --\u003e\n\n\u003c!-- ### Useful links\n\n#### ActivityPub\n\n- https://github.com/LemmyNet/activitypub-federation-rust/tree/main/examples/\n- https://github.com/LemmyNet/lemmy/tree/main/crates/apub/\n- https://blog.joinmastodon.org/2018/06/how-to-implement-a-basic-activitypub-server/\n\n#### SeaORM\n\n- https://www.sea-ql.org/SeaORM/docs/basic-crud/basic-schema/\n- https://github.com/SeaQL/sea-orm/tree/master/examples/axum_example/\n- https://github.com/SeaQL/sea-orm/blob/master/tests/basic.rs\n\n#### OpenAPI\n\n- https://github.com/juhaku/utoipa/tree/master/examples/todo-axum\n\n#### Leptos\n\n- https://github.com/leptos-rs/start-axum\n- https://github.com/leptos-rs/start-axum-workspace\n\n#### Shuttle\n\n- https://docs.shuttle.rs/migration/migrating-to-shuttle\n- https://github.com/shuttle-hq/shuttle/issues/179#issuecomment-1203536025 --\u003e\n\n## License\n\nLicensed under [AGPLv3](LICENSE).\n\n### Third Party Licenses\n\nThis project partially copies code from the following projects:\n\n| Project                                                                                         | License                                                                               |\n| ----------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- |\n| [LemmyNet/activitypub-federation-rust](https://github.com/LemmyNet/activitypub-federation-rust) | [AGPL-3.0](https://github.com/LemmyNet/activitypub-federation-rust/blob/main/LICENSE) |\n| [LemmyNet/lemmy](https://github.com/LemmyNet/lemmy)                                             | [AGPL-3.0](https://github.com/LemmyNet/lemmy/blob/main/LICENSE)                       |\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fimportantimport%2Fhatsu","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fimportantimport%2Fhatsu","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fimportantimport%2Fhatsu/lists"}