raa-ziq

raa-ziq

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

Where Next?

Popular in Discussions Top

blackode
Elixir Upgrading is so Simple in Ubuntu and It worked for me Ubuntu 16.04 git clone https://github.com/elixir-lang/elixir.git cd elixir...
New
laiboonh
Hi all, I am trying to convince my team to use liveview over the current react. What are some of the points where one should consider us...
New
sashaafm
Piggy backing a bit on @dvcrn topic BEAM optimization for functions with static return type?, I’ve been trying to understand in a deeper ...
New
fireproofsocks
This is more of a general question, but I’m wondering how other people in the community think about the pattern matching in function sign...
New
nburkley
AWS re:Invent is on at the moment with some interesting announcements. One new feature in particular is the Lambda Runtime API for AWS La...
New
mbenatti
Following https://github.com/tbrand/which_is_the_fastest |> https://raw.githubusercontent.com/tbrand/which_is_the_fastest/master/imgs...
New
AstonJ
Please see the new poll here: Which code editor or IDE do you use? (Poll) (2022 Edition) It’s been a while since we first asked this, I...
208 31142 143
New
RudManusachi
What configs will make sense to put to runtime.exs? – A bit of how I configure apps: I have generic configs in config/config.exs, dev...
New
opsb
We’re considering our architecture from a viewpoint of scaling our traffic heavily over the next 6 months. Our current deployment is runn...
New
slashdotdash
Phoenix Live View is now publicly available on GitHub. Here’s Chris McCord’s tweet announcing making it public.
New

Other popular topics Top

sorentwo
Hello! tl;dr Announcing Oban, an Ecto based job processing library with a focus on reliability and historical observability. After spen...
985 42920 311
New
AstonJ
Posting this to see if we can make things easier for people to get into Neovim. If you use Neovim and have a favourite distro please let ...
New
greenz1
I have a phoenix application from which a user can download multiple(5-6) files of size 1MB. I couldn’t find anything related to sending ...
New
Patoshizzle
After calling mix ecto.create I get this error: 17:00:32.162 [error] GenServer #PID<0.412.0> terminating ** (Postgrex.Error) FATAL...
New
JeremM34
Hello, how can I check the Phoenix version ? Thanks !
New
chrismccord
Phoenix 1.4.0 released Phoenix 1.4 is out! This release ships with exciting new features, most notably with HTTP2 support, improved deve...
688 30877 112
New
msaraiva
Surface is an experimental library built on top of Phoenix LiveView and its new LiveComponent API that aims to provide a more declarative...
564 43622 214
New
vonH
When I run the Plug and I recompile I wind up having to use Ctrl C to quit iex and start again. Witht the help of rlwrap I can use the cu...
New
fayddelight
I tried installing elixir 1.11.2 erlang 23.3.4 via asdf in my zsh shell. Enabled the versions locally and globally. When I list them ...
New
klo
Got a question about when to concat vs. prepending items to list then reversing to achieve appending. So i know lists boil down to [1 | ...
New

We're in Beta

About us Mission Statement