Decentralized social software using ActivityPub, written in Kotlin.
- 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.
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.
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}.
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.
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.
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.