Skip to content

Latest commit

ย 

History

History
112 lines (79 loc) ยท 5.65 KB

File metadata and controls

112 lines (79 loc) ยท 5.65 KB

Soundlog App

Soundlog๋Š” ๊ด€๊ด‘์ง€์˜ ์œ„์น˜์™€ ๋งฅ๋ฝ์„ ์Œ์•… ์ถ”์ฒœ, ์—ฌํ–‰ ๊ธฐ๋ก, Recap ์ฝ˜ํ…์ธ ๋กœ ์—ฐ๊ฒฐํ•˜๋Š” React Native/Expo ์•ฑ์ž…๋‹ˆ๋‹ค.

๋น ๋ฅธ ์‹œ์ž‘

npm install
npm run web

์›น ์‹คํ–‰ ํ›„ ๋ธŒ๋ผ์šฐ์ €์—์„œ http://localhost:8081์„ ์—ด์–ด ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ๋„ค์ดํ‹ฐ๋ธŒ ๊ธฐ๋Šฅ๊นŒ์ง€ ํ™•์ธํ•  ๋•Œ๋Š” Expo Go ๋˜๋Š” development build๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

npm run ios
npm run android
npm run dev:client

์ž์ฃผ ์“ฐ๋Š” ๋ช…๋ น์–ด

npm run typecheck
npm run check:recap-clustering
npm run check:server-contract
npm run check
npm run web:clear

check:recap-clustering์€ ์ „์ฒด ๋ฆฌ์บก๊ณผ ๋‚ด ๋ฆฌ์บก ์ง€๋„์˜ ์ขŒํ‘œ ๋ฌถ์Œ, ์คŒ๋ณ„ ๋ฐ˜๊ฒฝ, ํ™•๋Œ€ ์‹œ ๊ฐœ๋ณ„ ํ•€ ๋ถ„๋ฆฌ๋ฅผ ๊ฒ€์ฆํ•ฉ๋‹ˆ๋‹ค. check์—๋„ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

check:server-contract์€ ํ˜•์ œ ๊ฒฝ๋กœ์˜ SoundLogServer/openapi/soundlog-api.yaml๊ณผ ํ”„๋ก ํŠธ src/api์˜ HTTP ๋ฉ”์„œ๋“œยท๊ฒฝ๋กœ๋ฅผ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค. ์„œ๋ฒ„ ์ €์žฅ์†Œ ์œ„์น˜๊ฐ€ ๋‹ค๋ฅด๋ฉด SOUNDLOG_SERVER_ROOT๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

๋ ˆ๊ฑฐ์‹œ mock API ์ƒํƒœ๋ฅผ ํ™•์ธํ•˜๋˜ ์ง€์—ฐ/์‹คํŒจ ํ™˜๊ฒฝ๋ณ€์ˆ˜๋Š” src/mock-server ์ฐธ๊ณ ์šฉ์œผ๋กœ๋งŒ ๋‚จ์•„ ์žˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ์•ฑ API facade๋Š” ์„œ๋ฒ„ API๋งŒ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.

EXPO_PUBLIC_MOCK_API_DELAY_MS=1500 npm run web
EXPO_PUBLIC_MOCK_API_FAIL_ENDPOINTS=playlist.detail npm run web

์‹ค์ œ ์„œ๋ฒ„์™€ ์—ฐ๋™ํ•  ๋•Œ๋Š” Expo ํ™˜๊ฒฝ๋ณ€์ˆ˜๋กœ API base URL์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฐ’์ด ์—†์œผ๋ฉด mock์œผ๋กœ ๋Œ์•„๊ฐ€์ง€ ์•Š๊ณ  API URL ๋ˆ„๋ฝ ์˜ค๋ฅ˜๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

EXPO_PUBLIC_SOUNDLOG_API_SOURCE=server EXPO_PUBLIC_SOUNDLOG_API_BASE_URL=https://api.soundlog.p-e.kr npm run ios

