octxxiii
연결 중…
PROJECTS
May 12, 2026

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

설정

  1. 의존성 설치

    npm install
    
  2. 환경 변수

    .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를 설정합니다.

  3. Supabase 스키마 적용

    supabase/schema.sql을 Supabase SQL Editor에서 실행합니다. (db 전략을 쓰려면 check_rate_limit 함수가 반드시 포함되어야 합니다.)

  4. (선택) 일일 요약 알림 트리거

    POST /api/ops/daily-summary 호출 시 Telegram 요약 알림이 발송됩니다. 헤더 Authorization: Bearer <TELEGRAM_OPS_TOKEN> 또는 Authorization: Bearer <CRON_SECRET>가 필요합니다. Vercel Cron을 사용하면 vercel.json의 스케줄(0 0 * * *, UTC 기준)을 따라 자동 호출됩니다.

  5. (선택) 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 lintESLint
npm testVitest
npm run icons아이콘 생성
npm run restore-device로컬 페이저 디바이스 상태 복구
npm run promo:screenshots홍보용 스크린샷 자동 캡처

홍보용 스크린샷

PNG와 재촬영 방법은 promo/screenshots/README.md를 참고하세요.

라이선스

비공개 저장소(private: true)입니다. 배포·재사용 정책은 저장소 소유자 기준을 따릅니다.