2023-11-20 03:05:07 +01:00
< p align = "center" >
2024-05-05 23:35:27 +02:00
< a href = "https://lysand.org" > < img src = "https://cdn.lysand.org/logo-long-dark.webp" alt = "Lysand Logo" height = "110" > < / a >
2023-11-20 03:05:07 +01:00
< / p >
2023-09-11 05:31:08 +02:00
2024-04-15 01:33:02 +02:00
      [](code_of_conduct.md)
2023-10-23 02:23:15 +02:00
2023-09-15 03:42:56 +02:00
## What is this?
2024-05-05 23:35:27 +02:00
**Lysand Server** is a federated social network server based on the [Lysand ](https://lysand.org ) protocol. It is currently in beta phase, with basic federation and almost complete Mastodon API support.
2023-09-15 03:42:56 +02:00
2024-05-05 23:35:27 +02:00
### Goals
2023-09-15 03:42:56 +02:00
2024-05-05 23:35:27 +02:00
- **Privacy**: Lysand is designed to be as private as possible. Unnecessary data is not stored, and data that is stored is done so securely.
- **Configurability**: High configurability is a key feature of Lysand. Almost every aspect of the server can be configured to suit your needs. If you feel like something is missing, please open an issue.
- **Security**: Lysand is designed with security in mind. It is built with modern security practices and technologies, and is constantly updated to ensure the highest level of security.
- **Performance**: Efficiency and speed are a key focus of Lysand. The design is non-monolithic, and is built to be as fast as possible.
- **Mastodon API compatibility**: Lysand is designed to be compatible with the Mastodon API, with Glitch-SOC extensions.
### Anti-Goals
- **Monolithic design**: Modularity and scaling is important to this project. This means that it is not a single, monolithic application, but rather a collection of smaller, more focused applications. (API layer, queue, database, frontend, etc.)
- **Complexity**: Both in code and in function, Lysand should be as simple as possible. This does not mean adding no features or functionality, but rather that the features and functionality that are added should be well-written and easy to understand.
- **Bloat**: Lysand should not be bloated with unnecessary features, packages, dependencies or code. It should be as lightweight as possible, while still being feature-rich.
2023-09-15 03:42:56 +02:00
2023-11-20 03:05:07 +01:00
## Features
2024-04-15 01:33:02 +02:00
- [x] Federation (partial)
2023-12-02 00:00:00 +01:00
- [x] Hyper fast (thousands of HTTP requests per second)
2023-11-20 03:05:07 +01:00
- [x] S3 or local media storage
- [x] Deduplication of uploaded files
- [x] Federation limits
- [x] Configurable defaults
- [x] Full regex-based filters for posts, users and media
- [x] Custom emoji support
- [x] Automatic image conversion to WebP or other formats
2023-11-30 05:16:58 +01:00
- [x] Scripting-compatible CLI with JSON and CSV outputs
2023-11-20 03:05:07 +01:00
- [ ] Moderation tools
2024-04-15 01:33:02 +02:00
- [x] Mastodon API support (partial)
2023-11-20 03:05:07 +01:00
2024-03-14 05:04:49 +01:00
## Screenshots
2024-05-05 23:35:27 +02:00
You can visit [social.lysand.org ](https://social.lysand.org ) to see a live instance of Lysand with Lysand-FE.
2023-12-02 00:00:00 +01:00
2023-09-15 03:42:56 +02:00
## How do I run it?
2024-04-15 01:33:02 +02:00
Please see the [installation guide ](docs/installation.md ) for more information on how to install Lysand.
2023-11-27 07:10:57 +01:00
2023-09-15 03:42:56 +02:00
## Contributing
Contributions are welcome! Please see the [CONTRIBUTING.md ](CONTRIBUTING.md ) file for more information.
## Federation
2023-11-12 02:37:14 +01:00
The following extensions are currently supported or being worked on:
- `org.lysand:custom_emojis` : Custom emojis
2024-05-05 23:35:27 +02:00
- `org.lysand:polls` : Polls
- `org.lysand:microblogging` : Microblogging
2023-09-15 03:42:56 +02:00
## API
2024-04-17 10:02:16 +02:00
Lysand implements the Mastodon API (as well as Glitch-Soc extensions). The API is currently almost fully complete, with some fringe functionality still being worked on.
2023-09-15 03:42:56 +02:00
Working endpoints are:
2024-04-17 10:02:16 +02:00
- [x] `/api/v1/accounts/:id/block`
- [x] `/api/v1/accounts/:id/follow`
- [x] `/api/v1/accounts/:id/followers`
- [x] `/api/v1/accounts/:id/following`
- [ ] `/api/v1/accounts/:id/lists`
- [x] `/api/v1/accounts/:id/mute`
- [x] `/api/v1/accounts/:id/note`
- [x] `/api/v1/accounts/:id/pin`
- [x] `/api/v1/accounts/:id/remove_from_followers`
- [x] `/api/v1/accounts/:id/statuses`
- [x] `/api/v1/accounts/:id/unblock`
- [x] `/api/v1/accounts/:id/unfollow`
- [x] `/api/v1/accounts/:id/unmute`
- [x] `/api/v1/accounts/:id/unpin`
- [x] `/api/v1/accounts/:id`
- [x] `/api/v1/accounts/familiar_followers`
- [x] `/api/v1/accounts/relationships`
- [x] `/api/v1/accounts/update_credentials`
- [x] `/api/v1/accounts/verify_credentials`
- [x] `/api/v1/accounts`
- [ ] `/api/v1/announcements/:id/dismiss`
- [ ] `/api/v1/announcements/:id/reactions/:name` (`PUT`, `DELETE` )
- [ ] `/api/v1/announcements`
- [x] `/api/v1/apps/verify_credentials`
- [x] `/api/v1/apps`
- [x] `/api/v1/blocks`
- [ ] `/api/v1/conversations/:id/read`
- [ ] `/api/v1/conversations/:id`
- [ ] `/api/v1/conversations`
- [x] `/api/v1/custom_emojis`
- [ ] `/api/v1/directory`
- [ ] `/api/v1/domain_blocks` (`GET`, `POST` , `DELETE` )
- [ ] `/api/v1/endorsements`
- [x] `/api/v1/favourites`
- [ ] `/api/v1/featured_tags/:id` (`DELETE`)
- [ ] `/api/v1/featured_tags/suggestions`
- [ ] `/api/v1/featured_tags` (`GET`, `POST` )
- [x] `/api/v1/follow_requests/:account_id/authorize`
- [x] `/api/v1/follow_requests/:account_id/reject`
- [x] `/api/v1/follow_requests`
- [ ] `/api/v1/follow_suggestions`
- [ ] `/api/v1/followed_tags`
- [ ] `/api/v1/instance/activity`
- [ ] `/api/v1/instance/domain_blocks`
- [x] `/api/v1/instance/extended_description`
- [ ] `/api/v1/instance/peers`
- [x] `/api/v1/instance/rules`
- [x] `/api/v1/instance`
- [ ] `/api/v1/lists/:id/accounts` (`GET`, `POST` , `DELETE` )
- [ ] `/api/v1/lists/:id` (`GET`, `PUT` , `DELETE` )
- [ ] `/api/v1/lists` (`GET`, `POST` )
- [x] `/api/v1/markers` (`GET`, `POST` )
- [x] `/api/v1/media/:id`
- [x] `/api/v1/mutes`
- [x] `/api/v1/notifications/:id/dismiss`
- [x] `/api/v1/notifications/:id`
- [x] `/api/v1/notifications/clear`
- [x] `/api/v1/notifications`
- [ ] `/api/v1/polls/:id/votes`
- [ ] `/api/v1/polls/:id`
- [ ] `/api/v1/preferences`
- [x] `/api/v1/profile/avatar` (`DELETE`)
- [x] `/api/v1/profile/header` (`DELETE`)
- [ ] `/api/v1/reports`
- [ ] `/api/v1/scheduled_statuses/:id` (`GET`, `PUT` , `DELETE` )
- [ ] `/api/v1/scheduled_statuses`
- [ ] `/api/v1/statuses/:id/bookmark`
- [x] `/api/v1/statuses/:id/context`
- [x] `/api/v1/statuses/:id/favourite`
- [x] `/api/v1/statuses/:id/favourited_by`
- [ ] `/api/v1/statuses/:id/history`
- [x] `/api/v1/statuses/:id/mute`
- [x] `/api/v1/statuses/:id/pin`
- [x] `/api/v1/statuses/:id/reblog`
- [x] `/api/v1/statuses/:id/reblogged_by`
- [x] `/api/v1/statuses/:id/source`
- [ ] `/api/v1/statuses/:id/translate`
- [ ] `/api/v1/statuses/:id/unbookmark`
- [x] `/api/v1/statuses/:id/unfavourite`
- [x] `/api/v1/statuses/:id/unmute`
- [x] `/api/v1/statuses/:id/unpin`
- [x] `/api/v1/statuses/:id/unreblog`
- [x] `/api/v1/statuses/:id` (`GET`, `DELETE` )
- [x] `/api/v1/statuses/:id` (`PUT`)
- [x] `/api/v1/statuses`
- [ ] `/api/v1/suggestions/:account_id` (`DELETE`)
- [ ] `/api/v1/tags/:id/follow`
- [ ] `/api/v1/tags/:id/unfollow`
- [ ] `/api/v1/tags/:id`
- [x] `/api/v1/timelines/home`
- [ ] `/api/v1/timelines/list/:list_id`
- [x] `/api/v1/timelines/public`
- [ ] `/api/v1/timelines/tag/:hashtag`
- [ ] `/api/v1/trends/links`
- [ ] `/api/v1/trends/statuses`
- [ ] `/api/v1/trends/tags`
- [ ] `/api/v2/filters/:filter_id/keywords` (`GET`, `POST` )
- [ ] `/api/v2/filters/:filter_id/statuses` (`GET`, `POST` )
2024-04-18 01:47:03 +02:00
- [x] `/api/v2/filters/:id` (`GET`, `PUT` , `DELETE` )
2024-04-17 10:02:16 +02:00
- [ ] `/api/v2/filters/keywords/:id` (`GET`, `PUT` , `DELETE` )
- [ ] `/api/v2/filters/statuses/:id` (`GET`, `DELETE` )
2024-04-18 01:47:03 +02:00
- [x] `/api/v2/filters` (`GET`, `POST` )
2024-04-17 10:02:16 +02:00
- [x] `/api/v2/instance`
- [x] `/api/v2/media`
- [x] `/api/v2/search`
- [ ] `/api/v2/suggestions`
- [x] `/oauth/authorize`
- [x] `/oauth/token`
2024-05-05 23:35:27 +02:00
- [ ] `/oauth/revoke`
2023-11-12 09:04:26 +01:00
- Admin API
2024-04-17 10:02:16 +02:00
### Main work to do
- [ ] Announcements
- [ ] Polls
- [ ] Tags
- [ ] Lists
- [ ] Scheduled statuses
- [ ] WebSockets
- [ ] Push notifications
- [ ] Trends
- [ ] Suggestions
- [ ] Bookmarks
- [ ] Translation
- [ ] Reports
- [ ] Admin API
2023-11-12 09:04:26 +01:00
2023-09-15 03:42:56 +02:00
## License
2024-05-05 23:35:27 +02:00
This project is licensed under the [AGPL-3.0-or-later ](LICENSE ).