Customer Engagement Platform for Email, Push Notifications, & SMS
모바일 푸시, 웹 푸시, SMS, 이메일, 인앱 메시징 분야 세계 최고, 200만 기업이 신뢰해 연간 120억 건 이상 전송
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
"우리동네 맛평가단" - 중소 식품 사업자와 소비자를 잇는 솔직한 맛 평가 & 홍보 플랫폼 ✨ 지금 바로 방문하기 🔗 Demo 바로가기 밥터뷰는 동네 식당 사장님과 손님을 "체험단"으로 연결하는 모바일 웹 서비스입니다. 사장님은 신메뉴나 주력 메뉴를 체험단에게 제공하고, 손님(맛평가단)은 저렴하거나 무료로 음식을 경험한 뒤 장점 / 단점 / 개선점으로 구분된 솔직한 리뷰를 남깁니다. 사장님은 이렇게 모인 리뷰를 대시보드에서 분석해 메뉴 개선과 홍보에 활용하고, 손님은 리뷰를 쓸 때마다 포인트를 적립해 등급을 올리고 상점에서 사용합니다. 배달앱의 단순 별점 대신 구조화된 정성 피드백을 주고받는 것이 밥터뷰의 핵심입니다. • 대형 브랜드가 마케팅을 독점해, 동네 식당·중소 식품 사업자는 인지도를 쌓기 어렵고 광고비 부담이 큽니다. • 기존 별점 리뷰는 신뢰도가 낮고, "무엇을 어떻게 고쳐야 하는지"에 대한 구체적 피드백을 얻기 어렵습니다. 밥터뷰는 무신사·화해류의 체험단 모델을 동네 식품에 적용해, 사장님에게는 실질적인 개선 인사이트를, 손님에게는 새로운 맛집을 저렴하게 경험할 기회를 제공합니다.README 전문 보기 ↗
"우리동네 맛평가단" - 중소 식품 사업자와 소비자를 잇는 솔직한 맛 평가 & 홍보 플랫폼
밥터뷰는 동네 식당 사장님과 손님을 "체험단"으로 연결하는 모바일 웹 서비스입니다.
사장님은 신메뉴나 주력 메뉴를 체험단에게 제공하고, 손님(맛평가단)은 저렴하거나 무료로 음식을 경험한 뒤 장점 / 단점 / 개선점으로 구분된 솔직한 리뷰를 남깁니다. 사장님은 이렇게 모인 리뷰를 대시보드에서 분석해 메뉴 개선과 홍보에 활용하고, 손님은 리뷰를 쓸 때마다 포인트를 적립해 등급을 올리고 상점에서 사용합니다.
배달앱의 단순 별점 대신 구조화된 정성 피드백을 주고받는 것이 밥터뷰의 핵심입니다.
밥터뷰는 무신사·화해류의 체험단 모델을 동네 식품에 적용해, 사장님에게는 실질적인 개선 인사이트를, 손님에게는 새로운 맛집을 저렴하게 경험할 기회를 제공합니다.
밥터뷰는 사장님(B2B)과 맛평가단(B2C) 두 종류의 사용자를 하나의 앱에서 지원합니다.
utils/locationUtils.ts)utils/reviewAnalytics.ts)data/levelSystem.ts, stores/pointStore.ts)public/sw.js)utils/validation.ts)도메인별로 분리된 Zustand 스토어로 전역 상태를 관리합니다.
| 스토어 | 역할 |
|---|---|
authStore | 로그인 사용자 정보 / 토큰 |
productStore | 체험단(상품) 목록, 찜, 선택 상품 |
applicationStore | 체험단 신청 내역 |
reviewStore | 작성된 리뷰, 공개/비공개 |
notificationStore | 알림 |
pointStore | 포인트 적립·사용, 레벨 |
각 스토어는 브라우저 localStorage와 연동되어, 새로고침하거나 로그아웃 후 다시 로그인해도 체험단·신청·리뷰·포인트 데이터가 유지됩니다. 인증과 서버 API는 Supabase(Auth, Edge Functions)를 사용합니다.
| 구분 | 사용 기술 |
|---|---|
| Core | React 18, TypeScript, Vite |
| Routing | React Router (react-router-dom v6) |
| State | Zustand (도메인별 스토어) |
| Styling | Tailwind CSS, Radix UI, motion |
| Form & Validation | React Hook Form, Zod |
| Charts | Recharts |
| Backend | Supabase (Auth, Edge Functions) |
| PWA | Web App Manifest + Service Worker |
| Test | Vitest, Testing Library |
| Deploy | Vercel |
git clone https://github.com/Duckcchun/Local-Food-Review-App.git
cd Local-Food-Review-App
npm install
프로젝트 루트에 .env.local 파일을 생성하고 아래 값을 채웁니다. (참고: 저장소에는 예시용 .env.example이 포함되어 있습니다.)
VITE_SUPABASE_PROJECT_ID=your-project-id
VITE_SUPABASE_ANON_KEY=your-anon-public-key
npm run dev
브라우저에서 http://localhost:3000 접속
npm run build
npm run preview
npm run test # 단위 테스트 (Vitest, 1회 실행)
npm run test:watch # 감시 모드
npm run test:coverage # 커버리지 리포트
현재 리뷰 분석, 폼 검증, 이미지 업로드 검증, 레벨/포인트 로직에 대한 단위 테스트가 포함되어 있습니다.
/
├─ public/ # favicon, service worker(sw.js) 등 정적 에셋
├─ src/
│ ├─ components/ # 화면 및 재사용 UI 컴포넌트
│ │ ├─ common/ # EmptyState, LiveRegion, SkipLink 등 공용/접근성 컴포넌트
│ │ ├─ ui/ # Radix 기반 UI 프리미티브 (button, dialog, tabs 등)
│ │ └─ *.tsx # HomePage, BusinessDashboard, ReviewWritePage 등 화면 컴포넌트
│ ├─ pages/ # 라우트 진입점 (*Route.tsx) — URL과 화면 컴포넌트 연결
│ ├─ layouts/ # MainLayout 등 공통 레이아웃
│ ├─ stores/ # Zustand 스토어 (auth, product, application, review, notification, point)
│ ├─ hooks/ # 커스텀 훅 (useLocalStorage, useDarkMode, usePWA, useFocusTrap 등)
│ ├─ data/ # categories, levelSystem, pointShop, mockData 등 정적/시드 데이터
│ ├─ supabase/ # Supabase Edge Functions (functions/server)
│ ├─ utils/ # locationUtils, reviewAnalytics, validation, imageUpload, statsUtils 등
│ │ └─ supabase/ # Supabase 클라이언트 정보(info)
│ ├─ types/ # 전역 TypeScript 타입 정의 (index.ts, types.ts)
│ ├─ figma/ # 디자인 연동 자산 (ImageWithFallback)
│ ├─ styles/ # 전역 스타일 (globals.css)
│ ├─ test/ # 테스트 셋업 (Vitest)
│ ├─ routes.tsx # 라우트 정의
│ ├─ App.tsx # 메인 애플리케이션
│ └─ main.tsx # 애플리케이션 진입점
├─ .env.example # 환경 변수 예시 (Supabase 키 등)
├─ manifest.webmanifest # PWA 매니페스트
├─ package.json
├─ postcss.config.js
└─ vite.config.ts # Vite 설정