https://github.com/etff/bread-trip
https://github.com/etff/bread-trip
Last synced: 27 days ago
JSON representation
- Host: GitHub
- URL: https://github.com/etff/bread-trip
- Owner: etff
- Created: 2025-10-24T11:44:17.000Z (9 months ago)
- Default Branch: main
- Last Pushed: 2026-02-14T08:19:11.000Z (5 months ago)
- Last Synced: 2026-03-27T04:47:29.089Z (4 months ago)
- Language: TypeScript
- Homepage: https://bread-trip.vercel.app
- Size: 1.34 MB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
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% μ΄μ