321 lines
16 KiB
Markdown
321 lines
16 KiB
Markdown
# Nulla
|
|
|
|
An agnostic social network following the KISS and UNIX philosophy, the main principles of which are minimalism and rationalism. It implements the ActivityPub protocol and promises maximum compatibility with all existing implementations.
|
|
|
|
## TODO
|
|
|
|
### API
|
|
|
|
#### accounts
|
|
|
|
- [ ] POST [/api/v1/accounts](https://docs.joinmastodon.org/methods/accounts/#create)
|
|
- [ ] GET [/api/v1/accounts/verify_credentials](https://docs.joinmastodon.org/methods/accounts/#verify_credentials)
|
|
- [ ] PATCH [/api/v1/accounts/update_credentials](https://docs.joinmastodon.org/methods/accounts/#update_credentials)
|
|
- [ ] GET [/api/v1/accounts/:id](https://docs.joinmastodon.org/methods/accounts/#get)
|
|
- [ ] GET [/api/v1/accounts](https://docs.joinmastodon.org/methods/accounts/#index)
|
|
- [ ] GET [/api/v1/accounts/:id/notes](https://docs.joinmastodon.org/methods/accounts/#statuses)
|
|
- [ ] GET [/api/v1/accounts/:id/followers](https://docs.joinmastodon.org/methods/accounts/#followers)
|
|
- [ ] GET [/api/v1/accounts/:id/following](https://docs.joinmastodon.org/methods/accounts/#following)
|
|
- [ ] GET [/api/v1/accounts/:id/featured_tags](https://docs.joinmastodon.org/methods/accounts/#featured_tags)
|
|
- [ ] GET [/api/v1/accounts/:id/lists](https://docs.joinmastodon.org/methods/accounts/#lists)
|
|
- [ ] POST [/api/v1/accounts/:id/follow](https://docs.joinmastodon.org/methods/accounts/#follow)
|
|
- [ ] POST [/api/v1/accounts/:id/unfollow](https://docs.joinmastodon.org/methods/accounts/#unfollow)
|
|
- [ ] POST [/api/v1/accounts/:id/remove_from_followers](https://docs.joinmastodon.org/methods/accounts/#remove_from_followers)
|
|
- [ ] POST [/api/v1/accounts/:id/block](https://docs.joinmastodon.org/methods/accounts/#block)
|
|
- [ ] POST [/api/v1/accounts/:id/unblock](https://docs.joinmastodon.org/methods/accounts/#unblock)
|
|
- [ ] POST [/api/v1/accounts/:id/mute](https://docs.joinmastodon.org/methods/accounts/#mute)
|
|
- [ ] POST [/api/v1/accounts/:id/unmute](https://docs.joinmastodon.org/methods/accounts/#unmute)
|
|
- [ ] GET [/api/v1/accounts/:id/endorsements](https://docs.joinmastodon.org/methods/accounts/#endorsements)
|
|
- [ ] POST [/api/v1/accounts/:id/endorse](https://docs.joinmastodon.org/methods/accounts/#endorsements)
|
|
- [ ] POST [/api/v1/accounts/:id/unendorse](https://docs.joinmastodon.org/methods/accounts/#unendorse)
|
|
- [ ] POST [/api/v1/accounts/:id/note](https://docs.joinmastodon.org/methods/accounts/#note)
|
|
- [ ] GET [/api/v1/accounts/relationships](https://docs.joinmastodon.org/methods/accounts/#relationships)
|
|
- [ ] GET [/api/v1/accounts/familiar_followers](https://docs.joinmastodon.org/methods/accounts/#familiar_followers)
|
|
- [ ] GET [/api/v1/accounts/search](https://docs.joinmastodon.org/methods/accounts/#search)
|
|
- [ ] GET [/api/v1/accounts/lookup](https://docs.joinmastodon.org/methods/accounts/#lookup)
|
|
|
|
#### announcements
|
|
|
|
- [ ] GET [/api/v1/announcements](https://docs.joinmastodon.org/methods/announcements/#get)
|
|
- [ ] POST [/api/v1/announcements/:id/dismiss](https://docs.joinmastodon.org/methods/announcements/#dismiss)
|
|
- [ ] PUT [/api/v1/announcements/:id/reactions/:name](https://docs.joinmastodon.org/methods/announcements/#put-reactions)
|
|
- [ ] DELETE [/api/v1/announcements/:id/reactions/:name](https://docs.joinmastodon.org/methods/announcements/#delete-reactions)
|
|
|
|
#### blocks
|
|
|
|
- [ ] GET [/api/v1/blocks](https://docs.joinmastodon.org/methods/blocks/#get)
|
|
|
|
#### bookmarks
|
|
|
|
- [ ] GET [/api/v1/bookmarks](https://docs.joinmastodon.org/methods/bookmarks/#get)
|
|
|
|
#### conversations
|
|
|
|
- [ ] GET [/api/v1/conversations](https://docs.joinmastodon.org/methods/converstions/#get)
|
|
- [ ] DELETE [/api/v1/conversations/:id](https://docs.joinmastodon.org/methods/converstions/#delete)
|
|
- [ ] POST [/api/v1/conversations/:id/read](https://docs.joinmastodon.org/methods/converstions/#read)
|
|
|
|
#### custom_emojis
|
|
|
|
- [ ] GET [/api/v1/custom_emojis](https://docs.joinmastodon.org/methods/custom_emojis/#get)
|
|
|
|
#### directory
|
|
|
|
- [ ] GET [/api/v1/directory](https://docs.joinmastodon.org/methods/directory/#get)
|
|
|
|
#### domain_blocks
|
|
|
|
- [ ] GET [/api/v1/domain_blocks](https://docs.joinmastodon.org/methods/domain_blocks/#get)
|
|
- [ ] POST [/api/v1/domain_blocks](https://docs.joinmastodon.org/methods/domain_blocks/#block)
|
|
- [ ] POST [/api/v1/domain_blocks](https://docs.joinmastodon.org/methods/domain_blocks/#unblock)
|
|
|
|
#### emails
|
|
|
|
- [ ] POST [/api/v1/emails/confirmations](https://docs.joinmastodon.org/methods/emails/#confirmation)
|
|
|
|
#### endorsements
|
|
|
|
- [ ] GET [/api/v1/endorsements](https://docs.joinmastodon.org/methods/endorsements/#get)
|
|
|
|
#### favourites
|
|
|
|
- [ ] GET [/api/v1/favourites](https://docs.joinmastodon.org/methods/favourites/#get)
|
|
|
|
#### featured_tags
|
|
|
|
- [ ] GET [/api/v1/featured_tags](https://docs.joinmastodon.org/methods/featured_tags/#get)
|
|
- [ ] POST [/api/v1/featured_tags](https://docs.joinmastodon.org/methods/featured_tags/#feature)
|
|
- [ ] GET [/api/v1/featured_tags/:id](https://docs.joinmastodon.org/methods/featured_tags/#unfeature)
|
|
- [ ] GET [/api/v1/featured_tags/suggestions](https://docs.joinmastodon.org/methods/featured_tags/#suggestions)
|
|
|
|
#### filters
|
|
|
|
- [ ] GET [/api/v2/filters](https://docs.joinmastodon.org/methods/filters/#get)
|
|
- [ ] GET [/api/v2/filters/:id](https://docs.joinmastodon.org/methods/filters/#get-one)
|
|
- [ ] POST [/api/v2/filters](https://docs.joinmastodon.org/methods/filters/#create)
|
|
- [ ] PUT [/api/v2/filters/:id](https://docs.joinmastodon.org/methods/filters/#update)
|
|
- [ ] DELETE [/api/v2/filters/:id](https://docs.joinmastodon.org/methods/filters/#delete)
|
|
- [ ] GET [/api/v2/filters/:filter_id/keywords](https://docs.joinmastodon.org/methods/filters/#keywords-get)
|
|
- [ ] POST [/api/v2/filters/:filter_id/keywords](https://docs.joinmastodon.org/methods/filters/#keywords-create)
|
|
- [ ] GET [/api/v2/filters/keywords/:id](https://docs.joinmastodon.org/methods/filters/#keywords-get-one)
|
|
- [ ] PUT [/api/v2/filters/keywords/:id](https://docs.joinmastodon.org/methods/filters/#keywords-update)
|
|
- [ ] DELETE [/api/v2/filters/keywords/:id](https://docs.joinmastodon.org/methods/filters/#keywords-delete)
|
|
- [ ] GET [/api/v2/filters/:filter_id/notes](https://docs.joinmastodon.org/methods/filters/#statuses-get)
|
|
- [ ] POST [/api/v2/filters/:filter_id/notes](https://docs.joinmastodon.org/methods/filters/#statuses-add)
|
|
- [ ] GET [/api/v2/filters/notes/:id](https://docs.joinmastodon.org/methods/filters/#statuses-get-one)
|
|
- [ ] DELETE [/api/v2/filters/notes/:id](https://docs.joinmastodon.org/methods/filters/#statuses-remove)
|
|
|
|
#### follow_requests
|
|
|
|
- [ ] GET [/api/v1/follow_requests](https://docs.joinmastodon.org/methods/follow_requests/#get)
|
|
- [ ] POST [/api/v1/follow_requests/:account_id/authorize](https://docs.joinmastodon.org/methods/follow_requests/#accept)
|
|
- [ ] POST [/api/v1/follow_requests/:account_id/reject](https://docs.joinmastodon.org/methods/follow_requests/#reject)
|
|
|
|
#### followed_tags
|
|
|
|
- [ ] GET [/api/v1/followed_tags](https://docs.joinmastodon.org/methods/followed_tags/#get)
|
|
|
|
#### grouped_notifications
|
|
|
|
- [ ] GET [/api/v2/notifications](https://docs.joinmastodon.org/methods/grouped_notifications/#get-grouped)
|
|
- [ ] GET [/api/v2/notifications/:group_key](https://docs.joinmastodon.org/methods/grouped_notifications/#get-notification-group)
|
|
- [ ] POST [/api/v2/notifications/:group_key/dismiss](https://docs.joinmastodon.org/methods/grouped_notifications/#dismiss-group)
|
|
- [ ] GET [/api/v2/notifications/:group_key/accounts](https://docs.joinmastodon.org/methods/grouped_notifications/#get-group-accounts)
|
|
- [ ] GET [/api/v2/notifications/unread_count](https://docs.joinmastodon.org/methods/grouped_notifications/#unread-group-count)
|
|
|
|
#### instance
|
|
|
|
- [ ] GET [/api/v2/instance](https://docs.joinmastodon.org/methods/instance/#v2)
|
|
- [ ] GET [/api/v2/instance/peers](https://docs.joinmastodon.org/methods/instance/#peers)
|
|
- [ ] GET [/api/v2/instance/activity](https://docs.joinmastodon.org/methods/instance/#activity)
|
|
- [ ] GET [/api/v2/instance/rules](https://docs.joinmastodon.org/methods/instance/#rules)
|
|
- [ ] GET [/api/v2/instance/domain_blocks](https://docs.joinmastodon.org/methods/instance/#domain_blocks)
|
|
- [ ] GET [/api/v2/instance/extended_description](https://docs.joinmastodon.org/methods/instance/#extended_description)
|
|
- [ ] GET [/api/v2/instance/privacy_policy](https://docs.joinmastodon.org/methods/instance/#privacy_policy)
|
|
- [ ] GET [/api/v2/instance/terms_of_service](https://docs.joinmastodon.org/methods/instance/#terms_of_service)
|
|
- [ ] GET [/api/v2/instance/terms_of_service/:date](https://docs.joinmastodon.org/methods/instance/#terms_of_service_date)
|
|
- [ ] GET [/api/v2/instance/translation_languages](https://docs.joinmastodon.org/methods/instance/#translation_languages)
|
|
|
|
#### lists
|
|
|
|
- [ ] GET [/api/v1/lists](https://docs.joinmastodon.org/methods/lists/#get)
|
|
- [ ] GET [/api/v1/lists/:id](https://docs.joinmastodon.org/methods/lists/#get-one)
|
|
- [ ] POST [/api/v1/lists](https://docs.joinmastodon.org/methods/lists/#create)
|
|
- [ ] PUT [/api/v1/lists/:id](https://docs.joinmastodon.org/methods/lists/#update)
|
|
- [ ] DELETE [/api/v1/lists/:id](https://docs.joinmastodon.org/methods/lists/#delete)
|
|
- [ ] GET [/api/v1/lists/:id/accounts](https://docs.joinmastodon.org/methods/lists/#accounts)
|
|
- [ ] POST [/api/v1/lists/:id/accounts](https://docs.joinmastodon.org/methods/lists/#accounts-add)
|
|
- [ ] DELETE [/api/v1/lists/:id/accounts](https://docs.joinmastodon.org/methods/lists/#accounts-remove)
|
|
|
|
#### markers
|
|
|
|
- [ ] GET [/api/v1/markers](https://docs.joinmastodon.org/methods/markers/#get)
|
|
- [ ] POST [/api/v1/markers](https://docs.joinmastodon.org/methods/lists/#create)
|
|
|
|
#### media
|
|
|
|
- [ ] POST [/api/v2/media](https://docs.joinmastodon.org/methods/media/#v2)
|
|
- [ ] GET [/api/v1/media/:id](https://docs.joinmastodon.org/methods/media/#get)
|
|
- [ ] DELETE [/api/v1/media/:id](https://docs.joinmastodon.org/methods/media/#delete)
|
|
- [ ] PUT [/api/v1/media/:id](https://docs.joinmastodon.org/methods/media/#update)
|
|
|
|
#### mutes
|
|
|
|
- [ ] GET [/api/v1/mutes](https://docs.joinmastodon.org/methods/mutes/#get)
|
|
|
|
#### notifications
|
|
|
|
- [ ] GET [/api/v1/notifications](https://docs.joinmastodon.org/methods/notifications/#get)
|
|
- [ ] GET [/api/v1/notifications/:id](https://docs.joinmastodon.org/methods/notifications/#get-one)
|
|
- [ ] POST [/api/v1/notifications/clear](https://docs.joinmastodon.org/methods/notifications/#clear)
|
|
- [ ] POST [/api/v1/notifications/:id/dismiss](https://docs.joinmastodon.org/methods/notifications/#dismiss)
|
|
- [ ] GET [/api/v1/notifications/unread_count](https://docs.joinmastodon.org/methods/notifications/#unread-count)
|
|
- [ ] GET [/api/v2/notifications/policy](https://docs.joinmastodon.org/methods/notifications/#policy)
|
|
- [ ] PATCH [/api/v2/notifications/policy](https://docs.joinmastodon.org/methods/notifications/#get-policy)
|
|
- [ ] GET [/api/v1/notifications/requests](https://docs.joinmastodon.org/methods/notifications/#get-requests)
|
|
- [ ] GET [/api/v1/notifications/requests/:id](https://docs.joinmastodon.org/methods/notifications/#get-one-request)
|
|
- [ ] POST [/api/v1/notifications/requests/:id/accept](https://docs.joinmastodon.org/methods/notifications/#accept-request)
|
|
- [ ] POST [/api/v1/notifications/requests/:id/dismiss](https://docs.joinmastodon.org/methods/notifications/#dismiss-request)
|
|
- [ ] POST [/api/v1/notifications/requests/accept](https://docs.joinmastodon.org/methods/notifications/#accept-multiple-requests)
|
|
- [ ] POST [/api/v1/notifications/requests/dismiss](https://docs.joinmastodon.org/methods/notifications/#dismiss-multiple-requests)
|
|
- [ ] GET [/api/v1/notifications/requests/merged](https://docs.joinmastodon.org/methods/notifications/#requests-merged)
|
|
|
|
#### oauth
|
|
|
|
- [ ] GET [/oauth/authorize](https://docs.joinmastodon.org/methods/oauth/#authorize)
|
|
- [ ] POST [/oauth/token](https://docs.joinmastodon.org/methods/oauth/#token)
|
|
- [ ] POST [/oauth/revoke](https://docs.joinmastodon.org/methods/oauth/#revoke)
|
|
- [ ] GET [/oauth/userinfo](https://docs.joinmastodon.org/methods/oauth/#userinfo)
|
|
- [ ] GET [/.well-known/oauth-authorization-server](https://docs.joinmastodon.org/methods/oauth/#authorization-server-metadata)
|
|
|
|
#### oembed
|
|
|
|
- [ ] GET [/api/oembed](https://docs.joinmastodon.org/methods/oembed/#get)
|
|
|
|
#### polls
|
|
|
|
- [ ] GET [/api/v1/polls/:id](https://docs.joinmastodon.org/methods/polls/#get)
|
|
- [ ] POST [/api/v1/polls/:id/votes](https://docs.joinmastodon.org/methods/polls/#vote)
|
|
|
|
#### preferences
|
|
|
|
- [ ] GET [/api/v1/preferences](https://docs.joinmastodon.org/methods/preferences/#get)
|
|
|
|
#### profile
|
|
|
|
- [ ] DELETE [/api/v1/profile/avatar](https://docs.joinmastodon.org/methods/profile/#delete-profile-avatar)
|
|
- [ ] DELETE [/api/v1/profile/header](https://docs.joinmastodon.org/methods/profile/#delete-profile-header)
|
|
|
|
#### push
|
|
|
|
- [ ] POST [/api/v1/push/subscription](https://docs.joinmastodon.org/methods/push/#create)
|
|
- [ ] GET [/api/v1/push/subscription](https://docs.joinmastodon.org/methods/push/#get)
|
|
- [ ] PUT [/api/v1/push/subscription](https://docs.joinmastodon.org/methods/push/#update)
|
|
- [ ] DELETE [/api/v1/push/subscription](https://docs.joinmastodon.org/methods/push/#delete)
|
|
|
|
#### reports
|
|
|
|
- [ ] POST [/api/v1/reports](https://docs.joinmastodon.org/methods/reports/#post)
|
|
|
|
#### search
|
|
|
|
- [ ] GET [/api/v2/search](https://docs.joinmastodon.org/methods/search/#v2)
|
|
|
|
#### notes
|
|
|
|
- [ ] POST [/api/v1/notes](https://docs.joinmastodon.org/methods/statuses/#create)
|
|
- [ ] GET [/api/v1/notes/:id](https://docs.joinmastodon.org/methods/statuses/#get)
|
|
- [ ] GET [/api/v1/notes](https://docs.joinmastodon.org/methods/statuses/#index)
|
|
- [ ] DELETE [/api/v1/notes/:id](https://docs.joinmastodon.org/methods/statuses/#delete)
|
|
- [ ] GET [/api/v1/notes/:id/context](https://docs.joinmastodon.org/methods/statuses/#context)
|
|
- [ ] POST [/api/v1/notes/:id/translate](https://docs.joinmastodon.org/methods/statuses/#translate)
|
|
- [ ] GET [/api/v1/notes/:id/reblogged_by](https://docs.joinmastodon.org/methods/statuses/#reblogged_by)
|
|
- [ ] GET [/api/v1/notes/:id/favourited_by](https://docs.joinmastodon.org/methods/statuses/#favourited_by)
|
|
- [ ] POST [/api/v1/notes/:id/favourite](https://docs.joinmastodon.org/methods/statuses/#favourite)
|
|
- [ ] POST [/api/v1/notes/:id/unfavourite](https://docs.joinmastodon.org/methods/statuses/#unfavourite)
|
|
- [ ] POST [/api/v1/notes/:id/reblog](https://docs.joinmastodon.org/methods/statuses/#boost)
|
|
- [ ] POST [/api/v1/notes/:id/unreblog](https://docs.joinmastodon.org/methods/statuses/#unreblog)
|
|
- [ ] POST [/api/v1/notes/:id/bookmark](https://docs.joinmastodon.org/methods/statuses/#bookmark)
|
|
- [ ] POST [/api/v1/notes/:id/unbookmark](https://docs.joinmastodon.org/methods/statuses/#unbookmark)
|
|
- [ ] POST [/api/v1/notes/:id/mute](https://docs.joinmastodon.org/methods/statuses/#mute)
|
|
- [ ] POST [/api/v1/notes/:id/unmute](https://docs.joinmastodon.org/methods/statuses/#unmute)
|
|
- [ ] POST [/api/v1/notes/:id/pin](https://docs.joinmastodon.org/methods/statuses/#pin)
|
|
- [ ] POST [/api/v1/notes/:id/unpin](https://docs.joinmastodon.org/methods/statuses/#unpin)
|
|
- [ ] PUT [/api/v1/notes/:id](https://docs.joinmastodon.org/methods/statuses/#edit)
|
|
- [ ] GET [/api/v1/notes/:id/history](https://docs.joinmastodon.org/methods/statuses/#history)
|
|
- [ ] GET [/api/v1/notes/:id/source](https://docs.joinmastodon.org/methods/statuses/#source)
|
|
|
|
### Features
|
|
|
|
- [ ] Lightweight web interface
|
|
- [ ] API compatible with other ActivityPub instances
|
|
- [ ] JWT
|
|
- [ ] Groups
|
|
- [ ] Formatting: big/medium/small title, bold, italic, strikethrough, link, code, code block
|
|
- [ ] Links preview
|
|
- [ ] Timelines: Home / Local / Global / Custom
|
|
- [ ] Global search
|
|
- [ ] Bookmarks
|
|
- [ ] Profile links verification
|
|
- [ ] Links preview
|
|
- [ ] Import/Export posts
|
|
- [x] Sync user settings on the server
|
|
- [ ] Restricted direct messages
|
|
- [ ] Direct messages tab
|
|
|
|
### Server configuration
|
|
|
|
* Disk space limit per user
|
|
* Limit on posts (count/time)
|
|
|
|
### User settings
|
|
|
|
#### Profile
|
|
|
|
* Avatar
|
|
* Banner
|
|
* Name
|
|
* Bio
|
|
* Location
|
|
* Birthday
|
|
* Links
|
|
* Follow requests approval
|
|
* Toggle reacts under own posts
|
|
* Toggle view of reacts under posts
|
|
* Profile migration
|
|
* Delete account
|
|
|
|
===== Disk Usage: 100 MB (20%) =====
|
|
|
|
#### Security
|
|
|
|
* Change password
|
|
* Token
|
|
* Enable/Disable email login notifications
|
|
* Sessions
|
|
|
|
| IP | Datetime | Action |
|
|
| ----------------|---------------------|--------|
|
|
| 127.0.0.1 | 2025-01-01 00:00:00 | revoke |
|
|
| 127.127.127.127 | 2025-02-02 00:00:00 | revoke |
|
|
|
|
#### Filters
|
|
|
|
* Placeholder with rules
|
|
|
|
```
|
|
filter keyword #tag user@example.com example.com
|
|
```
|
|
|
|
* Show replies of all followed users
|
|
* Show replies of this followed users
|
|
|
|
## Contributing
|
|
|
|
### Patches via Email
|
|
|
|
You can create a patch with this command `git format-patch -M origin/main` and send it to this [email address](mailto:miraikumiko@disroot.org). Check out this [guide](https://git-send-email.io).
|
|
|
|
### Your repository
|
|
|
|
You fork this repository and make your changes in the feature branch, then I pull it.
|