Advertisement
Everything in the box

Features

Koula Chat is four things that happen to share one account: a browser arcade, a WebRTC calling app, a community chat server, and a bridge into Minecraft. Here is what each part actually does.

🎮 Arcade

Ten games, no gate

Written for this site, not embedded from somewhere else. Everything runs client-side on a canvas.

Play with no account

Every game opens instantly. An anonymous cookie tracks your best score and level so guests still get progression, just not a public rank.

Progress that transfers

Signing up merges your whole guest profile into the new account: XP, plays, every per-game best, and unlocked achievements. Nothing is thrown away.

Real leaderboards

One row per player per game, plus a global XP board across all ten. Land in a top ten and you get a toast about it mid-game.

Touch controls

On-screen buttons appear automatically on touch devices, and each game declares its own pad layout. Merge 2048 takes swipes.

Ten achievements

From "play your first game" to "play all ten" and "land in a top ten". Each is worth 25–300 bonus XP.

Sound you can mute

Every effect is generated with the Web Audio API — no audio files to download. The mute setting is remembered.

🎤 Voice & video

Calling that respects your hardware

Peer-to-peer WebRTC with Socket.IO handling signalling. Audio-only by default; video is one button away.

FeatureWhat it doesWhere
Group call roomsEvery community server gets a call room. Peers mesh directly with each other.Dashboard → Call
Direct callsRing one person by username with real accept / decline / cancel, not just a shared link.Calls page
Device pickerChoose the exact microphone and headset from a live device list, and apply it mid-call.Call → Settings
Mic test with playbackA live input meter plus a short recording played back through your chosen output.Call → Settings
Speaker testPlays a tone through the selected output using setSinkId where the browser supports it.Call → Settings
Video toggleAdd or drop your camera mid-call. Peers see the change without rejoining.Call bar
Screen shareShare a window or tab as your video track, then switch back to camera.Call bar
Speaking indicatorsTiles glow when that person is talking, driven by a local audio analyser.Call grid
Minecraft ringingCalling someone also pushes the invite down the bridge to their game client.Automatic
💬 Chat

Servers, DMs and friends

  • Public and password-protected community servers
  • Direct messages between friends, stored encrypted at rest with Fernet
  • Friend list with live online / offline presence over Socket.IO
  • Distinct notification sounds for server messages, DMs, calls and bridge events
  • Inline /pay and /request commands for moving KAL inside a chat
💰 KAL currency

Play money with somewhere to go

  • An idle miner that accrues KAL over time and is collected manually
  • Premium tiers you buy with KAL to raise your mining rate
  • Four wager games: coin flip, dice roll, blackjack and crash
  • Peer-to-peer transfers with a full transaction history
  • A separate KAL leaderboard from the arcade XP one
⛏ Minecraft

The bridge, both directions

A line-delimited JSON protocol over plain TCP. Simple enough to implement in an afternoon, which is exactly why it was chosen over anything heavier.

Website → Minecraft

Every meaningful site event opens a short connection to the bridge and writes one JSON line: logins, signups, logouts, presence changes, call joins and leaves, and arcade scores. Registered mod clients also receive pushed events on their open socket, which is how a call started in the browser rings in-game.

Minecraft → website

Anything the mod sends is forwarded to every connected browser as a Socket.IO event, so in-game activity shows up live on the site. A monitor pings the bridge every five seconds and broadcasts the connection state, which is what drives the status pill.

🔒 Security & privacy

What we store, and what we do not

  • No email address. Sign-up is username and password only. There is no mailing list because there is no list.
  • Passwords are salted hashes via Werkzeug. Plain text never touches disk.
  • Messages are encrypted at rest with a Fernet key generated on first run and kept in data/secret.key.
  • Guests get one cookie, a random id used solely to attach arcade progress to a device.
  • No third-party analytics or ad scripts. The only external file is the Socket.IO client from a CDN.
  • Calls are peer-to-peer. Audio and video go directly between browsers; the server only passes the handshake.

Run over HTTPS in production — browsers refuse microphone and camera access on plain HTTP anywhere except localhost.

Try the part that needs no account

The arcade is open right now. Everything else is one username away.