NowBlind - a random chat app (built with Elixir & Phoenix LiveView)

Hi everyone :waving_hand:

I wanted to share something I’ve been building — NowBlind, a random chat app designed to help people discover and connect with strangers in a simple, fast, and genuinely fun way.

The idea is simple: remove friction and let conversations happen instantly — whether through text, voice, or video.

Instead of profiles, feeds, or followers, the focus is on real-time, spontaneous interaction.

What NowBlind offers

  • Random Chat (Text, Voice, Video)
    Instantly connect with strangers across multiple modes.

  • Seamless Mode Switching
    Move between text, voice, and video without breaking the flow.

  • Real-time Matching System
    Users are paired instantly with minimal wait time.

  • Safe & Controlled Environment
    Skip, block, and session controls are built in from the start.

  • Friend System
    Continue conversations later if both users choose to.

  • Ephemeral by Default
    Conversations aren’t persisted unless intentionally continued.

  • Mobile-first UI
    Designed to feel smooth and native across devices.

  • LiveView-driven Interface
    Fast, reactive UI without a heavy frontend framework.

How it’s built

NowBlind leans heavily into Elixir’s strengths for concurrency and real-time systems.

  • GenServer-based matchmaking
    A dedicated process handles random user pairing in real time, keeping the logic isolated and predictable.

  • ETS for ultra-fast lookups
    Used as an in-memory layer for things like user availability, block lists, and relationship checks — significantly reducing database read load.

  • Phoenix Channels + LiveView
    Powering real-time communication and UI updates.

  • Ecto + PostgreSQL
    For persistence and relational data.

  • Oban
    Background jobs (cleanup, async processing, etc.).

Tech stack

  • Phoenix ~> 1.8

  • Phoenix LiveView ~> 1.1

  • Ecto + PostgreSQL

  • Oban

  • ETS

  • GenServer

  • TailwindCSS + Heroicons

  • Bandit

  • Finch / Req

  • ExAws + S3

  • Goth

Supporting:

  • telemetry_metrics / telemetry_poller

  • gettext

  • jason

  • dns_cluster

  • ecto_network

  • hackney

A note on real-time media

One area I’m still refining is WebRTC.

Coming into Elixir, I didn’t fully explore the ecosystem around it early on, so parts of the media layer are not as tightly integrated with Elixir-native solutions as they could be.

In the next iteration, I’m planning to adopt more robust WebRTC tooling from within the ecosystem.

Why Elixir?

Elixir made this kind of system feel natural.

Handling concurrency, presence, matchmaking, and real-time updates is straightforward with Phoenix. LiveView, in particular, allowed building a fast, interactive product without maintaining a complex frontend stack.

NowBlind is live and evolving quickly.

  1. We jus hit 2500 signups
  2. The reason to build a random chat app
  3. The difference between NowBlind and other random chat apps

There’s still a lot to improve, especially around scaling patterns and real-time media, so I’d love feedback — particularly from anyone who has worked with matchmaking systems or WebRTC in Elixir.

Thanks to this community — it’s been a huge enabler :raising_hands:

  • Razique
2 Likes