![takahē](static/img/logo-128.png)

A *very experimental* Fediverse server for microblogging/"toots". Not fully functional yet -
I'm still working on making all the basic bits work! For more background and information,
see [my blog posts about it](https://aeracode.org/category/takahe/).

Indended features:

* Can run on serverless hosting (no need for worker daemons)
* Multiple account domains possible per server
* Async evented core for fan-out/delivery
* Mastodon client API compatible (eventually)


## Deployment

### Requirements:

- **Python** 3.11
- **PostgreSQL** 14+
- **Lots of patience** This is *very experimental*

### Setup

More deployment docs will come soon! Just know that you need to run the Takahē
Django app, and then either hit `/.stator/runner/` or run `./manage.py runstator`
at least every 30 seconds.

## Roadmap

Takahē is still under very active development towards something I'm willing to
call a beta. I've grouped features here into milestones, along with if they're
done yet or not. None of this is final, and the further into the future it is,
the less sure I am about it.

### Alpha

- [x] Create posts
- [x] Set post visibility
- [x] Receive posts
- [x] Handle received post visibility (unlisted vs public only)
- [x] Receive post deletions
- [x] Receive post edits
- [x] Set content warnings on posts
- [x] Show content warnings on posts
- [x] Receive images on posts
- [x] Receive reply info
- [x] Create boosts
- [x] Receive boosts
- [x] Create likes
- [x] Receive likes
- [x] Create follows
- [x] Undo follows
- [x] Receive and accept follows
- [x] Receive follow undos
- [ ] Do outgoing mentions properly
- [x] Home timeline (posts and boosts from follows)
- [x] Notifications page (followed, boosted, liked)
- [x] Local timeline
- [x] Federated timeline
- [x] Profile pages
- [x] Settable icon and background image for profiles
- [x] User search
- [ ] Following page
- [ ] Followers page
- [x] Multiple domain support
- [x] Multiple identity support
- [x] Serverless-friendly worker subsystem
- [x] Settings subsystem
- [x] Server management page
- [x] Domain management page
- [ ] Email subsystem
- [ ] Signup flow
- [ ] Password change flow
- [ ] Password reset flow

### Beta

- [ ] Attach images to posts
- [ ] Edit posts
- [ ] Delete posts
- [ ] Fetch remote post images locally and thumbnail
- [ ] Show follow pending states
- [ ] Manual approval of followers
- [ ] Reply threading on post creation
- [ ] Display posts with reply threads
- [ ] Create polls on posts
- [ ] Receive polls on posts
- [ ] Emoji fetching and display
- [ ] Emoji creation
- [ ] Image descriptions
- [ ] Hashtag search
- [ ] Flag for moderation
- [ ] Moderation queue
- [ ] User management page
- [ ] Server defederation
- [ ] Filters for posts/boosts
- [ ] OAuth subsystem

### 1.0

- [ ] IP banning
- [ ] Trends subsystem and moderation
- [ ] Server announcements
- [ ] Automated post deletion
- [ ] Post popularity system (for long gaps between timeline views)
- [ ] Mastodon client API

### Future

- [ ] Relays?
- [ ] Mastodon backup import? (would need url mapping for actors)

## Contributing

If you'd like to contribute, please read [CONTRIBUTING.md](./CONTRIBUTING.md).
