As of May 16th I will archive this Repo to continue development here: https://github.com/pkreissel/foryoufeed The new project enables me to do everything in react without a backend server. It is hosted here: https://vercel.com/pkreissel/foryoufeed If you only need the algorithm without all the fuss for your own project you can use this package: https://github.com/pkreissel/fedialgo
Display Mastodon Posts in a curated feed with an user-customisable algorithm
Example is hosted here: https://fedifeed.herokuapp.com
Be aware this is a very early alpha, so try at your own risk
Steps:
- Put your Mastodon Instance Url in the field in the format "https://example.social"
- Login with Mastodon
- Wait a few seconds for the feed to load (first time takes longer)
- Change Feed Algorithm and enjoy
Project is based on Django and React Frameworks. See their docs for further info. To start the backend server you need
pip install -r requirements.txt
Then set some env vars:
FIELD_ENCRYPTION_KEY= // generate this with python manage.py generate_encryption_key
DATABASE_URL=Postgresql Database URL
SECRET_KEY=Some Secret
HOSTED_URL=http://127.0.0.1:8000/ (for local dev)
DEBUG=True
Run the server:
python manage.py makemigrations
python manage.py migrate
python manage.py runserver
Only the last command is required every time.
To start the frontend dev server:
cd frontend
npx webpack --config webpack.config.js --watch
- Improve CI/CD
- Add Tests
- Add more Documentation
- Add storage for feed Settings
- Add most liked users to weights
- Add option to choose which Instances to pull the top posts from
- More description for weights
- Add Logout Button and invalidate token
- Better UI, Support for Polls, Videos, Images, etc.
- Working Links back into the traditional Mastodon Interface
- Retweet, Like etc. Buttons
- Profile View to delete profile etc.
- Feed should cache posts and only load new ones
- Add more features for algorithm, e.g. include posts from suggested users, prioritise recent follows etc.
- Add local machine learning in the browser to tweak the features automatically