DamageLabs/kandan

Kandan is an Open Source Alternative to HipChat

TypeScript

2,685

4 commits

updated Apr 6, 2026

See the code

README

Kandan Core

Modern revival of Kandan — a self-hosted open-source team chat app. Built on Angular 21 + Express/Node/TypeScript with real-time messaging via Socket.io.

Status: Early development. Backend scaffolded, Angular client coming next.

Stack

LayerTechnology
FrontendAngular 21 + TailwindCSS
BackendExpress 5 + TypeScript
DatabaseSQLite via Drizzle ORM
Real-timeSocket.io
AuthJWT + bcrypt

Features (planned)

  • Real-time messaging via WebSockets
  • Multiple channels
  • User authentication (register/login/JWT)
  • Admin controls (user approval, suspension, channel management)
  • File attachments
  • /me emote commands
  • Typing indicators
  • Message history with pagination
  • Dark/light mode

Getting Started

git clone git@github.com:DamageLabs/kandan-core.git
cd kandan-core

# Server
cd server
cp ../.env.example .env   # edit as needed
npm install
npm run dev               # http://localhost:3200

API

EndpointMethodDescription
/api/v1/auth/registerPOSTRegister new user
/api/v1/auth/loginPOSTLogin, returns JWT
/api/v1/auth/meGETCurrent user
/api/v1/channelsGETList channels
/api/v1/channels/:idGETChannel + recent messages
/api/v1/channelsPOSTCreate channel (admin)
/api/v1/messages/channel/:idGETPaginated message history
/api/v1/usersGETList users (admin)

Socket.io Events

EventDirectionDescription
channel:joinclient → serverJoin a channel room
channel:leaveclient → serverLeave a channel room
message:sendclient → serverSend a message
message:newserver → clientNew message broadcast
typing:startclient → serverUser started typing
typing:stopclient → serverUser stopped typing
user:connectedserver → clientUser joined channel
user:disconnectedserver → clientUser left channel

License

MIT

DamageLabs/kandan

Kandan is an Open Source Alternative to HipChat

TypeScript

2,685

4 commits

updated Apr 6, 2026

See the code

README

Kandan Core

Modern revival of Kandan — a self-hosted open-source team chat app. Built on Angular 21 + Express/Node/TypeScript with real-time messaging via Socket.io.

Status: Early development. Backend scaffolded, Angular client coming next.

Stack

LayerTechnology
FrontendAngular 21 + TailwindCSS
BackendExpress 5 + TypeScript
DatabaseSQLite via Drizzle ORM
Real-timeSocket.io
AuthJWT + bcrypt

Features (planned)

  • Real-time messaging via WebSockets
  • Multiple channels
  • User authentication (register/login/JWT)
  • Admin controls (user approval, suspension, channel management)
  • File attachments
  • /me emote commands
  • Typing indicators
  • Message history with pagination
  • Dark/light mode

Getting Started

git clone git@github.com:DamageLabs/kandan-core.git
cd kandan-core

# Server
cd server
cp ../.env.example .env   # edit as needed
npm install
npm run dev               # http://localhost:3200

API

EndpointMethodDescription
/api/v1/auth/registerPOSTRegister new user
/api/v1/auth/loginPOSTLogin, returns JWT
/api/v1/auth/meGETCurrent user
/api/v1/channelsGETList channels
/api/v1/channels/:idGETChannel + recent messages
/api/v1/channelsPOSTCreate channel (admin)
/api/v1/messages/channel/:idGETPaginated message history
/api/v1/usersGETList users (admin)

Socket.io Events

EventDirectionDescription
channel:joinclient → serverJoin a channel room
channel:leaveclient → serverLeave a channel room
message:sendclient → serverSend a message
message:newserver → clientNew message broadcast
typing:startclient → serverUser started typing
typing:stopclient → serverUser stopped typing
user:connectedserver → clientUser joined channel
user:disconnectedserver → clientUser left channel

License

MIT

Significant stargazers

Keith Cirkel

1,808 followers · starred Mar 2013

Chris McCord

3,654 followers · starred Feb 2014

Benjamin Balder Bach

268 followers · starred Sep 2014

Keenan Brock

104 followers · starred Jun 2014