Streamful

Top-level Files of tip
Login

Top-level Files of tip

Files in the top-level directory from the latest check-in


streamful

streamful is a customizable, distributed social network platform. Its goal is to bend the darker parts of social networks towards serving higher purposes. It enables rapid experimentation with new expressions of our lives. It does this by:

  1. Giving every participant ownership over their content, and
  2. Enabling server administrators to customize how social data is shaped and rendered

For the full streamful specification see SPEC.md

Running the server

The server can be executed using podman. It might even work with docker. If you have docker but not podman, you could probably just alias podman=docker and everything else would just work.

In order to build the latest image:

bin/build-podman

In order to run it:

bin/run-podman

This will store all data in $HOME/.streamful-podman

Developing the server

Dependencies

To run the streamful platform, you will need to install leiningen using the instructions at https://leiningen.org/

You will also need to be using at least JDK 9 (because we use .readAllBytes on InputStream and .toSeconds on Duration)

The tests are known to pass on JDK 11

Running the program locally

lein run

Verifying that the program is correct

lein test

Packaging the program artifact

lein uberjar

Then, you can run the artifact:

java -jar target/uberjar/streamful-standalone.jar 

You'll need to use a client to interact with the server.

Running the program interactively

lein repl

Or you can start a REPL using your favorite IDE.

Precommit

Before committing, in order to guarantee safety, you should run:

lein precommit

In fact, if you want to make sure you haven't failed to stage something properly, you can use ./commit, which will also check to make sure you haven't forgotten to stage any file adds/deletes. It will also ensure the podman image build works properly!

License

See resources/copyright.txt for the terms under which you can share this program.