Skip to content

taekim34/doooz

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

49 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🌐 ν•œκ΅­μ–΄ | English | ζ—₯本θͺž

DOOOZ

μž”μ†Œλ¦¬λŠ” 그만. 응원을 μ‹œμž‘ν•˜μ„Έμš”.

λ§€μ£Ό μ•„μ΄λ“€μ—κ²Œ ν•  일을 μ‹œν‚€λŠλΌ λͺ‡ μ‹œκ°„μ”© μž”μ†Œλ¦¬ν•˜κ³  κ³„μ‹ κ°€μš”? 맀일 λ°˜λ³΅λ˜λŠ” μ§‘μ•ˆμΌμ΄ μ „μŸν„°κ°€ 되고 μžˆμ§€ μ•Šλ‚˜μš”? DOOOZλŠ” μ§€λ£¨ν•œ 일상을 μˆ˜λ…„κ°„ μ΄μ–΄μ§€λŠ” λͺ¨ν—˜μœΌλ‘œ λ°”κΏ”μ€λ‹ˆλ‹€. λΆ€λͺ¨κ°€ ν•  일을 μ •ν•˜λ©΄, 아이가 μ™„λ£Œν•˜κ³ , ν¬μΈνŠΈκ°€ μŒ“μ΄κ³ , 캐릭터가 μ„±μž₯ν•˜κ³ , 연속 기둝이 온 가쑱을 ν•˜λ‚˜λ‘œ λ¬Άμ–΄μ€λ‹ˆλ‹€.

μ•„μ΄μ˜ μ„±μž₯을 5λ…„ 이상 μ§€μΌœλ³΄κ³  싢은 가쑱을 μœ„ν•΄ λ§Œλ“€μ—ˆμŠ΅λ‹ˆλ‹€.

μ™œ DOOOZ인가 🀩 (πŸ‘‰ 상세 μ‚¬μš© κ°€μ΄λ“œ)

λΆ€λͺ¨κ°€ 할일을 λ“±λ‘ν•˜λ©΄ 아이가 슀슀둜 μ²΄ν¬ν•˜κ³ , μ²΄ν¬ν•˜λŠ” μˆœκ°„ ν¬μΈνŠΈκ°€ λ°”λ‘œ μŒ“μž…λ‹ˆλ‹€. λΆ€λͺ¨ μŠΉμΈμ„ 기닀릴 ν•„μš” 없이 아이가 μ£Όλ„μ μœΌλ‘œ κ΄€λ¦¬ν•˜λŠ” κ΅¬μ‘°μž…λ‹ˆλ‹€. μŒ“μΈ ν¬μΈνŠΈλŠ” λΆ€λͺ¨κ°€ λ“±λ‘ν•œ 보상(용돈, νŠΉλ³„ ν™œλ™ λ“±)으둜 κ΅ν™˜ν•  수 있고, 30단계 레벨과 58μ’… λ°°μ§€, 5λ‹¨κ³„λ‘œ μ§„ν™”ν•˜λŠ” 캐릭터가 μ•„μ΄μ—κ²Œ 지속적인 동기λ₯Ό λΆ€μ—¬ν•©λ‹ˆλ‹€.

κΈ°λŠ₯ μ„€λͺ…
자율 체크, μ¦‰μ‹œ 반영 아이가 할일을 μ²΄ν¬ν•˜λ©΄ ν¬μΈνŠΈκ°€ λ°”λ‘œ 적립! λΆ€λͺ¨ 승인 λΆˆν•„μš”
μ‘°λ₯΄κΈ° 아이가 μΆ”κ°€λ‘œ ν•œ 일을 λΆ€λͺ¨μ—κ²Œ 인정 μš”μ²­ β†’ λΆ€λͺ¨κ°€ 포인트λ₯Ό μ •ν•΄μ„œ μ§€κΈ‰
봐주기 μ—¬ν–‰μ΄λ‚˜ μ•„ν”ˆ λ‚ , λΆ€λͺ¨κ°€ λ―Έμ™„λ£Œ ν• μΌμ˜ νŒ¨λ„ν‹°λ₯Ό 면제
보상 κ΅ν™˜ 포인트둜 보상(용돈 λ“±) κ΅ν™˜ μ‹ μ²­ β†’ λΆ€λͺ¨ 승인 μ‹œ 차감
였래 κ°€λŠ” κ²Œμž„ν™” 30레벨 + 58λ°°μ§€ + 12캐릭터(5단계 μ§„ν™”) β€” μˆ˜λ…„κ°„ 동기 λΆ€μ—¬
μžλ™ 운영 μƒˆλ²½ 1μ‹œ 할일 μžλ™ 생성 + λ―Έμ™„λ£Œ νŒ¨λ„ν‹°, 저녁 9μ‹œ λ¦¬λ§ˆμΈλ”
μ•± μ„€μΉ˜ & ν‘Έμ‹œ ν™ˆ 화면에 μΆ”κ°€ν•˜λ©΄ 별도 μ•±μœΌλ‘œ μ‚¬μš© + ν‘Έμ‹œ μ•Œλ¦Ό
κ°€μ‘± 데이터 보호 κ°€μ‘± κ°„ 데이터λ₯Ό λ°μ΄ν„°λ² μ΄μŠ€ λ ˆλ²¨μ—μ„œ μ™„μ „ 격리
λ‹€κ΅­μ–΄ ν•œκ΅­μ–΄ / English / ζ—₯本θͺž + κΈ€λ‘œλ²Œ νƒ€μž„μ‘΄

