-
Notifications
You must be signed in to change notification settings - Fork 0
Retrospective Week2
๊ธฐ๊ฐ: 2026-06-01 ~ 2026-06-08
์ด๋ฒ ์ฃผ๋ ์ฒ์์ผ๋ก ์ฝ๋๊ฐ ๋๋ ์ฃผ์ฐจ์๋ค. 1์ฃผ์ฐจ์ ์ ํ ๊ฒฐ์ ๋ค์ ๋ผ์ ๋ง์ถฐ ๋ณด๋ ์ฌ๋์ด ๋ณด๋ surface ๊ฐ ํ ๋ฒ ๋ค ๊น๋ ธ๊ณ โ ๋์์, ๋ด๊ฐ ์ ํ ์ํฌํ๋ก์ฐ ๋ฃฐ์ด ์ค์ ๋ก ์ด๋ค ๋ถ๋ถ์์ ์ฝํ๋์ง๊ฐ ๋๋ฌ๋ฌ๋ค.
| Surface | PR |
|---|---|
| Next.js 15 + Tailwind + shadcn + Docker/Caddy ๋ถํธ์คํธ๋ฉ | #23 |
| Prisma 6 + SQLite + ์ด๊ธฐ migration | #24 |
Auth.js v5 Google OAuth + @snu.ac.kr ํ์ดํธ๋ฆฌ์คํธ + /admin/members
|
#25 |
| ์ธ์ ์์ฑ + ์์ธ + ๋ณธ์ธ ํ ์ ๋ ฅ (ํ์ด์ค ์๋) | #26 |
| ๋จ์ฒด์ฌ์ง ์ ๋ก๋ (๋ก์ปฌ ๋ณผ๋ฅจ, ์๋ณธ ๋ณด์กด) | #27 |
Hotfix: ๋น ์
๋ ฅ noop / encType ์ ๊ฑฐ / Session.id cuidโInt |
#28 |
ํผ inline validation + double-submit ์ฐจ๋จ (useActionState + useFormStatus) |
#29 |
/sessions ์์นด์ด๋ธ ๋ฆฌ์คํธ + ์ํฌํ๋ก์ฐ ๋ณด๊ฐ (SKILL ยง4.5) |
#30 |
| ์ฌ์ง/admin ํผ retrofit + CI + Deploy + ํ๊ณ | #31 |
| Hotfix: Docker image build (public/ ๋๋ฝ, GHCR ์ด๋ฆ ๋ถ์ผ์น, deploy secrets ๋ถ๊ธฐ) | #32 |
Hotfix: Prisma runtime deps + healthcheck /api/health + N100 git sync |
#33 |
| ์ฝ๋ audit: cursor ํ์ด์ง๋ค์ด์ / ์ฃฝ์ env / server-only ๊ฐ๋ | (์ด PR) |
11 + 1 PR. ๋ชจ๋ dev ์ ๋จธ์ง. main ์ Week 2 ๋ง์ง๋ง์ v0.1.0 ํ๊ทธ์ ํจ๊ป ์ฒซ ๋จธ์ง.
1์ฃผ์ฐจ์ 06-Checkpoints 7๊ฐ๋ฅผ "AI ๊ฐ ๋ด ์ง์๋ฅผ ์๋ชป ํด์ํ ๋ถ๋ถ์ ์ก๋ ๊ฐ์ด๋๋ผ์ธ" ์ผ๋ก ์ฌ์ ์ํ๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก fidelity ์ธก๋ฉด โ ์ํจ ์ผ์ ์ํจ ๋งํผ ํ๋์ง โ ์ ์ ์กํ๋ค. ๊ทธ๋ฐ๋ฐ ๊ทธ๊ฒ ์ฌ์ฉ์ ๊ฒฝํ๊น์ง ๋ณด์ฅํ์ง ๋ชปํ๋ค๋ ๊ฒ ๋ ๋ฒ์ ์ฌ๊ณ ์์ ๋๋ฌ๋ฌ๋ค.
์ฌ๊ณ 1. ๋น ์ ๋ ฅ / ์๋ชป๋ ์ ๋ ฅ์ ์๋ฆผ์ด ์๋ ์ฑ๋ก PR ๋ ๋ฒ์ด ๋จธ์ง๋๋ค (#26, #28). ๋ด๊ฐ spec ์ "Out of scope" ์ "react-hook-form ๋์ ์" ๋ผ๊ณ ๋ฐ์๋๊ณ ๋ฏธ๋ค๋๋ฐ, ๊ทธ๊ฒ ํฉ๋ฆฌ์ ๋ถ๋ฆฌ์ ๋๊ตฌ๊ฐ ์๋๋ผ ๋ฏธ๋ฃจ๊ธฐ์ ํ๊ณ๋ก ์ฐ์๋ค. ์ฌ์ฉ์๊ฐ ๋น ํผ [์ถ๊ฐ] ๋ฅผ ๋๋ฅด๋ฉด ํ์คํฌ๋ฆฐ ์๋ฌ ํ์ด์ง โ silent noop ์ผ๋ก ํ ๋ฒ hotfix ํ์ง๋ง, ๋ ๋ค ์ฌ์ฉ์ ๊ฒฝํ์ ๊นจ์ ธ ์์๋ค.
์ฌ๊ณ 2. [์ธ์
๋ง๋ค๊ธฐ] ๋น ๋ฅธ ๋๋ธ ํด๋ฆญ์ผ๋ก row ๊ฐ ๋ ๋ฒ ์์ฑ๋๋ค. useFormStatus ํ ์ค์ด๋ฉด ๋งํ๋ ํํ ํจํด์ธ๋ฐ, server action ๋ง ๋ฐ๊ณ React 19 ํ์ค ํจํด์ ๋นผ๋จน์๋ค. ์ฒ์ PR #26 ๋ถํฐ ๋ฐํ ์์์ด์ผ ํ๋ค.
๋ ๋ค build ๊ฐ ๊ทธ๋ฆฐ์ด๊ณ , 06-Checkpoints fidelity 7๊ฐ๋ ๋ค ํต๊ณผํ๋ค. ํต๊ณผํ ๊ฒ ์ฌ์ค ๊ฑฐ์ง๋ง์ด์๋ค๋ ๊ฒ ์๋๋ผ, "happy path ์ฝ๋๊ฐ ๋๋๊ฐ" ์ "์ฌ์ฉ์๊ฐ ์๋ชป๋ ํ๋์ ํ์ ๋ ์ด๋ป๊ฒ ๋๋๊ฐ" ๊ฐ ๊ฐ์ ์ง๋ฌธ์ด ์๋๋ผ๋ ๊ฒ ์ ํํ๋ค.
์์ : PR #30 ์ ๋ ๊ณณ์ ๋ฐ์๋ค.
-
.gjc/skills/murun-feature/SKILL.mdยง4.5 โ ์ ํผ/์ ๋ ฅ ์ถ๊ฐํ ๋ negative case alert /useActionState/useFormStatus/ DB unique ์์ ๋ง์ ์ฒดํฌ ์์ด ์งํ ๊ธ์ง ๋ก ๋ช ์. -
docs/wiki/06-Checkpoints.md#7 โ "happy path ๋ง์ผ๋ก๋ ๋ถ์กฑ, ๋น ์ ๋ ฅ / ์๋ชป๋ ํ์ / ๋๋ธ ํด๋ฆญ / ๊ถํ ์๋ ์ฌ์ฉ์๋ฅผ ๋จธ๋ฆฟ์์์๋ผ๋ ํ๋ ค๋ณธ๋ค."
PR #31 ์์ ๊ทธ ๋ฃฐ์ ์ด๋ฏธ ์๋ ํผ(์ฌ์ง ์ ๋ก๋, admin ์น์ธ/๊ฑฐ์ ) ์ ์๊ธ ์ ์ฉํ๋ค. ์ฒ์๋ถํฐ ๋ฐํ์ด์ผ ํ ์ฝ๋๊ฐ ๋ฆ๊ฒ ๋ค์ด๊ฐ ๊ฑฐ๋ผ ์๋ก์ด ๊ฐ์น๋ ์์ง๋ง, ๋ฃฐ์ด ์ค์ ๋ก ๋ฌธ์์ ๋จธ๋ฌด๋ฅด์ง ์๊ณ ๋ค์ PR ์ ์ํฅ์ ์คฌ๋ค๋ ๊ฒ 1์ฃผ์ฐจ์ ์ ํ ๊ฒ๊ณผ์ ์ฐจ์ด.
CI/Deploy ํ์ดํ๋ผ์ธ์ ์ฌ๋ฆฌ๊ณ N100 ์ ์ฒ์ SSH ๋ฐฐํฌ๋ฅผ ๊ตด๋ฆฌ๋ฉด์ ์ฌ๊ณ 3๊ฑด์ด ์ถ๊ฐ๋ก ํฐ์ก๋ค (#32, #33, ์ด๋ฒ PR). ์ฝ๋๋ ๋ก์ปฌ์์ ๊ทธ๋ฆฐ์ด์๋๋ฐ, ํ๊ฒฝ์ด ๋ฐ๋๋ ํ ๋ฒ๋ ๊ฐ์ด ๋๋ ค๋ณธ ์ ์๋ ์กฐํฉ์์ ๊นจ์ก๋ค.
์ฌ๊ณ 3. public/ ๋๋ ํฐ๋ฆฌ๊ฐ ์๋๋ฐ Dockerfile ์ด ๋ฌด์กฐ๊ฑด COPY (#32).
์ฑ ๋น๋๋ ํต๊ณผํ๋๋ฐ ์ปจํ
์ด๋ ๋น๋๋ง ๊นจ์ก๋ค. ๋ก์ปฌ pnpm build ๋ง ๋ณด๋ ์์ ๋ง์ ์ฌ๊ฐ.
์ฌ๊ณ 4. compose ์ image ์ด๋ฆ์ด GHCR push ์ด๋ฆ๊ณผ ๋ฌ๋๋ค (#32). build ๋ ํต๊ณผ, push ๋ ํต๊ณผ โ N100 ์์ pull ๋ง ๋ชป ํ์ ์ผ์ด์ค. ์ง์ N100 ๋ฐฐํฌ๊น์ง ๊ฐ์ง ์์์ผ๋ฉด ํ์ฐธ ๋ฌปํ์์๋ค.
์ฌ๊ณ 5. Prisma migrate deploy runtime ์์กด (#33).
Dockerfile ์ด node_modules/prisma, node_modules/@prisma ๋ง ๋ณต์ฌํด์ effect ๊ฐ์ transitive deps ๊ฐ ๋๋ฝ โ entrypoint ๊ฐ ๋ถํ
๋จ๊ณ์์ ์ฃฝ์. Healthcheck ๋ / ๋ฅผ ๋ณด๊ณ ์์๋๋ฐ ๊ทธ๊ฒ ๋ก๊ทธ์ธ redirect ๋ผ healthy ๊ฐ ์์ ์ ๋๋ค. ์ธ์ฆ๊ณผ ๋ฌด๊ดํ /api/health ๋ก ๋ฐ๋ก ๋บ๋ค.
์ฌ๊ณ 6. ์ด๋ฒ audit ์์ ์กํ cursor ํ์ด์ง๋ค์ด์
๋๋ฝ.
orderBy: (date desc, id desc) ์ธ๋ฐ cursor ๋ id < cursorId ๋ง ๋ดค๋ค. ์ค๋๋ ๋ ์ง์ธ๋ฐ ๋ฆ๊ฒ ๋ง๋ค์ด์ง(=id ๊ฐ ํฐ) ์ธ์
์ด ํ์ด์ง ์ฌ์ด์์ ๋๋ฝ. ๋ฐ์ดํฐ๊ฐ ํ ์๋ฆฌ์์ผ ๋ ์ ๋ณด์ด๋ ๋ฒ๊ทธ. ์ด๊ฑด ์ฌ์ฉ์๊ฐ ๋ชป ๋ฐ๊ฒฌํ์ด๋ ์๊ฐ ๋ฌธ์ ์๋ค.
๊ฐ์ด ์ก์ audit ํญ๋ชฉ:
- ์ฃฝ์
NEXT_PUBLIC_APP_URL๋ณ์ โlayout.tsx์metadataBase๋ก ์ค์ ์ฌ์ฉ. -
lib/uploads.ts๊ฐ client ์ปดํฌ๋ํธ์ transitive import ๋ก ๋๋ ค๊ฐ ์ํ โimport "server-only"๊ฐ๋ + URL helper ๋ถ๋ฆฌ. -
[์ธ์ ์์ โ ๋ค์ PR์์ ์ถ๊ฐ]placeholder ๋ ธ์ถ โ ์ ๊ฑฐ.
์ด ์์ฆ์ ๊ณตํต ํจํด. ๋ชจ๋ "๋ก์ปฌ์์ ํ ๊ฐ์ง ๊ฒฝ๋ก๋ง ๊ตด๋ ค๋ณด๊ณ ๊ทธ๋ฆฐ์ด๋ฉด ํต๊ณผ ๋ณด๊ณ " ์๋ค. ์ฝ๋๋ ๊ฐ์ ํ๊ฒฝ์์ ๊ฐ์ ์ ๋ ฅ์ผ๋ก๋ง ๊ตด๋ ธ๊ณ , ๋ค๋ฅธ ํ๊ฒฝ (Docker, GHCR, N100, edge case ๋ฐ์ดํฐ) ์ ํ ๋ฒ๋ ๊ฐ์ด ๊ตด๋ ค๋ณธ ์ ์์๋ค. Hotfix ๊ฐ 3๋ฒ ์ฐ๋ฌ์ ํฐ์ง๋ฉด์ ์๊ฒ ๋ ๊ฒ:
- ๋ก์ปฌ build ๊ทธ๋ฆฐ โ ์ปจํ ์ด๋ build ๊ทธ๋ฆฐ. Docker ๋จ๊ณ๋ ๋ค๋ฅธ ์์ ๋ง์ด ํ์.
- ์ปจํ ์ด๋ ๋ถํ โ ์ฑ healthy. healthcheck ๊ฐ ์ง์ง ready ์ ํธ๋ฅผ ๋ด์ผ ํจ.
- ์ฑ์ด healthy โ ์ ์ฝ๋๊ฐ N100 ์ ๋๋ฌ. deploy pipeline ์ git sync ๊ฐ ๋น ์ง๋ฉด image ๋ง ์๊ฑฐ๊ณ compose ํ์ผ์ ์๊ฒ.
์์ : .gjc/skills/murun-feature/SKILL.md ์ 06-Checkpoints.md ์ "ํ๊ฒฝ๋ณ ๊ฒ์ฆ ๋ถ๋ฆฌ" ๋ฅผ ์ถ๊ฐํ๋ค (3์ฃผ์ฐจ์์ ๋ณด๊ฐ).
์ง์ ์ฌ๊ณ ๋ฅผ ์๊ธฐ ์ ๊ฒํด๋ณด๋ฉด ์ผ๊ด๋ ํจํด์ด ์๋ค.
- AI ๋ ์ฝ๋ ์ธก ๊ฒ์ฆ(typecheck/lint/build) ๊ฒฐ๊ณผ๋ฅผ ๋ณด๊ณ "ํต๊ณผ" ๋ผ๊ณ ๋ณด๊ณ ํ๋ค. ๊ทธ๊ฑด ์ ํํ๋ค.
- AI ๋ PR ๋ณธ๋ฌธ์ "์ฌ์ฉ์๊ฐ ์ง์ E2E ๊ฒ์ฆ" ์ด๋ผ๊ณ ๋ฐ์๋ค. ๊ทธ๊ฒ๋ ์ ํํ๋ค.
- ๊ทธ๋ฐ๋ฐ ๊ทธ ์ฌ์ด์ โ "์ฌ์ฉ์์๊ฒ ์ํค๊ธฐ ์ ์ ๋จธ๋ฆฟ์ ์๋๋ฆฌ์ค๋ก ํ ๋ฒ ํ๋ ค๋ณด๋ ๋จ๊ณ" โ ๊ฐ ์์ ๋น ์ก๋ค.
AI ๊ฐ ์ค์ ๋ธ๋ผ์ฐ์ ๋ฅผ ๋ชป ํด๋ฆญํ๋ ๊ฑด ์ฌ์ค์ด๋ค. ๊ทธ๋ ๋ค๊ณ ๋จธ๋ฆฟ์ ์๋ฎฌ๋ ์ด์ ๊น์ง ๋ชป ํ ์ด์ ๋ ์๋ค. "์ด ํผ์ด ๋น ์ ๋ ฅ์ด๋ฉด ์ด๋ป๊ฒ ๋์ง?" ๊ฐ์ ์ง๋ฌธ์ ์ฝ๋๋ฅผ ๋ค์ ํ ๋ฒ ์ฝ์ผ๋ฉด ๋ต์ด ๋์จ๋ค. ๊ทธ๊ฑธ ์ ํ์ ๋ฟ์ด๋ค.
3์ฃผ์ฐจ์ ์ ์ฉํ ๋ณํ๋ ์ธ ๊ฐ:
- spec ์ "Out of scope" ๊ฐ ์ ๋ง ๋ถ๋ฆฌ ๊ฐ์น๊ฐ ์๋์ง, ์๋๋ฉด ๊ทธ๋ฅ ๋ฏธ๋ฃจ๋ ๊ฑด์ง ๊ตฌ๋ถํ๋ค. ๋ฏธ๋ฃจ๋ ๊ฒ์ผ ๊ฐ๋ฅ์ฑ์ด ๋ณด์ด๋ฉด OOS ์์ ๋นผ๊ณ ๊ฐ์ PR ์ ํฉ์น๋ค.
- PR ๋ณธ๋ฌธ์ Fidelity check #7 ์ negative case ๋จธ๋ฆฟ์ ์๋๋ฆฌ์ค 1~2์ค์ ๊ฐ์ ๋ก ์ ๋๋ค โ "๋น ์ ๋ ฅ โ ...", "๊ถํ ์๋ ์ฌ์ฉ์ โ ..." ๊ฐ์ ํ ์ค.
- ์ธํ๋ผ/๋ฐฐํฌ PR ์ ๋ก์ปฌ build ๊ทธ๋ฆฐ + ์ปจํ ์ด๋ build ๊ทธ๋ฆฐ + healthcheck ๊ฐ ์ง์ง ready ๋ฅผ ๋ณด๋๊ฐ ์ธ ์ค์ PR ๋ณธ๋ฌธ์ ๋ช ์. ์ฝ๋๋ง ๋ณด๋ฉด ์ฌ๊ณ ์์ฆ 2๊ฐ ๋ ๋ฐ๋ณต๋๋ค.
1์ฃผ์ฐจ์ ์ ํ "ํธ์คํธ = ์ธ์ ์์ฑ์, ์ฐธ์ฌ์ = ๋ณธ์ธ ํ์ ์ ๋" ๋ชจ๋ธ์ ์ด์ํจ ์์ด ๊ทธ๋๋ก ๋์ํ๋ค. ์นดํก ๋จํก๋ฐฉ์ ๋์ง๋ ์๋๋ฆฌ์ค(์์ง OG ์ด๋ฏธ์ง ์์ด ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ ๋น ์ง) ๋ฅผ ๊ฐ์ ํ๊ณ ์ง ํ๋ฆ์ด ์ค์ ๋ก ์ด์์ง/์ฐธ์ฌ์ ๋ชจ๋์๊ฒ ์์ฐ์ค๋ฌ์ด์ง๋ โ Week 3 ์ ์ค์ ์ด๋ 1ํ dogfooding ์์ ๊ฒ์ฆ๋๋ค.
์๊ฒ ๋ค์ง์ ๊ฒฐ์ :
-
Session.idcuid โ autoincrement Int (#28). enumeration ์ฐจ๋จ ๊ฐ์น < ๊ฐ๋ ์ฑ. ๋์๋ฆฌ 30๋ช ๋ด๋ถ์ฉ์ ๋ ๋ง์. - ๊ฒ์ฆ ๊ฐํ์์ "์ด๋ 0~59" ๋ก ๊ฐ์ (#29). ์ฌ์ฉ์๊ฐ 5๋ถ 0์ด๋ฅผ 4'60" ๋ก ์ ๋ ํํ ์ค์๋ฅผ ๋ง์.
์์ฒด N100 + Docker + Caddy + SQLite ๊ฒฐ์ ์ด ์ด์ ์ธก์์ ๊น๋ํ๊ฒ ์์ ๋๋ค.
- ์ด๋ฒ PR ์ CI ์ํฌํ๋ก์ฐ โ PR ๋ง๋ค typecheck/lint/build ์๋. ์๋ก ํ๋ก์ ํธ์ง๋ง, "๋ด๊ฐ ๋งค๋ฒ ๋ก์ปฌ์์ ๋๋ฆฌ๋ ๋จ๊ณ" ๋ฅผ GH ๊ฐ ๋์ ํด์ฃผ๋ ๊ฒ ์์ ๋ง.
- ์ด๋ฒ PR ์ Deploy ์ํฌํ๋ก์ฐ โ dev push โ ghcr.io build โ SSH โ N100 staging ์๋. main ์ environment ๋ณดํธ ํ ์๋ ์น์ธ.
- SSH key + N100_HOST ๋ฑ secrets ๋ฑ๋ก์ ํธ์คํธ(๋) ์ ์ฑ ์. README ์ ์ ์ฐจ๊ฐ ์๊ณ , ๋ฑ๋ก ์ ์๋ ์ด๋ฏธ์ง build/push ๊น์ง๋ง ์ฑ๊ณต์ํค๊ณ SSH deploy ๋ skip ํ๋๋ก ํ๋ค.
๋จ์ ํธ์คํธ ์์ (Week 2 ์์ ๋๋จ):
- N100 ์์
docker compose up -d๋ก staging ๊ธฐ๋ โ ์๋ ๋ฐฐํฌ ํ์ดํ๋ผ์ธ ํต๊ณผ ํ์ธ -
dev โ main์ฒซ ๋จธ์ง +v0.1.0ํ๊ทธ
Week 3 ๋ก ๋ฏธ๋ฃจ๋ ํธ์คํธ ์์ :
- duckdns ๋๋ฉ์ธ + HTTPS
- prod environment ๋ณดํธ + main โ prod ๋ผ์ธ ์ฒซ ๋ฐ์ฌ
- spec ์์ฑ ์ OOS ํญ๋ชฉ์ "์ ๋ง ๋ฏธ๋ฃจ๋๊ฐ" ํ ๋ฒ ์๋ฌธ. PR #26/#28 ์ inline validation ์ฒ๋ผ, OOS ๊ฐ ์ฌ์ค ์ฌ์ฉ์ ๊ฒฝํ์ ์ง์ ๋ง์น๋ ๊ฑฐ๋ฉด ๊ฐ์ PR ์ ํฉ์น๋ค.
- PR ๋ณธ๋ฌธ Fidelity #7 ์ negative case ํ ์ค ๋ช ์ ๊ฐ์ . "๋น ์ ๋ ฅ โ alert", "๋๋ธ ํด๋ฆญ โ dedupe ๋์" ๊ฐ์ด ๋จธ๋ฆฟ์ ์๋๋ฆฌ์ค๋ฅผ ๊ธ๋ก.
- AI ๊ฐ ๋ง๋ PR ์ ๋จธ์งํ๊ธฐ ์ ์ฝ๋ ์ธก ๊ฒ์ฆ + ๋จธ๋ฆฟ์ ์๋๋ฆฌ์ค ๋ ๋ค ํต๊ณผํ ๋ค์์๋ง ์ฌ์ฉ์์๊ฒ ๊ฒ์ฆ ์์ฒญ. ๋น๋ ๊ทธ๋ฆฐ๋ง ๋ณด๊ณ "๊ฒ์ฆ ๊ฐ๋ฅ" ์ด๋ผ๊ณ ๋ณด๊ณ ํ๋ ํจํด ํ๊ธฐ.
- PR scope ๋ฌถ๊ธฐ/์ชผ๊ฐ๊ธฐ ๊ฒฐ์ ์ ํ ์ค ๋ฉ๋ชจ๋ก. 4 commit 1 PR ๋ ํฉ๋ฆฌ์ , ์์ PR ์ฌ๋ฌ ๊ฐ๋ ํฉ๋ฆฌ์ . ๊ฒฐ์ ๊ธฐ์ค์ "์ฌ์ฉ์ ๋จธ์ง ๋ถ๋ด" ๊ณผ "๋๋ฉ์ธ ์์ง๋".
- dev โ main ๋จธ์ง ์ฃผ๊ธฐ๋ฅผ ์ ํด๋ . ๋งค PR ๋ง๋ค ํ์ง ์๋๋ผ๋, Week ๋๋ง๋ค v0.x.0 ํ๊ทธ์ ํจ๊ป ์ผ๊ด. main ์ด ๋น์ด์๋ ์ฑ๋ก ๊ฐ๋ ๊ธฐ๊ฐ์ด ๋๋ฌด ๊ธธ์ง ์๊ฒ.
- ๋ฐฐํฌ PR ์ ๋ค๋ฅธ ํ๊ฒฝ๊น์ง ํ ์ฌ์ดํด ๊ตด๋ ค๋ณธ ๋ค์ ๋จธ์ง. local pnpm check ๊ทธ๋ฆฐ๋ง ๋ณด๊ณ ๋ฐฐํฌ PR ๋จธ์งํ์ง ์๋๋ค. workflow_dispatch ๋ก ํ ๋ฒ ๊ตด๋ ค๋ณธ ๋ค์ ๊ทธ๋ฆฐ์ด๋ฉด ๋จธ์ง.
ํต์ฌ์ ์ฌ์ฉ์ ์ ์ฅ์์ ์ค์ ๋ก ํ ๋ฒ ๊ตด๋ ค๋ณด๋ ์ฃผ. ์ฝ๋๋ ๊ฑฐ์ ๋ค ๋๊ณ , ์ง์ง ๋ชจ์ 1ํ์ ๊ธฐ๋ก์ ๋๊น์ง ํ๋ ค๋ณธ ๋ค์์ ๋ฐ๊ฒฌ๋๋ ์ด์ํจ ๋ค์ ์ก๋๋ค.
- N100 ์ ์ค์ ๋ฐฐํฌ (CI/CD secret ๋ฑ๋ก ํ dev push โ staging ๋์ ํ์ธ)
- duckdns ๋๋ฉ์ธ + Caddy HTTPS
- Google OAuth redirect URI ์ prod ๋๋ฉ์ธ ์ถ๊ฐ
-
dev โ main์ฒซ ๋จธ์ง +v0.1.0 - OG ์ด๋ฏธ์ง (#15) โ ์นดํก ๊ณต์ ๋ฏธ๋ฆฌ๋ณด๊ธฐ. ์ด๊ฒ ๋น ์ง๋ฉด ๋์๋ฆฌ ๊ณต์ UX ๊ฐ ๋ฌด๋ฏธ๊ฑด์กฐํจ.
- (์๊ฐ ๋๋ฉด) ๊ฒ์ยทํํฐ (#14) โ ์ฐธ์ฌ ์ธ์ ์, ์ฅ์, ๊ธฐ๊ฐ
- (์๊ฐ ๋๋ฉด) ๋ฉค๋ฒ ํ์ด์ง + ๋์ /ํ์ด์ค ์ถ์ด ์ฐจํธ (#13)
- ์ค์ ๋์๋ฆฌ ์ด๋ 1ํ dogfooding โ ํธ์คํธ ์์ + ์ฐธ์ฌ์ ์์ ์์ชฝ์ผ๋ก ํ๋ ค๋ณด๊ธฐ
- 3์ฃผ์ฐจ ํ๊ณ
3์ฃผ์ฐจ์ ๋ฐ๊ฒฌ๋๋ ์ฌ๊ณ ๋ค์ ์ด๋ฒ ์ฃผ์ฒ๋ผ spec/OOS ๋๋ฝ์ด ์๋๋ผ, ์ค์ ์ฌ์ฉ์๊ฐ ๋๋ฉ์ธ์ ์ด๋ป๊ฒ ๋ค๋ฅด๊ฒ ์ฐ๋๊ฐ ์์ ๋์ฌ ๊ฒ์ด๋ค. ๊ทธ๊ฒ ๊ฐ์ฅ ์๋ฏธ์๋ ํ์ต์ผ ๊ฒ์ด๋ผ ๋ณธ๋ค.