Soundlog๋Š” ์›น ์„œ๋น„์Šค๋ฅผ ๋ฐฐํฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์šด์˜ ๋ฐฐํฌ ๋Œ€์ƒ์€ Expo/EAS๋กœ ๋นŒ๋“œํ•œ iOSยทAndroid ๋„ค์ดํ‹ฐ๋ธŒ ์•ฑ์ด๋ฉฐ, ์•ฑ์€ Vercel ํ”„๋ก์‹œ ์—†์ด API์™€ ML์ด ํ•จ๊ป˜ ๋ฐฐํฌ๋œ https://api.soundlog.p-e.kr์„ ์ง์ ‘ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค. ์ €์žฅ์†Œ์˜ webยทVercel ๊ด€๋ จ ์„ค์ •์€ ๋กœ์ปฌ ํ˜ธํ™˜์„ฑ ํ™•์ธ๊ณผ ๊ณผ๊ฑฐ ์‹คํ—˜์šฉ ์ž๋ฃŒ์ผ ๋ฟ ์šด์˜ ๋ฐฐํฌ ๊ฒฝ๋กœ์— ํฌํ•จํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋„ค์ดํ‹ฐ๋ธŒ ์‹ค๋ฐฐํฌ ๋นŒ๋“œ๋Š” api.soundlog.p-e.kr ์„œ๋ธŒ๋„๋ฉ”์ธ์„ ์ง์ ‘ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค. ๋กœ๊ทธ์ธ์€ Soundlog ์ž์ฒด ์ด๋ฉ”์ผ/๋น„๋ฐ€๋ฒˆํ˜ธ ๊ณ„์ •์œผ๋กœ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

ํ…Œ์ŠคํŠธ ์„ค์น˜ ๋นŒ๋“œ

development, preview EAS profile์€ api.soundlog.p-e.kr์„ ์ง์ ‘ ๋ฐ”๋ผ๋ณด๋„๋ก ์„ค์ •๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋ณธ์ธ iPhone์„ USB๋กœ ์—ฐ๊ฒฐํ•ด ์ตœ์‹  ์ฝ”๋“œ๋ฅผ ์ง์ ‘ ํ…Œ์ŠคํŠธํ•  ๋•Œ๋Š” iPhone ์‹ค๊ธฐ๊ธฐ ํ…Œ์ŠคํŠธ ๊ฐ€์ด๋“œ๋ฅผ ๋จผ์ € ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์‹ค๊ธฐ๊ธฐ์—์„œ 127.0.0.1์€ Mac์ด ์•„๋‹ˆ๋ผ iPhone ์ž์‹ ์ด๋ฏ€๋กœ, ๋กœ์ปฌ ์„œ๋ฒ„๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ๋Š” Mac์˜ LAN IP๋ฅผ ์•ฑ ๋นŒ๋“œ ํ™˜๊ฒฝ๋ณ€์ˆ˜๋กœ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • API ๋ฐ ML: https://api.soundlog.p-e.kr
  • ๊ฐœ์ธ์ •๋ณด ์ฒ˜๋ฆฌ๋ฐฉ์นจ: https://api.soundlog.p-e.kr/legal/privacy
  • ์„œ๋น„์Šค ์ด์šฉ์•ฝ๊ด€: https://api.soundlog.p-e.kr/legal/terms
  • ๊ณ ๊ฐ์ง€์›: ์‹ค์ œ ์ˆ˜์‹ ๊ณผ ๋‹ต์žฅ์ด ํ™•์ธ๋œ ๋ฉ”์ผ์„ production EAS ํ™˜๊ฒฝ์— ์„ค์ •
  • API source: server
  • auth: Soundlog ์ž์ฒด ์ด๋ฉ”์ผ/๋น„๋ฐ€๋ฒˆํ˜ธ ๋กœ๊ทธ์ธ
  • iOS/Android: HTTPS API๋งŒ ์‚ฌ์šฉ

Mock API๋กœ ๋˜๋Œ๋ฆฌ๋Š” ๋Ÿฐํƒ€์ž„ ๊ฒฝ๋กœ๋Š” ์ œ๊ฑฐํ–ˆ์Šต๋‹ˆ๋‹ค. ํ™”๋ฉด ์ƒํƒœ ํ…Œ์ŠคํŠธ๊ฐ€ ํ•„์š”ํ•˜๋ฉด ์„œ๋ฒ„ fixture ๋˜๋Š” src/mock-server ๋ ˆ๊ฑฐ์‹œ ์ž๋ฃŒ๋ฅผ ๋ณ„๋„ ๊ฐœ๋ฐœ ๋„๊ตฌ์—์„œ๋งŒ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

API origin์ด ์ตœ์‹  ์„œ๋ฒ„์ธ์ง€ ํ™•์ธํ•˜๋ ค๋ฉด ์•„๋ž˜์ฒ˜๋Ÿผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

