๋น๊ฐ๋ฐ์์ ํด๋ก๋ ์ฝ๋ ์ฝ์ง ํ๊ธฐ - ๋ชจ๋ฐ์ผ ์ฑ, ๋ธ๋ก๊ทธ, ์ฌ๋ ๋ด ๋ฑ๋ฑ (1ํธ)
์ฌํด ํ์ฌ์์ AI ์๋น์ค๋ฅผ ํตํ ์ํฌ ํ๋ก์ธ์ค ์๋ํ๋ฅผ ์ ๊ทน์ ์ผ๋ก ์ถ์งํ๊ธฐ ์์ํ๋ฉด์, ๊ทธ๋์์ chatGPT๋ ์์ํ ์ก๋ด ๋๋๊ณ ๋ง์ผํ ์ด๋ ์นดํผ๋ผ์ดํ ์ ๋๋ง ์ํํ๋ ๋์๊ฒ Claude Code๋ผ๋ ์๋ก์ด ์ธ๊ณ๊ฐ ์ด๋ฆฌ๊ฒ ๋์๋ค.
๋์ ๊ฐ๋ฐ ์ง์์ ์ฌ์ค์ ์๋ค๊ณ ๋ณด๋ฉด ๋จ ใ ใ ๊ทธ๋ฅ ๊ฐ๋ ๊ฐ๋จํ ์ฝ๋๋ค์ ๊น๋ณด๊ณ ์ ์ถํด์ ์ดํดํ ์ ์๋ ์ ๋..? ํน์ ์ด๋ป๊ฒ ๋ณด๋์ง ํ๋ฒ ๊ฐ๋ฐ์ ๋ถ๋ค๋ก๋ถํฐ ๋ฐฐ์ด ํ์ผ๋ค์ ๋ด๊ฐ ์ง์ ๊ฐ๋ฐ์ ๋ชปํด๋ ๋๊ฐ ๊ตฌ์กฐ ํ์ ๊ณผ ์ํ๋ ์ ๋ณด ์บ์นํ ์ ์๋ ์ ๋?
์ง์ ๊ฐ๋ฐํ๋ผ -> ์ด๊ฑด ์๋ฌด๊ฒ๋ ๋ชปํ๋ค๊ณ ๋ณด๋ฉด ๋๋ค. ์ค์ ๋ก ์ด๋ฒ์ ํด๋ก๋ ์ฝ๋๋ฅผ ์ผ์ฃผ์ผ๊ฐ ์ฝ์งํ๋ฉด์ ์๊ฒ ๋ ์ปค๋งจ๋๋ cd ~ ์ด๋ฐ ๊ฑฐ ์ ๋๊ฐ ๋ค์ ^_^*
์ฌํํผ ๊ฒฐ๋ก ์ ์ผ๋ก ์ผ์ฃผ์ผ๊ฐ ํด๋ก๋์ ์ง๋ํ๋ฉด์ ๋๋ ๊ฒ์ ์ด๋ ๋ค. (์ฐธ๊ณ ๋ก ๋ด๊ฐ ์ด ํ๋์ Max๋ค.)
- AI ์๋๊ฐ ์ค๋ฉด ๊ฐ๋ฐ์๋ค์ด ์๋ฆฌ๋ฅผ ์๋ ๊ฑฐ ์๋๋ ์ด๋ฐ ๊ณ ๋ฏผ๋ค์ ๋ค์ ๊ฒ ๊ฐ์๋ฐ ๊ฐ์ธ์ ์ผ๋ก ๊ฐ๋ฐ์๋ ์ ๋ ์ฌ๋ผ์ง์ง ์์ ๊ฒ ๊ฐ๋ค..
- ์์งํ ์์ IT ๊ด๋ จ ์ง์์ด ์๋ ์ฌ๋์ด ๋ญ๊ฐ๋ฅผ ๋๋ฑ ๋ง๋ค๊ธฐ์๋ ์์ง์ ํ๋ค๋ค. ๋๋ IT ์ํํธ์จ์ด PM 4๋ ์ฐจ๋๊น ๊ทธ๋๋ง ๊ธฐ๋ณธ์ ์ธ ์ง์์ด ์์ด์ ์ง์ํ ๋ํ๋ก ๋ญ๊ฐ ๋ง๋ค ์ ์๋ ๋ฏ ํจ... ์ ๋ง ์๊ฐ ๋ง์ด ๋ค์ด๊ณ ๊ณต๋ถ๋ ํ๋ฉด์ ํ๋ฉด ๊ฐ๋ฅํ ์ง๋.
- ํด๋ก๋ ์ฝ๋๋ QA๋ ์ ๋ง ๋ชปํ๋ค. ์ง๊ฐ ๊ตฌํํด๋ ์ฝ๋(๋ก์ง)์ ์๋ฌ๊ฐ ์๋์ง ๋ฒ๊ทธ๋ ์๋์ง ๋ฑ์ ์ ํ์ธํ๋๋ฐ, ์ค์ ๋ก ํ ์คํธ ํ๊ฒฝ์์ ๋๋ ค๋ณด๋ฉด ์ง์ง ์ธ๊ฐ์ด๋ผ๋ฉด ํ ์ ์๋ ํฐ UI/UX ๊ฒฐํจ์ด ๋ง์ด ๋ฐ๊ฒฌ๋๋ค. ๊ทธ๋์ ์ด ์๋ผ ํ 30%๋ง ๋ง๋ค์ด๋๊ณ ์ง๊ธ ๋ํํ ์งฌ์ฒ๋ฆฌํ๋ค.. ์ถ์ ๋๊ฐ ์์ ^_^
- ์ด์ฐ๋์๋ ๋ง๋ค๊ณ ๋์ ๊ฒ๋ณด๊ธฐ์ ๋ฒ๊ทธ/์๋ฌ ์์ด ๋์๊ฐ๋ ๋ญ๊ฐ๋ฅผ ๋ง๋ค ์ ์๊ธด ํ๋ฐ ์ฝ๋๋ฅผ ์๊ฐ ์ ์ง ๊ฑด์ง(?) ์ด๋ฐ๊ฑด ๋ด๊ฐ ํ๊ฐ๋ฅผ ํ ์๊ฐ ์๋ค. ๊ฐ๋ฐ ๋ฐฐ์์ผ ํ๋(?)
์ฌํํผ ๋ญ ๊ฐ๋ฐ ํ์ค ํ์ง ์๊ณ ์ฌ๋ฌ ๊ฐ์ง๋ฅผ ๋ง๋๋ ๋ฐ์ ์ฑ๊ณตํ์ผ๋ ๋๋ ์ด ์ฝ์ง ํ์๋ฅผ ๋ฐ์ด๋ธ ์ฝ๋ฉ์ด ์๋๋ผ ๋ฐ์ด๋ธ PMing ์ด๋ผ๊ณ ๋ถ๋ฅด๊ธฐ๋ก ํ๋ค. ๋ด๊ฐ ํด๋ก๋๋ ๊ฑฐ์น ์ผ๋ จ์ ํ๋ก์ธ์ค๋ค์ ์์งํ ๋ด๊ฐ PM์ผ๋ก ์ผํ๋ ํ๋ก์ธ์ค๋ ๊ฑฐ์ ๋ค๋ฅด์ง ์์์ผ๋ฏ๋ก..
- ๋จผ์ ๋๊ฐ ์ด๋ค ๊ฒ์ ๋ง๋ค๊ณ ์ถ์์ง ํ ํฝ์ ์ ํ๋ค.
- ๊ธฐ๋ฅ๋ณ ์์ธ๋ฅผ ๊ธฐ์ ํ๋ค. (์ด ๋, ๋ก์ง์ด ์ฝ๊ฒ ๊ผฌ์ผ ์ ์๋ ๊ฒ๋ค์ ์ข๋ ์ ๊ฒฝ์จ์ ๋ด๊ฐ ์ค์ฝํ๋ ์ ํํ ๊ฒ, ์ด๋ฐ ์ผ์ด์ค์๋ ์ด๋ ๊ฒ ํ ๊ฒ ๋ฑ์ ๊ฒฐ์ ํ๊ณ ์ ๋ฌํ๋ค.)
- ๋ญ๊ฐ๋ฅผ ์์ฒญํ์ ๋ ํด๋ก๋๊ฐ ๋ช ๋ฒ์ด๋ ์ด๊ฑด ๋ถ๊ฐ๋ฅํ๋ค๊ณ ๋๋ตํ ๋๊ฐ ์๋ค. ๊ทธ๋ด ๋๋ ์ ๋ง ์๋๋์ง ๊ตฌ๊ธ๊ณผ ๊นํ์์ ์ง์ํ๊ฒ ๊ฒ์ํ๋ค๋ณด๋ฉด ๋๊ตฐ๊ฐ๊ฐ ์ฑ๊ณตํ ์ผ์ด์ค๋ฅผ ๋ฐ๊ฒฌํ๋ค. ๊ทธ๋ฌ๋ฉด ๊ทธ ๋ฆฌ์์น ๊ฒฐ๊ณผ๋ฅผ ๋ ํด๋ก๋์๊ฒ ์ ๋ฌํด์ ๊ฐ๋ฅํ๋ค๊ณ ๋๋ตํ ๋๊น์ง ์คํฌ๋ค(?).
- ์ ๊ณผ์ ์ ๊ฑฐ์ณ ํด๋ก๋๊ฐ ๋ง๋ ๊ฒ์ ํ ์คํธ ํ๊ฒฝ์ด๋ ์๋ฎฌ๋ ์ดํฐ์ ๋๋ ค์ QA๋ฅผ ํ๋ค. UI/UX ๋ฉด์์ ๋ณดํต ์ ๋ง ์์์น ๋ชปํ๊ฒ ํ์ง ๋๊ฐ ๋ง์ผ๋ฏ๋ก ์ ๋ง ๊ฐ ์ง์ํ๊ฒ QA๋ฅผ ํด์ผ ํ๋ก๋์ ์ผ๋ก ๋ด๋ณด๋ผ ์ ๋์ ํ๋ฆฌํฐ๋ฅผ ๋ง๋ค ์ ์๋ค.
vibe PMing ์ ์ํด ํ์ํ ์ค๋น๋ฌผ์ 1) ์ ๋ง์ ๋ง ๊ธฐ์ด๋ ๋ฒจ์ IT ์ํํธ์จ์ด ํ๋ก๋์ ์ง์๊ณผ 2) ๋ฏธ์น ์ง์ํจ๊ณผ 3) ์ธ๋ด์ฌ์ด๋ค. ์ฌ๊ธฐ๊น์ง๋ฅผ ๊ฐ์ท๋ค๋ฉด ๋น์ ์ ์ด์ ๋ฌด์์ด๋ ์ ์ด๋ UI/UX ์์์ ๊ธฐ๋ฅ์ ๋ฒ๊ทธ๊ฐ ์๋ MVP ์์ค์ผ๋ก๋ ๋ง๋ค ์ ์๋ค.
์ง๋ ์ผ์ฃผ์ผ๊ฐ ๋ด๊ฐ ๊ฐ๋ฐํด๋ณธ ๊ฒ์ ๋ค์๊ณผ ๊ฐ๋ค.
- 50๋ ์ด์์ ์๋์ด๋ค์ด ์ฌ์ฉํ ์ ์๋ ์๋จ ์ถ์ฒ ๋ชจ๋ฐ์ผ ์ฑ
- ๋ฆฌ๋์ด(์ฐ๋ฆฌ ํ์ฌ์์ ์ฐ๋ ํ์คํฌ ๋งค๋์ง๋จผํธ ํด)์ ํฐ์ผ ๋ด์ฉ์ ๋๊ธ์
/translate์ ๋จ๊ธฐ๋ฉด ์->ํ, ํ-> ์ ๋ฒ์ญํด์ฃผ๋ ๋ด - 54์ผ์ 5๋จ ๋ฌต์ฃผ๊ธฐ๋๋ฅผ ๋์์ฃผ๋ ๋ชจ๋ฐ์ผ ์ฑ
- ๊ฐ์ธ ๋ธ๋ก๊ทธ (์ง๊ธ ์ด ์ฌ์ดํธ! >.<)
- ์นํ๋ก์ฐ์์ CMS ์์ดํ ๋ค์ ์ฝ๊ฒ ์ ๋ฐ์ดํธํ ์ ์๊ฒ ํด์ฃผ๋ ์ฌ๋๋ด
๊ทธ๋ผ ๊ฐ ํ๋ก๋ํธ๋ฅผ ๊ฐ๋ฐํ๋ ๋ฐ์ ์ด๋ค ์ฝ์ง์ ๊ฑฐ์ณค๋์ง ๊ธฐ์ ํด๋ณด๊ฒ ๋ค.
50๋ ์ด์ ์๋์ด๋ฅผ ์ํ ์๋จ ์ถ์ฒ ๋ชจ๋ฐ์ผ ์ฑ '๋ฐฅ์ฌ'
์์งํ ์ ์ผ ์ฒ์ ๊ฐ๋ฐ ์๋ํด๋ณธ ์ฑ์ด ์ด๊ฑฐ์๋๋ฐ ์ด๊ฒ ์ข ๋นก์ ๋ ์ .. ๋์ ํจ๊ธฐ๋ก์์ ํ ๋ฐฉ ๋ง์
ํต์ฌ ์ค๊ณ ๊ฒฐ์
๋ฐฅ์ฌ์ ํฐ ํ์์ 50๋ ์ด์ ์๋์ด ์ ์ ๊ฐ ์ฐ๋ น๋, ์ ์ฒด ์ ๋ณด (ํค, ๋ชธ๋ฌด๊ฒ), ๊ทธ๋ฆฌ๊ณ ์งํ์ ๋ณด๋ฅผ ์ ๋ ฅํ๋ฉด ๊ทธ์ ๋ฐ๋ผ ๋งค์ผ๋งค์ผ์ ์๋จ์ ์์นจ, ์ ์ฌ, ์ ๋ ์ผ๋ก ์ถ์ฒํด์ฃผ๋ ์ฑ์ด์๋ค.
- ์ฐ๋ น๋/์ฑ๋ณ๋ณ ์นผ๋ก๋ฆฌ ๊ธฐ์ค: 2020 ํ๊ตญ์ธ ์์์ ์ญ์ทจ๊ธฐ์ค ์ ์ฉ
50๋ ๋จ์ฑ 2,200kcal / ์ฌ์ฑ 1,800kcal
60๋ ๋จ์ฑ 2,000kcal / ์ฌ์ฑ 1,600kcal
70๋+ ๋จ์ฑ 1,900kcal / ์ฌ์ฑ 1,600kcal
-
์งํ๋ณ ์์ ์ ํ: ๊ณ ํ์(์ ๋ํธ๋ฅจ), ๋น๋จ(์ ๋น), ์ ์ฅ์งํ(์ ๋จ๋ฐฑ) ๋ฑ ์์ถฉํ๋ ์กฐ๊ฑด๋ ๊ณ ๋ คํด์ ์ถ์ฒํ๊ฒ ํ ๊ฒ
-
50+ UX ํนํ: ํฐ ๊ธ์จ, ๋์ ๋ช ์๋น, ํฐ์น ์์ญ ์ฌ์ด์ฆ ๊ณ ๋ ค
-
์ธ๋ถ์ ์ผ๋ก ๊ณ ๋ คํ ๊ฒ: ์ค๋์ ์๋จ ์ธ์๋ ์ด์ 7์ผ, ์ดํ 7์ผ์ ์ด 15์ผ์ ์๋จ์ ํ์ดํ๋ก ์ด๋ํ์ฌ ํ์ธํ ์ ์๊ฒ ํ๊ธฐ, ์ํ์ง ์๋ ์๋จ์ธ ๊ฒฝ์ฐ ์์นจ, ์ ์ฌ, ์ ๋ ๋ณ๋ก ๋ฒํผ ํ๋๋ง ๋๋ฌ์ ๋ค์ ์๋จ์ ์ถ์ฒ๋ฐ์ ์ ์๊ฒ ํ๊ธฐ, db์ ์๋ ์๋จ๋ค์ด ์๋ก ๊ฐ์ ์ด๋ฆ์ ๊ฐ๊ณ ์๋ ๊ฒฝ์ฐ ์ฐ์ ์นผ๋ก๋ฆฌ๊ฐ ๊ฐ์ฅ ๋ฎ์ ๊ฒ์ ์์ฃผ๋ก ์ถ์ฒํ๊ฒ ํ๊ธฐ, ๊ฐ ์์๋ณ ์์์ ๋ณด์ ๋ ์ํผ๋ฅผ ์ ๊ณตํ๊ฒ ํ๊ธฐ
-
iOS, Android๋ฅผ ๋์์ ์ง์ํ๊ธฐ ์ฝ๊ฒ ํ๊ธฐ ์ํด์ Flutter๋ฅผ ์ฌ์ฉํ๋ผ๊ณ ํ๋ค. ๊ทธ๋ฆฌ๊ณ ๊ธฐ๋ณธ์ ์ธ ๋์์ธ๋ Flutter library ๊ฐ๋ค ์ฐ๋ผ๊ณ ํ๊ณ , ํฐํธ๋ ๊ฐ๋ ์ฑ ์ข๊ฒ ํ๋ฆฌํ ๋ค๋ ์ฐ๋ผ๊ณ ํจ.
-
๊ทธ๋ฆฌ๊ณ ์ ์ ๊ฐ ํน์ ๋ ์ํผ๊ฐ ๋ง์์ ๋ค์์ ๋ ์ ์ฅํด๋๊ณ ์ถ์ ๊ฒ ๊ฐ์์ ์ฆ๊ฒจ์ฐพ๊ธฐ ๊ธฐ๋ฅ์ ์ถ๊ฐํจ
๋ฐ์ดํฐ ์ค๊ณ์ ๊ณ ๋ฏผ
์ผ๋จ ๊ฐ์ฅ ๊ณ ๋ฏผ์ด ์ฒ์์ ๋์๋ ๋ถ๋ถ์ ์๋จ ๋ฐ์ดํฐ์ ์์ ์ ๋ณด๋ฅผ ์ด๋์ ๊ฐ์ ธ์ฌ ๊ฒ์ด๋์๋ค. ๊ตฌ๊ธ๋ง์ ํด๋ณธ ๊ฒฐ๊ณผ ์ํ์์ ๋๋ผ์ DB๋ฅผ ๋ฌด๋ฃ๋ก ์ฌ์ฉํ ์ ์๋ ๊ฒ์ ์๊ฒ ๋์๋๋ฐ, api key๋ฅผ ๋ฐ๊ธ๋ฐ๊ธฐ ์ํด์ ์ฌ์ดํธ์ ๊ฐ์ ์ ํด์ผ๋ง ํ๋ค. ๊ทผ๋ฐ ์ฌ์ดํธ๊ฐ ํ์ ธ์(?) ๊ฐ์ ์ด ์๋๋ ์ํฉ์ด ๋ฐ์ํจ. ๊ทธ๋์ ํด๋น ์ฌ์ดํธ ๋ด์ ์ด๋๊ฐ์ ๊ฒ์๋์ด ์์๋ ์์ ํ์ผ์ ์ ์ฅํ๊ณ ์ด๋ฅผ ํ์ต์์ผฐ๋ค. ์ํ์์ ๋๋ผ DB์๋ ์ด 19,495๊ฑด์ ์์ ์์ ์ ๋ณด๊ฐ ๋ฑ๋ก๋์ด์๋ค.
- ์ฅ์ : ์ ๋ถ ๊ณต์ธ ์์์ฑ๋ถ ๋ฐ์ดํฐ, ํ๊ตญ ์์ ํนํ
- ๋จ์ : ๋ ์ํผ(์กฐ๋ฆฌ๋ฒ) ์์ -> ์ฌ๊ธฐ์ ๋ ์ํผ ๋ฐ์ดํฐ๋ฅผ ๊ทธ๋ผ ์ด๋์ ๊ฐ์ ธ์์ผ ํ๋์ง์ ๋ํด ๊ณ ๋ฏผ์ด ์๊น
๊ทธ ๊ณผ์ ์์ ๋๊ตฐ๊ฐ๊ฐ ๋น์ทํ ์ฌ์ด๋ ํ๋ก์ ํธ๋ฅผ ํ ๊ฒ์ ๋ฐ๊ฒฌ, ๋ง๊ฐ์ ๋ ์ํผ๋ฅผ ํฌ๋กค๋งํ๋ฉด ๋๊ฒ ๊ตฌ๋! ๋ผ๋ ๊นจ๋ฌ์์ ์ป๊ฒ ๋จ. (๋๊ตฐ์ง ๋ชจ๋ฅด์ง๋ง ์๋์ ๊ฐ์ฌ..) ์ํ๋กญ๊ฒ๋ ์ฝ๋๊น์ง ๋จ๊ฒจ์ฃผ์ จ๋๋ฐ ๋ด๊ฐ ๊ตฌํํ๊ณ ์ถ์ ๊ฑฐ๋ ๋ค๋ฅผ ์๋ ์์ ๊ฑฐ ๊ฐ์์ ๊ทธ๋ฅ ์ฝ๋๋ฅผ ๊ฐ๋ค ์ฐ์ง ์๊ณ Claude Code๋ฅผ ๊ฐํจ์ ๋ด๊ฐ ์ํ๋ ๋ก์ง์ผ๋ก ์ฝ๋ฉํ๋ผ๊ณ ์ํด
- ์ฅ์ : ์์ธํ ์กฐ๋ฆฌ๋ฒ, ์ฌ๋ฃ ๋ชฉ๋ก
- ๋จ์ : ์์์ ๋ณด ๋ถ์์ , ๊ฐ์ ์์์ ๋ ์ํผ๊ฐ ๊ต์ฅํ ๋ง์ด ๋ฑ๋ก๋์ด ์์ด์ ๊ตฌํํด์ผ ํ ๊ฒ์ ๋ก์ง์ด ๋ณต์กํด์ก์
๋ฐ์ดํฐ ๋ชจ๋ธ ํตํฉ ๋ฌธ์ (๊ฝค ๊น๋ค๋ก์ ๋ ์ด์)
๋ ๋ฐ์ดํฐ ์์ค๋ฅผ ํตํฉํ๋ฉด์ ID ์ฒด๊ณ ๋ฌธ์ ๊ฐ ๋ฐ์. ๋ฐ์ดํฐ์ ์ถ์ฒ ๊ตฌ๋ถ์ ๋ช ํํ ํด์ผ ๋์ค์ ๊ฒ์ ๋ก์ง์ด๋ ์ด๋ฐ ๊ฑธ ๊ตฌํํ ๋ ํธํ ๊ฑฐ ๊ฐ์์ id์ ์ ๋์ฌ๋ฅผ ๋ถ์ฌ์ผ ํ์.
//FoodData (์ํ์์ ๋๋ผ ์๋ณธ)
id: "D101-004160000-0001"
// UnifiedFood (ํตํฉ ๋ชจ๋ธ)
id: "fsk_D101-004160000-0001" // fsk_ ์ ๋์ฌ ์ถ๊ฐ
๊ทผ๋ฐ ์ด ๊ณผ์ ์์ ๋ ์ํผ ํ๋ฉด์์ id ๋งค์นญ์ด ๊ณ์ ์คํจํด์ ์ด๊ฑธ ๋๋ฒ๊น ํ๋ ๋ฐ์๋ ์ข ์๊ฐ์ด ๊ฑธ๋ ธ์
๊ธฐ๋ฅ ๊ตฌํ ๊ณผ์
(์ด๊ฒ๋ ํ์ธ์ ๊ฑธ๋ ธ๋..)
-
๊ฑด๊ฐ ๊ธฐ๋ฐ ์์ ์ ์ ์์คํ :๊ฐ์ฅ ๋ง์ด ๊ณ ๋ฏผํ๋, ๊ทธ๋ฆฌ๊ณ ํด๋ก๋์์ ์ง๋๋ฅผ ๊ฐ์ฅ ์ค๋ํด์ผ ํ๋ ๊ฒ ์ค์ ํ๋์๋๋ฐ ์ ์ ์ ์ ์ฒด์ ๋ณด, ์งํ์ ๋ณด, ์ฐ๋ น๋๋ฅผ ๋ฐํ์ผ๋ก ์ถ์ฒํ ๋ ์ด๋ป๊ฒ ์ค์ฝ์ด๋ง์ ํ ์ง์ ๋ํ ์ค๊ณ์๋ค.
-
์ ์ ์ฐ์ ๋ก์ง (0~100์ ):
๊ธฐ๋ณธ ์ ์: 50์
์์์ ์ ์: ๋จ๋ฐฑ์ง, ์์ด์ฌ์ , ๋ฏธ๋์์์
์งํ๋ณ ๋ง์ถค ์ ์: ๊ณ ํ์(๋ํธ๋ฅจโ), ๋น๋จ(๋น๋ฅโ), ๊ณจ๋ค๊ณต์ฆ(์นผ์โ) ๋ฑ ๊ณ ๋ ค -> ์ด๊ฒ ๊น๋ค๋ก์ ๋๋ฐ ์๋ฅผ ๋ค์ด์ ์ ์ ๊ฐ ์ ์ฒด์ค์ธ๋ฐ ๊ณ ์งํ์ฆ์ ์งํ ์ ๋ณด์์ ์ ํํ๋ค.. ๊ทธ๋ฌ๋ฉด ์ ์ฒด์ค ์๋จ์๋ ์ง๋ฐฉ์ ์ข๋ ๋ง์ด ๊ตฌ์ฑํด์ผ ํ๋๋ฐ ๊ณ ์งํ์ฆ์ ๊ฒฝ์ฐ ์ง๋ฐฉ์ ์ ํํด์ผ ํด์ ์ด๋ฐ ์์ผ๋ก ์์ถฉํ๋ ์ผ์ด์ค๋ค์ ๋ํ ๊ณ ๋ ค๊ฐ ๋ ํ์ํ์
์ ์ฒด ์ ๋ณด ๊ธฐ๋ฐ: BMI, ํ๋๋
์ฐ๋ น/์ฑ๋ณ ํนํ: ๊ทผ๊ฐ์์ฆ ์๋ฐฉ(๋จ๋ฐฑ์งโ), ํ๊ฒฝ ํ ์ฌ์ฑ(์นผ์โ)
์ด๋ ค์ ๋ ์ ์ ์์ ๊ธฐ์ ํ๋๋ก ๋ณตํฉ ์งํ์ ๋๋ ์์ถฉํ๋ ๊ฑด๊ฐ ์ ๋ณด์ ๋ํ ์ฒ๋ฆฌ๊ฐ ์ด๋ ค์ ๋ค. ์์) ์ ์ฅ์งํ + ๊ณจ๋ค๊ณต์ฆ: ๋จ๋ฐฑ์งโ vs ๋จ๋ฐฑ์งโ (์์ถฉ!) โ ์งํ๋ณ ๊ฐ์ค์น๋ฅผ ์ค์ ํ๊ณ , ํน์ ์งํ์ ๋ํ ๊ณ ๋ ค๊ฐ ์ฐ์ ์์ ๋๋๋ก ์กฐ์
- ์๋จ ์ถ์ฒ ์๊ณ ๋ฆฌ์ฆ: ์ค๋ ํฌํจ ์ 7์ผ, ํ 7์ผ ์ด 15์ผ์น ์๋จ์ ํ ๋ฒ์ ์์ฑํด์ ์ ์ ๊ฐ navigateํ ์ ์๊ฒ ํ๋ ๊ธฐ๋ฅ์ ๋ฃ๊ณ ์ถ์์.
// ์นผ๋ก๋ฆฌ ๋ชฉํ์ 80% ์ด์ ๋ฌ์ฑ ๋ณด์ฅ
while (totalCalories < targetCalories * 0.8) {
// ๋์ ์ ์ ์์๋ถํฐ ์ถ๊ฐ
}
๊ณ ๋ฏผํ๋ ๋ ๋ค๋ฅธ ๋ถ๋ถ ์ค์ ํ๋๋, ๊ฐ์ ์์์ด ์์ฃผ ๋์ค๋ฉด ์ ์ ์ ์ฅ์์ ๋ ์ง๋ฃจํ๊ฑฐ๋ ํจ์ฉ์ฑ์ ๋ชป๋๋ ์ ์๊ธฐ ๋๋ฌธ์ ์ต๊ทผ 3์ผ๊ฐ ์ถ์ฒ๋ ์์์ ์๋จ์์ ์ ์ธํ๋ ์ค๋ณต ์ ์ธ ๋ก์ง ์ถ๊ฐ๊ฐ ํ์ํ๋ค. ๋, ๋ผ๋๋ณ๋ก ์์นจ 30%, ์ ์ฌ 40%, ์ ๋ 30%๋ก ์นผ๋ก๋ฆฌ ๋ฐฐ๋ถ์ ํ ์ ์๋๋ก ์ง์ ํจ.
๋ ์ํผ ์์ธ ํ๋ฉด์ ์งํ
์ด๊ธฐ ๊ตฌํ:
// ํ๋์ฝ๋ฉ๋ ๋ ์ํผ ๋ฐ์ดํฐ
final recipes = {
'hyunmibap': Recipe(name: 'ํ๋ฏธ๋ฐฅ', ...),
// ...
};
์ด๊ฒ ํด๋ก๋ ์๊ธฐ๊ฐ ๋งจ ์ฒ์์ ๊ตฌํํด๋์ ๊ฑด๋ฐ ๋ชจ๋ ๋ ์ํผ๊ฐ ํญํ์ ๋ 'ํ๋ฏธ๋ฐฅ'์ผ๋ก ๋จ๋ ์์ฃผ ์ด๋ณด์ ์ธ ๋ก์ง ์ค์๋ฅผ ํ๋ค. ๋ฉ์ฒญํ ์๊ธฐ.. ํผํผ
๋ฌธ์ : ๋ชจ๋ ๋ ์ํผ ํด๋ฆญ ์ "ํ๋ฏธ๋ฐฅ"๋ง ํ์๋จ. ์๊น ๋ฐ์ดํฐ ์ค๊ณ ํํธ์์ ์ค๋ช ํ๋๋ก db์ ์๋ id๋ฅผ ๋งค์นญํ๋ ๋ฐ์ ์คํจํ ๊ฒ ๊ฐ์๋ฐ (์๋ง๋?) ์ฌํํผ ์ด๊ฑฐ ๋๋ฒ๊น ํ๋ ๋ฐ์๋ ํ์ฐธ ๊ฑธ๋ ธ์ ํํ..
๋ฒ๊ทธ ์์ ๊ณผ์
- "๋ ์ํผ ์ ๋ณด๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค" ๋ฒ๊ทธ
ํ โ "๋ ์ํผ ๋ณด๊ธฐ" โ ์๋ฌ
์๋จ ํญ โ ๋ ์ํผ ๋ฒํผ โ ์๋ฌ
๋ ์ํผ ํญ โ ์๋ฌด๊ฑฐ๋ ํด๋ฆญ โ ํ๋ฏธ๋ฐฅ ํ์ด์ง
๋๊ฐ ์ด๋ฐ ๋ฒ๊ทธ๊ฐ ์์๋๋ฐ...
ํด๋ก๋ ์ฝ๋๋ฅผ ๊ณ์ ํผ๋๋ ๋์ถฉ ์๋์ ๊ฐ์ ๊ณผ์ ์ ํตํด ํด๊ฒฐํ๋๋ผ.
meal_recipes_screen.dart: fsk_ ์ ๊ฑฐ ๋ก์ง ์ถ๊ฐ
recipe_detail_screen.dart: ์ ๋ฉด ์ฌ์์ฑ (ํ๋์ฝ๋ฉ โ ์ค์ ๋ฐ์ดํฐ ์ฌ์ฉ) // ๊ทผ๋ฐ ๊ฐ์ธ์ ์ผ๋ก ํ๋์ฝ๋ฉ์ด ํจ์จ์ ์ธ ๋ฐฉ๋ฒ์ด์๋์ง๋ ๋ชจ๋ฅด๊ฒ ์ผ๋ ๊ทธ๋ฅ ๋ญ ๋ด๊ฐ ๊ฐ๋ฐ์๊ฐ ์๋๋ ๋์ด๊ฐ์
app_router.dart: path param โ query param์ผ๋ก ๋ณ๊ฒฝ (๋ณต์กํ ID ์ธ์ฝ๋ฉ ๋ฌธ์ ํด๊ฒฐ)
- ๊ฒ์ ์ค๋ณต ๊ฒฐ๊ณผ ๋ฒ๊ทธ
๊ทธ๋ฆฌ๊ณ db๊ฐ ๋ฐฉ๋ํ๋ค๋ณด๋ ๊ฒ์ ๊ฒฐ๊ณผ๊ฐ ์ง๋์น๊ฒ diverseํ๋๋ฐ ์ด๋ฌ๋ฉด ์ฌ์ฉ์ ๊ฒฝํ์ด ๊ตฌ๋ฆด ๊ฒ ๊ฐ์์ ์ด๊ฒ๋ ๊ฐ์ ํ๊ณ ์ถ์์. ์๋ฅผ ๋ค๋ฉด"์์ฑ" ๊ฒ์ ์ "์์ฑ๊ตญ"์ด 5๊ฐ์ฉ ๋์ค๋๋ฐ ์ด๋ฌ๋ฉด ์คํ๋ ค ์ ์ ๊ฐ ๋ถํธํ๋ค๊ณ ์๊ฐ. (์ ์ ๋ ์ ํ์ง๊ฐ ๋ง์ผ๋ฉด ์ซ์ดํ๋ค๊ณ ์๊ฐํจ)
ํด๊ฒฐ:
List<UnifiedFood> _deduplicateByName(List<UnifiedFood> foods) {
final Map<String, UnifiedFood> bestByName = {};
for (final food in foods) {
final existing = bestByName[food.name];
// ๊ฐ์ ์ด๋ฆ์ด๋ฉด ์นผ๋ก๋ฆฌ ๋ฎ์ ๊ฒ ์ ํ (๊ฑด๊ฐ ๋ชฉ์ )
if (existing == null || food.calories < existing.calories) {
bestByName[food.name] = food;
}
}
return bestByName.values.toList();
}
- ํ ํ๋ฉด ์ค๋ ์๋จ ํ์ ๋ฒ๊ทธ ํ์์ "์ค๋์ ์๋จ"์ด ํ์ ์ ๋จ
์์ธ:
// ์๋ชป๋ ์ฝ๋
mealPlanState.mealPlans[0] // List๋ก ์ ๊ทผ ์๋
// ์ฌ๋ฐ๋ฅธ ์ฝ๋
mealPlanState.plans[todayKey] // Map<String, DailyMealPlan>์ผ๋ก ์ ๊ทผ
๋ฐ์ดํฐ ๊ตฌ์กฐ ๋ณ๊ฒฝ(List โ Map) ํ ์ผ๋ถ ํ๋ฉด์์ ์ ๋ฐ์ดํธ๊ฐ ๋๋ฝ๋ ๊ฑฐ์๋๋ฐ. ๋ด๊ฐ ๋๋ผ๊ธฐ์ ๋ญ ์ ๋ฐ์ดํธํ๊ณ ๋๋ฉด Claude Code๊ฐ ์์์ ๋ค๋ฅธ ๋ก์ง๋ค์์ ์ ๋ฐ์ดํธ๊ฐ ํ์ํ ๋ถ๋ถ๋ค์ ์ฐฉ์ฐฉ ์ ํด์ฃผ์ง ์๋๋ค. ๊ทธ๋์ ๊ผผ๊ผผํ๊ฒ ๋งค๋ฒ ์ ๋ฐ์ดํธ๋ง๋ค ๊ทผ๋ฐ ์ด๋ ๊ฒ ํ์ ๋ ๊นจ์ง๋ ๋ก์ง์ด ์๊ฑฐ๋ ํ์ง ์์์ง ๊ณ์ Claude๋ฅผ ํจ์ผ ํจ. ๊ฐ์ก๋๋ฆฌ ๋ชจ๋ on...
๋ณด์ ์ด์ ์์?
api key๋ firebase ์ค์ ํ์ผ ๊ฐ์ ๊ฒ๋ค .gitignore์ ์ถ๊ฐํด๋๊ธฐ <- ์ด๊ฑด ๋ญ ๊ฐ๋ฐํ๋ ๋ค๋ค ๊ผญ ์ฑ๊ฒจํ์ญ์ ! ํด๋ก๋ ์ฝ๋๊ฐ ์ ์ ๋ชป์ฐจ๋ฆฌ๊ณ ๊นํ์ ๊ฑ ์ฌ๋ ค๋๋ฒ๋ฆด ์ ์์ ๊ทธ๋ฌ๋ฉด ํค ๊ฐ์๊ฑฐ ๋ค ์๋ก ๋ฐ๊ธ ๋ฐ์์ผํ๋๊ป ๋งค์ฐ ๊ท์ฐจ๋ ..
QA?
QA๋ ์์งํ.. ํ .. ์ฐ์ ๊ฐ์ก๋๋ฆฌ๋ก ํด๋ก๋ํํ ์ง๊ธ๊น์ง ๋น๋ํ ๊ฒ๋ค ๋ค๊ฐ ์ ์ ์๋๋ฆฌ์ค 3๊ฐ ์ ๋ ๋๋คํ๊ฒ ์์ฑํด์ ์ด๋ฐ ๊ฒฝ์ฐ ๋ฌธ์ ๊ฐ ์์์ง ๋ก์ง๋ค ์ ์ฒด user flow์์ ํ์ธํด๋ด๋ผ.. ๋ฌผ์ด๋ณด๊ณ ์ด๊ฑฐ๋ฅผ ํ 30๋ฒ ๋๋ ค์คฌ๋ค. ใ ๊ฐ์ก๋๋ฆฌ... ใ ํด๋ก๋๊ฐ ๋ ํ์คํ ๋ฏ
๊ทธ๋ฌ๊ณ ๋์ ์๋ฎฌ๋ ์ดํฐ ๋๋ ค๋ด๋ ๋๋๊ฒ๋ UI/UX์์ ์ด ์๊ธฐ๊ฐ ๋ฏธ์ณค๋.. ์ถ์ ๊ฒ๋ค์ ๋ฐ๊ฒฌํ ์ ์๋ค. ๋ก๊ทธ์ธ, ๋ก๊ทธ์์, ์ฑ ์ญ์ ํ ์ฌ์ค์น ๋ฑ ์์ฒญ ๊ฐ๋จํ ๊ฒ๋ค๋ ์ง์ง ๊ผผ๊ผผํ ์ค์ ๋ก QAํด๋ณด๊ธธ ๋ฐ๋๋ค. ์๋ฎฌ๋ ์ดํฐ์์๋ง ๋๋ด์ง ๋ง๊ณ ์ค๊ธฐ๊ธฐ์์๋ ํ ์คํธํด๋ณด๊ธธ ๋ฐ๋.
์ฐ์ ์ฌ๊ธฐ๊น์ง ํ๊ณ ๊ตฌ๊ธ ๊ฐ๋ฐ์๋ก ๋ฑ๋กํ๊ณ ๋ญ ์ด๋ฐ๊ฑฐ ๋ค ๊ท์ฐฎ์์ (์ด ๊ณผ์ ์์ ํด๋๊ธด ํ๋๋ฐ ๋ญ ์ด์ฐจํผ ๊ณ์ ์ ์ง๋ณด์ํ ๊ฒ๋ ์๋๊ณ ์๋ง๋ฅผ ์ํด์ ๋ง๋ ์ฑ์ด์์ด์ ๊ฑ ์ฑ์คํ ์ด๋ค์ ๋ฐฐํฌ๊น์ง ์ํ์.) ์๋งํํ apk ํ์ผ๋ก ์ ๋ฌํด์คฌ๋ค. ์ข ๋ฟ๋ฏํ๋ ๊ฑด ์ฐ๋ฆฌ ํ์ฌ CTO๋๊ป์ ์ฑ ์ข ์จ๋ณด์๋๋ '์ด ์ ๋๋ฉด ํ๋ก๋์ ์ ๋ด๋ ๋ ํ๋ฆฌํฐ์ธ๋ฐ์?'๋ผ๊ณ ํ๋ค๋ ์ . ํํ. ์ ์ ์ก๋๋ฆฌ๋ ฅ์.. ๋๋ผ์ จ๋์? >.<
์๋ ๊ณํ์ ๋ชจ๋ ์ฑ๋ค์ ๋ํ ์ผ์ง๋ฅผ ํ ํธ์ ๋จ๊ธฐ๋ ๊ฑฐ์๋๋ฐ ์ฌ๊ธฐ๊น์ง๋ง ํด๋ ๊ธ์ด ๊ฝค ๊ธด ๊ฒ ๊ฐ์ ๋๋จธ์ง ์ฑ๋ค์ ๋ํ ๊ฒ๋ค์ ์ถํ์ ๊ธ๋ค์์ ๊ธฐ์ ํ๊ธฐ๋ก.... ํผํผ ํฌ๋น ์ปจํฐ๋ด๋... ๐