Git Product home page Git Product logo

rustodon's Introduction

Rustodon

Build Status dependency status maintainance: actively developed Average time to resolve an issue Percentage of issues still open All Contributors

Rustodon is an Mastodon-compatible federated social microblogging server. It utilizes ActivityPub to federate with a constellation of other servers, connecting their communities with yours.

Current Status

You probably don't want to use this, yet. Federation is WIP, etc.

We currently have authentication, users, profiles, statuses, content warnings, actors and statuses published as both HTML and AS2, and timelines. We do not have a job system, status delivery, inboxes, outboxes, notifcations, mentions, post privacy, or account privacy.

If you want to work on making Rustodon feature-complete, check out the issue tracker! We're not just looking for Rust devs, either; CSS witches, documentarians, UI/UX aficionados, etc, are highly welcome ๐Ÿ˜ƒ

Hacking on the code

You will need to install several base dependencies:

  1. Rust. Make sure you have followed the official instructions regarding your PATH variable.

    In the Rust development environment, all tools are installed to the ~/.cargo/bin directory, and this is where you will find the Rust toolchain, including rustc, cargo, and rustup. Accordingly, it is customary for Rust developers to include this directory in their PATH environment variable. During installation rustup will attempt to configure the PATH. Because of differences between platforms, command shells, and bugs in rustup, the modifications to PATH may not take effect until the console is restarted, or the user is logged out, or it may not succeed at all. If, after installation, running rustc --version in the console fails, this is the most likely reason.

  2. Postgres. If you don't have a Postgres instance available, you can use the supplied docker-compose configuration file to start an instance:
    docker-compose up -d
    
    The instance will be started in the background. The default username and password is rustodon. The corresponding connection string would be:
    export DATABASE_URL=postgres://rustodon:rustodon@localhost/rustodon
    
    On some operating systems, you may need to separately install the Postgres client library:
    • Debian/Ubuntu/etc: apt install libpq-dev
    • Arch: pacman -S postgresql-libs
  3. SASS. To install, follow the official directions, and make sure the sass binary is somewhere in your PATH.

Once you have installed these base components, you should run scripts/setup to install the remainder of the application dependencies.

Running the application

To run the application once you have installed all dependencies, you should run either:

  • cargo run: Runs just the server
  • fors start: Runs the server and additional helper processes

Rustodon will launch on http://localhost:8000 by default; this can be overriden by setting certain environment variables.

Federation requires that the application know where it's hosted, and (thanks to Webfinger) also forces us to serve over HTTPS. To get around this in a development environment, you can use ngrok or a similar service. To make sure the app knows where it's serving from (used to compute, eg, AS2 UIDs), set DOMAIN in .env.

Running database migrations

diesel database setup

Running the tests

cargo test --all

Contributors โœจ

Thanks goes to these wonderful people (emoji key):

Erin Moon
Erin Moon

๐Ÿ“ ๐Ÿ–‹ ๐Ÿ’ป ๐Ÿค” ๐Ÿšง ๐Ÿ‘€ ๐Ÿ“–
Measly Twerp
Measly Twerp

๐Ÿ’ป ๐Ÿค”
David Yip
David Yip

๐Ÿ’ป ๐Ÿค”
Gaelan D'costa
Gaelan D'costa

๐Ÿš‡ ๐Ÿค”
Chris Zelenak
Chris Zelenak

๐Ÿ’ป ๐Ÿ“–
Hugh
Hugh

๐Ÿ’ป ๐ŸŽจ ๐Ÿ–‹ ๐Ÿค”
Moritz Heiber
Moritz Heiber

๐Ÿ“– ๐Ÿ“ฆ ๐Ÿ”ง
iliana destroyer of worlds
iliana destroyer of worlds

๐Ÿ’ป
1011X
1011X

๐Ÿšง
Christopher Silva
Christopher Silva

๐Ÿšง ๐Ÿ’ป
utam0k
utam0k

๐Ÿšง ๐Ÿ“ฆ
dexamphetamine
dexamphetamine

๐Ÿ’ป ๐Ÿค”
ash lea
ash lea

๐Ÿ’ป ๐Ÿค” ๐Ÿšง

This project follows the all-contributors specification. Contributions of any kind welcome!

rustodon's People

Contributors

1011x avatar ashkitten avatar barzamin avatar csos95 avatar dependabot-preview[bot] avatar dependabot-support avatar dependabot[bot] avatar dfgweb avatar hannahwhy avatar hoodiek avatar iliana avatar moritzheiber avatar netshade avatar robotdisco avatar utam0k avatar y6nh avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.