작업 목록
루머
모바일 이벤트 초대·참석 관리 플랫폼 구축
호스트가 이벤트를 만들고 초대 링크·SMS로 게스트를 초대하며, 참석 신청·승인·날짜 투표·공지·사진 앨범까지 한 흐름에서 운영할 수 있도록 구성했습니다. 관리자 콘솔에서는 회원, 이벤트, 신고, 배너, 포스터, 앱 버전과 운영 통계를 관리합니다.
- 기간
- 2026.04 ~ 2026.05
- 분류
- 모바일 앱, 관리자
- 서비스 주소
- app.rumeur.co(새 창)
Expo 기반 iOS·Android·Web 통합 앱, Express API 서버, React Admin 운영 콘솔, Supabase 인증·DB·스토리지, Redis 기반 알림 큐를 분리해 구축한 이벤트 초대 및 참석 관리 서비스입니다.
서비스 화면







관리자



사용한 기술
- Expo
- React Native
- React
- TypeScript
- Express
- Supabase
- PostgreSQL
- Redis
- Bee-Queue
- React Admin
- Vite
- TanStack Query
- Zustand
- NativeWind
- EAS
- Vercel
화면
- Expo Router 기반 iOS·Android·Web 공통 라우팅 구조로 인증, 이벤트 생성, 초대 수락, 참석 신청, 앨범, 마이페이지 화면을 분리했습니다.
- React Native와 NativeWind 기반 UI 컴포넌트 구조를 사용해 모바일 앱과 웹 화면에서 동일한 서비스 흐름을 유지했습니다.
- TanStack Query 기반 서버 상태 캐싱으로 이벤트, 참석자, 사진, 공지, 설정 데이터를 화면 단위로 재사용하고 반복 조회 부담을 줄였습니다.
- Zustand 스토어로 인증 상태, 이벤트 작성 상태, 참석 신청 상태, 실시간 사용자 상태, 알림 상태를 분리 관리했습니다.
- React Hook Form과 Zod를 사용해 이벤트 작성, 프로필, 참석 신청 등 입력 흐름의 검증 기준을 클라이언트에서 일관되게 처리했습니다.
- Expo Notifications, Firebase Analytics, Web Push 구독 구조를 통해 모바일·웹 사용자 알림과 이용 분석 기반을 구성했습니다.
서버 · 데이터
- Express API를 공개 API, 인증 사용자 API, 관리자 API, 크론 API로 분리하고 JWT 검증 미들웨어와 관리자 권한 검사를 라우트 계층에 적용했습니다.
- Supabase Auth 전화번호 OTP 기반 인증을 사용하고, Supabase Edge Function send-sms hook으로 OTP 저장·SMS 발송 프록시 연계를 처리했습니다.
- Supabase PostgreSQL 테이블을 중심으로 이벤트, 참석자, 초대, 공지, 사진, 반응, 신고, 알림 로그, 일일 통계 데이터를 관리했습니다.
- Redis와 express-rate-limit를 연동해 일반 API, 공개 API, 관리자 API별 요청 제한을 분리하고 운영 환경의 과도한 요청을 제어했습니다.
- Bee-Queue 기반 비동기 작업으로 SMS, 대량 SMS, 초대 SMS, 이메일, 푸시 발송을 API 응답 흐름에서 분리했습니다.
- Supabase Storage posters 버킷을 사용해 이벤트 포스터와 사진 파일을 저장하고, 삭제 시 DB 레코드와 스토리지 파일을 함께 정리했습니다.
인프라
- Vercel rewrites 설정으로 Expo Web 정적 앱 라우팅과 이벤트 상세 공유용 OG API 경로를 분리했습니다.
- EAS Build와 Submit 설정으로 Android APK·AAB, iOS production 빌드 및 스토어 제출 흐름을 구성했습니다.
- Supabase CLI 설정으로 로컬 API, Auth, Realtime, Storage, Edge Functions, Studio 개발 환경을 정의했습니다.
- 서버 프록시는 Express와 PM2 실행 스크립트를 갖추고 Redis 큐, Aligo SMS, Resend 이메일, Expo Push, Web Push 발송을 담당합니다.
- node-schedule 기반 프록시 크론이 서버의 보호된 /cron/daily 엔드포인트를 호출해 종료 이벤트 처리, 리마인더, 휴면 계정 정리, 일일 통계 스냅샷을 실행합니다.