Back to work

Case study · Live on both app stores

Boraami

A social app for the BTS fan community, where members post, reply and follow each other. I co-founded it and lead the app: I set it up from the first line of code, led a team of 4 developers, and run its backend.

downloads
2,000+
crash-free users
99.7%
membership applications
2,400+

Since public launch on 15 June 2026

Boraami welcome screen: "We are not seven, with you", with sign-in and create-account buttons

The problem

ARMY is one of the biggest fandoms in the world, and big open platforms tend to fill up with spam and trolls. Boraami is a calm, friendly space built for genuine fans, with the app, its moderation and its backend designed around keeping it that way.

My role

Co-founder, Frontend Lead

  • Co-founder since Nov 2022: product concept, design direction and team coordination.
  • Set up the React Native app from its first commit in Jan 2024 and wrote about three quarters of its commits.
  • Led a team of 4 developers, and the main backend developer since mid-2025.
Team
Multinational, across 5+ countries
Stack
React Native, Expo, Tamagui, Redux Toolkit, Socket.IO, Node.js, Express, MongoDB
  1. Nov 2022Co-founded Boraami
  2. Jan 2024First commit
  3. Mid-2025Took over the backend
  4. 15 Jun 2026Public launch

What I built

Five features, each with what the app does and what makes it work behind the scenes.

Boraline, the Boraami timeline, with liked and reposted posts
  1. Boraline, the Boraami timeline, with liked and reposted posts

    Boraline: a feed that stays fast and consistent

    The main feed scrolls smoothly, and a like or repost shows up instantly on every screen of the app.

    Frontend
    I tuned the timeline for long scrolling: memoized rows, a tuned render window, infinite scroll cached per feed tab, and smaller, cached images. Likes and reposts update instantly and roll back if the request fails, and a normalized post store means one tap updates every screen that shows that post.
    Backend
    The feed fetches every reposted or quoted original in one query instead of one per post, and a like race condition is fixed. Images upload straight from the app to Cloudflare R2 through short-lived pre-signed URLs, so image bytes never pass through our server.
  2. Timeline with an unread notification badge

    Notifications that stay correct

    Notifications arrive straight away, and the unread count stays right even after a weak or dropped connection.

    Frontend
    Live updates over Socket.IO, with REST reconciliation on reconnect and a periodic refetch so missed events can't leave the unread count wrong.
    Backend
    I rewrote the notification system: grouped by type, target and time window, an unread-count endpoint, push via Expo (FCM/APNs), and broadcasts streamed in batches over the socket.
  3. Admission quiz question asking what year BTS debuted, with a countdown timer

    A gated community, so fans can feel safe

    ARMY is one of the biggest fandoms in the world, and big open platforms tend to fill up with spam, trolls and people who are there to stir things up. We wanted Boraami to feel like a calm, friendly space for genuine fans, so joining starts with a short quiz only a real fan would enjoy.

    Frontend
    Sign-up includes a timed quiz about BTS, one question at a time with a countdown, built into the app's onboarding.
    Backend
    Questions are sampled by category and scored automatically: clear cases are approved or rejected, borderline ones go to moderators, and invites and results go out by email. It has processed 2,400+ applications.
  4. A member profile with its posts

    Trust and safety the app stores require

    Members can block and report others and moderators can suspend accounts, which the App Store and Google Play require for apps with user posts.

    Frontend
    Blocking, reporting, a profanity filter, a 13+ age gate, and clear states in the app when content comes from a suspended or blocked member.
    Backend
    A suspension system with banned usernames and time-limited suspensions. Blocked and suspended users are filtered out of every feed, search and notification. Account deletion runs in a transaction that also fixes reply, quote and repost counts on other people's posts.
  5. Search results with an image post

    From about 95% to 99.7% crash-free users

    The app now almost never crashes: 99.7% of users have a crash-free experience, up from about 95%.

    Frontend
    Fixed Android out-of-memory crashes on lower-end phones by virtualizing the GIF picker and serving smaller feed images, measured in Sentry.
    Backend
    Server and scheduled-job errors report to Sentry, email failures never block the action behind them, and every paginated endpoint caps page size so no request can scan the whole database.

Also built

The moderation dashboard

A gated, moderated community needs a place for moderators to work. I built the React admin dashboard on my own: moderators use it to review membership applicants, including the borderline quiz results, handle reports, and manage users and suspensions.

  • TypeScript
  • React
  • Vite
  • shadcn/ui
  • Cloudflare Workers

What Boraami taught me

  • Learning whatever the project needs

    Boraami is where I learned mobile development, building on my React web experience. When the backend needed someone, I learned Node.js and MongoDB on the job and took it over. In 2026 I also brought Claude Code into my workflow to move faster before launch.

  • Taking things all the way to done

    Beyond features, I took care of what keeps an app alive: EAS builds and store reviews, rotating credentials across services, and forming Boraami LLC with my co-founder.

  • Bringing in process as we grew

    We started as a multinational team across 5+ countries, focused on shipping. As the app and team grew, I introduced specs and API contracts before each feature, so teammates could build against mocks while I built the backend, and review guides so everyone checks for the same things. I also hire and review pull requests.

  • Working across teams and time zones

    Our team spans several continents and time zones. I work closely with design, product and moderators, meeting whenever we need to align, and write step-by-step device test scripts so teammates can verify a release on their own phones.