넥시박스
작업

Case 01 · 2024년부터 현재

9개 언어, 유료 사용자 26명, 2024년부터 운영

독자의 선택에 따라 이야기가 갈라지는 인터랙티브 픽션 앱. 제가 설계하고 만들어 지금도 운영하는 Kotlin 백엔드 하나로 9개 언어를 서비스합니다.

스토어 등록 정보가 공개되면 스크린샷을 올립니다.

결과

  • 9서비스 언어
  • 26유료 사용자, 2026년 7월
  • 61실결제 건수, 2026년 7월
  • 2024운영 시작

맡은 일

  • Ktor와 JVM 21 위의 백엔드 설계
  • PostgreSQL 스키마와 JSONB 번역 레이어
  • 코인·구독·보상형 광고를 하나의 장부로
  • Cloudflare R2 미디어 전송
  • Docker Compose 배포와 일상 운영

개요

독자는 AI 내레이터와 대화하고, 줄거리는 선택에 따라 갈라집니다. 앱은 2024년부터 App Store와 Google Play에 올라가 있고 한국어·영어·일본어·태국어·인도네시아어·말레이어·터키어·프랑스어·독일어를 지원합니다.

화면 뒤의 모든 것, 즉 API·데이터베이스·미디어 파이프라인·릴리스 절차를 제가 맡고 있습니다. 새 스토리는 제가 운영하는 배포 파이프라인으로 나가고, 2026년 7월 기준 실결제 61건에 유료 사용자 26명입니다.

제품과 고객사 이름은 NDA에 따라 비공개입니다. 표시된 스택, 구조, 숫자는 사실입니다.

스택

  • Kotlin
  • Ktor / JVM 21
  • Compose Multiplatform
  • PostgreSQL 16
  • Cloudflare R2
  • Docker Compose
  • RevenueCat
  • AdMob

구조

Client
  • Compose Multiplatform · iOS / Android
API
  • Ktor · JVM 21
Services
  • PostgreSQL 16
  • Cloudflare R2 (media)
  • RevenueCat (webhooks)
  • AdMob (rewarded)

중요했던 결정

  1. 01

    번역은 JSONB에 산다

    콘텐츠 하나가 아홉 개 언어 번역을 JSONB 컬럼 하나에 담습니다. 언어를 추가하는 일은 데이터 변경이지 마이그레이션이 아닙니다.

  2. 02

    세 가지 수익원, 장부 하나

    코인, 월 구독, 보상형 광고가 사용자별 잔액 하나로 정산됩니다. 웹훅 재시도와 환불은 원자적으로 되돌아가서 값이 어긋나지 않습니다.

  3. 03

    스토리도 코드처럼 배포

    새 스토리는 JSON으로 rsync와 DB 마이그레이션을 한 번에 거쳐 나갑니다. 버전 태그와 롤백 경로가 있습니다.

  4. 04

    혼자 당직을 서기 위한 로그

    요청·오류·웹훅 로그가 데이터베이스에 남아서, 아홉 개 시장 어디에서 온 버그 제보든 SSH 없이 재현할 수 있습니다.

다른 작업

만들고 싶은 것이 있으신가요?

두 문단이면 충분합니다. 서울 시간 기준 24시간 안에 가격과 날짜로 답장합니다.

이메일 보내기