- Kotlin 62.2%
- Java 33.1%
- CSS 4.3%
- Dockerfile 0.4%
| .forgejo/workflows | ||
| gradle | ||
| src/main | ||
| .editorconfig | ||
| .gitignore | ||
| .noai | ||
| build.gradle.kts | ||
| compose.example.yml | ||
| CONFIGURATION.md | ||
| CONTRIBUTING.md | ||
| Dockerfile | ||
| gradle.properties | ||
| gradlew | ||
| gradlew.bat | ||
| LICENSE | ||
| README.md | ||
| settings.gradle.kts | ||
Ask.kt
A simple & featureful multi-user Q&A software, written in Kotlin.
Features
For Users
- Asks can have content warnings or nicknames
- Asks can be marked private so they never appear in the public inbox of a user
- Inboxes can turn off receiving asks or showing them publicly
- Inboxes can be subscribed to by RSS
- Can display Fediverse and Bluesky accounts and a website
- Automated crossposting to Mastodon, Bluesky, and Discord (by webhook)
- Mastodon crossposting can have a content warning and visibility set
- Push notifications with ntfy
- Generate invites, if admins allow
For Admins
- User suspension, deletion, and editing
- Asker user/IP logging
- Ask deletion
- Site announcements
- Multiple registration types
- Open
- Approval required
- Invite only
- Closed
- Admin notifications for username changes, user registrations, and more
- Custom CSS can be configured
- Site title can be set along with a favicon
- Dockerfile for easy deployment
Misc
- Server side rendered frontend with a single JS function to copy text
- Persistent queue to retry tasks that might fail (notifications or crossposting)
- Supports multiple languages
Using
Ask.kt requires at least Java 21 and a PostgreSQL database.
Download the JAR file and run it with Java 21 or higher (java -jar ask-kt-version-all.jar). It will write a blank config,
then quit. Edit the config, start again, and you're good to go!
You must use Ask.kt behind a reverse proxy, otherwise IPs will not be logged correctly.
Migrating from AskJS
This project is the successor to AskJS. The client is better, the tools are better, and it's overall safer.
Please note that the configuration is not the same. Ask.kt will generate a new default one for you, use that one.
To migrate, edit the config to point to a new database, then run the jar with the argument
migrate jdbc:postgresql://OLD_HOST:OLD_PORT/OLD_DB?user=OLD_USER&password=OLD_PASSWORD and it will convert the old
database to the new one.
Configuration
A detailed guide on the configuration can be found in CONFIGURATION.md.
Support
If you need help with Ask.kt, let me know! There's a list of contact methods on my website https://remlit.site/.