Show off your favorite public threads and offer hand-picked, fine-grained, topical subscriptions!
These are streams of thought you decide to float to your personal site for being a bit more-effort than other small posts, but still yet to be refined as a blog.
How it works:
- a featured status will be fetched on the server along with qualified "descendants", which are replies of the same author in a single thread.
- clean HTML with some styling will be sent to the viewer's browser
- bit of client-side JS for progressive enhancement:
<relative-time>
by GitHub: https://github.com/github/relative-time-element
- self-hostable with the app configuration in
config.json
file -- we are working on a docker way and easy configuration
See it in action.
The project is currently experimental. Some improvements need to be made with regards to app configuration, storing data, and easy deployment & usage.
-
Set up your Debian (for other environments, search for counterpart instructions)
# update repositories $ sudo apt update # install python stuff $ sudo apt install python3-pip python3-dev build-essential libssl-dev libffi-dev python3-setuptools python3-venv
For MacOS: https://docs.python.org/3/using/mac.html
-
Install dependencies and set up the project
# clone the project $ git clone git@git.sr.ht:~ayoayco/threads # go into the project directory $ cd threads # create app config from example $ cp example_config.json config.json # create python environment: $ python3 -m venv .venv # activate python env: $ . .venv/bin/activate # install dependencies (.venv)$ python -m pip install -r requirements.txt # create configuration from example config file (.venv)$ cp ./example_config.json ./config.json # rejoice!
-
To start development, run the following:
(.venv)$ flask --debug run
Note: On a Mac, the default port 5000 is used by AirDrop & Handoff; you may have to turn those off
-
After development session, deactivate the python env
(.venv)$ deactivate
For deployment, the recommended setup is with production server gunicorn
and reverse proxy nginx
. See the DigitalOcean tutorial (their website uses cookies).