SkillAgentSearch skills...

Free4chat

free4.chat is a real-time audio chat service. It is designed by the local first and privacy first principle, and is very easy to use.

Install / Use

/learn @i365dev/Free4chat

README

free4chat

free4.chat is a real-time audio chat service. It is designed by the local first and privacy first principle, and is very easy to use.

:warning: This project is just using for technical test purpose, use at all your risk!

:warning: There is freedom of speech, but I cannot guarantee freedom after speech. (- Idi Amin)

Features

  • Real-time Communicating
    • [x] Voice chat in room
    • [x] Text chat in room, can sent text or emoji
      • [ ] Persist text messages to browser localStorage
    • [ ] Can send arbitrary data by WebRTC datachannel 🚩
      • https://github.com/elixir-webrtc/ex_webrtc
    • [ ] Room permission setting, like public/private type setting
      • private room can't been seen on room discovery, and it needs password to enter. The password is End-to-End Encryption, server only need check the answer which given by the client like the PoW in blockchain.
      • [ ] Public rooms discovery, like hot room list or filter rooms by type/tag
  • Real-time Collaborating
    • [ ] User real-time collaboration, like whiteboard, you draw I guess, etc.
      • [ ] Use CRDT to impelement real-time collaboration
        • https://github.com/derekkraan/delta_crdt_ex
        • https://github.com/electric-sql/vaxine
        • https://github.com/liveblocks/liveblocks
        • https://github.com/yjs/yjs
      • [ ] Whiteboard
        • https://github.com/tldraw/tldraw
  • Real-time Contesting

Architecture

  • Common

    • [x] Use WebSocket to replace http protocol of JSON-RPC
    • Compatibility
      • [ ] Make Safari(WebKit) compatibility better
  • Tech Stack

    • [x] Use Elixir/Phoenix to rewrite the backend code
    • [x] Use Recat/Next.js to rewrite the frontend code
  • Infra

    • [x] ~~Use docker to deploy to PaaS platform like Railway or Fly~~
    • [x] Use GitHub Actions + AWS Lightsail to deploy backend server
    • [x] Backend service cluster, auto scaling, load balancing, etc.
      • Backend service use Elixir libcluster to build cluster
      • Frontend app use the client load balance strategy
      • [x] TURN cluster scale
        • Fix by start turn before the libcluster, still wait the upstream library to fix it normally
      • [ ] Room process rebalance, that means if the node where room in is offline, then the room process can rebalance to another node, the rebalance can use Consistent hashing to implement
        • For now, we just ignore this issue, because it can be resolved by reconnect another node and create the room again

        • Some Elixir simple approaches

        • A complex approach is use Riak Core which implement the Consistent hashing and can rebalance the process by VNode

          • NkDIST, a Erlang distributed registration and load balancing lib which is base on Riak Core
        • Tinode chat solve this issue by implementing the Raft Consensus Algorithm

          <details> <summary>More</summary>
          • https://github.com/tinode/chat/issues/28
          • https://github.com/tinode/chat/issues/279
          • https://github.com/tinode/chat/blob/master/server/topic_proxy.go
          • https://github.com/tinode/chat/blob/master/server/cluster.go
          • https://github.com/tinode/chat/blob/master/server/cluster_leader.go
          • https://github.com/tinode/chat/blob/master/server/ringhash/ringhash.go
          </details>
    • [ ] Security enhancement, like coturn TLS setup, end-to-end encryption, etc.
      • [ ] TURN enable TLS
    • [ ] Privacy enhancement.
    • [ ] IPV6 support.

Documentation

https://dev-notes.free4.chat/

Contribution

If you are interested in webRTC, peer-to-peer(P2P), real-time collaboration(CRDT), distributed system or robot design, you can join this project and contact with me by twitter.

Thanks


About the Author

This project is maintained by the creator of MyInvestPilot — a systematic investment assistance platform focused on rule-based, long-term investing and transparent strategy research.

🔗 https://www.myinvestpilot.com

Related Skills

View on GitHub
GitHub Stars1.1k
CategoryDesign
Updated1d ago
Forks140

Languages

Elixir

Security Score

100/100

Audited on Mar 29, 2026

No findings