Skip to content

Decentralized social software using ActivityPub, written in Kotlin.

License

Notifications You must be signed in to change notification settings

aster-soc/aster

Repository files navigation

A slightly tilted star with a subtle pink to purple gradient, with the text Aster next to it

Issue Tracker

Decentralized social software using ActivityPub, written in Kotlin.

Goals

  • Setup and forget. Aster shouldn't be a pain to run.
  • Provide typical wants and needs of a social software, and more.
  • Allow developing plugins for extending capabilities with ease.
  • Make sure users choices are respected, especially blocks and mutes.

Building

To build Aster, you'll need at least Java 21. You'll also need Node.js (Latest LTS version recommended) and pnpm ( npm i -g pnpm).

Run the build script ./gradlew build, and then grab the JAR from build/libs/aster-*-all.jar.

Running

To run Aster, you'll need at least Java 21 and a PostgreSQL database. Copy configuration.example.yaml to configuration.yaml and fill out the database connection information. After that, run java -jar aster.jar migration:execute and your database will be set up and your instance is ready to go!

After setting up a user, you can promote them to an Admin role with the CLI. First, get the ID of the generated Admin role by running java -jar aster.jar role:list, and then java -jar aster.jar role:give {User ID} {Role ID}.

Contributing

Code contributions are welcome, but Aster is in early development and I may have plans for how to do things already. You should contact me before opening a pull request or working on anything so we can get on the same page.

Contributing by reporting bugs is also welcome, too! Aster's issue tracker can be found here.

Project Breakdown

The main part of the project is the backend, main, which runs the server. It uses Ktor, a custom event system, and a custom plugin system.

There's a module called common which targets the JVM and JS using Kotlin Multiplatform, this allows shared models and types between the frontend and backend and shared logic. Certain things used in the admin frontend (server side rendered and built into main) are also usable in the frontend, so it's put there.

There's another module that relates to common called common-generators. It generates partial versions of certain models that are all nullable, and by default null. These can be used for edits, like on a user or a note.

Development Environment

IntelliJ IDEA is a requirement for working with Aster. For development, the JetBrains Runtime is recommended.

When you clone Aster in IDEA, automatically it should recognize the build scripts in .run. Follow the building and running instructions above to create a JAR and prepare your database.

Afterward, running Backend Development Build in the IDE should be all you need to develop, unless you need to use CLI commands. This script skips generating documentation and compiling the frontend, which significantly slows down the build time.

If you are working on the frontend, running pnpm dev in the frontend directory will start a development server for the frontend which hot reloads.

About

Decentralized social software using ActivityPub, written in Kotlin.

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published