SOUNDLOG_API_ORIGIN=https://api.soundlog.p-e.kr npm run check:api-origin

์ด ๊ฒ€์‚ฌ๋Š” ๋กœ๊ทธ์ธ ํ•„์ˆ˜ API๋„ ํ•จ๊ป˜ ํ™•์ธํ•˜๋ฏ€๋กœ SOUNDLOG_CHECK_EMAIL, SOUNDLOG_CHECK_PASSWORD๋ฅผ ์ง€์ •ํ•˜๋ฉด ํ•ด๋‹น smoke ๊ณ„์ •์œผ๋กœ ๋กœ๊ทธ์ธํ•ฉ๋‹ˆ๋‹ค. ๊ฐ’์„ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด @soundlog.test ์ž„์‹œ ๊ณ„์ •์„ ์ƒ์„ฑํ•ด API์™€ ML ์ถ”์ฒœ์„ ๊ฒ€์ฆํ•œ ๋’ค ์ฆ‰์‹œ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.

Android ์ง€์ธ ํ…Œ์ŠคํŠธ์šฉ ๋‚ด๋ถ€ ๋ฐฐํฌ ๋นŒ๋“œ๋Š” ์•„๋ž˜ ๋ช…๋ น์œผ๋กœ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

npx eas build --profile preview --platform android

iOS๋Š” TestFlight ๋˜๋Š” ad hoc ๊ธฐ๊ธฐ ๋“ฑ๋ก์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. App Store/TestFlight์— ์˜ฌ๋ฆด production profile์€ API์™€ ๊ฐœ์ธ์ •๋ณด ์ฒ˜๋ฆฌ๋ฐฉ์นจ๊ณผ ์ด์šฉ์•ฝ๊ด€์— https://api.soundlog.p-e.kr์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ƒˆ ์„œ๋ฒ„์— ๊ณต๊ฐœ ๋ฌธ์„œ ๊ฒฝ๋กœ๋ฅผ ๋ฐฐํฌํ•˜๊ณ  ์‹ค์ œ ์ˆ˜์‹  ๊ฐ€๋Šฅํ•œ ๊ณ ๊ฐ์ง€์› ๋ฉ”์ผ์„ ์„ค์ •ํ•œ ๋’ค ๋ฆด๋ฆฌ์Šค ๊ฒ€์‚ฌ๋ฅผ ํ†ต๊ณผํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋ฌธ์„œ

Codex๋กœ ๊ฐœ๋ฐœํ•  ๋•Œ

๋น„๊ฐœ๋ฐœ์ž๋Š” ๊ธฐ๋Šฅ์„ ๋ฐ”๋กœ ๊ตฌํ˜„ํ•ด๋‹ฌ๋ผ๊ณ  ํ•˜๊ธฐ๋ณด๋‹ค, ๋จผ์ € โ€œ๊ณ„ํš ์ˆ˜๋ฆฝ โ†’ ๋ฆฌ๋ทฐ โ†’ ๊ตฌํ˜„ โ†’ ๊ฒ€์ฆ โ†’ ์ปค๋ฐ‹โ€ ํ๋ฆ„์œผ๋กœ ์š”์ฒญํ•˜๋ฉด ์•ˆ์ „ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ์‹œ:

Soundlog ์•ฑ์—์„œ ๋ฆฌ์บก ์ƒ์„ธ ํŽ˜์ด์ง€๋ฅผ ๊ฐœ์„ ํ•˜๊ณ  ์‹ถ์–ด.
๋จผ์ € ๊ด€๋ จ ๋ฌธ์„œ๋ฅผ ์ฝ๊ณ  ๊ตฌํ˜„ ๊ณ„ํš์„ ์„ธ์šด ๋’ค, ์—ฃ์ง€์ผ€์ด์Šค๊ฐ€ ์žˆ์œผ๋ฉด ์งˆ๋ฌธํ•˜๊ณ ,
๊ณ„ํš ๋ฆฌ๋ทฐ ํ›„ ๊ตฌํ˜„, ํƒ€์ž…์ฒดํฌ, ์›น ํ™•์ธ๊นŒ์ง€ ์ง„ํ–‰ํ•ด์ค˜.

ํ”„๋กœ์ ํŠธ ์ „์šฉ Codex ์Šคํ‚ฌ์€ .codex/skills/soundlog-codex-workflow/SKILL.md์— ์ •๋ฆฌ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.