The openSUSE Kudos project brings back a bit of fun to the openSUSE community —
and gives contributors an easy, friendly way to say thank you to each other.
Because plain emails won’t do — this is about warm, peer-to-peer appreciation
that everyone can see and celebrate, not just commits or changelogs.
A way to recognize effort, kindness, and collaboration — from one Geeko to another.
All badge artwork is stored in a separate repository:
👉 openSUSE Kudos Badges
If you’d like to propose a new badge, please open an issue there:
🔗 kudos-badges/issues
After adding or modifying a badge, update the submodule reference to make the changes visible in this app:
cd frontend/public/badges
git pull origin main
cd ../../..
git add frontend/public/badges
git commit -m "Update badges submodule"ℹ️ The badges repository is included as a Git submodule, located at
frontend/public/badges/.git
Use Distrobox for a clean, reproducible environment.
Then install the required tools:
distrobox enter kudos # optional to keep your system clean
zypper in jq npmTo clean and prepare the development setup, run:
git clone https://github.com/openSUSE/kudos.git
./runme-clean.shℹ️
runme-clean.shresets the environment and database, and ensures all dependencies and data are synced.
Once your development environment is ready, try these steps to get familiar with Kudos:
-
Play with the seed data
The app comes with a few demo users:klocman,heavencp,carmeleon,knurft—
all using the passwordopensuse.
You can customize them inbackend/prisma/seed.jsbefore running./runme-clean.sh. -
Run two sessions
- Log in as one user in your normal browser window.
- Open a private/incognito window and log in as another.
- Send kudos between them to test interactions and notifications.
-
Try the bots
Explore thebots/directory and test automation locally:cd bots ./badger-bot-kudos -i ./badger-bot-manual -i -u klocman -b nukeAlways use the
-iflag to ignore certificate checks when running locally.
This gives you a hands-on look at how badges are awarded, how data flows, and how bots automate recognition.
Both the backend (Express) and frontend (Vue) run over HTTPS locally to support
secure cookies and authenticated sessions.
- Backend: https://localhost:3000
- Frontend (Vue): https://localhost:5173
- Prisma DB admin: http://localhost:5555
⚠️ You may need to accept the self-signed certificate in your browser on first use.
Kudos uses several automation bots (that can be executed in cron or via CI) to connect with openSUSE infrastructure:
badger-bot-gitea– awards badges based on Gitea activitybadger-bot-kudos– processes peer kudos submissionsbadger-bot-manual– for manual or special-event badge awardsbadger-bot-membership– validates openSUSE membership badgesbadger-bot-obs– interacts with the Open Build Service (OBS)
Example:
cd bots
./badger-bot-kudos -i
./badger-bot-manual -i -u klocman -b nuke
⚠️ Always use the-iargument locally to bypass self-signed certificate errors.
Without it, bots won’t print or execute anything.
Probably the most important feature for visibility of recognitions.
The Kudos and Badges system includes optional bots that can post live updates to Slack and Matrix.
Each bot has its own .env configuration file for credentials and server details.
Copy and adjust one of the provided examples:
# For Slack
cp bots/.env-slack-test bots/.env.slack
# For Matrix
cp bots/.env-matrix-opensuse bots/.env.matrixThen open each .env.* file and fill in the required values (tokens, room/channel IDs, etc.).
cd bots
npm installThis installs shared dependencies for all bots.
You can run individual bots directly, or both together via npm scripts:
npm run start:slack
npm run start:matrixEach bot automatically:
- Loads its respective
.envfile - Connects to the event stream defined by
STREAM_URL - Posts kudos and badge updates to the configured Slack or Matrix channel
- Node.js + npm
- Vue.js frontend
- Express backend
- Prisma ORM
- Distrobox for local development
- jq for lightweight JSON scripting
- optipng (
-o7) for optimizing badge images
All code is licensed under the Apache 2.0 license.
All artwork (badges) is licensed under CC BY-SA 4.0.
The background music sample is 8 Bit Retro Funk - by David Renda from fesliyanstudios.com
SPDX identifiers:
Apache-2.0
CC-BY-SA-4.0
© 2025 Lubos Kocman and openSUSE contributors.
💚 For Geekos, by Geekos — because appreciation should feel good, not formal.
