
May 12, 2026
PPP — Private Pocket Ping
A retro pager-inspired social app for sending small emotional signals when words feel too heavy.
Tags: Flutter · Supabase · Push Notification · Social UX Status: Work in Progress Year: 2026
저장소: octxxiii/ttuck
이용해보기: PPP
PPP (Private Pocket Ping)
삐삐 스타일 UI로 주고받는 웹 앱입니다. Next.js App Router 기반이며 Supabase와 Web Push를 사용합니다.
요구 사항
- Node.js 20+
- npm
설정
-
의존성 설치
npm install -
환경 변수
.env.local.example을 복사해.env.local로 두고 값을 채웁니다. (PowerShell:Copy-Item .env.local.example .env.local)Supabase URL·키, 선택적으로 Web Push(VAPID) 키가 필요합니다. Auth 기반으로 동작하므로 Supabase Auth에서 Google/Kakao OAuth, Email 로그인(OTP/Magic Link)을 활성화하세요. 기존
device_id사용자라면 로그인 직후 자동으로 레거시 프로필 연결을 시도합니다. API 과다 호출 방지는 기본local(인메모리)이며, 분산 환경에서는API_RATE_LIMIT_STRATEGY=db를 사용합니다. Telegram 운영 알림을 쓰려면TELEGRAM_BOT_TOKEN,TELEGRAM_CHAT_ID를 추가하고, 일일 요약 트리거용으로TELEGRAM_OPS_TOKEN도 설정합니다. 봇 명령을 쓰려면TELEGRAM_WEBHOOK_SECRET를 설정합니다. -
Supabase 스키마 적용
supabase/schema.sql을 Supabase SQL Editor에서 실행합니다. (db전략을 쓰려면check_rate_limit함수가 반드시 포함되어야 합니다.) -
(선택) 일일 요약 알림 트리거
POST /api/ops/daily-summary호출 시 Telegram 요약 알림이 발송됩니다. 헤더Authorization: Bearer <TELEGRAM_OPS_TOKEN>또는Authorization: Bearer <CRON_SECRET>가 필요합니다. Vercel Cron을 사용하면vercel.json의 스케줄(0 0 * * *, UTC 기준)을 따라 자동 호출됩니다. -
(선택) Telegram 봇 명령
웹훅 경로는
POST /api/telegram/webhook이며/summary,/ping,/help명령을 지원합니다. 웹훅을 등록할 때TELEGRAM_WEBHOOK_SECRET과 같은 값을 Telegram secret token으로 지정하세요.
개발
npm run dev
기본 주소는 http://localhost:3000입니다.
스크립트
| 명령 | 설명 |
|---|---|
npm run dev | 개발 서버 |
npm run build | 프로덕션 빌드 |
npm run start | 빌드 결과 실행 |
npm run lint | ESLint |
npm test | Vitest |
npm run icons | 아이콘 생성 |
npm run restore-device | 로컬 페이저 디바이스 상태 복구 |
npm run promo:screenshots | 홍보용 스크린샷 자동 캡처 |
홍보용 스크린샷
PNG와 재촬영 방법은 promo/screenshots/README.md를 참고하세요.
라이선스
비공개 저장소(private: true)입니다. 배포·재사용 정책은 저장소 소유자 기준을 따릅니다.