Skip to content

Latest commit

ย 

History

History
113 lines (80 loc) ยท 3.49 KB

File metadata and controls

113 lines (80 loc) ยท 3.49 KB

CLAUDE.md

This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.

์–ธ์–ด ๊ทœ์น™

ํ•œ๊ตญ์–ด๋กœ ์ž…๋ ฅ์„ ๋ฐ›์œผ๋ฉด ์˜์–ด๋กœ ์ƒ๊ฐํ•˜๊ณ  ์ถ”๋ก ํ•œ ๋’ค, ์ตœ์ข… ๋‹ต๋ณ€์€ ํ•œ๊ตญ์–ด๋กœ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.

๊ฐœ์š”

agit.gg ์›น ์•ฑ์„ ๊ฐ์‹ธ๋Š” WebView ๋ž˜ํผ ์•ฑ์ž…๋‹ˆ๋‹ค. ๋„ค์ดํ‹ฐ๋ธŒ ๋ ˆ์ด์–ด๋Š” ํ‘ธ์‹œ ์•Œ๋ฆผ, ์ธ์ฆ ํ† ํฐ ์ €์žฅ, ๊ฐ•์ œ ์—…๋ฐ์ดํŠธ ์ฒดํฌ, ๋”ฅ ๋งํฌ๋งŒ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ ๋ช…๋ น์–ด

pnpm install          # ์˜์กด์„ฑ ์„ค์น˜
pnpm start            # Expo ๊ฐœ๋ฐœ ์„œ๋ฒ„
pnpm ios / android    # ํ”Œ๋žซํผ๋ณ„ ์‹คํ–‰
pnpm lint             # ESLint ๊ฒ€์‚ฌ
pnpm test             # Jest watch ๋ชจ๋“œ
pnpm test -- --watchAll=false  # ๋‹จ๋ฐœ์„ฑ ํ…Œ์ŠคํŠธ (PR ์ „ ๊ถŒ์žฅ)

ํ™˜๊ฒฝ ๋ณ€์ˆ˜

๋ณ€์ˆ˜ ์„ค๋ช…
EXPO_PUBLIC_APP_ENV development | production (๊ธฐ๋ณธ: production)
EXPO_PUBLIC_API_ENV APP_ENV๋ฅผ ๋ฎ์–ด์จ์„œ API/์›น URL ์„ ํƒ
  • Production: https://agit.gg, https://api.agit.gg
  • Stage: https://stage.agit.gg, https://api.stage.agit.gg

์•„ํ‚คํ…์ฒ˜

๋ผ์šฐํŒ… (Expo Router ํŒŒ์ผ ๊ธฐ๋ฐ˜)

  • app/_layout.tsx โ€” ํ‘ธ์‹œ ์•Œ๋ฆผ ์ดˆ๊ธฐํ™”, ๊ฐ•์ œ ์—…๋ฐ์ดํŠธ ์ฒดํฌ, ์•Œ๋ฆผ ํƒญ ๋”ฅ ๋งํฌ ์ฒ˜๋ฆฌ
  • app/index.tsx โ€” /webview/home์œผ๋กœ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ
  • app/webview/[path].tsx โ€” ๋ฉ”์ธ WebView; path๊ฐ€ ${webUrl}/${path}๋กœ ๋งคํ•‘
  • app/forceupdate.tsx โ€” ์„œ๋ฒ„ ๋ฒ„์ „ > ์•ฑ ๋ฒ„์ „์ผ ๋•Œ ํ‘œ์‹œ

WebView โ†” ๋„ค์ดํ‹ฐ๋ธŒ ๋ธŒ๋ฆฟ์ง€ (window.postMessage)

type ๋™์ž‘
LOGIN_COMPLETE accessToken SecureStore ์ €์žฅ + ํ‘ธ์‹œ ํ† ํฐ ๋ฐฑ์—”๋“œ ๋“ฑ๋ก
TOKEN_REFRESH accessToken ๊ฐฑ์‹ 
LOGOUT ํ‘ธ์‹œ ํ† ํฐ ๋ฐฑ์—”๋“œ ์‚ญ์ œ + accessToken ์ดˆ๊ธฐํ™”

๋“ฑ๋ก ๊ฒฐ๊ณผ๋Š” NOTIFICATION_STATUS CustomEvent๋กœ WebView์— ์ฃผ์ž…ํ•ฉ๋‹ˆ๋‹ค.

