Tinode: Open-source Real-time Chat Server

Tinode: Open-source Real-time Chat Server
Photo by Alexander Shatov / Unsplash

Table of Content

Instant messaging server. Backend in pure Go (license GPL 3.0), client-side binding in Java, Javascript, and Swift, as well as gRPC client support for C++, C#, Go, Java, Node, PHP, Python, Ruby, Objective-C, etc. (license Apache 2.0). Wire transport is JSON over websocket (long polling is also available) for custom bindings, or protobuf with gRPC.

Tinode is not XMPP/Jabber. It is not compatible with XMPP. It's meant as a replacement for XMPP. On the surface, it's a lot like open source WhatsApp or Telegram.

Tindo supports many languages that include English, Chinese, French, German, Portuguese, Russian, Spanish and more.

User Features

  • One-on-one and group messaging.
  • Video and voice calls. Voice messages.
  • Channels with unlimited number of read-only subscribers.
  • All chats are synchronized across all devices.
  • Granular access control with permissions for various actions.
  • User search/discovery.
  • Rich formatting of messages markdown-style: *style* → style, with inline images, videos, file attachments.
  • Forms and templated responses suitable for chatbots.
  • Verified/staff/untrusted account markers.
  • Message status notifications: message delivery to server; received and read notifications; typing notifications.
  • Most recent message preview in contact list.
  • Server-generated presence notifications for people, group chats.
  • Forwarding and replying to messages.
  • Editing sent messages.

Administration Features

Granular access control with permissions for various actions.

  • Support for custom authentication backends.
  • Ability to block unwanted communication server-side.
  • Anonymous users (important for use cases related to tech support over chat).
  • Plugins to extend functionality, for example, to support moderation or chatbots.
  • Scriptable command-line tool for server administration.


Performance, reliability and development

Sharded clustering with failover.

  • Storage and out of band transfer of large objects like images or document files using local file system or Amazon S3 (other storage systems can be supported with media handlers).
  • JSON or protobuf version 3 wire protocols.


Bindings for various programming languages:

  • Javascript with no external dependencies.
  • Java with dependencies on Jackson and Java-Websocket. Suitable for Android but with no Android SDK dependencies.
  • Swift with no external dependencies.
  • C/C++, C#, Go, Python, PHP, Ruby and many other languages using gRPC.


Multiple database backend

  • Choice of a database backend. Other databases can be added with by writing adapters.
  • MySQL
  • PostgreSQL
  • MongoDB
  • RethinkDB


Supported platform

License

  • GPL-3.0 License

Resources

GitHub - tinode/chat: Instant messaging platform. Backend in Go. Clients: Swift iOS, Java Android, JS webapp, scriptable command line; chatbots
Instant messaging platform. Backend in Go. Clients: Swift iOS, Java Android, JS webapp, scriptable command line; chatbots - GitHub - tinode/chat: Instant messaging platform. Backend in Go. Clients:…







Open-source Apps

9,500+

Medical Apps

500+

Lists

450+

Dev. Resources

900+

Read more

Bias in Healthcare AI: How Open-Source Collaboration Can Build Fairer Algorithms for Better Patient Care

Bias in Healthcare AI: How Open-Source Collaboration Can Build Fairer Algorithms for Better Patient Care

The integration of artificial intelligence (AI), particularly large language models (LLMs) and machine learning algorithms, into healthcare has transformed the industry dramatically. These technologies enhance various aspects of patient care, from diagnostics and treatment recommendations to continuous patient monitoring. However, the application of AI in healthcare is not without challenges.