πŸ’‘ μ•± μ„€μΉ˜ 팁 (iOS): 둜그인 ν›„ 메인 ν™”λ©΄μ—μ„œ ν™ˆ 화면에 μΆ”κ°€ν•΄μ£Όμ„Έμš”. 둜그인 전에 μ„€μΉ˜ν•˜λ©΄ ν™”λ©΄ λ ˆμ΄μ•„μ›ƒ λ¬Έμ œκ°€ λ°œμƒν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μŠ€ν¬λ¦°μƒ· πŸ“Έ

κ°€μ‘± 상세 할일 ν˜„ν™©(1)
κ°€μ‘± 상세 할일 ν˜„ν™©(1)
할일 ν˜„ν™©(2) 보상 관리
할일 ν˜„ν™©(2) 보상 관리

기술 μŠ€νƒ πŸ’‘

  • Next.js 15 (App Router, RSC) + React 19 + TypeScript 5
  • Tailwind + shadcn μŠ€νƒ€μΌ μ»΄ν¬λ„ŒνŠΈ
  • Supabase (Postgres, Auth, RLS)
  • Zod μŠ€ν‚€λ§ˆ μœ νš¨μ„± 검사
  • Web Push API (VAPID)
  • Vercel 배포

미리 μ€€λΉ„λœ μ„œλΉ„μŠ€ μ‚¬μš©ν•˜κΈ° 🌐

DOOOZλŠ” 이미지/파일 μ—…λ‘œλ“œ 없이 ν…μŠ€νŠΈ λ°μ΄ν„°λ§Œ μ €μž₯ν•˜κΈ° λ•Œλ¬Έμ— μ„œλ²„ λΉ„μš©μ΄ 맀우 μž‘μŠ΅λ‹ˆλ‹€. 직접 ꡬ좕 없이 λ°”λ‘œ μ‚¬μš©ν•΄λ³΄κ³  싢은 뢄은 μœ„ μ£Όμ†Œμ—μ„œ νšŒμ›κ°€μž… ν›„ μ‚¬μš©ν•˜μ‹€ 수 μžˆμŠ΅λ‹ˆλ‹€.

ν˜„μž¬λŠ” 무료 tier둜 운영 쀑이며, κ°€μž…λœ 가쑱이 100곳을 λ„˜μœΌλ©΄ Supabaseλ₯Ό 유료 tier둜, 5,000가쑱을 λ„˜μœΌλ©΄ Vercel도 유료 tier둜 μ—…κ·Έλ ˆμ΄λ“œν•  μ˜ˆμ •μž…λ‹ˆλ‹€. (μ΅œλŒ€ μ•½ 15,000κ°€μ‘±, 50,000λͺ…κΉŒμ§€ 수용 κ°€λŠ₯ μ˜ˆμƒ)

λ‹€λ§Œ, DOOOZλŠ” μœ μ €κ°€ 직접 μžμ‹ λ§Œμ˜ μ„œλΉ„μŠ€λ₯Ό κ΅¬μΆ•ν•˜κ³  μ‚¬μš©ν•˜λŠ” 것을 μΆ”μ²œν•©λ‹ˆλ‹€. μ•„λž˜ κ°€μ΄λ“œλ₯Ό μ°Έκ³ ν•˜μ„Έμš”.

직접 ꡬ좕 - μ²˜μŒμ΄μ‹  뢄은 ꡬ글/AIμ—κ²Œ λ¬Όμ–΄λ³΄μ„Έμš” πŸ”°

