joe / sukar
All projects

Kalamna

A place to talk, live.

A social voice experience that connects live rooms, ongoing communities, and private conversations, with the services and moderation tools needed to support them.

My work
Product engineering across mobile, services, administration, and release
Platform
iPhone / iPad
Stack
Flutter / Dart / Riverpod / React / TypeScript / GraphQL / LiveKit / PostgreSQL / Redis / NATS
Have a related project? Let’s talk ↗
Kalamna promotional interface capture showing how to create a voice space
Creating a space, from Kalamna's published product presentation.
The challenge
A simple room experience needs live audio, durable relationships and operational support.
My contribution
Mobile engineering, services, administration and the path to release.
The result
A shipped iPhone and iPad product connecting voice rooms and ongoing conversations.

Make entering a conversation feel simple.

Kalamna starts with a familiar social action: find a room and join the conversation. The product brings group voice, private messages, and follows into one experience. I worked across the mobile application, supporting services, administration, and the path to release.

The journey moves from a profile to discovery, then into a room already in progress or a new space someone chooses to host. Following people and continuing through direct messages gives a conversation somewhere to go after the live session ends.

Different kinds of live need different channels.

A room combines durable application data, fast-changing presence, and live audio. Treating those as the same kind of traffic would make responsibilities difficult to reason about. The architecture gives each channel a specific job.

Flutter and Riverpod support the mobile experience, with a React administration interface and a TypeScript/Express backend. GraphQL carries application data. WebSockets carry room and presence events. LiveKit transports voice, keeping the audio path distinct from the rest of the product's application state.

Separate what happened from who is here.

PostgreSQL holds durable records, while Redis supports transient work. NATS provides publish/subscribe messaging between services. A transactional outbox keeps recoverable publication work connected to the durable state that created it.

That separation matters when a service is unavailable. Announcing an event and retaining the obligation to announce it are different operations. Core NATS transport is ephemeral; durable retry ownership has to exist around it. The outbox makes publication work inspectable without assuming every downstream effect happens exactly once.

Hosting a room also creates responsibilities.

The administration side is part of the product. Reports, moderation, identity verification, push delivery, and purchase records all need supporting workflows. A polished room screen is only one part of a service that people can continue using.

I included those concerns in the backend and administration scope alongside the social interactions. It gives the product an operational surface for handling the events that do not fit into the ideal browse, join, and talk demonstration.

Let the room lead somewhere.

Group voice is the center of the experience, but it does not have to be the whole relationship. Profiles make people recognizable, follows help someone find them again, and direct messages support a quieter conversation outside the room.

That continuity influenced how I approached the system: the live session has temporary participants and presence, while the surrounding product retains the relationships and records that make a return visit meaningful. Those two timescales need to coexist without being treated as identical state.

A shipped mobile product.

Kalamna is available for iPhone and iPad under Jiss Tech LLC, with in-app purchases. The published interface captures show the voice-room journey and the product's social framing. The architecture here describes the ProjectX generation of the service.

The work spans the visible experience and the supporting systems: mobile navigation, live transport, persistent data, event publication, and administration. Connection quality still depends on the network and device. Clear ownership of each layer makes those boundaries easier to understand and maintain.

How it fits together.

  1. 01

    Discover

    Create a profile, find people, and browse rooms.

  2. 02

    Join or host

    Enter a live voice conversation or create a shared space.

  3. 03

    Keep in touch

    Continue through follows, community participation, and private messages.

Next project
ALTER

Got a good problem?

Tell me what you’re building—or what needs to work better.

Start a project ↗