An open API service indexing awesome lists of open source software.

https://github.com/etff/bread-trip


https://github.com/etff/bread-trip

Last synced: 27 days ago
JSON representation

Awesome Lists containing this project

README

          

# 🍞 λΉ΅μ§€μˆœλ‘€ (BreadTrip)

> "μ„œμšΈμ˜ 빡집을 νƒν—˜ν•˜κ³ , λ‚˜λ§Œμ˜ 빡지도λ₯Ό μ±„μ›Œκ°€λŠ” λ”°λœ»ν•œ 탐방 μ„œλΉ„μŠ€"

μ„œμšΈ ν•œμ • MVP 버전

---

## πŸ“‹ ν”„λ‘œμ νŠΈ ν˜„ν™©

### βœ… μ™„λ£Œλœ κΈ°λŠ₯ (Phase 0-3)

#### Phase 0: ν”„λ‘œμ νŠΈ 초기 μ„€μ •
- [x] Next.js 14+ (App Router) ν”„λ‘œμ νŠΈ 생성
- [x] TypeScript μ„€μ •
- [x] Tailwind CSS μ»€μŠ€ν…€ ν…Œλ§ˆ (λΉ΅μ§‘ 감성)
- [x] 폴더 ꡬ쑰 (`/app`, `/components`, `/lib`, `/types`)
- [x] ν™˜κ²½ λ³€μˆ˜ μ„€μ •

#### Phase 1: Supabase μ„€μ •
- [x] Supabase ν΄λΌμ΄μ–ΈνŠΈ (client, server, middleware)
- [x] TypeScript νƒ€μž… μ •μ˜
- [x] DB μŠ€ν‚€λ§ˆ SQL (`users`, `bakeries`, `reviews`)
- [x] μ‹œλ“œ 데이터 (μ„œμšΈ λΉ΅μ§‘ 10개)
- [x] RLS μ •μ±…

#### Phase 2: κΈ°λ³Έ λ ˆμ΄μ•„μ›ƒ & 인증
- [x] ν•˜λ‹¨ λ„€λΉ„κ²Œμ΄μ…˜ λ°”
- [x] 둜그인 λͺ¨λ‹¬ (Email Magic Link)
- [x] Auth Server Actions
- [x] ν”„λ‘œν•„ νŽ˜μ΄μ§€ μŠ€μΌˆλ ˆν†€
- [x] ν”Όλ“œ νŽ˜μ΄μ§€ μŠ€μΌˆλ ˆν†€

#### Phase 3: 지도 탐색 (핡심 κΈ°λŠ₯)
- [x] Kakao Map 톡합
- [x] μ»€μŠ€ν…€ λΉ΅μ§‘ 마컀 (🍞)
- [x] 마컀 클릭 이벀트
- [x] ν•˜λ‹¨ μ‹œνŠΈ (λΉ΅μ§‘ 미리보기)
- [x] λΉ΅μ§‘ 상세 νŽ˜μ΄μ§€
- [x] API μ—”λ“œν¬μΈνŠΈ (`/api/bakeries`)

---

## πŸš€ μ‹œμž‘ν•˜κΈ°

### 1. ν™˜κ²½ λ³€μˆ˜ μ„€μ •

`.env.local` 파일이 이미 μƒμ„±λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€:

### 2. Supabase λ°μ΄ν„°λ² μ΄μŠ€ μ„€μ •

**μ€‘μš”: 아직 Supabaseμ—μ„œ SQL을 μ‹€ν–‰ν•˜μ§€ μ•Šμ•˜λ‹€λ©΄ λ°˜λ“œμ‹œ μ‹€ν–‰ν•˜μ„Έμš”!**

