{"id":15058791,"url":"https://github.com/letterbook/letterbook","last_synced_at":"2025-04-10T05:11:20.170Z","repository":{"id":176339232,"uuid":"655543545","full_name":"Letterbook/Letterbook","owner":"Letterbook","description":"Sustainable federated social media built for open correspondence","archived":false,"fork":false,"pushed_at":"2025-04-09T04:19:33.000Z","size":6546,"stargazers_count":140,"open_issues_count":81,"forks_count":21,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-04-10T05:11:16.724Z","etag":null,"topics":["activitypub","contributions-welcome","csharp","federation","mastodon","microblogging"],"latest_commit_sha":null,"homepage":"https://letterbook.com/","language":"C#","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/Letterbook.png","metadata":{"files":{"readme":"readme.md","changelog":null,"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":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2023-06-19T05:50:29.000Z","updated_at":"2025-04-09T04:19:36.000Z","dependencies_parsed_at":"2024-01-12T05:29:07.451Z","dependency_job_id":"62aca990-d985-4ee4-910a-28eec33dbc0e","html_url":"https://github.com/Letterbook/Letterbook","commit_stats":null,"previous_names":["letterbook/letterbook"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Letterbook%2FLetterbook","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Letterbook%2FLetterbook/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Letterbook%2FLetterbook/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Letterbook%2FLetterbook/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Letterbook","download_url":"https://codeload.github.com/Letterbook/Letterbook/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248161276,"owners_count":21057555,"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":["activitypub","contributions-welcome","csharp","federation","mastodon","microblogging"],"created_at":"2024-09-24T22:30:39.427Z","updated_at":"2025-04-10T05:11:20.130Z","avatar_url":"https://github.com/Letterbook.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Letterbook\n\n![Letterbook logo](./docs/letterbook-banner-dark.png)\n\n[![Build status badge](https://github.com/Letterbook/Letterbook/actions/workflows/pull-request.yml/badge.svg?branch=main)](https://github.com/Letterbook/Letterbook/actions/workflows/pull-request.yml)\n[![Good first issues badge](https://img.shields.io/github/issues-search/letterbook/letterbook?query=is%3Aissue%20is%3Aopen%20label%3A%22ready%20to%20start%22%2C%22good%20first%20issue%22%20\u0026style=flat\u0026logo=github\u0026label=Good%20first%20issue\u0026labelColor=%23404951\u0026color=%2333CB56)](https://github.com/Letterbook/Letterbook/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22%2C%22ready+to+start%22)\n\n\nLetterbook is a federated microblogging service, implementing ActivityPub. The goal for the project is to make hosting a fediverse server a better and more sustainable experience. We also want to make it a safer and more inclusive space for the people who make the fediverse their social media home. Those are big aspirations, but we have some solid plans about how to start, and [we would love more input about where to go from there](#contributing).\n\n## Features\nWe don't have an exhaustive list, but we will support many of the features that are already common in the fediverse. You'll be able to post, edit your posts, use hashtags and custom emojis, and migrate accounts, for example.\n\n\u003cdetails\u003e\n  \u003csummary\u003e\n      \u003ch3\u003e\u003ca href=\"https://github.com/Letterbook/Letterbook/issues/131\"\u003eFor Admins and Ops\u003c/a\u003e\u003c/h3\u003e\n  \u003c/summary\u003e\n\n#### Easy setup for new instances\nLetterbook initially deploys as a single executable with simple load-balanced scaling. Aside from ancillary services like object storage and email, 1 server and 1 database is all you need to get up and running. And if you do see huge scale in your future, you can still scale outward to distributed task workers and microservices.\n\n#### Lower cost and complexity\nLetterbook doesn't maintain any live state. Everything lives in the database, so there's no need to run a Redis cluster or similar to act as shared state storage. We also expect to have significantly lower compute demands, due to both the architectural choices to avoid expensive infrastructure and system sprawl, and the use of C#, a very high performance compiled language.\n\n#### First class observability\nLetterbook is thoroughly instrumented for both automatic and custom telemetry, including robust logging, metrics, and distributed tracing. We also provide out-of-the-box collection and dashboards for our telemetry. You can investigate errors, bugs, and performance issues the same way we the developers would.\n\u003c/details\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003e\n      \u003ch3\u003e\u003ca href=\"https://github.com/Letterbook/Letterbook/issues/132\"\u003eFor Moderators\u003c/a\u003e\u003c/h3\u003e\n  \u003c/summary\u003e\n\n#### Local-only posts\nAvoid context collapse! You can talk to your users and they can talk to each other, without risking context collapse by exposure to the whole fediverse.\n\n#### Automatically expiring actions\nModerator actions like blocking, muting, and limiting federation will all be able to automatically expire after a set time.\n\n#### Fine grained federation controls\nYou'll be able to do things like prevent federated posts from appearing in promoted feeds, prevent them from appearing at all without an established follow relationship, hide posts behind a click-through and warning, and defederate without breaking your users follow relationships, in addition to the same basic options as other servers.\n\n#### Other moderator tools\n- Keep and share notes\n- Audit logs\n- Auditable privileged views of non-public posts\n- Spam and quality filters\n- And more\n\u003c/details\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003e\n      \u003ch3\u003e\u003ca href=\"https://github.com/Letterbook/Letterbook/issues/133\"\u003eFor Members\u003c/a\u003e\u003c/h3\u003e\n  \u003c/summary\u003e\n\n#### Frequently requested features\n- Quote replies\n- Collapse notifications\n- Block, limit, and remove replies to your posts\n- Propose and accept edits to alt text and content warnings\n- Compose multi-post threads\n- Save drafts and scheduled posts\n- Formatted posts\n- Emoji reactions\n\n#### Mastodon apps\nWe intend to implement the Mastodon API, which will provide support for many existing Mastodon apps. Over time, we expect our features will grow well beyond what Mastodon supports, of course. But until we do, or if those features don't interest you, your current favorite app will still be there for you.\n\n#### Better discoverability\nLetterbook will have features like topic detection and topic based feeds. Follow recommendations will also consider topics you express an interest in and friends-of-friends relationships.\n\n#### More sophisticated authoring and following options\nWe hope to support long form, multi-page posts. We'll also be able to create multiple promoted feeds for your own posts, and have the ability to follow those feeds specifically. If for some strange reason people want to follow your analysis of CVEs and not your fursuit friday posts, that's a doable thing. And you'll eventually be able to co-author posts with other people.\n\n#### Real DMs\nWe plan to provide a real direct message experience by implementing an XMPP server. If you previously used Jabber, then it's likely that your favorite chat client is ready and waiting for you, better than ever. And if you never stopped, then you probably know that better than we do, and hopefully this is good news for you. You will of course be able to send and receive posts with restricted visibility, just like you do now, so you won't lose access to Mastodon-style direct messages with your contacts.\n\n\u003c/details\u003e\n\n## Background\n\nAll of this is just the beginning of what we have planned for Letterbook. We're very excited about the future, and we get to build it together. If you'd like to know  more about the thought process that went into starting the project, [you can read the blog post](https://jenniferplusplus.com/letterbook/).\n\n## Contributing\n\n\u003e [!TIP]\n\u003e To get started developing, see the Quickstart section in the [Contributing Guide](./CONTRIBUTING.md)\n\n\nPlease reach out to let us know you're interested in the project! There are many ways to contribute, it's a lot more than just code. Experience in these areas would be particularly helpful, right now. And this list will only grow over time.\n\n1. Visual and web design\n2. Web UI code \n3. Backend code\n4. Technical and copywriting\n5. Cross-project coordination\n6. Product research\n\n## Roadmap\n\n\u003e [!IMPORTANT]\n\u003e We use projects to organize the backlog  \n\u003e Our current project is the [Single User Preview](https://github.com/orgs/Letterbook/projects/5/views/4)\n\nIt might help to put all this in context of what has and hasn't been done already. At this point, we've essentially climbed one mountain, and now we're surveying all of the other mountains we still have ahead of us. The plan is to move toward a product that could be responsibly run in production for a single user, with the goal of supporting large multi-user deployments in the future. We'll learn more from the experience of supporting live workloads, and build more robust tools, features, and performance based on that experience. Right now is a great time to join the project. There's so much that needs to be done, and also a solid foundation to work from.\n\n```mermaid\n%%{init: { 'theme': 'default' } }%%\ntimeline\n    section Zero to Federated 🏔️\n        ActivityPub \u0026 friends       : ActivityStreams types : ActivityPub APIs : Data models and persistance : Webfinger API : HTTP Signatures : Message queue\n    section Single user preview 👤\n        Posting 🟢                  : Data models ☑️ : Core logic ☑️ : Db Schema ☑️ : APIs ☑️ : Federation ☑️ : 3rd party APIs \n        Account management 🟢       : Data models ☑️ : Db schema ☑️ : Account creation ☑️ : APIs : Contact management : Password management : Email verification : 3rd party APIs \n        Authn/Authz 🟡              : Data models ☑️ : Password verification ☑️ : Token creation/verification ☑️ : Login/logout/challenge : Claims scheme : OIDC support \n        Feeds 🟢                    : Data models ☑️ : Db schema ☑️ : APIs ☑️ : Populate data ☑️ : 3rd party APIs \n        Moderation 🟡               : Data models ☑️ : Db schema ☑️ : APIs : Block : Mute : Suspend : Report : Federation limits : 3rd party APIs\n        Web UI 🟡                   : Sign up/login : Account management : Profiles : Threads : Feeds : Reports\n```\n\nPlease note that this roadmap is only updated ocassionally. The project's Github issues, and specifically the [Single User Preview board][sup-board] is the best way to keep track of what's planned, in-progress, and completed.\n\n## Maintainers\n\n* [@jenniferplusplus@hachyderm.io](https://hachyderm.io/@jenniferplusplus)\n* [@runewake2@hachyderm.io](https://hachyderm.io/@runewake2)\n* [@hazelnoot@enby.life](https://enby.life/@hazelnoot)\n\n\n[sup-board]: https://github.com/orgs/Letterbook/projects/5/views/4\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fletterbook%2Fletterbook","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fletterbook%2Fletterbook","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fletterbook%2Fletterbook/lists"}