Add a lot more docs

This commit is contained in:
Andrew Godwin 2022-11-23 16:15:00 -07:00
parent ae5a16e133
commit e18f2879fc
6 changed files with 154 additions and 2 deletions

99
docs/contributing.rst Normal file
View file

@ -0,0 +1,99 @@
Contributing
============
Takahē, as an open source project, could always do with more help, and if you
want to contribute we'd love help in the following areas:
* Backend code development (Python)
* Frontend code development (HTML, CSS and very limited JavaScript)
* Visual design & UX (for our default UI, and the project site)
* Illustration (for the app, project site, and outreach materials)
* Writing (for our development and user documentation)
If you're interested in helping out, join `our Discord server <https://discord.gg/qvQ39tAMvf>`_`
or email contact@jointakahe.org, and mention what you'd like to help with.
All contributors are expected to abide by our `Code of Conduct <https://jointakahe.org/conduct/>`_.
We have zero tolerance for bigotry or discrimination.
If you feel like someone is breaking the code of conduct, or is making you feel
unwelcome in a way not explicitly outlined in it, you can email us at
conduct@jointakahe.com.
Running Locally
---------------
If you wish to run Takahē locally, these instructions will help you do that.
It is worth noting, however, that this will only really let you test the UI
and local posting/follow functionality; to test ActivityPub itself and follow
other people, your installation **must be accessible from the internet**;
doing that securely is different enough per person that it is not covered here.
Direct installation
~~~~~~~~~~~~~~~~~~~
Takahē requires Python 3.10 or above, so you'll need that first. Clone the repo::
git clone git@github.com:jointakahe/takahe
Then, ``cd`` into that directory and create and activate a virtual environment
(you can use other options, but this is the basic example)::
python3 -m venv .venv
. .venv/bin/activate
Then install the development requirements::
pip install -r requirements-dev.txt
and enable the git commit hooks to do auto-formatting and linting
(if you don't do this, our CI system will reject your PRs until they match)::
pre-commit install
You will need to set your system to use development settings::
export DJANGO_SETTINGS_MODULE=takahe.settings.development
You can run the web interface to see it at http://localhost:8000::
./manage.py runserver
You will need to run Stator in order to have background actions work::
./manage.py runstator
Make yourself a superuser account in order to log in:
./manage.py createsuperuser
And you can run the tests with pytest::
pytest
Docker
~~~~~~
The docker build process will take care of much of the above, but you just have
to be sure that you're executing it from the project root.
First, you need to build your image::
docker compose -f docker/docker-compose.yml build
Then start the `compose` session::
docker compose -f docker/docker-compose.yml up
At this point, you will be able to see the Web UI at http://localhost:8000
Once your session is up and running, you can make yourself a superuser account::
docker compose -f docker/docker-compose.yml exec web manage.py createsuperuser
And you can run the tests inside your container::
docker compose -f docker/docker-compose.yml exec web pytest

51
docs/features.rst Normal file
View file

@ -0,0 +1,51 @@
Features
========
Takahē is currently in development, so it does not yet have all the features
of a full ActivityPub server.
Currently, it supports:
* Web UI only (but can be installed as a PWA)
* Creating posts, with CWs/summaries and visibility
* Receiving posts, with CWs/summaries, visibility, images
* Receiving post edits and deletions
* Creating and receiving boosts
* Creating and receiving likes
* Delivering mentions to those mentioned, and notifications for incoming mentions
* Following and unfollowing
* Reciving follows and unfollows
* A home timeline, a local timeline, and a federated timeline
* Profile pages with bios, icons, and header images
* Searching for users by exact handle
* Multiple domain support
* Multiple identity (per user account support)
* Signup flow
* Password reset flow
Features planned for releases up to 1.0:
* Handling replies and reply threading
* Adding images to posts, with descriptions
* Editing and deleting posts
* A mode where followers must be approved
* Emoji fetching and display
* Emoji creation at server level
* Searching for hashtags
* Server announcements system
* Moderation flagging system and queue
* Server defederation (blocking)
* IP and email domain banning
* Mastodon-compatible client API for use with apps
Features that may make it into 1.0, or might be further out:
* Creating polls on posts, and handling received polls
* Filter system for Home timeline
* Hashtag trending system with moderation
* Relay support
Features on the long-term roadmap:
* "Since you were gone" optional algorithmic timeline
* Seamless transfer from a Mastodon installation

View file

@ -15,5 +15,7 @@ in alpha. For more information about Takahē, see
:caption: Contents: :caption: Contents:
installation installation
features
domains domains
stator stator
contributing

View file

@ -1,9 +1,8 @@
pre-commit~=2.20.0
-r requirements.txt -r requirements.txt
pre-commit~=2.20.0
black==22.10.0 black==22.10.0
flake8==5.0.4 flake8==5.0.4
isort==5.10.1 isort==5.10.1
mock~=4.0.3 mock~=4.0.3
pre-commit~=2.20.0
pytest-django~=4.5.2 pytest-django~=4.5.2
pytest-httpx~=0.21 pytest-httpx~=0.21

BIN
static/img/icon-32.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

View file

@ -9,6 +9,7 @@
<link rel="stylesheet" href="{% static "fonts/raleway/raleway.css" %}" type="text/css" /> <link rel="stylesheet" href="{% static "fonts/raleway/raleway.css" %}" type="text/css" />
<link rel="stylesheet" href="{% static "fonts/font_awesome/all.min.css" %}" type="text/css" /> <link rel="stylesheet" href="{% static "fonts/font_awesome/all.min.css" %}" type="text/css" />
<link rel="manifest" href="/manifest.json" /> <link rel="manifest" href="/manifest.json" />
<link rel="shortcut icon" href="{{ config.site_icon }}">
<script src="{% static "js/hyperscript.min.js" %}"></script> <script src="{% static "js/hyperscript.min.js" %}"></script>
<script src="{% static "js/htmx.min.js" %}"></script> <script src="{% static "js/htmx.min.js" %}"></script>
<style> <style>