Introducing Kivo

Chat your way.

DMs, groups, and communities - all in one place, built around how you communicate.

Kivo - chat your way
Features

Everything for realtime chat

Kivo bundles the core of modern chat — fast, reliable, and community-ready — on one near-black canvas.

Realtime messaging

DMs & group chat

1:1 DMs and small-group chats with cursor-paginated history, optimistic sends, and instant delivery over Socket.IO.

Spaces

Discord-style communities

Spaces with text & announcement channels and role-based permissions — owner, admin, moderator, member — enforced server-side.

Live presence

Typing, receipts & presence

Typing indicators, delivered / read receipts, and live online presence so conversations feel immediate.

Expressive

Reactions, edit & delete

React with emoji, edit after sending, or soft-delete — all synced realtime to every participant.

Stay in the loop

In-app & push notifications

In-app bell plus VAPID web push — you get notified even when the app is closed. DM-focused suppression keeps it quiet when you are already viewing the chat.

Power features

The details that add up

Beyond the basics — the differentiators that make Kivo feel finished, not demo-grade.

Search

Ctrl+K global search

One command palette across messages, people, and Spaces — with jump-to-message that lands you on the exact bubble, highlighted.

Attachments

Images & documents

Up to 10 files per message at 30 MB each. Images open in a fullscreen lightbox with keyboard navigation; docs render as download cards.

PWA & offline

Installable, queue-aware

Install Kivo to your home screen, get VAPID push when it's closed, and keep typing offline — text queues in a durable outbox and flushes on reconnect.

Profiles

Public pages & verified badges

Every account gets a shareable /u/username page with country flag and GitHub graph. Trusted accounts carry an admin-granted verified badge.

Invites

Private Space invite codes

Private Spaces stay hidden from Discover and admit members only through rotating 7-day invite codes — share a link or a code, rotate or revoke anytime.

Sounds

Per-category sound cues

DMs, mentions, groups, Spaces, and friend requests each get their own synthesized chime with preview and a master switch. Already viewing the DM? Kivo stays quiet.

Customization

Built to be re-skinned, not just re-colored.

Theming is a first-class system in Kivo, not an afterthought.

One theme object restyles the whole app — canvas, surfaces, borders, bubbles, and motion — with no component edits. Switch live, layer on your own accent and canvas tone, and keep the same near-black, hairline geometry everywhere.

Single theme objectA single token set drives every surface — restyle once, render everywhere.
Theme studio — yours, livePick any palette as your base, then recolor its accent and canvas tone — saved to your account everywhere you sign in. Every Space can carry its own palette too, set by its owners and seen by all its members.
Dark-first, phosphor-spiritNear-black canvas, pale type, hairline borders, minimal shadows — calm by default, expressive on demand.

One canvas. Every surface answers to it.

Theme engine previewLive switch
Framer
Midnight
Porcelain

{ canvas: var(--canvas),
  ink: var(--ink),
  accent: var(--accent-blue),
  hairline: var(--hairline) }

Tokens flow through CSS variables — no hardcoded colors, no per-component overrides.

Security

Built security-first

Kivo's auth and validation are implementation details you can verify — not marketing claims. Short lifetimes, server-owned sessions, and strict boundaries keep trust measurable.

Custom auth — no third-party provider

Email + password with bcrypt hashing, owned entirely by Kivo. No external identity dependency to leak scope or session control.

15-minute access, httpOnly refresh

Short-lived JWT access tokens in the Authorization header, refreshed silently via an httpOnly cookie. Even if an access token leaks, its window is minutes.

Server-tracked sessions & force-logout

Every refresh token is backed by a Session document with TTL. Users can log out everywhere; admins can force-logout any account — revocation is real, not client-side.

Zod at every boundary

HTTP bodies, query params, and route params are validated server-side with Zod. First error wins with a clear VALIDATION_ERROR — the client is never trusted.

Rate limiting, Helmet headers, secure CORS, and never exposing stack traces or secrets in production complete the picture. Security is the foundation — not a feature.

Roadmap

Shipped & coming next

What you can use today and what is being built next. No dates — these move when they are ready.

Shipped

LIVE
  • DMs — 1:1 private conversations
  • Groups — private multi-member chats
  • Spaces & Channels — text / announcement, role-based
  • Notifications — in-app bell + VAPID web push
  • Attachments — images & documents
  • Public profiles, blocking & global search
  • Status — WhatsApp-style 24h photo updates
  • DM & group voice / video calls
  • Custom user themes
  • Friend requests & friends list

Coming next

NEXT
  • Reaction on Status
  • Close Friends
  • Status for close friends
  • Onboarding for spaces
  • 10+ More

Roadmap items are factual and update-friendly — check back as milestones ship.

FAQ

Questions, answered

The short version. For the full how-to, see the Docs.

Yes. Kivo is a free student full-stack project. Sign up with a display name, username, email, and password (at least 8 characters) and you land in chat instantly — no OTP, no waiting, no paid tier.

No — Kivo runs in any modern browser. If you want it to feel native, install it: use the install icon in the Chrome/Edge address bar, Add to Home Screen on Android, or Share → Add to Home Screen on iPhone. The installed app opens straight into chat.

It puts both styles under one identity: WhatsApp-like private DMs and small groups, plus Discord-like Spaces with text and announcement channels. The differentiator on top is customization — a theme engine with per-user and per-Space palettes. It is deliberately not a Slack-style work tool.

Passwords are hashed with bcrypt and never stored readably. Sessions use short-lived 15-minute access tokens plus an httpOnly refresh cookie you can revoke with logout-everywhere, and every request is validated server-side with rate limiting on auth endpoints. Optional two-factor via authenticator app with backup codes adds a second step, and a password reset signs you out on all devices.

Partly. Your lists and the latest 50 messages per chat are cached in the browser and paint instantly, and text you send while offline is queued in a durable outbox that delivers automatically on reconnect. Attachments need a connection, and full history requires one too.

Voice and video calls are not built yet — see the roadmap above for what shipped versus what is coming next. The Docs page documents exactly what works today.