์ฃผ์š” ๋ชจ๋“ˆ

  • services/nativeAuthStore.ts โ€” expo-secure-store ๊ธฐ๋ฐ˜ ์•ก์„ธ์Šค ํ† ํฐ CRUD
  • services/pushTokenApi.ts โ€” ํ‘ธ์‹œ ํ† ํฐ ๋“ฑ๋ก/์‚ญ์ œ; in-flight ์ค‘๋ณต ๋ฐฉ์ง€, ํ† ํฐ ์บ์‹ฑ
  • services/notifications.ts โ€” ์•Œ๋ฆผ ๊ถŒํ•œ ์š”์ฒญ, ์„ค์ • ์ด๋™ ํ›„ ์žฌ์ง„์ž… ์‹œ ๊ถŒํ•œ ์žฌ์ฒดํฌ
  • services/forceupdate.ts โ€” GET /versions/latest?platform=IOS|ANDROID ๋ฒ„์ „ ๋น„๊ต
  • utils/pushTokenStore.ts โ€” ์ธ๋ฉ”๋ชจ๋ฆฌ + SecureStore ์บ์‹œ, ์ฝœ๋ฐฑ ์ง€์›
  • utils/userAgent.ts โ€” KONECT_APP/{version} ํฌํ•จ ์ปค์Šคํ…€ User-Agent ์ƒ์„ฑ

์ฝ”๋”ฉ ์Šคํƒ€์ผ

  • TypeScript strict ๋ชจ๋“œ ์œ ์ง€
  • Prettier ๊ธฐ์ค€: 2์นธ ๋“ค์—ฌ์“ฐ๊ธฐ, single quote, ์„ธ๋ฏธ์ฝœ๋ก , printWidth: 100
  • ์ปดํฌ๋„ŒํŠธ/ํƒ€์ž… PascalCase, ํ•จ์ˆ˜/๋ณ€์ˆ˜ camelCase
  • ๋„คํŠธ์›Œํฌ/ํ”Œ๋žซํผ ์˜์กด ๋กœ์ง โ†’ services/, ์ˆœ์ˆ˜ ์œ ํ‹ธ โ†’ utils/
  • ๋ฏผ๊ฐ ์ •๋ณด๋Š” ๋ฐ˜๋“œ์‹œ expo-secure-store์—๋งŒ ์ €์žฅ, ์ปค๋ฐ‹ ๊ธˆ์ง€

Git ์ž‘์—… ๊ทœ์น™

ํƒ€์ž…: feat | fix | refactor | chore | release

์ด์Šˆ ์ œ๋ชฉ

[ํƒ€์ž…] ์ž‘์—… ์š”์•ฝ
[fix] ํ‘ธ์‹œ ์•Œ๋ฆผ ํ† ํฐ ์ค‘๋ณต ๋“ฑ๋ก ๋ฌธ์ œ ์ˆ˜์ •

๋ธŒ๋žœ์น˜๋ช…

{์ด์Šˆ๋ฒˆํ˜ธ}-{ํƒ€์ž…}-{kebab-case-์š”์•ฝ}
50-fix-ํ‘ธ์‹œ-์•Œ๋ฆผ-ํ† ํฐ-์ค‘๋ณต-๋“ฑ๋ก-๋ฌธ์ œ-์ˆ˜์ •

# ์ด์Šˆ ์—†์„ ๋•Œ
no-issue-{ํƒ€์ž…}-{kebab-case-์š”์•ฝ}

์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€

ํ•œ ์ปค๋ฐ‹์— ํ•œ ๊ฐ€์ง€ ์˜๋„๋งŒ, ์š”์•ฝ์€ ๋ช…๋ นํ˜•์œผ๋กœ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.

ํƒ€์ž…: ๋ณ€๊ฒฝ ๋‚ด์šฉ ์š”์•ฝ
fix: cancel ํด๋ฆญ ์‹œ ๋‹ค์ด์–ผ๋กœ๊ทธ๋งŒ ๋‹ซ๊ธฐ

PR

์ œ๋ชฉ์€ ์ด์Šˆ์™€ ๋™์ผํ•œ ํ˜•์‹ [ํƒ€์ž…] ์š”์•ฝ, ๋ณธ๋ฌธ ํ…œํ”Œ๋ฆฟ:

## ๋ฐฐ๊ฒฝ

## ๋ณ€๊ฒฝ ์‚ฌํ•ญ

## ๊ฒ€์ฆ

- [ ] pnpm lint
- [ ] pnpm test -- --watchAll=false

## ์ด์Šˆ

Closes #{์ด์Šˆ๋ฒˆํ˜ธ}