이 λ¬Έμ„œλ₯Ό 따라 ν•˜λ €λ©΄ μ•½κ°„μ˜ 개발 ν™˜κ²½ 섀정이 ν•„μš”ν•©λ‹ˆλ‹€.

  • 터미널 μ—΄κΈ° β€” Mac은 터미널, WindowsλŠ” PowerShell을 μ‚¬μš©ν•˜μ„Έμš”. μ—¬λŠ” 법을 λͺ¨λ₯΄μ‹œλ©΄ κ΅¬κΈ€μ—μ„œ κ²€μƒ‰ν•˜κ±°λ‚˜ AIμ—κ²Œ λ¬Όμ–΄λ³΄μ„Έμš”.
  • git이 μ•ˆ λœλ‹€λ©΄ β€” κ΅¬κΈ€μ—μ„œ "Git μ„€μΉ˜ 방법" 을 κ²€μƒ‰ν•˜κ±°λ‚˜ AIμ—κ²Œ λ¬Όμ–΄λ³΄μ„Έμš”.
  • npm/npxκ°€ μ•ˆ λœλ‹€λ©΄ β€” κ΅¬κΈ€μ—μ„œ "Node.js μ„€μΉ˜ 방법" 을 κ²€μƒ‰ν•˜κ±°λ‚˜ AIμ—κ²Œ λ¬Όμ–΄λ³΄μ„Έμš”.

λ‚΄ 컴퓨터 ν„°λ―Έλ„μ—μ„œ μ‹€ν–‰ν•˜κΈ° πŸ–₯️

# 1. λ‹€μš΄λ‘œλ“œ λ°›κ³  싢은 ν΄λ”λ‘œ 이동 (예: 바탕화면)
cd ~/Desktop

# 2. 클둠 & μ„€μΉ˜
git clone https://github.com/taekim34/doooz.git
cd doooz && npm install

# 3. ν™˜κ²½ λ³€μˆ˜ (.env.example을 λ³΅μ‚¬ν•΄μ„œ .env.local 생성)
cp .env.example .env.local   # μ•„λž˜ ν•„μˆ˜ 값을 μ±„μ›Œμ£Όμ„Έμš”

# 4. 개발 μ„œλ²„
npm run dev               # http://localhost:3000

ν™˜κ²½ λ³€μˆ˜

λ³΅μ‚¬λœ .env.local에 ν•„μˆ˜κ°’μ€ λΉ„μ›Œμ Έ μžˆμŠ΅λ‹ˆλ‹€. ν…μŠ€νŠΈλ₯Ό μˆ˜μ •ν•  수 μžˆλŠ” ν”„λ‘œκ·Έλž¨μœΌλ‘œ μ—΄κ³ , λ‹€μŒ μ„Ήμ…˜μ˜ κ°€μ΄λ“œμ— 따라 값을 μ±„μ›Œμ£Όμ„Έμš”.

ν•„μˆ˜ (둜컬 싀행에 ν•„μš”ν•œ κ°’)

1. Supabase μ—°κ²° 정보 β€” supabase.comμ—μ„œ ν”„λ‘œμ νŠΈ 생성 ν›„, 쒌츑 메뉴 Project Settings β†’ API Keys μ—μ„œ λ³΅μ‚¬ν•©λ‹ˆλ‹€.

