Skip to content
001
archived

Vak'a

Journaling app that matches you with people who felt the same today — iOS and Android.

Ownership
Side project with a partner
Role
Founder & developer — mobile, web, backend
Team
2 people
Period
Sep 2023 → Mar 2025
Open link
Live
https://vak-a.com№ 001
Vak'a — web
Vak'a — mobile

Context

Social apps measure attention by scroll speed. Vak'a tries the opposite: one entry a day, one person whose entry carried the same feeling, a conversation through the writing. Matches are definite every night at 00:00, with one random match during the day. Identity is anonymous, messaging is end-to-end encrypted.

Constraints

  • A team of two; product, design, mobile, web and the whole backend.
  • Mood inference must work without breaking privacy; raw entries are not stored outside the model call.
  • Reporting and moderation from day one; anonymity invites abuse.

Architecture

Entry → mood → match → chat; web and mobile share one API.Mobile appWeb (Next.js)APIMood inferenceMatching (00:00 + random)E2E encrypted chat
Entry → mood → match → chat; web and mobile share one API.

The mobile app is React Native (Expo); the backend is Node.js + PostgreSQL (Prisma) with Firebase for notifications and identity. The website is Next.js.

TODO: To be extracted from the source: encryption scheme, the matching job (scheduler).

§ Decision log

DecisionAlternativeWhy
01One match a day (at 00:00) plus a random one, instead of an endless feedA swipeable discovery feedThe product's thesis is "no shallow scrolling"; a scarce match raises the value of writing and makes the notification rhythm predictable.
02Anonymous identity and end-to-end encrypted chatThe classic social network model with profile photosPeople only write their feelings once who they are stops mattering; anonymity is a precondition, not a feature.
03A gesture-driven interface; swipe and hold instead of buttonsClassic tabs + button navigationJournaling is a one-handed, in-bed activity; gestures pulled the interface out of the text's way.
04AI mood inference as the matching signalUsers pick their mood by handPicking a label is friction; the entry itself is already the signal. The model output is never shown to the user, only used for matching.

§ Outcome

50,000+
Active users (vak-a.com)
iOS + Android
Platforms
2
Team

§ Retrospective

What I would do differently today

We did not keep the store listings alive; fees and update cadence were heavy for a two-person side project. Today I would make the web the primary platform, start mobile as a PWA, and go to the stores only once the revenue model was clear.