1. [Supabase Dashboard](https://supabase.com/dashboard) 접속
2. ν”„λ‘œμ νŠΈ: `vetpzzvvdkpjgqdywflb` 선택
3. 쒌츑 메뉴 > **SQL Editor** 클릭
4. μ•„λž˜ 파일 λ‚΄μš©μ„ μˆœμ„œλŒ€λ‘œ 볡사 & μ‹€ν–‰:
- `supabase/migrations/001_initial_schema.sql`
- `supabase/migrations/002_seed_data.sql`

μžμ„Έν•œ μ„€λͺ…: `supabase/README.md` μ°Έκ³ 

### 3. 개발 μ„œλ²„ μ‹€ν–‰

```bash
npm install # 이미 μ„€μΉ˜λ¨
npm run dev # 이미 μ‹€ν–‰ 쀑
```

λΈŒλΌμš°μ €μ—μ„œ [http://localhost:3000](http://localhost:3000) 접속

---

## πŸ“± μ£Όμš” κΈ°λŠ₯

### ν˜„μž¬ μ‚¬μš© κ°€λŠ₯ν•œ νŽ˜μ΄μ§€

| νŽ˜μ΄μ§€ | 경둜 | μ„€λͺ… |
|--------|------|------|
| πŸ—ΊοΈ ν™ˆ (지도) | `/` | Kakao Map 기반 λΉ΅μ§‘ 탐색 |
| πŸ“° ν”Όλ“œ | `/feed` | 리뷰 ν”Όλ“œ (μŠ€μΌˆλ ˆν†€) |
| πŸ‘€ ν”„λ‘œν•„ | `/profile` | 둜그인/찜 λͺ©λ‘ |
| 🍞 λΉ΅μ§‘ 상세 | `/bakeries/:id` | λΉ΅μ§‘ 정보 상세 보기 |

### μ£Όμš” μ»΄ν¬λ„ŒνŠΈ

```
components/
β”œβ”€β”€ layout/
β”‚ β”œβ”€β”€ Navigation.tsx # ν•˜λ‹¨ λ„€λΉ„κ²Œμ΄μ…˜ λ°”
β”‚ └── AuthModal.tsx # 둜그인 λͺ¨λ‹¬
β”œβ”€β”€ map/
β”‚ β”œβ”€β”€ KakaoMap.tsx # 카카였맡 μ»΄ν¬λ„ŒνŠΈ
β”‚ └── BottomSheet.tsx # λΉ΅μ§‘ 미리보기 μ‹œνŠΈ
└── ui/
β”œβ”€β”€ Button.tsx # λ²„νŠΌ
β”œβ”€β”€ Input.tsx # μž…λ ₯ ν•„λ“œ
└── Modal.tsx # λͺ¨λ‹¬
```

---

## πŸ›  기술 μŠ€νƒ

| ꡬ뢄 | 기술 |
|------|------|
| **Frontend** | Next.js 16 (App Router), TypeScript, Tailwind CSS |
| **Backend** | Next.js API Routes, Server Actions |
| **Database** | Supabase (PostgreSQL) |
| **Auth** | Supabase Auth (Email Magic Link) |
| **Map** | Kakao Maps SDK |
| **Storage** | Supabase Storage (μ€€λΉ„ 쀑) |
| **Deploy** | Vercel (μ˜ˆμ •) |

---

## πŸ“‚ ν”„λ‘œμ νŠΈ ꡬ쑰

```
bread-trip/
β”œβ”€β”€ app/ # Next.js App Router
β”‚ β”œβ”€β”€ actions/ # Server Actions
β”‚ β”‚ └── auth.ts
β”‚ β”œβ”€β”€ api/ # API Routes
β”‚ β”‚ └── bakeries/
β”‚ β”œβ”€β”€ auth/ # 인증 κ΄€λ ¨
β”‚ β”œβ”€β”€ bakeries/[id]/ # λΉ΅μ§‘ 상세
β”‚ β”œβ”€β”€ feed/ # ν”Όλ“œ
β”‚ β”œβ”€β”€ profile/ # ν”„λ‘œν•„
β”‚ └── page.tsx # ν™ˆ (지도)
β”œβ”€β”€ components/ # React μ»΄ν¬λ„ŒνŠΈ
β”‚ β”œβ”€β”€ layout/
β”‚ β”œβ”€β”€ map/
β”‚ └── ui/
β”œβ”€β”€ lib/ # μœ ν‹Έλ¦¬ν‹°
β”‚ β”œβ”€β”€ supabase/ # Supabase ν΄λΌμ΄μ–ΈνŠΈ
β”‚ └── utils.ts
β”œβ”€β”€ types/ # TypeScript νƒ€μž…
β”‚ β”œβ”€β”€ database.ts # DB νƒ€μž…
β”‚ β”œβ”€β”€ common.ts # 곡톡 νƒ€μž…
β”‚ └── kakao.d.ts # Kakao Maps νƒ€μž…
β”œβ”€β”€ supabase/ # Supabase μ„€μ •
β”‚ β”œβ”€β”€ migrations/ # SQL λ§ˆμ΄κ·Έλ ˆμ΄μ…˜
β”‚ └── README.md
└── public/ # 정적 파일
```

---

## πŸ”„ λ‹€μŒ 단계 (Phase 4-6)

### Phase 4: λΉ΅μ§‘ 등둝
- [ ] λΉ΅μ§‘ 등둝 폼
- [ ] Kakao μ£Όμ†Œ 검색 API
- [ ] 이미지 μ—…λ‘œλ“œ (Supabase Storage)
- [ ] 등둝 API

### Phase 5: ν”Όλ“œ μ‹œμŠ€ν…œ
- [ ] 리뷰 μž‘μ„± λͺ¨λ‹¬
- [ ] 리뷰 API
- [ ] λ¬΄ν•œ 슀크둀
- [ ] 리뷰 μΉ΄λ“œ μ»΄ν¬λ„ŒνŠΈ

### Phase 6: μ΅œμ ν™” & 배포
- [ ] 이미지 μ΅œμ ν™”
- [ ] λ‘œλ”©/μ—λŸ¬ μƒνƒœ κ°œμ„ 
- [ ] GA4 이벀트
- [ ] Vercel 배포

---

## πŸ› ν˜„μž¬ μ•Œλ €μ§„ μ œν•œμ‚¬ν•­

1. **Supabase SQL μ‹€ν–‰ ν•„μš”**: λ°μ΄ν„°λ² μ΄μŠ€ μŠ€ν‚€λ§ˆλ₯Ό μˆ˜λ™μœΌλ‘œ μ‹€ν–‰ν•΄μ•Ό ν•©λ‹ˆλ‹€
2. **μ°œν•˜κΈ° λ―Έκ΅¬ν˜„**: UIλŠ” μžˆμ§€λ§Œ λ°±μ—”λ“œ 연동 ν•„μš”
3. **리뷰 λ―Έκ΅¬ν˜„**: ν”Όλ“œμ™€ 리뷰 μž‘μ„± κΈ°λŠ₯은 Phase 5μ—μ„œ κ΅¬ν˜„ μ˜ˆμ •
4. **이미지 μ—…λ‘œλ“œ λ―Έκ΅¬ν˜„**: Storage μ„€μ • ν›„ κ΅¬ν˜„ μ˜ˆμ •
5. **인증 μƒνƒœ 관리**: ν”„λ‘œν•„ νŽ˜μ΄μ§€μ—μ„œ μ‹€μ œ μœ μ € 정보 연동 ν•„μš”

---

## πŸ“ 개발 λ…ΈνŠΈ

### Tailwind μ»€μŠ€ν…€ 색상

```css
--cream-beige: #F6E9D8 /* 크림베이지 */
--brown: #8B5E3C /* 브라운 */
--white-warm: #FFF9F4 /* λ”°λœ»ν•œ ν™”μ΄νŠΈ */
```

μ‚¬μš© 예:
```tsx


```

### API μ—”λ“œν¬μΈνŠΈ

```typescript
GET /api/bakeries # λΉ΅μ§‘ λͺ©λ‘ 쑰회
POST /api/bakeries # λΉ΅μ§‘ 등둝 (인증 ν•„μš”)
GET /api/bakeries/:id # λΉ΅μ§‘ 상세 쑰회
```

### λ°μ΄ν„°λ² μ΄μŠ€ ν…Œμ΄λΈ”

- `users`: μ‚¬μš©μž 정보
- `bakeries`: λΉ΅μ§‘ 정보
- `reviews`: 리뷰 (쀀비됨, λ―Έμ‚¬μš©)

---

## πŸ™‹ 문제 ν•΄κ²°

### 지도가 ν‘œμ‹œλ˜μ§€ μ•ŠλŠ” 경우

1. Kakao Maps API ν‚€ 확인
2. λΈŒλΌμš°μ € μ½˜μ†”μ—μ„œ μ—λŸ¬ 확인
3. `window.kakao` 객체 λ‘œλ“œ 확인

### API 호좜 μ‹€νŒ¨

1. Supabase URL/Key 확인
2. Supabaseμ—μ„œ SQL μ‹€ν–‰ μ—¬λΆ€ 확인
3. RLS μ •μ±… 확인

### λΉŒλ“œ μ—λŸ¬

```bash
npm run build
```

TypeScript μ—λŸ¬κ°€ λ°œμƒν•˜λ©΄ νƒ€μž… μ •μ˜ 확인

---

## πŸ“„ λΌμ΄μ„ μŠ€

MIT

---

## 🎯 ν”„λ‘œμ νŠΈ λͺ©ν‘œ

- **μœ μž…**: μ„œμšΈ μ‹œλ“œ λΉ΅μ§‘ 50개 등둝
- **μ°Έμ—¬**: 지도 클릭λ₯  40% 이상
- **μœ μ§€**: D7 재방문율 20% 이상