Federated blogging application, thanks to ActivityPub
Go to file
fdb-hiroshima 006b44f580 Add support for generic timeline (#525)
* Begin adding support for timeline

* fix some bugs with parser

* fmt

* add error reporting for parser

* add tests for timeline query parser

* add rejection tests for parse

* begin adding support for lists

also run migration before compiling, so schema.rs is up to date

* add sqlite migration

* end adding lists

still miss tests and query integration

* cargo fmt

* try to add some tests

* Add some constraint to db, and fix list test

and refactor other tests to use begin_transaction

* add more tests for lists

* add support for lists in query executor

* add keywords for including/excluding boosts and likes

* cargo fmt

* add function to list lists used by query

will make it easier to warn users when creating timeline with unknown lists

* add lang support

* add timeline creation error message when using unexisting lists

* Update .po files

* WIP: interface for timelines

* don't use diesel for migrations

not sure how it passed the ci on the other branch

* add some tests for timeline

add an int representing the order of timelines (first one will be on
top, second just under...)
use first() instead of limit(1).get().into_iter().nth(0)
remove migrations from build artifacts as they are now compiled in

* cargo fmt

* remove timeline order

* fix tests

* add tests for timeline creation failure

* cargo fmt

* add tests for timelines

* add test for matching direct lists and keywords

* add test for language filtering

* Add a more complex test for Timeline::matches, and fix TQ::matches for TQ::Or

* Make the main crate compile + FMT

* Use the new timeline system

- Replace the old "feed" system with timelines
- Display all timelines someone can access on their home page (either their personal ones, or instance timelines)
- Remove functions that were used to get user/local/federated feed
- Add new posts to timelines
- Create a default timeline called "My feed" for everyone, and "Local feed"/"Federated feed" with timelines

@fdb-hiroshima I don't know if that's how you pictured it? If you imagined it differently I can of course make changes.

I hope I didn't forgot anything…

* Cargo fmt

* Try to fix the migration

* Fix tests

* Fix the test (for real this time ?)

* Fix the tests ? + fmt

* Use Kind::Like and Kind::Reshare when needed

* Forgot to run cargo fmt once again

* revert translations

* fix reviewed stuff

* reduce code duplication by macros

* cargo fmt
2019-10-07 19:08:20 +02:00
.circleci Fix Crowdin upload (#576) 2019-05-12 20:14:59 +01:00
.github/ISSUE_TEMPLATE Update issue templates (#471) 2019-03-12 17:20:53 +01:00
assets Add support for generic timeline (#525) 2019-10-07 19:08:20 +02:00
migrations Add support for generic timeline (#525) 2019-10-07 19:08:20 +02:00
plume-api Remove Canapi (#540) 2019-04-28 22:17:21 +01:00
plume-cli Make a distinction between moderators and admins (#619) 2019-09-13 12:28:36 +02:00
plume-common update dependancies (#643) 2019-08-14 15:04:30 +02:00
plume-front Fix issue #642, frontend not in english if the user language does not exist (#648) 2019-08-23 11:02:24 +02:00
plume-macro update dependancies (#574) 2019-05-12 10:41:47 +02:00
plume-models Add support for generic timeline (#525) 2019-10-07 19:08:20 +02:00
po Make a distinction between moderators and admins (#619) 2019-09-13 12:28:36 +02:00
script Fix arm builds (#612) 2019-06-04 19:18:36 +01:00
snap snap: Fix build for non-Tier-1 Rust platforms (#672) 2019-10-05 13:28:45 +02:00
src Add support for generic timeline (#525) 2019-10-07 19:08:20 +02:00
templates Add support for generic timeline (#525) 2019-10-07 19:08:20 +02:00
.codecov.yml Make Plume compile on release (#365) 2018-12-22 18:27:21 +01:00
.dockerignore Sample compose file and Dockerfile for deployment 2018-09-04 00:32:47 +02:00
.editorconfig Slightly improve the media experience (#452) 2019-03-06 14:11:36 +01:00
.gitignore Theming (#624) 2019-08-21 00:42:04 +02:00
build.rs Add support for generic timeline (#525) 2019-10-07 19:08:20 +02:00
Cargo.lock Fix theme caching (#647) 2019-08-21 21:41:11 +02:00
Cargo.toml update dependancies (#643) 2019-08-14 15:04:30 +02:00
CODE_OF_CONDUCT.md Update some documents (#616) 2019-06-15 21:42:24 +01:00
crowdin.yml Fix Crowdin upload (#576) 2019-05-12 20:14:59 +01:00
diesel.toml add sqlite migrations 2018-09-30 14:13:52 +02:00
Dockerfile import migrations and don't require diesel_cli for admins (#555) 2019-04-29 16:30:20 +02:00
Dockerfile.dev Use multi step build to limit the docker image size (#416) 2019-01-09 17:48:18 +01:00
LICENSE Add a license (AGPLv3) 2018-05-01 13:01:38 +01:00
README.md Fix logo URL (#664) 2019-09-06 10:06:16 +02:00
rust-toolchain use circleci instead of travis (#511) 2019-04-01 20:28:23 +02:00

Plume's logo Plume

CircleCI Code coverage Docker Pulls Liberapay patrons

WebsiteDocumentationContributeInstances list

Plume is a federated blogging engine, based on ActivityPub. It is written in Rust, with the Rocket framework, and Diesel to interact with the database. The front-end uses Ructe templates, WASM and SCSS.

Features

A lot of features are still missing, but what is already here should be quite stable. Current and planned features include:

  • A blog-centric approach: you can create as much blogs as you want with your account, to keep your different publications separated.
  • Media management: you can upload pictures to illustrate your articles, but also audio files if you host a podcast, and manage them all from Plume.
  • Federation: Plume is part of a network of interconnected websites called the Fediverse. Each of these websites (often called instances) have their own rules and thematics, but they can all communicate with each other.
  • Collaborative writing: invite other people to your blogs, and write articles together.

Get involved

If you want to have regular news about the project, the best place is probably our blog, or our Matrix room: #plume:disroot.org.

If you want to contribute more, a good first step is to read our contribution guides. We accept all kind of contribution:

But this list is not exhaustive and if you want to contribute differently you are welcome too!

As we want the various spaces related to the project (GitHub, Matrix, Loomio, etc) to be as safe as possible for everyone, we adopted a code of conduct. Please read it and make sure you accept it before contributing.

Starting your own instance

We provide various way to install Plume: from source, with pre-built binaries, with Docker or with YunoHost. For detailed explanations, please refer to the documentation.