ZED (My Islamic Reminders)
사용자별 맞춤 일정에 맞춰 다국어 이슬람 방송을 전송하며, 자동 생성된 내레이션 오디오와 종합 전달 분석을 제공하는 모바일 앱 및 웹 관리자 콘솔입니다.
Expo (React Native)
Next.js
Convex
OpenAI TTS
TanStack Table
Recharts

개요
ZED는 단일 백엔드를 공유하는 세 가지 요소로 구성된 모노레포 기반의 영적 방송 플랫폼입니다. 최종 사용자용 Expo 모바일 앱, 운영자용 Next.js 관리자 대시보드, 그리고 데이터를 관리하고 스케줄링, 알림, 분석, 오디오 생성을 담당하는 Convex 백엔드로 이루어져 있습니다. 이 프로덕트는 사용자가 선호하는 현지 시간과 선택한 언어로 짧은 이슬람 방송을 발송하며, 재생 시 단어별 하이라이트가 지원되는 내레이션 오디오로 자동 변환합니다.
문제점
이 프로덕트에서 까다로운 부분은 콘텐츠 표시가 아닌 오케스트레이션입니다. 사용자들은 우측에서 좌측으로 쓰는 RTL 스크립트를 포함한 여러 언어 중 선택한 언어로, 자신의 타임존에 맞춘 특정 시간에 방송이 전달되기를 원합니다. 각 방송은 텍스트, 오디오, 혹은 공유 가능한 형태로 소비될 수 있어야 합니다. 관리자는 실제로 무슨 일이 일어나고 있는지 파악해야 합니다. 즉, 무엇이 전달되고 조회되고 재생되었는지, 그리고 오디오 생성이 일정에 맞게 유지되고 있는지를 확인해야 합니다. 사용자가 콘텐츠를 놓친 경우 시스템이 자체적으로 후속 조치를 진행해야 합니다. 진정한 핵심 과제는 예약 전송, 언어 선택, 오디오 생성, 푸시 알림, 분석을 하나의 조화로운 시스템으로 통합하는 것이었습니다.
내 역할 및 접근 방식
이 프로젝트는 다른 엔지니어가 주도한 팀 프로젝트였으며, 저는 개발팀의 일원으로 기여했습니다. 모바일 앱과 관리자 대시보드가 공유하는 단일 진실 공급원(SSOT)인 Convex를 중심으로 설계된 아키텍처 내에서, 주도적 역할보다는 특정 핵심 영역에 집중하여 개발을 진행했습니다. 코드베이스 전반의 설계 원칙은 백엔드가 스케줄링, 재시도, 오디오 작업, 분석을 포함한 오케스트레이션을 전담하고, 두 프론트엔드는 가벼운 상태를 유지하며 동일한 생성 API를 조회하도록 하는 것이었습니다.
기술 스택
주요 기능
갤러리


도전 과제 및 해결 방안
알림 전송은 이 제품에서 기술적으로 가장 까다로운 핵심 기능입니다. 방송은 사용자별, 타임존별 일정에 따라 발송되므로, 백엔드는 일회성 트리거 대신 Convex 크론 작업과 백그라운드 작업 풀을 통해 전송을 처리하며, 사용자 활동별로 재시도 마커를 추적하여 놓친 콘텐츠에 대해 자동으로 후속 조치를 취합니다.
오디오 생성 또한 안정성이 지속적으로 유지되어야 하는 핵심 요소입니다. 텍스트를 음성 오디오로 변환하는 작업은 시간이 소요되며 실패할 가능성이 있으므로, 각 지역화 콘텐츠는 자체 생성 상태와 재시도 횟수를 추적하며, 관리자는 대시보드에서 진행 상황을 확인하고 중단된 작업을 다시 실행할 수 있습니다. 전달됨, 조회됨, 재생됨 이벤트를 타임스탬프와 함께 기록하는 인게이지먼트 추적 기능이 데이터 모델에 직접 내장되어 있어, 별도의 분석 파이프라인 없이도 동일한 저장소에서 즉시 리포팅을 추출할 수 있습니다.
결과
ZED는 단일 Convex 백엔드로 일반 사용자용 모바일 앱과 운영 대시보드를 모두 구동하는 완전한 크로스 플랫폼 시스템입니다. 맞춤형 다국어 자동 내레이션 방송을 예약하고 전달의 모든 단계를 리포팅합니다. 백엔드가 까다로운 스케줄링과 미디어 처리를 전담하여 클라이언트 앱을 단순하게 유지할 수 있도록 한, 오케스트레이션 중심 제품 엔지니어링의 대표적인 모범 사례입니다.
유사한 프로덕트 문제가 있으신가요?
현재 프로덕트 현황, 필요한 결과, 직면한 제약 사항을 공유해 주세요. 이를 바탕으로 합리적인 첫 번째 마일스톤을 정의해 드립니다.
풀스택 개발자 채용