dotwire

A self-hosted realtime chat backend: private rooms, history, typing indicators and presence, behind your own auth.

  • Self-hosted
  • SignalR + REST
  • Postgres + TimescaleDB
  • NATS JetStream
  • Early development
View on GitHub ↗

What it does

  1. What is this?

  2. A self-hosted realtime chat backend: private rooms, history, typing indicators and presence, behind your own auth.

  3. What about realtime rooms?

  4. Messages, history paging, typing indicators and presence, over SignalR with a REST API alongside.

  5. Whose auth does it use?

  6. Yours. dotwire trusts RS256 JWTs your app signs, checked against issuer, audience and key id. The token's sub is the user id.

  7. Who enforces room membership?

  8. dotwire itself. Every subscription and history read is checked against room membership, not by your frontend.

  9. Can I check messages before they're sent?

  10. Yes, with presend webhooks. An HMAC-signed hook sees each message before it's accepted and can reject it.

  11. Is the data encrypted?

  12. At rest, with an AES-256 key. Storage is Postgres with TimescaleDB, the message bus is NATS JetStream.

  13. What stops someone spamming a room?

  14. A per-user send rate limit is built in, on top of whatever your app enforces.

Packages

dotwire is in early development and not production-ready yet.

View on GitHub ↗