λ³€μˆ˜ μ–΄λ””μ„œ μ°Ύλ‚˜μš”
NEXT_PUBLIC_SUPABASE_URL ν”„λ‘œμ νŠΈ ν™ˆ β†’ ν”„λ‘œμ νŠΈ 이름 μ•„λž˜ ν‘œμ‹œλœ URL (https://xxx.supabase.co)
NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY Publishable key (곡개 ν‚€)
SUPABASE_SERVICE_SECRET_KEY Secret key (⚠️ 이 ν‚€λŠ” μ ˆλŒ€ 외뢀에 κ³΅κ°œν•˜μ§€ λ§ˆμ„Έμš”)

Supabase에 둜컬 μ£Όμ†Œ 등둝 β€” Supabase Dashboard β†’ Auth β†’ URL Configurationμ—μ„œ:

  • Site URL: http://localhost:3000
  • Redirect URLs: http://localhost:3000 ν•˜μœ„ 전체 경둜 μΆ”κ°€ (μž…λ ₯κ°’: http://localhost:3000/**)

이 섀정이 μ—†μœΌλ©΄ λ‘œμ»¬μ—μ„œ 둜그인이 λ™μž‘ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

2. μ‚¬μ΄νŠΈ μ£Όμ†Œ β€” λ‘œμ»¬μ—μ„œλŠ” μ•„λž˜ 값을 κ·ΈλŒ€λ‘œ μ‚¬μš©ν•˜μ„Έμš”.

λ³€μˆ˜ κ°’
NEXT_PUBLIC_SITE_URL http://localhost:3000

3. ν‘Έμ‹œ μ•Œλ¦Ό ν‚€ β€” ν„°λ―Έλ„μ—μ„œ μ•„λž˜ λͺ…λ Ήμ–΄λ₯Ό μ‹€ν–‰ν•˜λ©΄ 2개의 ν‚€κ°€ 좜λ ₯λ©λ‹ˆλ‹€. κ·ΈλŒ€λ‘œ λ³΅μ‚¬ν•΄μ„œ λΆ™μ—¬λ„£μœΌμ„Έμš”.

npx web-push generate-vapid-keys
λ³€μˆ˜ κ°’
NEXT_PUBLIC_VAPID_PUBLIC_KEY 좜λ ₯된 Public Key
VAPID_PRIVATE_KEY 좜λ ₯된 Private Key

4. 크둠 λΉ„λ°€λ²ˆν˜Έ β€” 아무 λΉ„λ°€λ²ˆν˜Έλ‚˜ 직접 λ§Œλ“€μ–΄ λ„£μœΌμ„Έμš”. λ‚˜μ€‘μ— μƒˆ κ°’μœΌλ‘œ λ³€κ²½ κ°€λŠ₯ν•©λ‹ˆλ‹€. (예: my-secret-123)

λ³€μˆ˜ κ°’
CRON_SECRET 자유둭게 μ •ν•œ λΉ„λ°€ λ¬Έμžμ—΄

μ—¬κΈ°κΉŒμ§€ μ„€μ •ν•˜λ©΄ npm run dev둜 λ‘œμ»¬μ—μ„œ μ‹€ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 인터넷에 λ°°ν¬ν•˜λ €λ©΄ μ•„λž˜ "Vercel 배포" μ„Ήμ…˜μ„ 따라 ν•˜μ„Έμš”.

선택 (.env.example에 기본값이 μžˆμœΌλ―€λ‘œ κ·ΈλŒ€λ‘œ 써도 λ©λ‹ˆλ‹€)

λ³€μˆ˜ κΈ°λ³Έκ°’ μ„€λͺ…
NEXT_PUBLIC_APP_NAME DOOOZ μ•± ν‘œμ‹œ 이름
NEXT_PUBLIC_APP_DESCRIPTION Family tasks, points... μ•± μ„€λͺ…
NEXT_PUBLIC_THEME_COLOR #7c3aed μ•± ν…Œλ§ˆ 색상
NEXT_PUBLIC_DEFAULT_LOCALE en κΈ°λ³Έ μ–Έμ–΄
NEXT_PUBLIC_LOCALE_COOKIE doooz_locale μ–Έμ–΄ μ„€μ • μΏ ν‚€ 이름
NEXT_PUBLIC_SYNTHETIC_EMAIL_DOMAIN dooooz.invalid 아이 κ³„μ •μš© κ°€μ§œ 이메일 도메인 (μ‹€μ œ 이메일 전솑 μ—†μŒ). μ‚¬μ΄νŠΈ 도메인과 μΌμΉ˜μ‹œν‚¬ ν•„μš”λŠ” μ—†μ§€λ§Œ 일관성을 μœ„ν•΄ ꢌμž₯.
VAPID_CONTACT_EMAIL mailto:noreply@dooooz.invalid ν‘Έμ‹œ μ„œλΉ„μŠ€ μ—°λ½μ²˜ URI. μœ„μ™€ 동일 β€” 도메인 일치 ꢌμž₯μ΄λ‚˜ ν•„μˆ˜ μ•„λ‹˜.
NEXT_PUBLIC_FAMILY_STORAGE_KEY doooz_family_name κ°€μ‘± μ΄λ¦„μš© localStorage ν‚€

우리 κ°€μ‘± 온라인 μ„œλΉ„μŠ€ κ΅¬μΆ•ν•˜κΈ° πŸš€πŸ”₯

인터넷 배포 μ„€μ •ν•˜κΈ° (Vercel)

이 λ‹¨κ³„λŠ” 처음 ν•œ 번만 μ„€μ •ν•˜λ©΄ λ‹€μ‹œ ν•  ν•„μš”κ°€ μ—†μŠ΅λ‹ˆλ‹€.

  1. vercel.com에 무료 κ°€μž… ν›„, λŒ€μ‹œλ³΄λ“œμ—μ„œ Add New β†’ Project둜 μƒˆ ν”„λ‘œμ νŠΈλ₯Ό λ§Œλ“­λ‹ˆλ‹€. μ΄λ•Œ μ›ν•˜λŠ” ν”„λ‘œμ νŠΈ 이름을 μ§€μ •ν•˜λ©΄ https://λ‚΄ν”„λ‘œμ νŠΈ.vercel.app μ£Όμ†Œκ°€ λ©λ‹ˆλ‹€.

  2. Vercel CLIλ₯Ό μ„€μΉ˜ν•©λ‹ˆλ‹€:

    npm i -g vercel
  3. ν„°λ―Έλ„μ—μ„œ doooz μ†ŒμŠ€κ°€ μžˆλŠ” ν΄λ”λ‘œ μ΄λ™ν•©λ‹ˆλ‹€: cd ~/Desktop/doooz (λ‹€μš΄λ‘œλ“œ κ²½λ‘œμ— 맞게 μˆ˜μ •)

  4. vercel linkλ₯Ό μ‹€ν–‰ν•©λ‹ˆλ‹€. 둜그인 ν›„ "Link to existing project?"에 Yλ₯Ό μ„ νƒν•˜κ³ , μœ„μ—μ„œ λ§Œλ“  ν”„λ‘œμ νŠΈλ₯Ό μ„ νƒν•©λ‹ˆλ‹€.

  5. μœ„μ—μ„œ λ‘œμ»¬μ— μ„€μ •ν•œ ν™˜κ²½ λ³€μˆ˜λ₯Ό Vercel에도 λ“±λ‘ν•©λ‹ˆλ‹€. μ•„λž˜ λͺ…령을 ν•˜λ‚˜μ”© μ‹€ν–‰ν•˜μ„Έμš”. λͺ…령을 치면 값을 μž…λ ₯ν•˜λΌλŠ” ν”„λ‘¬ν”„νŠΈκ°€ λ‚˜μ˜΅λ‹ˆλ‹€. 값을 λΆ™μ—¬λ„£κ³  Enterλ₯Ό λˆ„λ₯΄λ©΄ λ©λ‹ˆλ‹€.

    vercel env add NEXT_PUBLIC_SITE_URL production              # ⚠️ Vercel 배포 μ£Όμ†Œ μž…λ ₯ (예: https://λ‚΄ν”„λ‘œμ νŠΈ.vercel.app)
    vercel env add NEXT_PUBLIC_SUPABASE_URL production
    vercel env add NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY production
    vercel env add SUPABASE_SERVICE_SECRET_KEY production
    vercel env add NEXT_PUBLIC_VAPID_PUBLIC_KEY production
    vercel env add VAPID_PRIVATE_KEY production
    vercel env add CRON_SECRET production

    NEXT_PUBLIC_SITE_URL만 Vercel 배포 μ£Όμ†Œλ‘œ λ³€κ²½ν•˜κ³ , λ‚˜λ¨Έμ§€λŠ” 둜컬(.env.local)κ³Ό λ™μΌν•œ 값을 λ„£μœΌλ©΄ λ©λ‹ˆλ‹€.

  6. Supabase에 배포 μ£Όμ†Œ 등둝 β€” Supabase Dashboard β†’ Auth β†’ URL Configuration:

    • Site URL: Vercel 배포 μ£Όμ†Œλ‘œ λ³€κ²½ (예: https://λ‚΄ν”„λ‘œμ νŠΈ.vercel.app)
    • Redirect URLs: Vercel 배포 μ£Όμ†Œ ν•˜μœ„ 전체 경둜 μΆ”κ°€ (μž…λ ₯κ°’: https://λ‚΄ν”„λ‘œμ νŠΈ.vercel.app/**) β€” 둜컬 λ‹¨κ³„μ—μ„œ λ“±λ‘ν•œ localhost:3000은 κ·ΈλŒ€λ‘œ μœ μ§€

λ°°ν¬ν•˜κΈ° πŸ₯³

ν„°λ―Έλ„μ—μ„œ μ•„λž˜ λͺ…령을 μž…λ ₯ν•˜κ³  μž μ‹œ 기닀리면 DOOOZ μ†ŒμŠ€κ°€ Vercel μ„œλ²„λ‘œ λ°°ν¬λ©λ‹ˆλ‹€.

vercel --prod

배포가 μ™„λ£Œλ˜λ©΄ λ‚˜μ™€ 우리 가쑱듀이 μ»΄ν“¨ν„°μ—μ„œλ„, λͺ¨λ°”μΌμ—μ„œλ„ https://λ‚΄ν”„λ‘œμ νŠΈ.vercel.app 으둜 직접 접속할 수 μžˆμŠ΅λ‹ˆλ‹€!

이후 μ†ŒμŠ€λ₯Ό μˆ˜μ •ν•  λ•Œλ§ˆλ‹€ λ‹€μ‹œ vercel --prod둜 λ°°ν¬ν•˜λ©΄ 인터넷에 배포된 μ„œλΉ„μŠ€κ°€ μ—…λ°μ΄νŠΈλ©λ‹ˆλ‹€.

개발 ν™˜κ²½ κ΅¬μΆ•ν•˜κΈ°

이 λ¬Έμ„œλŠ” 둜컬 컴퓨터와 인터넷 배포 버전이 같은 ν™˜κ²½μ„ 바라보고 μžˆμŠ΅λ‹ˆλ‹€. 직접 μ†ŒμŠ€λ₯Ό μˆ˜μ •, κ°œλ°œν•˜μ‹€ 뢄듀은 λ³„λ„μ˜ dev ν™˜κ²½μ„ κ΅¬μΆ•ν•˜λŠ” 것을 μΆ”μ²œν•©λ‹ˆλ‹€.

🎩 λ§ˆλ²•μ˜ ν”„λ‘¬ν”„νŠΈ β€” 아이와 ν•¨κ»˜ λ§Œλ“€μ–΄ λ³΄μ„Έμš”

λΉ„μŠ·ν•œ 앱을 직접 λ§Œλ“€μ–΄ 보고 μ‹ΆμœΌμ‹ κ°€μš”? AI μ–΄μ‹œμŠ€ν„΄νŠΈ(Claude, ChatGPT, Gemini λ“±)에 ν”„λ‘¬ν”„νŠΈλ₯Ό λΆ™μ—¬λ„£μœΌλ©΄ λΉ„μŠ·ν•œ 앱을 μ²˜μŒλΆ€ν„° λ§Œλ“€ 수 μžˆλŠ” κ°€μ΄λ“œλ₯Ό μ€€λΉ„ν–ˆμŠ΅λ‹ˆλ‹€.

사전 μ€€λΉ„

AI μ½”λ”© 도ꡬ(Claude Code λ“±)λ₯Ό μ‚¬μš©ν•˜λŠ” 경우, Supabase MCPλ₯Ό μ—°κ²°ν•˜λ©΄ AIκ°€ λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό 직접 μƒμ„±ν•˜κ³  관리할 수 μžˆμ–΄ νŽΈλ¦¬ν•©λ‹ˆλ‹€. 특히 "Supabase best practicesλ₯Ό μ°Έκ³ ν•΄μ„œ λ§Œλ“€μ–΄μ€˜"라고 μ§€μ‹œν•˜λ©΄ λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό 잘 λͺ°λΌλ„ Supabase 기반 ν™˜κ²½μ„ μ•ˆμ •μ μœΌλ‘œ κ΅¬μΆ•ν•˜λŠ” 데 도움이 λ©λ‹ˆλ‹€. Vercel CLIλŠ” μœ„ "인터넷 배포 μ„€μ •ν•˜κΈ°" λ‹¨κ³„μ—μ„œ 이미 μ„€μΉ˜λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.

ν”„λ‘¬ν”„νŠΈ

전체 ν”„λ‘¬ν”„νŠΈλ₯Ό AI μ±„νŒ…μ— λ³΅μ‚¬ν•˜λ©΄ ν•œ λ²ˆμ— λ™μž‘ν•˜λŠ” 앱이 μ™„μ„±λ©λ‹ˆλ‹€.

μ•ˆλ‚΄μ— 따라 ν”„λ‘¬ν”„νŠΈλ₯Ό ν•˜λ‚˜μ”© μž…λ ₯ν•˜λ©° λ‹¨κ³„μ μœΌλ‘œ 앱을 λ§Œλ“€μ–΄ κ°‘λ‹ˆλ‹€.

아이와 ν•¨κ»˜ ν”„λ‘¬ν”„νŠΈλ₯Ό 따라 ν•˜λ©΄μ„œ "λ‚΄κ°€ λ§Œλ“  μ•±"을 κ²½ν—˜ν•΄ λ³΄μ„Έμš”.

μ£Όμš” λͺ…λ Ήμ–΄ πŸ“œ

λͺ…λ Ήμ–΄ μš©λ„
npm run dev λ‚΄ μ»΄ν“¨ν„°μ—μ„œ 개발 μ„œλ²„ μ‹€ν–‰ (http://localhost:3000)
npm run build 배포 μ „ λΉŒλ“œ μ—λŸ¬ 확인
npm run typecheck νƒ€μž… 였λ₯˜ 검사
npm run lint μ½”λ“œ μŠ€νƒ€μΌ 검사
vercel --prod 인터넷에 배포

폴더 ꡬ쑰 πŸ“‚

src/
β”œβ”€ app/
β”‚  β”œβ”€ (auth)/              둜그인, νšŒμ›κ°€μž…, μ˜¨λ³΄λ”©
β”‚  β”œβ”€ (app)/               보호된 라우트 β€” ν™ˆ, ν•  일, 포인트, 보상, 캐릭터, κ°€μ‘±, μ„€μ •
β”‚  └─ api/                 라우트 ν•Έλ“€λŸ¬ + 크둠 (저녁 μ•Œλ¦Ό, μžμ • λ‘€μ˜€λ²„)
β”œβ”€ features/
β”‚  β”œβ”€ auth/                requireUser, getCurrentAuth
β”‚  β”œβ”€ tasks/               μ„œλ²„ μ•‘μ…˜ (μˆ˜μ •, 봐주기)
β”‚  β”œβ”€ children/            μˆœμœ„ 계산
β”‚  └─ characters/          이λͺ¨μ§€ λ§΅
β”œβ”€ lib/
β”‚  β”œβ”€ supabase/            client, server, admin ν΄λΌμ΄μ–ΈνŠΈ + νƒ€μž… Database
β”‚  β”œβ”€ datetime/            κ°€μ‘± μ‹œκ°„λŒ€ μœ ν‹Έλ¦¬ν‹° + μ£Όμž… κ°€λŠ₯ν•œ clock
β”‚  β”œβ”€ i18n/                ko.json, ja.json, en.json + λ²ˆμ—­ 헬퍼
β”‚  β”œβ”€ push/                μ›Ή ν‘Έμ‹œ μ•Œλ¦Ό 전솑
β”‚  β”œβ”€ level.ts             L1-L30 μž„κ³„κ°’ 계산
β”‚  β”œβ”€ streak.ts            연속 일수 계산
β”‚  └─ invariants.ts        I1-I10 원μž₯ 검증 헬퍼
β”œβ”€ schemas/                Zod μŠ€ν‚€λ§ˆ (κ°€μ‘±, μ‚¬μš©μž, ν•  일, 포인트, 보상, 뱃지)
└─ components/ui/          shadcn μŠ€νƒ€μΌ κΈ°λ³Έ μ»΄ν¬λ„ŒνŠΈ

supabase/
β”œβ”€ migrations/             μŠ€ν‚€λ§ˆ, RLS, 트리거, 인덱슀
└─ seed.sql                캐릭터 12개 + 뱃지 58개

tests/
β”œβ”€ unit/                   μ†ŒμŠ€ 파일과 ν•¨κ»˜ μœ„μΉ˜
β”œβ”€ integration/            RLS 맀트릭슀
└─ e2e/                    Playwright μ‹œλ‚˜λ¦¬μ˜€

무료 tier 운영 κ°€μ΄λ“œ πŸ’°

DOOOZλŠ” 이미지/파일 μ—…λ‘œλ“œ 없이 ν…μŠ€νŠΈ λ°μ΄ν„°λ§Œ μ €μž₯ν•˜κΈ° λ•Œλ¬Έμ— λ¦¬μ†ŒμŠ€ μ‚¬μš©λŸ‰μ΄ 맀우 μ μŠ΅λ‹ˆλ‹€. 1κ°€μ‘± = λΆ€λͺ¨ 1λͺ… + 아이 23λͺ…, ν•˜λ£¨ 할일 체크 1015건 κΈ°μ€€:

ꡬ간 μ›” λΉ„μš© μ΅œλŒ€ κ°€μ‘± 수 (μ˜ˆμƒ) ꡬ성
무료 $0 ~200κ°€μ‘± Supabase Free + Vercel Free
μ€‘κ·œλͺ¨ ~$27 ~5,000κ°€μ‘± Supabase Pro ($25) + DB ($2) + Vercel Free
λŒ€κ·œλͺ¨ ~$50 ~15,000κ°€μ‘± Supabase Pro ($25) + DB ($5) + Vercel Pro ($20)
  • 1κ°€μ‘± μ „μš©μ΄λ©΄ 무료 ν•œλ„μ˜ 1~2%만 μ‚¬μš©ν•©λ‹ˆλ‹€.

규λͺ¨κ°€ 컀지면?

  • ~200κ°€μ‘± 초과 β€” DB μš©λŸ‰κ³Ό Supabase λ™μ‹œμ ‘μ† μ œν•œμ— 걸릴 수 μžˆμŠ΅λ‹ˆλ‹€. Supabase Pro둜 μ—…κ·Έλ ˆμ΄λ“œν•˜κ³  μΆ”κ°€ DBλ₯Ό κ΅¬λ§€ν•˜μ„Έμš”.
  • ~5,000κ°€μ‘± 초과 β€” Vercelμ—μ„œ 맀일 μƒˆλ²½ 1μ‹œμ— μ‹€ν–‰λ˜λŠ” 할일 정리 μž‘μ—…(크둠)에 병λͺ©μ΄ 생길 수 μžˆμŠ΅λ‹ˆλ‹€. Vercel Pro둜 μ—…κ·Έλ ˆμ΄λ“œν•˜μ„Έμš”. Vercel ProλŠ” 크둠 μž‘μ—… μ œν•œμ΄ μ—†μ–΄ 더 λ§Žμ€ μ‹œκ°„λŒ€λ‚˜ κΈ€λ‘œλ²Œ λŒ€μ‘κΉŒμ§€ κ΅¬ν˜„ κ°€λŠ₯ν•©λ‹ˆλ‹€.

λͺ¨λ‹ˆν„°λ§ 포인트

  • Supabase Dashboard β†’ Settings β†’ Billing: λŒ€μ—­ν­, DB μš©λŸ‰ 확인
  • Vercel Dashboard β†’ Usage: λŒ€μ—­ν­, ν•¨μˆ˜ μ‹€ν–‰ μ‹œκ°„ 확인

μ˜€ν”ˆμ†ŒμŠ€ μ°Έμ—¬ ν™˜μ˜ν•©λ‹ˆλ‹€ 🀝

DOOOZλŠ” λˆ„κ΅¬λ‚˜ μ°Έμ—¬ν•  수 μžˆλŠ” μ˜€ν”ˆμ†ŒμŠ€ ν”„λ‘œμ νŠΈμž…λ‹ˆλ‹€. λ‹€μŒκ³Ό 같은 λΆ„λ“€μ˜ κΈ°μ—¬λ₯Ό ν™˜μ˜ν•©λ‹ˆλ‹€!

  • 🎨 λ””μžμ΄λ„ˆ β€” UI/UX κ°œμ„ μ— 도움을 μ£Όμ‹€ λ””μžμ΄λ„ˆλ₯Ό μ°Ύκ³  μžˆμŠ΅λ‹ˆλ‹€.
  • 🌍 λ‹€κ΅­μ–΄ & κΈ€λ‘œλ²Œ ν™˜κ²½ β€” μƒˆλ‘œμš΄ μ–Έμ–΄ μΆ”κ°€, λ‹€μ–‘ν•œ κ΅­κ°€ ν™˜κ²½μ— λ§žλŠ” κ°œμ„ μ„ ν™˜μ˜ν•©λ‹ˆλ‹€.
  • πŸ‘¨β€πŸ‘©β€πŸ‘§β€πŸ‘¦ ν…ŒμŠ€νŠΈ κ°€μ‘± β€” 앱을 맀일 μ‚¬μš©ν•˜λ©° 적극적으둜 ν…ŒμŠ€νŠΈν•΄μ£Όμ‹€ 가쑱을 ν™˜μ˜ν•©λ‹ˆλ‹€. 이미 κ΅¬μΆ•λœ μ„œλΉ„μŠ€λ₯Ό μ œκ³΅ν•΄λ“œλ¦΄ 수 μžˆμŠ΅λ‹ˆλ‹€.

Issueλ‚˜ Pull Request둜 자유둭게 μ°Έμ—¬ν•΄μ£Όμ„Έμš”!

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

Apache License 2.0

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors