A themeable, composable collaboration UI shell — channels, DMs, reactions, mentions, tasks, presence. Wire it to any WebSocket backend, or run it standalone against the bundled mock server.
Why Open Slack
It's a UI framework for collaboration apps — not a finished product. The primitives are built; the look and the backend are yours.
Talks a small typed WebSocket protocol. Bring your own server — or run the bundled in-memory mock and have a working app in one command.
A 3-tier design-token system. No hardcoded colors, spacing, or fonts — restyle the whole shell by overriding CSS variables. Dark & light built in.
Rail items, sidebar sections, settings tabs, toolbar items — all data-driven. Extend the shell with pluginRegistry.register(), no core forks.
Channels, DMs, threads, reactions, @mentions, typing, presence, unread badges, tasks, members & roles, search — wired, optimistic, and reconnect-safe.
Pure runes ($state / $derived), adapter-static output. Deploy to any CDN, or wrap it in Electron / Tauri.
Built on shadcn-svelte primitives + Tailwind v4. Familiar, accessible, and easy to extend with your own components.
Quickstart
# in your SvelteKit + Tailwind v4 project npx shadcn-svelte@latest init # add the whole UI — one command, no clone npx shadcn-svelte@latest add https://open-slack.web.app/r/open-slack.json ✓ avatar, dialog, tooltip … (shadcn primitives) ✓ open-slack → src/lib (core + components) ✓ open-slack-theme → src/open-slack-theme.css # then import the tokens in src/app.css @import "./open-slack-theme.css";
One shadcn-svelte add command copies the code into your project — you own it. No fork, no dependency to track.
Add just what you need: open-slack-message, -composer, -channel, -panes, or -core.
Override the design tokens in open-slack-theme.css. One file controls the entire look, dark & light.
Implement the documented PROTOCOL.md (the mock server is the reference), or extend the typed SlackClient.
Open source under MIT. Clone it, theme it, make it yours.