From c14c9f6648196a653f34f55ced64b7f988b7bc4e Mon Sep 17 00:00:00 2001 From: bnbong Date: Wed, 6 May 2026 22:28:29 +0900 Subject: [PATCH 1/4] [DOCS] ko translation - phase 1 --- .pre-commit-config.yaml | 1 + docs/en/reference/translation-status.md | 4 +- docs/ko/index.md | 285 ++++++----- docs/ko/reference/translation-status.md | 76 +++ docs/ko/user-guide/choosing-a-starter.md | 145 ++++++ docs/ko/user-guide/creating-projects.md | 536 ++++++++++++++++++++ docs/ko/user-guide/installation.md | 209 ++++++++ docs/ko/user-guide/quick-start.md | 365 ++++++++++++++ docs/ko/user-guide/using-templates.md | 608 +++++++++++++++++++++++ 9 files changed, 2082 insertions(+), 147 deletions(-) create mode 100644 docs/ko/reference/translation-status.md create mode 100644 docs/ko/user-guide/choosing-a-starter.md create mode 100644 docs/ko/user-guide/creating-projects.md create mode 100644 docs/ko/user-guide/installation.md create mode 100644 docs/ko/user-guide/quick-start.md create mode 100644 docs/ko/user-guide/using-templates.md diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index d07939e..83f43db 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -5,6 +5,7 @@ repos: rev: v6.0.0 hooks: - id: trailing-whitespace + args: [--markdown-linebreak-ext=md] - id: end-of-file-fixer - id: check-yaml - id: check-toml diff --git a/docs/en/reference/translation-status.md b/docs/en/reference/translation-status.md index e5b044d..73be38f 100644 --- a/docs/en/reference/translation-status.md +++ b/docs/en/reference/translation-status.md @@ -29,14 +29,14 @@ next section explains). | Locale | Status | Markdown pages | Notes | |---|---|---:|---| | ๐Ÿ‡ฌ๐Ÿ‡ง English (`en`) | โœ… Source of truth | 26 / 26 | Authoritative. | -| ๐Ÿ‡ฐ๐Ÿ‡ท Korean (`ko`) | ๐ŸŸก Partial | 2 / 26 | `index.md`, `changelog.md`. Other pages fall back to English. | +| ๐Ÿ‡ฐ๐Ÿ‡ท Korean (`ko`) | ๐ŸŸก Partial | 8 / 26 | `index.md`, `changelog.md`, `reference/translation-status.md`, plus 5 user-guide pages (`installation`, `quick-start`, `creating-projects`, `using-templates`, `choosing-a-starter`). Other pages fall back to English. | | ๐Ÿ‡ฏ๐Ÿ‡ต Japanese (`ja`) | ๐Ÿ”ด Skeleton | 0 / 26 | Build target only. Every page falls back to English. | | ๐Ÿ‡จ๐Ÿ‡ณ Chinese (`zh`) | ๐Ÿ”ด Skeleton | 0 / 26 | Build target only. Every page falls back to English. | | ๐Ÿ‡ช๐Ÿ‡ธ Spanish (`es`) | ๐Ÿ”ด Skeleton | 0 / 26 | Build target only. Every page falls back to English. | | ๐Ÿ‡ซ๐Ÿ‡ท French (`fr`) | ๐Ÿ”ด Skeleton | 0 / 26 | Build target only. Every page falls back to English. | | ๐Ÿ‡ฉ๐Ÿ‡ช German (`de`) | ๐Ÿ”ด Skeleton | 0 / 26 | Build target only. Every page falls back to English. | -*Snapshot verified 2026-05-06.* These counts are maintained by hand; +*Snapshot verified 2026-05-06; ko row recounted for the current branch.* These counts are maintained by hand; to recount the current state from the repo root, run: ```console diff --git a/docs/ko/index.md b/docs/ko/index.md index f2821ef..e2a88e7 100644 --- a/docs/ko/index.md +++ b/docs/ko/index.md @@ -2,7 +2,7 @@ FastAPI-fastkit

-FastAPI-fastkit: Python๊ณผ FastAPI ์‹ ๊ทœ ์‚ฌ์šฉ์ž์šฉ ๋น ๋ฅด๊ณ  ์‚ฌ์šฉํ•˜๊ธฐ ์‰ฌ์šด ์Šคํƒ€ํ„ฐ ํ‚คํŠธ +FastAPI-fastkit: Python ๊ณผ FastAPI ์‹ ๊ทœ ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•œ ๋น ๋ฅด๊ณ  ์‚ฌ์šฉํ•˜๊ธฐ ์‰ฌ์šด ์Šคํƒ€ํ„ฐ ํ‚คํŠธ

@@ -18,31 +18,26 @@ --- -์ด ํ”„๋กœ์ ํŠธ๋Š” Python๊ณผ [FastAPI](https://github.com/fastapi/fastapi) ์‹ ๊ทœ ์‚ฌ์šฉ์ž๊ฐ€ Python ๊ธฐ๋ฐ˜ ์›น ์•ฑ์„ ๊ฐœ๋ฐœํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ๊ตฌ์„ฑ์„ ๋”์šฑ ๋น ๋ฅด๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. +์ด ํ”„๋กœ์ ํŠธ๋Š” Python ๊ณผ [FastAPI](https://github.com/fastapi/fastapi) ์‹ ๊ทœ ์‚ฌ์šฉ์ž๊ฐ€ Python ๊ธฐ๋ฐ˜ ์›น ์•ฑ์„ ๊ฐœ๋ฐœํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ๊ตฌ์„ฑ์„ ๋”์šฑ ๋น ๋ฅด๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“ค์–ด์กŒ์Šต๋‹ˆ๋‹ค. -์ด ํ”„๋กœ์ ํŠธ๋Š” `SpringBoot initializer` ๋ฐ Python Django์˜ `django-admin` CLI ๋™์ž‘์—์„œ ์˜๊ฐ์„ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค. +์ด ํ”„๋กœ์ ํŠธ๋Š” `SpringBoot initializer` ์™€ Python Django ์˜ `django-admin` CLI ๋™์ž‘์—์„œ ์˜๊ฐ์„ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค. !!! info "๋ฒˆ์—ญ ์ƒํƒœ" - ์ด ๋ฌธ์„œ์˜ **์›๋ณธ์€ ์˜์–ด (`en`)** ์ž…๋‹ˆ๋‹ค. ํ•œ๊ตญ์–ด ๋ฒˆ์—ญ์€ ์ผ๋ถ€ ํŽ˜์ด์ง€์—๋งŒ - ์ œ๊ณต๋˜๋ฉฐ, ๋ฒˆ์—ญ๋˜์ง€ ์•Š์€ ํŽ˜์ด์ง€๋Š” ์˜์–ด ์›๋ฌธ์œผ๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ๊ฐ ์–ธ์–ด์˜ - ์‹ค์ œ ๋ฒˆ์—ญ ์ง„ํ–‰ ์ƒํ™ฉ์€ - [Translation Status](reference/translation-status.md) ํŽ˜์ด์ง€๋ฅผ - ํ™•์ธํ•ด ์ฃผ์„ธ์š”. ์˜์–ด ํŽ˜์ด์ง€์™€ ๋ฒˆ์—ญ ํŽ˜์ด์ง€์˜ ๋‚ด์šฉ์ด ๋‹ค๋ฅด๋‹ค๋ฉด ์˜์–ด - ํŽ˜์ด์ง€๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์‚ผ์œผ์„ธ์š”. + ์ด ๋ฌธ์„œ์˜ **์›๋ณธ์€ ์˜์–ด (`en`)** ์ž…๋‹ˆ๋‹ค. ์–ธ์–ด ์„ ํƒ๊ธฐ์— ํ‘œ์‹œ๋˜๋Š” ๋‹ค๋ฅธ ์–ธ์–ด๋“ค์€ ๋ถ€๋ถ„ ๋ฒˆ์—ญ์ด๊ฑฐ๋‚˜ ํŽ˜์ด์ง€๋ณ„๋กœ ์˜์–ด ์›๋ฌธ์œผ๋กœ ๋Œ€์ฒด๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ์–ธ์–ด์˜ ์‹ค์ œ ๋ฒˆ์—ญ ์ง„ํ–‰ ์ƒํ™ฉ์€ [Translation Status](reference/translation-status.md) ํŽ˜์ด์ง€๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”. ## ์ฃผ์š” ๊ธฐ๋Šฅ -- **โšก Immediate FastAPI project creation** : [Python Django](https://github.com/django/django)์˜ `django-admin` ๊ธฐ๋Šฅ์—์„œ ์˜๊ฐ์„ ๋ฐ›์€ CLI๋ฅผ ํ†ตํ•ด ์ดˆ๊ณ ์† FastAPI ์›Œํฌ์ŠคํŽ˜์ด์Šค ๋ฐ ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ -- **โœจ ๋Œ€ํ™”ํ˜• ํ”„๋กœ์ ํŠธ ๋นŒ๋”**: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, ์ธ์ฆ, ์บ์‹ฑ, ๋ชจ๋‹ˆํ„ฐ๋ง ๋“ฑ ๊ธฐ๋Šฅ์„ ๋‹จ๊ณ„๋ณ„๋กœ ์•ˆ๋‚ดํ•˜์—ฌ ์„ ํƒํ•˜๊ณ  ์ฝ”๋“œ๋ฅผ ์ž๋™ ์ƒ์„ฑ -- **๐ŸŽจ Prettier CLI outputs** : [rich library](https://github.com/Textualize/rich) ๊ธฐ๋ฐ˜์˜ ์•„๋ฆ„๋‹ค์šด CLI ๊ฒฝํ—˜ -- **๐Ÿ“‹ Standards-based FastAPI project templates** : ๋ชจ๋“  FastAPI-fastkit ํ…œํ”Œ๋ฆฟ์€ Python ํ‘œ์ค€๊ณผ FastAPI์˜ ์ผ๋ฐ˜์  ์‚ฌ์šฉ ํŒจํ„ด์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌ์„ฑ -- **๐Ÿ” Automated template quality assurance** : ์ฃผ๊ฐ„ ์ž๋™ํ™” ํ…Œ์ŠคํŠธ๋กœ ๋ชจ๋“  ํ…œํ”Œ๋ฆฟ์ด ์ •์ƒ ๋™์ž‘ํ•˜๋ฉฐ ์ตœ์‹  ์ƒํƒœ๋กœ ์œ ์ง€๋จ์„ ๋ณด์žฅ -- **๐Ÿš€ Multiple project templates** : ๋‹ค์–‘ํ•œ ์‚ฌ์šฉ ์‚ฌ๋ก€์— ๋งž์ถ˜ ์‚ฌ์ „ ๊ตฌ์„ฑ ํ…œํ”Œ๋ฆฟ ์„ ํƒ ๊ฐ€๋Šฅ(async CRUD, Docker, PostgreSQL ๋“ฑ) -- **๐Ÿ“ฆ Multiple package manager support** : ์˜์กด์„ฑ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด ์„ ํ˜ธํ•˜๋Š” Python ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž(pip, uv, pdm, poetry)๋ฅผ ์„ ํƒ ๊ฐ€๋Šฅ +- **โšก ์ฆ‰์‹œ FastAPI ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ** : [Python Django](https://github.com/django/django) ์˜ `django-admin` ๊ธฐ๋Šฅ์—์„œ ์˜๊ฐ์„ ๋ฐ›์€ CLI ๋กœ ์ดˆ๊ณ ์† FastAPI ์›Œํฌ์ŠคํŽ˜์ด์Šค ๋ฐ ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ +- **โœจ ๋Œ€ํ™”ํ˜• ํ”„๋กœ์ ํŠธ ๋นŒ๋”**: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, ์ธ์ฆ, ์บ์‹ฑ, ๋ชจ๋‹ˆํ„ฐ๋ง ๋“ฑ์„ ๋‹จ๊ณ„๋ณ„๋กœ ์•ˆ๋‚ดํ•ด ์„ ํƒํ•˜๊ฒŒ ํ•˜๊ณ  ์ฝ”๋“œ๋ฅผ ์ž๋™ ์ƒ์„ฑ +- **๐ŸŽจ ๋ณด๊ธฐ ์ข‹์€ CLI ์ถœ๋ ฅ** : [rich library](https://github.com/Textualize/rich) ๊ธฐ๋ฐ˜์˜ ๊น”๋”ํ•œ CLI ๊ฒฝํ—˜ +- **๐Ÿ“‹ ํ‘œ์ค€ ๊ธฐ๋ฐ˜ FastAPI ํ”„๋กœ์ ํŠธ ํ…œํ”Œ๋ฆฟ** : ๋ชจ๋“  FastAPI-fastkit ํ…œํ”Œ๋ฆฟ์€ Python ํ‘œ์ค€๊ณผ FastAPI ์˜ ์ผ๋ฐ˜์ ์ธ ์‚ฌ์šฉ ํŒจํ„ด์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌ์„ฑ +- **๐Ÿ” ์ž๋™ํ™”๋œ ํ…œํ”Œ๋ฆฟ ํ’ˆ์งˆ ๋ณด์ฆ** : ์ฃผ๊ฐ„ ์ž๋™ ํ…Œ์ŠคํŠธ๋กœ ๋ชจ๋“  ํ…œํ”Œ๋ฆฟ์ด ์ •์ƒ ๋™์ž‘ํ•˜๋ฉฐ ์ตœ์‹  ์ƒํƒœ๋กœ ์œ ์ง€๋จ์„ ๋ณด์žฅ +- **๐Ÿš€ ๋‹ค์–‘ํ•œ ํ”„๋กœ์ ํŠธ ํ…œํ”Œ๋ฆฟ** : ๋‹ค์–‘ํ•œ ์‚ฌ์šฉ ์‚ฌ๋ก€ (async CRUD, Docker, PostgreSQL ๋“ฑ) ์— ๋งž์ถ˜ ์‚ฌ์ „ ๊ตฌ์„ฑ ํ…œํ”Œ๋ฆฟ ์ค‘์—์„œ ์„ ํƒ +- **๐Ÿ“ฆ ๋‹ค์ค‘ ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ € ์ง€์›** : ์˜์กด์„ฑ ๊ด€๋ฆฌ์— ์„ ํ˜ธํ•˜๋Š” Python ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ € (pip, uv, pdm, poetry) ๋ฅผ ์„ ํƒ ๊ฐ€๋Šฅ ## ์„ค์น˜ -Python ํ™˜๊ฒฝ์— `FastAPI-fastkit`๋ฅผ ์„ค์น˜ํ•˜์„ธ์š”. +Python ํ™˜๊ฒฝ์— `FastAPI-fastkit` ์„ ์„ค์น˜ํ•˜์„ธ์š”.

@@ -56,11 +51,11 @@ $ pip install FastAPI-fastkit ## ์‚ฌ์šฉ๋ฒ• -### FastAPI ํ”„๋กœ์ ํŠธ ์›Œํฌ์ŠคํŽ˜์ด์Šค ํ™˜๊ฒฝ์„ ์ฆ‰์‹œ ์ƒ์„ฑ +### ์ƒˆ FastAPI ํ”„๋กœ์ ํŠธ ์›Œํฌ์ŠคํŽ˜์ด์Šค ํ™˜๊ฒฝ์„ ์ฆ‰์‹œ ์ƒ์„ฑ -์ด์ œ FastAPI-fastkit์œผ๋กœ ๋งค์šฐ ๋น ๋ฅด๊ฒŒ ์ƒˆ FastAPI ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค! +์ด์ œ FastAPI-fastkit ์œผ๋กœ ๋งค์šฐ ๋น ๋ฅด๊ฒŒ ์ƒˆ FastAPI ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค! -๋‹ค์Œ์œผ๋กœ ์ฆ‰์‹œ ์ƒˆ FastAPI ํ”„๋กœ์ ํŠธ ์›Œํฌ์ŠคํŽ˜์ด์Šค๋ฅผ ์ƒ์„ฑํ•˜์„ธ์š”: +๋‹ค์Œ ๋ช…๋ น์œผ๋กœ ์ƒˆ FastAPI ํ”„๋กœ์ ํŠธ ์›Œํฌ์ŠคํŽ˜์ด์Šค๋ฅผ ์ฆ‰์‹œ ์ƒ์„ฑํ•˜์„ธ์š”:
@@ -181,7 +176,7 @@ Installing dependencies... ### ๋Œ€ํ™”ํ˜• ๋ชจ๋“œ๋กœ ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ โœจ NEW! -๋ณด๋‹ค ๋ณต์žกํ•œ ํ”„๋กœ์ ํŠธ์˜ ๊ฒฝ์šฐ, ์ง€๋Šฅํ˜• ๊ธฐ๋Šฅ ์„ ํƒ์„ ํ†ตํ•ด ๋Œ€ํ™”ํ˜• ๋ชจ๋“œ๋กœ FastAPI ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋‹จ๊ณ„๋ณ„๋กœ ๊ตฌ์„ฑํ•˜์„ธ์š”: +๋ณด๋‹ค ๋ณต์žกํ•œ ํ”„๋กœ์ ํŠธ์˜ ๊ฒฝ์šฐ, **๋Œ€ํ™”ํ˜• ๋ชจ๋“œ**๋ฅผ ์‚ฌ์šฉํ•ด ์ง€๋Šฅํ˜• ๊ธฐ๋Šฅ ์„ ํƒ๊ณผ ํ•จ๊ป˜ ๋‹จ๊ณ„๋ณ„๋กœ FastAPI ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์„ฑํ•˜์„ธ์š”:
@@ -197,11 +192,11 @@ Enter the author email: john@example.com Enter the project description: Full-stack FastAPI project with PostgreSQL and JWT ๐Ÿงฑ Architecture Preset -ํ”„๋กœ์ ํŠธ ๋ ˆ์ด์•„์›ƒ์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. Enter๋ฅผ ๋ˆ„๋ฅด๋ฉด ์ถ”์ฒœ ๊ธฐ๋ณธ๊ฐ’์ด ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. - 1. minimal - ๊ฐ€์žฅ ์ž‘์€ FastAPI ์•ฑ - 2. single-module - ๋‹จ์ผ ๋ชจ๋“ˆ ๊ตฌ์„ฑ (ํ”„๋กœํ† ํƒ€์ž… / ์Šคํฌ๋ฆฝํŠธ์šฉ) - 3. classic-layered - api/routes + crud + schemas + core (fastapi-default ํ˜•ํƒœ) - 4. domain-starter - ๋„๋ฉ”์ธ ์ง€ํ–ฅ src/app/domains// (recommended) +Pick a project layout. Press Enter to accept the recommended default. + 1. minimal - Smallest viable FastAPI app + 2. single-module - Everything in one module (prototypes / scripts) + 3. classic-layered - api/routes + crud + schemas + core (ร  la fastapi-default) + 4. domain-starter - Domain-oriented src/app/domains// (recommended) Select architecture preset: [4] @@ -251,38 +246,37 @@ Select monitoring (Loguru, OpenTelemetry, Prometheus, None): Select monitoring: 3 +๐Ÿงช Testing Framework Selection +Select testing framework (Basic, Coverage, Advanced, None): + 1. Basic - pytest + httpx for API testing + 2. Coverage - Basic + code coverage + 3. Advanced - Coverage + faker + factory-boy for fixtures + 4. None - No testing framework -๐Ÿงช ํ…Œ์ŠคํŠธ ํ”„๋ ˆ์ž„์›Œํฌ ์„ ํƒ -ํ…Œ์ŠคํŠธ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์„ ํƒํ•˜์„ธ์š” (Basic, Coverage, Advanced, None): - 1. Basic - API ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•œ pytest + httpx - 2. Coverage - Basic + ์ฝ”๋“œ ์ปค๋ฒ„๋ฆฌ์ง€ - 3. Advanced - Coverage + ํ”ฝ์Šค์ฒ˜๋ฅผ ์œ„ํ•œ faker + factory-boy - 4. None - ํ…Œ์ŠคํŠธ ํ”„๋ ˆ์ž„์›Œํฌ ์—†์Œ +Select testing framework: 2 -ํ…Œ์ŠคํŠธ ํ”„๋ ˆ์ž„์›Œํฌ ์„ ํƒ: 2 - -๐Ÿ› ๏ธ ์ถ”๊ฐ€ ์œ ํ‹ธ๋ฆฌํ‹ฐ -์œ ํ‹ธ๋ฆฌํ‹ฐ๋ฅผ ์„ ํƒํ•˜์„ธ์š” (์‰ผํ‘œ๋กœ ๊ตฌ๋ถ„๋œ ์ˆซ์ž, ์˜ˆ: 1,3,4): +๐Ÿ› ๏ธ Additional Utilities +Select utilities (comma-separated numbers, e.g., 1,3,4): 1. CORS - Cross-Origin Resource Sharing - 2. Rate-Limiting - ์š”์ฒญ ์†๋„ ์ œํ•œ - 3. Pagination - ํŽ˜์ด์ง€๋„ค์ด์…˜ ์ง€์› - 4. WebSocket - WebSocket ์ง€์› + 2. Rate-Limiting - Request rate limiting + 3. Pagination - Pagination support + 4. WebSocket - WebSocket support -์œ ํ‹ธ๋ฆฌํ‹ฐ ์„ ํƒ: 1 +Select utilities: 1 -๐Ÿš€ ๋ฐฐํฌ ๊ตฌ์„ฑ -๋ฐฐํฌ ์˜ต์…˜์„ ์„ ํƒํ•˜์„ธ์š”: - 1. Docker - Dockerfile ์ƒ์„ฑ - 2. docker-compose - docker-compose.yml ์ƒ์„ฑ(Docker ํฌํ•จ) - 3. None - ๋ฐฐํฌ ๊ตฌ์„ฑ ์—†์Œ +๐Ÿš€ Deployment Configuration +Select deployment option: + 1. Docker - Generate Dockerfile + 2. docker-compose - Generate docker-compose.yml (includes Docker) + 3. None - No deployment configuration -๋ฐฐํฌ ์˜ต์…˜ ์„ ํƒ: 2 +Select deployment option: 2 -๐Ÿ“ฆ ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ € ์„ ํƒ -ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ €๋ฅผ ์„ ํƒํ•˜์„ธ์š” (pip, uv, pdm, poetry): uv +๐Ÿ“ฆ Package Manager Selection +Select package manager (pip, uv, pdm, poetry): uv -๐Ÿ“ ์‚ฌ์šฉ์ž ์ •์˜ ํŒจํ‚ค์ง€(์„ ํƒ ์‚ฌํ•ญ) -์‚ฌ์šฉ์ž ์ •์˜ ํŒจํ‚ค์ง€ ์ด๋ฆ„์„ ์ž…๋ ฅํ•˜์„ธ์š”(์‰ผํ‘œ๋กœ ๊ตฌ๋ถ„, ๊ฑด๋„ˆ๋›ฐ๋ ค๋ฉด Enter): +๐Ÿ“ Custom Packages (optional) +Enter custom package names (comma-separated, press Enter to skip): ๐Ÿ“‹ Project Configuration Summary โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” @@ -334,63 +328,63 @@ Proceed with project creation? [Y/n]: y โ”‚ โœจ Generated configuration files for selected stack โ”‚ โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ -๊ฐ€์ƒ ํ™˜๊ฒฝ์„ ์ƒ์„ฑํ•˜๋Š” ์ค‘... -์ข…์†์„ฑ์„ ์„ค์น˜ํ•˜๋Š” ์ค‘... +Creating virtual environment... +Installing dependencies... ----> 100% -โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ ์„ฑ๊ณต โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ -โ”‚ โœจ FastAPI ํ”„๋กœ์ ํŠธ 'my-fullstack-project'๊ฐ€ โ”‚ -โ”‚ 'fastapi-domain-starter' ํ…œํ”Œ๋ฆฟ์—์„œ ์ƒ์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹คโ”‚ -โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ +โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ Success โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ +โ”‚ โœจ FastAPI project 'my-fullstack-project' from โ”‚ +โ”‚ 'fastapi-domain-starter' has been created! โ”‚ +โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ ```
๋Œ€ํ™”ํ˜• ๋ชจ๋“œ๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋Šฅ: -- **์•„ํ‚คํ…์ฒ˜ ํ”„๋ฆฌ์…‹ ์„ ํƒ** (`minimal` / `single-module` / `classic-layered` / `domain-starter`) โ€” ๋ฒ ์ด์Šค ํ…œํ”Œ๋ฆฟ๊ณผ ํ”„๋กœ์ ํŠธ ๋ ˆ์ด์•„์›ƒ์„ ์„ ํƒ -- ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, ์ธ์ฆ, ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ž‘์—…, ์บ์‹ฑ, ๋ชจ๋‹ˆํ„ฐ๋ง ๋“ฑ ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ๊ฐ€์ด๋“œํ˜• ์„ ํƒ -- ์„ ํƒํ•œ ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ์ž๋™ ์ฝ”๋“œ ์ƒ์„ฑ โ€” ํ”„๋ฆฌ์…‹์— ๋”ฐ๋ผ ๋™์ž‘ ๋ฐฉ์‹ ์ฐจ์ด (`minimal` / `single-module`์€ `main.py` ์žฌ์ƒ์„ฑ, `classic-layered` / `domain-starter`๋Š” ํ…œํ”Œ๋ฆฟ ์ œ๊ณต `main.py` ๋ณด์กดํ•˜๋ฉฐ ๊ตฌ์„ฑ ๋ชจ๋“ˆ๋งŒ ์ถ”๊ฐ€) -- ํ”„๋ฆฌ์…‹์— ๋งž์ถ˜ Docker ์ƒ์„ฑ โ€” ์ƒ์„ฑ๋œ `Dockerfile`์˜ `CMD`๊ฐ€ ํ•ด๋‹น ํ”„๋ฆฌ์…‹์˜ ์‹ค์ œ ์ง„์ž…์ (`src.main:app` ๋˜๋Š” `src.app.main:app`)์„ ๊ฐ€๋ฆฌํ‚ด -- ์ž๋™ pip ํ˜ธํ™˜์„ฑ์˜ ์Šค๋งˆํŠธ ์ข…์†์„ฑ ๊ด€๋ฆฌ -- ํ˜ธํ™˜๋˜์ง€ ์•Š๋Š” ์กฐํ•ฉ์„ ๋ฐฉ์ง€ํ•˜๋Š” ๊ธฐ๋Šฅ ๊ฒ€์ฆ๊ณผ ์ˆ˜๋™ ์™€์ด์–ด๋ง ๊ฒฝ๊ณ  -- ์ƒ์„ฑ๋œ `pyproject.toml`์— ์‹๋ณ„ ๋งˆ์ปค ์ฃผ์ž… (`description` ๋งˆ์ปค + `[tool.fastapi-fastkit]` ํ…Œ์ด๋ธ”) โ€” ์ดํ›„ `is_fastkit_project()`๊ฐ€ ์ƒ์„ฑ๋œ ํ”„๋กœ์ ํŠธ๋ฅผ ์‹๋ณ„ ๊ฐ€๋Šฅ +- **์•„ํ‚คํ…์ฒ˜ ํ”„๋ฆฌ์…‹ ์„ ํƒ** (`minimal` / `single-module` / `classic-layered` / `domain-starter`) โ€” ์ ์ ˆํ•œ ๋ฒ ์ด์Šค ํ…œํ”Œ๋ฆฟ๊ณผ ํ”„๋กœ์ ํŠธ ๋ ˆ์ด์•„์›ƒ์„ ๊ฒฐ์ • +- ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, ์ธ์ฆ, ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ž‘์—…, ์บ์‹ฑ, ๋ชจ๋‹ˆํ„ฐ๋ง ๋“ฑ์— ๋Œ€ํ•œ **๊ฐ€์ด๋“œํ˜• ์„ ํƒ** +- ์„ ํƒํ•œ ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ **์ž๋™ ์ฝ”๋“œ ์ƒ์„ฑ** โ€” ํ”„๋ฆฌ์…‹์— ๋”ฐ๋ผ ๋™์ž‘ ๋ฐฉ์‹์ด ๋‹ค๋ฆ„ (`minimal` / `single-module` ์€ `main.py` ์žฌ์ƒ์„ฑ, `classic-layered` / `domain-starter` ๋Š” ํ…œํ”Œ๋ฆฟ ์ œ๊ณต `main.py` ๋ณด์กดํ•˜๋ฉฐ ์„ค์ • ๋ชจ๋“ˆ๋งŒ ์ถ”๊ฐ€) +- **ํ”„๋ฆฌ์…‹ ์ธ์ง€ํ˜• Docker ์ƒ์„ฑ** โ€” ์ƒ์„ฑ๋œ `Dockerfile` ์˜ `CMD` ๊ฐ€ ํ•ด๋‹น ํ”„๋ฆฌ์…‹์˜ ์‹ค์ œ ์ง„์ž…์  (`src.main:app` ๋˜๋Š” `src.app.main:app`) ์„ ๊ฐ€๋ฆฌํ‚ด +- ์ž๋™ pip ํ˜ธํ™˜์„ฑ์„ ๊ฐ–์ถ˜ **์Šค๋งˆํŠธ ์˜์กด์„ฑ ๊ด€๋ฆฌ** +- ํ”„๋ฆฌ์…‹์ด ์ž๋™ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์—†๋Š” ์„ ํƒ์— ๋Œ€ํ•ด ์ˆ˜๋™ ์—ฐ๊ฒฐ ์•ˆ๋‚ด๋ฅผ ์ถœ๋ ฅํ•˜๋Š” **๊ธฐ๋Šฅ ๊ฒ€์ฆ** +- ์ƒ์„ฑ๋œ `pyproject.toml` ์— **์‹๋ณ„ ๋งˆ์ปค** ์ฃผ์ž… (description ๋งˆ์ปค + `[tool.fastapi-fastkit]` ํ…Œ์ด๋ธ”) โ€” ์ดํ›„ `is_fastkit_project()` ๊ฐ€ ์ƒ์„ฑ๋œ ํ”„๋กœ์ ํŠธ๋ฅผ ์‹๋ณ„ ๊ฐ€๋Šฅ -### FastAPI ํ”„๋กœ์ ํŠธ์— ์ƒˆ ๋ผ์šฐํŠธ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ธฐ +### FastAPI ํ”„๋กœ์ ํŠธ์— ์ƒˆ ๋ผ์šฐํŠธ ์ถ”๊ฐ€ -`FastAPI-fastkit`์€ FastAPI ํ”„๋กœ์ ํŠธ ํ™•์žฅ์„ ์‰ฝ๊ฒŒ ๋งŒ๋“ค์–ด ์ค๋‹ˆ๋‹ค. +`FastAPI-fastkit` ์€ FastAPI ํ”„๋กœ์ ํŠธ ํ™•์žฅ์„ ์‰ฝ๊ฒŒ ๋งŒ๋“ค์–ด ์ค๋‹ˆ๋‹ค. -๋‹ค์Œ์œผ๋กœ FastAPI ํ”„๋กœ์ ํŠธ์— ์ƒˆ ๋ผ์šฐํŠธ ์—”๋“œํฌ์ธํŠธ๋ฅผ ์ถ”๊ฐ€ํ•˜์„ธ์š”: +๋‹ค์Œ ๋ช…๋ น์œผ๋กœ FastAPI ํ”„๋กœ์ ํŠธ์— ์ƒˆ ๋ผ์šฐํŠธ ์—”๋“œํฌ์ธํŠธ๋ฅผ ์ถ”๊ฐ€ํ•˜์„ธ์š”:
```console $ fastkit addroute my-awesome-project user - ์ƒˆ ๋ผ์šฐํŠธ ์ถ”๊ฐ€ ์ค‘ + Adding New Route โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” -โ”‚ ํ”„๋กœ์ ํŠธ โ”‚ my-awesome-project โ”‚ -โ”‚ ๋ผ์šฐํŠธ ์ด๋ฆ„ โ”‚ user โ”‚ -โ”‚ ๋Œ€์ƒ ๋””๋ ‰ํ„ฐ๋ฆฌ โ”‚ ~your-project-path~ โ”‚ +โ”‚ Project โ”‚ my-awesome-project โ”‚ +โ”‚ Route Name โ”‚ user โ”‚ +โ”‚ Target Directory โ”‚ ~your-project-path~ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ -ํ”„๋กœ์ ํŠธ 'my-awesome-project'์— ๋ผ์šฐํŠธ 'user'๋ฅผ ์ถ”๊ฐ€ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? [Y/n]: y +Do you want to add route 'user' to project 'my-awesome-project'? [Y/n]: y -โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ ์ •๋ณด โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ -โ”‚ โ„น API ๋ผ์šฐํ„ฐ๋ฅผ ํฌํ•จํ•˜๋„๋ก main.py๋ฅผ ์—…๋ฐ์ดํŠธํ–ˆ์Šต๋‹ˆ๋‹ค โ”‚ -โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ -โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ ์„ฑ๊ณต โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ -โ”‚ โœจ ์ƒˆ ๋ผ์šฐํŠธ 'user'๋ฅผ ํ”„๋กœ์ ํŠธ์— ์„ฑ๊ณต์ ์œผ๋กœ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค โ”‚ -โ”‚ `my-awesome-project` โ”‚ +โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ Info โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ +โ”‚ โ„น Updated main.py to include the API router โ”‚ โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ +โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ Success โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ +โ”‚ โœจ Successfully added new route 'user' to project โ”‚ +โ”‚ `my-awesome-project` โ”‚ +โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ ```
-### ๊ตฌ์กฐํ™”๋œ FastAPI ๋ฐ๋ชจ ํ”„๋กœ์ ํŠธ๋ฅผ ๋ฐ”๋กœ ๋ฐฐ์น˜ํ•˜๊ธฐ +### ๊ตฌ์กฐํ™”๋œ FastAPI ๋ฐ๋ชจ ํ”„๋กœ์ ํŠธ๋ฅผ ์ฆ‰์‹œ ๋ฐฐ์น˜ ๊ตฌ์กฐํ™”๋œ FastAPI ๋ฐ๋ชจ ํ”„๋กœ์ ํŠธ๋กœ ์‹œ์ž‘ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. -๋ฐ๋ชจ ํ”„๋กœ์ ํŠธ๋Š” ๋‹ค์–‘ํ•œ ๊ธฐ์ˆ  ์Šคํƒ์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์œผ๋ฉฐ ๊ฐ„๋‹จํ•œ ์•„์ดํ…œ CRUD ์—”๋“œํฌ์ธํŠธ๊ฐ€ ๊ตฌํ˜„๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. +๋ฐ๋ชจ ํ”„๋กœ์ ํŠธ๋Š” ๋‹ค์–‘ํ•œ ๊ธฐ์ˆ  ์Šคํƒ๊ณผ ํ•จ๊ป˜ ๊ฐ„๋‹จํ•œ item CRUD ์—”๋“œํฌ์ธํŠธ๊ฐ€ ๊ตฌํ˜„๋œ ํ˜•ํƒœ๋กœ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ๋ช…๋ น์œผ๋กœ ๊ตฌ์กฐํ™”๋œ FastAPI ๋ฐ๋ชจ ํ”„๋กœ์ ํŠธ๋ฅผ ์ฆ‰์‹œ ๋ฐฐ์น˜ํ•˜์„ธ์š”: @@ -398,54 +392,54 @@ $ fastkit addroute my-awesome-project user ```console $ fastkit startdemo -ํ”„๋กœ์ ํŠธ ์ด๋ฆ„์„ ์ž…๋ ฅํ•˜์„ธ์š”: my-awesome-demo -์ž‘์„ฑ์ž ์ด๋ฆ„์„ ์ž…๋ ฅํ•˜์„ธ์š”: John Doe -์ž‘์„ฑ์ž ์ด๋ฉ”์ผ์„ ์ž…๋ ฅํ•˜์„ธ์š”: john@example.com -ํ”„๋กœ์ ํŠธ ์„ค๋ช…์„ ์ž…๋ ฅํ•˜์„ธ์š”: My awesome FastAPI demo -'fastapi-default' ํ…œํ”Œ๋ฆฟ์„ ์‚ฌ์šฉํ•˜์—ฌ FastAPI ํ”„๋กœ์ ํŠธ๋ฅผ ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค -ํ…œํ”Œ๋ฆฟ ๊ฒฝ๋กœ: +Enter the project name: my-awesome-demo +Enter the author name: John Doe +Enter the author email: john@example.com +Enter the project description: My awesome FastAPI demo +Deploying FastAPI project using 'fastapi-default' template +Template path: /~fastapi_fastkit-package-path~/fastapi_project_template/fastapi-default - ํ”„๋กœ์ ํŠธ ์ •๋ณด + Project Information โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” -โ”‚ ํ”„๋กœ์ ํŠธ ์ด๋ฆ„โ”‚ my-awesome-demo โ”‚ -โ”‚ ์ž‘์„ฑ์ž โ”‚ John Doe โ”‚ -โ”‚ ์ž‘์„ฑ์ž ์ด๋ฉ”์ผโ”‚ john@example.com โ”‚ -โ”‚ ์„ค๋ช… โ”‚ My awesome FastAPI demo โ”‚ +โ”‚ Project Name โ”‚ my-awesome-demo โ”‚ +โ”‚ Author โ”‚ John Doe โ”‚ +โ”‚ Author Email โ”‚ john@example.com โ”‚ +โ”‚ Description โ”‚ My awesome FastAPI demo โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ - ํ…œํ”Œ๋ฆฟ ์ข…์†์„ฑ + Template Dependencies โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” -โ”‚ ์ข…์†์„ฑ 1 โ”‚ fastapi โ”‚ -โ”‚ ์ข…์†์„ฑ 2 โ”‚ uvicorn โ”‚ -โ”‚ ์ข…์†์„ฑ 3 โ”‚ pydantic โ”‚ -โ”‚ ์ข…์†์„ฑ 4 โ”‚ pydantic-settings โ”‚ -โ”‚ ์ข…์†์„ฑ 5 โ”‚ python-dotenv โ”‚ +โ”‚ Dependency 1 โ”‚ fastapi โ”‚ +โ”‚ Dependency 2 โ”‚ uvicorn โ”‚ +โ”‚ Dependency 3 โ”‚ pydantic โ”‚ +โ”‚ Dependency 4 โ”‚ pydantic-settings โ”‚ +โ”‚ Dependency 5 โ”‚ python-dotenv โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ -์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ €: - ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ € +Available Package Managers: + Package Managers โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” -โ”‚ PIP โ”‚ ํ‘œ์ค€ Python ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž โ”‚ -โ”‚ UV โ”‚ ๋น ๋ฅธ Python ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž โ”‚ -โ”‚ PDM โ”‚ ํ˜„๋Œ€์ ์ธ Python ์ข…์†์„ฑ ๊ด€๋ฆฌ โ”‚ -โ”‚ POETRY โ”‚ Python ์ข…์†์„ฑ ๊ด€๋ฆฌ ๋ฐ ํŒจํ‚ค์ง• โ”‚ +โ”‚ PIP โ”‚ Standard Python package manager โ”‚ +โ”‚ UV โ”‚ Fast Python package manager โ”‚ +โ”‚ PDM โ”‚ Modern Python dependency management โ”‚ +โ”‚ POETRY โ”‚ Python dependency management and packaging โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ -ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ €๋ฅผ ์„ ํƒํ•˜์„ธ์š” (pip, uv, pdm, poetry) [uv]: uv -ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ์„ ์ง„ํ–‰ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? [y/N]: y -FastAPI ํ…œํ”Œ๋ฆฟ ํ”„๋กœ์ ํŠธ๊ฐ€ '~your-project-path~'์— ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค +Select package manager (pip, uv, pdm, poetry) [uv]: uv +Do you want to proceed with project creation? [y/N]: y +FastAPI template project will deploy at '~your-project-path~' ---> 100% -โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ ์„ฑ๊ณต โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ -โ”‚ โœจ ์ข…์†์„ฑ์ด ์„ฑ๊ณต์ ์œผ๋กœ ์„ค์น˜๋˜์—ˆ์Šต๋‹ˆ๋‹ค โ”‚ -โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ -โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ ์„ฑ๊ณต โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ -โ”‚ โœจ FastAPI ํ”„๋กœ์ ํŠธ 'my-awesome-demo'๊ฐ€ โ”‚ -โ”‚ 'fastapi-default'์—์„œ ์ƒ์„ฑ๋˜์–ด ๋‹ค์Œ ์œ„์น˜์— ์ €์žฅ๋˜์—ˆ์Šต๋‹ˆ๋‹ค โ”‚ -โ”‚ ~your-project-path~! โ”‚ -โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ +โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ Success โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ +โ”‚ โœจ Dependencies installed successfully โ”‚ +โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ +โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ Success โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ +โ”‚ โœจ FastAPI project 'my-awesome-demo' from โ”‚ +โ”‚ 'fastapi-default' has been created and saved to โ”‚ +โ”‚ ~your-project-path~! โ”‚ +โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ ```
@@ -475,53 +469,54 @@ $ fastkit list-templates ## ๋ฌธ์„œ -ํฌ๊ด„์ ์ธ ๊ฐ€์ด๋“œ์™€ ์ƒ์„ธํ•œ ์‚ฌ์šฉ๋ฒ•์€ ๋ฌธ์„œ๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”: +์ข…ํ•ฉ์ ์ธ ๊ฐ€์ด๋“œ์™€ ์ž์„ธํ•œ ์‚ฌ์šฉ๋ฒ•์€ ๋ฌธ์„œ๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”: -- ๐Ÿ“š [User Guide](user-guide/quick-start.md) - ์ž์„ธํ•œ ์„ค์น˜ ๋ฐ ์‚ฌ์šฉ ๊ฐ€์ด๋“œ -- ๐ŸŽฏ [Tutorial](tutorial/getting-started.md) - ์ดˆ๋ณด์ž๋ฅผ ์œ„ํ•œ ๋‹จ๊ณ„๋ณ„ ํŠœํ† ๋ฆฌ์–ผ -- ๐Ÿ“– [CLI Reference](user-guide/cli-reference.md) - ์™„์ „ํ•œ ๋ช…๋ น์–ด ๋ ˆํผ๋Ÿฐ์Šค -- ๐Ÿ” [Template Quality Assurance](reference/template-quality-assurance.md) - ์ž๋™ํ™”๋œ ํ…Œ์ŠคํŠธ์™€ ํ’ˆ์งˆ ๊ธฐ์ค€ +- ๐Ÿ“š **[์‚ฌ์šฉ์ž ๊ฐ€์ด๋“œ](user-guide/quick-start.md)** - ์ž์„ธํ•œ ์„ค์น˜ ๋ฐ ์‚ฌ์šฉ ๊ฐ€์ด๋“œ +- ๐ŸŽฏ **[ํŠœํ† ๋ฆฌ์–ผ](tutorial/getting-started.md)** - ์ดˆ๋ณด์ž๋ฅผ ์œ„ํ•œ ๋‹จ๊ณ„๋ณ„ ํŠœํ† ๋ฆฌ์–ผ +- ๐Ÿ“– **[CLI ๋ ˆํผ๋Ÿฐ์Šค](user-guide/cli-reference.md)** - ์ „์ฒด ๋ช…๋ น์–ด ๋ ˆํผ๋Ÿฐ์Šค +- ๐Ÿ” **[ํ…œํ”Œ๋ฆฟ ํ’ˆ์งˆ ๋ณด์ฆ](reference/template-quality-assurance.md)** - ์ž๋™ํ™”๋œ ํ…Œ์ŠคํŠธ ๋ฐ ํ’ˆ์งˆ ๊ธฐ์ค€ ## ๐Ÿš€ ํ…œํ”Œ๋ฆฟ ๊ธฐ๋ฐ˜ ํŠœํ† ๋ฆฌ์–ผ -์‚ฌ์ „ ๊ตฌ์„ฑ๋œ ํ…œํ”Œ๋ฆฟ์œผ๋กœ ์‹ค์ „ ์‚ฌ์šฉ ์‚ฌ๋ก€๋ฅผ ํ†ตํ•ด FastAPI ๊ฐœ๋ฐœ์„ ํ•™์Šตํ•˜์„ธ์š”: +์‚ฌ์ „ ๊ตฌ์ถ•๋œ ํ…œํ”Œ๋ฆฟ์œผ๋กœ ์‹ค์ „ ์‚ฌ์šฉ ์‚ฌ๋ก€๋ฅผ ํ†ตํ•ด FastAPI ๊ฐœ๋ฐœ์„ ํ•™์Šตํ•˜์„ธ์š”: -### ๐Ÿ“– ์ฝ”์–ด ํŠœํ† ๋ฆฌ์–ผ +### ๐Ÿ“– ํ•ต์‹ฌ ํŠœํ† ๋ฆฌ์–ผ -- [๊ธฐ๋ณธ API ์„œ๋ฒ„ ๊ตฌ์ถ•](tutorial/basic-api-server.md) - `fastapi-default` ํ…œํ”Œ๋ฆฟ์„ ์‚ฌ์šฉํ•ด ์ฒซ FastAPI ์„œ๋ฒ„ ๋งŒ๋“ค๊ธฐ -- [๋น„๋™๊ธฐ CRUD API ๊ตฌ์ถ•](tutorial/async-crud-api.md) - `fastapi-async-crud` ํ…œํ”Œ๋ฆฟ์œผ๋กœ ๊ณ ์„ฑ๋Šฅ ๋น„๋™๊ธฐ API ๊ฐœ๋ฐœ +- **[๊ธฐ๋ณธ API ์„œ๋ฒ„ ๋งŒ๋“ค๊ธฐ](tutorial/basic-api-server.md)** - `fastapi-default` ํ…œํ”Œ๋ฆฟ์œผ๋กœ ์ฒซ FastAPI ์„œ๋ฒ„ ๋งŒ๋“ค๊ธฐ +- **[๋น„๋™๊ธฐ CRUD API ๋งŒ๋“ค๊ธฐ](tutorial/async-crud-api.md)** - `fastapi-async-crud` ํ…œํ”Œ๋ฆฟ์œผ๋กœ ๊ณ ์„ฑ๋Šฅ ๋น„๋™๊ธฐ API ๊ฐœ๋ฐœ +- **[๋„๋ฉ”์ธ ์ง€ํ–ฅ ํ”„๋กœ์ ํŠธ (Domain Starter)](tutorial/domain-starter.md)** - ๊ถŒ์žฅ ๋ชจ๋˜ ๊ธฐ๋ณธ๊ฐ’์ธ `fastapi-domain-starter` ํ…œํ”Œ๋ฆฟ์œผ๋กœ ์ค‘๊ฐ„ ๊ทœ๋ชจ API ๊ตฌ์ถ• ### ๐Ÿ—„๏ธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฐ ์ธํ”„๋ผ -- [๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ†ตํ•ฉ](tutorial/database-integration.md) - `fastapi-psql-orm` ํ…œํ”Œ๋ฆฟ์œผ๋กœ PostgreSQL + SQLAlchemy ํ™œ์šฉ -- [Dockerizing ๋ฐ ๋ฐฐํฌ](tutorial/docker-deployment.md) - `fastapi-dockerized` ํ…œํ”Œ๋ฆฟ์„ ์‚ฌ์šฉํ•ด ํ”„๋กœ๋•์…˜ ๋ฐฐํฌ ํ™˜๊ฒฝ ๊ตฌ์„ฑ +- **[๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ†ตํ•ฉ](tutorial/database-integration.md)** - `fastapi-psql-orm` ํ…œํ”Œ๋ฆฟ์œผ๋กœ PostgreSQL + SQLAlchemy ํ™œ์šฉ +- **[Dockerizing ๋ฐ ๋ฐฐํฌ](tutorial/docker-deployment.md)** - `fastapi-dockerized` ํ…œํ”Œ๋ฆฟ์œผ๋กœ ํ”„๋กœ๋•์…˜ ๋ฐฐํฌ ํ™˜๊ฒฝ ๊ตฌ์„ฑ ### โšก ๊ณ ๊ธ‰ ๊ธฐ๋Šฅ -- **[์ปค์Šคํ…€ ์‘๋‹ต ์ฒ˜๋ฆฌ & ๊ณ ๊ธ‰ API ์„ค๊ณ„](tutorial/custom-response-handling.md)** - `fastapi-custom-response` ํ…œํ”Œ๋ฆฟ์œผ๋กœ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ๊ธ‰ API ๊ตฌ์ถ• -- **[MCP์™€์˜ ํ†ตํ•ฉ](tutorial/mcp-integration.md)** - `fastapi-mcp` ํ…œํ”Œ๋ฆฟ์„ ์‚ฌ์šฉํ•ด AI ๋ชจ๋ธ๊ณผ ํ†ตํ•ฉ๋œ API ์„œ๋ฒ„ ์ƒ์„ฑ +- **[์ปค์Šคํ…€ ์‘๋‹ต ์ฒ˜๋ฆฌ ๋ฐ ๊ณ ๊ธ‰ API ์„ค๊ณ„](tutorial/custom-response-handling.md)** - `fastapi-custom-response` ํ…œํ”Œ๋ฆฟ์œผ๋กœ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ๊ธ‰ API ๊ตฌ์ถ• +- **[MCP ํ†ตํ•ฉ](tutorial/mcp-integration.md)** - `fastapi-mcp` ํ…œํ”Œ๋ฆฟ์œผ๋กœ AI ๋ชจ๋ธ๊ณผ ํ†ตํ•ฉ๋œ API ์„œ๋ฒ„ ๋งŒ๋“ค๊ธฐ ๊ฐ ํŠœํ† ๋ฆฌ์–ผ์€ ๋‹ค์Œ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค: - โœ… **์‹ค์šฉ์ ์ธ ์˜ˆ์ œ** - ์‹ค์ œ ํ”„๋กœ์ ํŠธ์—์„œ ๋ฐ”๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ฝ”๋“œ -- โœ… **๋‹จ๊ณ„๋ณ„ ๊ฐ€์ด๋“œ** - ์ดˆ๋ณด์ž๋„ ์‰ฝ๊ฒŒ ๋”ฐ๋ผ ํ•  ์ˆ˜ ์žˆ๋Š” ์ƒ์„ธ ์„ค๋ช… +- โœ… **๋‹จ๊ณ„๋ณ„ ๊ฐ€์ด๋“œ** - ์ดˆ๋ณด์ž๋„ ๋”ฐ๋ผ๊ฐ€๊ธฐ ์‰ฌ์šด ์ž์„ธํ•œ ์„ค๋ช… - โœ… **๋ชจ๋ฒ” ์‚ฌ๋ก€** - ์—…๊ณ„ ํ‘œ์ค€ ํŒจํ„ด๊ณผ ๋ณด์•ˆ ๊ณ ๋ ค ์‚ฌํ•ญ - โœ… **ํ™•์žฅ ๋ฐฉ๋ฒ•** - ํ”„๋กœ์ ํŠธ๋ฅผ ํ•œ ๋‹จ๊ณ„ ๋” ๋ฐœ์ „์‹œํ‚ค๋Š” ๊ฐ€์ด๋“œ ## ๊ธฐ์—ฌ -์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ๊ธฐ์—ฌ๋ฅผ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค! FastAPI-fastkit์€ Python๊ณผ FastAPI ์ž…๋ฌธ์ž๋ฅผ ๋•๊ธฐ ์œ„ํ•ด ์„ค๊ณ„๋˜์—ˆ์œผ๋ฉฐ, ์—ฌ๋Ÿฌ๋ถ„์˜ ๊ธฐ์—ฌ๋Š” ํฐ ์˜ํ–ฅ์„ ๋ฏธ์น  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. +์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ๊ธฐ์—ฌ๋ฅผ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค! FastAPI-fastkit ์€ Python ๊ณผ FastAPI ์ž…๋ฌธ์ž๋ฅผ ๋•๊ธฐ ์œ„ํ•ด ์„ค๊ณ„๋˜์—ˆ์œผ๋ฉฐ, ์—ฌ๋Ÿฌ๋ถ„์˜ ๊ธฐ์—ฌ๋Š” ํฐ ์˜ํ–ฅ์„ ๋ฏธ์น  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ### ๊ธฐ์—ฌํ•  ์ˆ˜ ์žˆ๋Š” ํ•ญ๋ชฉ - ๐Ÿš€ **์ƒˆ๋กœ์šด FastAPI ํ…œํ”Œ๋ฆฟ** - ๋‹ค์–‘ํ•œ ์‚ฌ์šฉ ์‚ฌ๋ก€๋ฅผ ์œ„ํ•œ ํ…œํ”Œ๋ฆฟ ์ถ”๊ฐ€ -- ๐Ÿ› **๋ฒ„๊ทธ ์ˆ˜์ •** - ์•ˆ์ •์„ฑ๊ณผ ์‹ ๋ขฐ์„ฑ ๊ฐœ์„ ์— ๋„์›€ +- ๐Ÿ› **๋ฒ„๊ทธ ์ˆ˜์ •** - ์•ˆ์ •์„ฑ๊ณผ ์‹ ๋ขฐ์„ฑ ๊ฐœ์„  - ๐Ÿ“š **๋ฌธ์„œํ™”** - ๊ฐ€์ด๋“œ, ์˜ˆ์ œ, ๋ฒˆ์—ญ ๊ฐœ์„  - ๐Ÿงช **ํ…Œ์ŠคํŠธ** - ํ…Œ์ŠคํŠธ ์ปค๋ฒ„๋ฆฌ์ง€ ํ™•์žฅ ๋ฐ ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ ์ถ”๊ฐ€ - ๐Ÿ’ก **๊ธฐ๋Šฅ** - ์ƒˆ๋กœ์šด CLI ๊ธฐ๋Šฅ ์ œ์•ˆ ๋ฐ ๊ตฌํ˜„ ### ๊ธฐ์—ฌ ์‹œ์ž‘ํ•˜๊ธฐ -FastAPI-fastkit์— ๊ธฐ์—ฌ๋ฅผ ์‹œ์ž‘ํ•˜๋ ค๋ฉด ๋‹ค์Œ์˜ ์ข…ํ•ฉ ๊ฐ€์ด๋“œ๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”: +FastAPI-fastkit ์— ๊ธฐ์—ฌ๋ฅผ ์‹œ์ž‘ํ•˜๋ ค๋ฉด ๋‹ค์Œ์˜ ์ข…ํ•ฉ ๊ฐ€์ด๋“œ๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”: - **[๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์„ค์ •](contributing/development-setup.md)** - ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์„ค์ •์— ๋Œ€ํ•œ ์™„์ „ํ•œ ๊ฐ€์ด๋“œ - **[์ฝ”๋“œ ๊ฐ€์ด๋“œ๋ผ์ธ](contributing/code-guidelines.md)** - ์ฝ”๋”ฉ ํ‘œ์ค€ ๋ฐ ๋ชจ๋ฒ” ์‚ฌ๋ก€ @@ -529,29 +524,29 @@ FastAPI-fastkit์— ๊ธฐ์—ฌ๋ฅผ ์‹œ์ž‘ํ•˜๋ ค๋ฉด ๋‹ค์Œ์˜ ์ข…ํ•ฉ ๊ฐ€์ด๋“œ๋ฅผ ์ฐธ - **[CODE_OF_CONDUCT.md](https://github.com/bnbong/FastAPI-fastkit/blob/main/CODE_OF_CONDUCT.md)** - ํ”„๋กœ์ ํŠธ ์›์น™๊ณผ ์ปค๋ฎค๋‹ˆํ‹ฐ ๊ธฐ์ค€ - **[SECURITY.md](https://github.com/bnbong/FastAPI-fastkit/blob/main/SECURITY.md)** - ๋ณด์•ˆ ์ง€์นจ ๋ฐ ์‹ ๊ณ  ๋ฐฉ๋ฒ• -## FastAPI-fastkit์˜ ์˜์˜ +## FastAPI-fastkit ์˜ ์˜์˜ -FastAPI-fastkit์€ Python๊ณผ FastAPI ์‹ ๊ทœ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋น ๋ฅด๊ณ  ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์Šคํƒ€ํ„ฐ ํ‚คํŠธ๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•ฉ๋‹ˆ๋‹ค. +FastAPI-fastkit ์€ Python ๊ณผ FastAPI ์‹ ๊ทœ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋น ๋ฅด๊ณ  ์‚ฌ์šฉํ•˜๊ธฐ ์‰ฌ์šด ์Šคํƒ€ํ„ฐ ํ‚คํŠธ๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•ฉ๋‹ˆ๋‹ค. -์ด ์•„์ด๋””์–ด๋Š” FastAPI ์ž…๋ฌธ์ž๊ฐ€ ์ฒ˜์Œ๋ถ€ํ„ฐ ํ•™์Šตํ•˜๋„๋ก ๋•๊ธฐ ์œ„ํ•œ ์ทจ์ง€๋กœ ์‹œ์ž‘๋˜์—ˆ์œผ๋ฉฐ, [FastAPI 0.111.0 ๋ฒ„์ „ ์—…๋ฐ์ดํŠธ](https://github.com/fastapi/fastapi/releases/tag/0.111.0)์—์„œ ์ถ”๊ฐ€๋œ FastAPI-cli ํŒจํ‚ค์ง€์˜ ํ”„๋กœ๋•์…˜์  ์˜์˜์™€๋„ ๋งฅ๋ฝ์„ ๊ฐ™์ดํ•ฉ๋‹ˆ๋‹ค. +์ด ์•„์ด๋””์–ด๋Š” FastAPI ์ž…๋ฌธ์ž๊ฐ€ ์ฒ˜์Œ๋ถ€ํ„ฐ ํ•™์Šตํ•  ์ˆ˜ ์žˆ๋„๋ก ๋•๊ธฐ ์œ„ํ•œ ์ทจ์ง€์—์„œ ์‹œ์ž‘๋˜์—ˆ์œผ๋ฉฐ, [FastAPI 0.111.0 ๋ฒ„์ „ ์—…๋ฐ์ดํŠธ](https://github.com/fastapi/fastapi/releases/tag/0.111.0) ์—์„œ ์ถ”๊ฐ€๋œ FastAPI-cli ํŒจํ‚ค์ง€์˜ ํ”„๋กœ๋•์…˜์  ์˜์˜์™€๋„ ๋งฅ๋ฝ์„ ๊ฐ™์ดํ•ฉ๋‹ˆ๋‹ค. -์˜ค๋žซ๋™์•ˆ FastAPI๋ฅผ ์‚ฌ์šฉํ•ด ์˜ค๋ฉฐ ์‚ฌ๋ž‘ํ•ด์˜จ ์‚ฌ๋žŒ์œผ๋กœ์„œ, FastAPI ๊ฐœ๋ฐœ์ž [tiangolo](https://github.com/tiangolo)๊ฐ€ ๋ฐํžŒ [๋ฉ‹์ง„ ๋™๊ธฐ](https://github.com/fastapi/fastapi/pull/11522#issuecomment-2264639417)๋ฅผ ์‹คํ˜„ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋  ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค. +์˜ค๋žซ๋™์•ˆ FastAPI ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์‚ฌ๋ž‘ํ•ด ์˜จ ์‚ฌ๋žŒ์œผ๋กœ์„œ, FastAPI ๊ฐœ๋ฐœ์ž [tiangolo](https://github.com/tiangolo) ๊ฐ€ ๋ฐํžŒ [๋ฉ‹์ง„ ๋™๊ธฐ](https://github.com/fastapi/fastapi/pull/11522#issuecomment-2264639417) ๋ฅผ ์‹คํ˜„ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋  ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค. -FastAPI-fastkit์€ ๋‹ค์Œ์„ ์ œ๊ณตํ•จ์œผ๋กœ์จ ์‹œ์ž‘ ๋‹จ๊ณ„์™€ ํ”„๋กœ๋•์…˜ ์ค€๋น„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ตฌ์ถ• ์‚ฌ์ด์˜ ๊ฐ„๊ทน์„ ๋ฉ”์›๋‹ˆ๋‹ค: +FastAPI-fastkit ์€ ๋‹ค์Œ์„ ์ œ๊ณตํ•จ์œผ๋กœ์จ ์‹œ์ž‘ ๋‹จ๊ณ„์™€ ํ”„๋กœ๋•์…˜ ์ค€๋น„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ตฌ์ถ• ์‚ฌ์ด์˜ ๊ฐ„๊ทน์„ ๋ฉ”์›๋‹ˆ๋‹ค: -- **์ฆ‰๊ฐ์ ์ธ ์ƒ์‚ฐ์„ฑ**: ์ดˆ๊ธฐ ์„ค์ •์˜ ๋ณต์žก์„ฑ์— ์••๋„๋  ์ˆ˜ ์žˆ๋Š” ์‹ ๊ทœ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ฆ‰์‹œ ์ƒ์‚ฐ์„ฑ์„ ์ œ๊ณต -- **๋ชจ๋ฒ” ์‚ฌ๋ก€**: ๋ชจ๋“  ํ…œํ”Œ๋ฆฟ์— ๋ชจ๋ฒ” ์‚ฌ๋ก€๊ฐ€ ๋‚ด์žฅ๋˜์–ด ์˜ฌ๋ฐ”๋ฅธ FastAPI ํŒจํ„ด ํ•™์Šต์— ๋„์›€ -- **ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ๊ธฐ๋ฐ˜**: ์ดˆ๋ณด์ž์—์„œ ์ „๋ฌธ๊ฐ€๋กœ ์„ฑ์žฅํ•จ์— ๋”ฐ๋ผ ํ•จ๊ป˜ ํ™•์žฅ๋˜๋Š” ๊ธฐ๋ฐ˜ -- **์ปค๋ฎค๋‹ˆํ‹ฐ ์ฃผ๋„ ํ…œํ”Œ๋ฆฟ**: ์‹ค์ œ FastAPI ์‚ฌ์šฉ ํŒจํ„ด์„ ๋ฐ˜์˜ํ•œ ์ปค๋ฎค๋‹ˆํ‹ฐ ์ค‘์‹ฌ ํ…œํ”Œ๋ฆฟ +- **์ฆ‰๊ฐ์ ์ธ ์ƒ์‚ฐ์„ฑ** โ€” ์ดˆ๊ธฐ ์„ค์ •์˜ ๋ณต์žก์„ฑ์— ์••๋„๋  ์ˆ˜ ์žˆ๋Š” ์‹ ๊ทœ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ฆ‰์‹œ ์ƒ์‚ฐ์„ฑ์„ ์ œ๊ณต +- **๋ชจ๋ฒ” ์‚ฌ๋ก€** โ€” ๋ชจ๋“  ํ…œํ”Œ๋ฆฟ์— ๋ชจ๋ฒ” ์‚ฌ๋ก€๊ฐ€ ๋‚ด์žฅ๋˜์–ด ์žˆ์–ด, ์‚ฌ์šฉ์ž๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ FastAPI ํŒจํ„ด์„ ํ•™์Šตํ•˜๋Š” ๋ฐ ๋„์›€ +- **ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ๊ธฐ๋ฐ˜** โ€” ์ดˆ๋ณด์ž์—์„œ ์ „๋ฌธ๊ฐ€๋กœ ์„ฑ์žฅํ•จ์— ๋”ฐ๋ผ ํ•จ๊ป˜ ํ™•์žฅ๋˜๋Š” ๊ธฐ๋ฐ˜ +- **์ปค๋ฎค๋‹ˆํ‹ฐ ์ฃผ๋„ ํ…œํ”Œ๋ฆฟ** โ€” ์‹ค์ œ FastAPI ์‚ฌ์šฉ ํŒจํ„ด์„ ๋ฐ˜์˜ํ•œ ์ปค๋ฎค๋‹ˆํ‹ฐ ์ค‘์‹ฌ ํ…œํ”Œ๋ฆฟ ## ๋‹ค์Œ ๋‹จ๊ณ„ -FastAPI-fastkit์„ ์‹œ์ž‘ํ•  ์ค€๋น„๊ฐ€ ๋˜์…จ๋‚˜์š”? ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ผ ์ง„ํ–‰ํ•˜์„ธ์š”: +FastAPI-fastkit ์„ ์‹œ์ž‘ํ•  ์ค€๋น„๊ฐ€ ๋˜์…จ๋‹ค๋ฉด, ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ผ ์ง„ํ–‰ํ•˜์„ธ์š”: ### ๐Ÿš€ ๋น ๋ฅธ ์‹œ์ž‘ 1. **[์„ค์น˜](user-guide/installation.md)**: FastAPI-fastkit ์„ค์น˜ -2. **[ํ€ต ์Šคํƒ€ํŠธ](user-guide/quick-start.md)**: 5๋ถ„ ๋งŒ์— ์ฒซ ํ”„๋กœ์ ํŠธ ๋งŒ๋“ค๊ธฐ +2. **[ํ€ต ์Šคํƒ€ํŠธ](user-guide/quick-start.md)**: 5 ๋ถ„ ์•ˆ์— ์ฒซ ํ”„๋กœ์ ํŠธ ๋งŒ๋“ค๊ธฐ 3. **[์ž…๋ฌธ ํŠœํ† ๋ฆฌ์–ผ](tutorial/getting-started.md)**: ๋‹จ๊ณ„๋ณ„ ์ƒ์„ธ ํŠœํ† ๋ฆฌ์–ผ ### ๐Ÿ“š ์‹ฌํ™” ํ•™์Šต @@ -560,15 +555,15 @@ FastAPI-fastkit์„ ์‹œ์ž‘ํ•  ์ค€๋น„๊ฐ€ ๋˜์…จ๋‚˜์š”? ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ผ ์ง„ - **[๋ผ์šฐํŠธ ์ถ”๊ฐ€](user-guide/adding-routes.md)**: ํ”„๋กœ์ ํŠธ์— API ์—”๋“œํฌ์ธํŠธ ์ถ”๊ฐ€ - **[ํ…œํ”Œ๋ฆฟ ์‚ฌ์šฉ](user-guide/using-templates.md)**: ์‚ฌ์ „ ๊ตฌ์ถ•๋œ ํ”„๋กœ์ ํŠธ ํ…œํ”Œ๋ฆฟ ์‚ฌ์šฉ -### ๐Ÿ› ๏ธ ๊ธฐ์—ฌํ•˜๊ธฐ +### ๐Ÿ› ๏ธ ๊ธฐ์—ฌ -FastAPI-fastkit์— ๊ธฐ์—ฌํ•˜๊ณ  ์‹ถ์œผ์‹ ๊ฐ€์š”? +FastAPI-fastkit ์— ๊ธฐ์—ฌํ•˜๊ณ  ์‹ถ์œผ์‹ ๊ฐ€์š”? - **[๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์„ค์ •](contributing/development-setup.md)**: ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์„ค์ • - **[์ฝ”๋“œ ๊ฐ€์ด๋“œ๋ผ์ธ](contributing/code-guidelines.md)**: ์ฝ”๋”ฉ ํ‘œ์ค€ ๋ฐ ๋ชจ๋ฒ” ์‚ฌ๋ก€ ์ค€์ˆ˜ - **[๊ธฐ์—ฌ ๊ฐ€์ด๋“œ๋ผ์ธ](https://github.com/bnbong/FastAPI-fastkit/blob/main/CONTRIBUTING.md)**: ์ข…ํ•ฉ ๊ธฐ์—ฌ ๊ฐ€์ด๋“œ -### ๐Ÿ” ์ฐธ๊ณ  ์ž๋ฃŒ +### ๐Ÿ” ๋ ˆํผ๋Ÿฐ์Šค - **[CLI ๋ ˆํผ๋Ÿฐ์Šค](user-guide/cli-reference.md)**: ์ „์ฒด CLI ๋ช…๋ น ๋ ˆํผ๋Ÿฐ์Šค - **[ํ…œํ”Œ๋ฆฟ ํ’ˆ์งˆ ๋ณด์ฆ](reference/template-quality-assurance.md)**: ์ž๋™ํ™”๋œ ํ…Œ์ŠคํŠธ ๋ฐ ํ’ˆ์งˆ ๊ธฐ์ค€ @@ -577,4 +572,4 @@ FastAPI-fastkit์— ๊ธฐ์—ฌํ•˜๊ณ  ์‹ถ์œผ์‹ ๊ฐ€์š”? ## ๋ผ์ด์„ ์Šค -์ด ํ”„๋กœ์ ํŠธ๋Š” MIT ๋ผ์ด์„ ์Šค ํ•˜์— ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค - ์ž์„ธํ•œ ๋‚ด์šฉ์€ [LICENSE](https://github.com/bnbong/FastAPI-fastkit/blob/main/LICENSE) ํŒŒ์ผ์„ ์ฐธ์กฐํ•˜์„ธ์š”. +์ด ํ”„๋กœ์ ํŠธ๋Š” MIT ๋ผ์ด์„ ์Šค ํ•˜์— ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค โ€” ์ž์„ธํ•œ ๋‚ด์šฉ์€ [LICENSE](https://github.com/bnbong/FastAPI-fastkit/blob/main/LICENSE) ํŒŒ์ผ์„ ์ฐธ๊ณ ํ•˜์„ธ์š”. diff --git a/docs/ko/reference/translation-status.md b/docs/ko/reference/translation-status.md new file mode 100644 index 0000000..f4acd56 --- /dev/null +++ b/docs/ko/reference/translation-status.md @@ -0,0 +1,76 @@ +# ๋ฒˆ์—ญ ํ˜„ํ™ฉ + +FastAPI-fastkit ๋ฌธ์„œ๋Š” ์—ฌ๋Ÿฌ ์–ธ์–ด๋กœ ๋นŒ๋“œ๋˜์ง€๋งŒ, ๊ทธ ๋ฒˆ์—ญ๋“ค์ด **๋ชจ๋‘ ๋™์ผํ•œ ์ˆ˜์ค€์œผ๋กœ ์™„๋ฃŒ๋œ ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค**. ์ด ํŽ˜์ด์ง€๋Š” ์–ด๋””๊นŒ์ง€ ๋ฒˆ์—ญ๋๋Š”์ง€, ๋ฒˆ์—ญ๋˜์ง€ ์•Š์€ ํŽ˜์ด์ง€๊ฐ€ ์–ด๋–ป๊ฒŒ ํ‘œ์‹œ๋˜๋Š”์ง€, ๊ทธ๋ฆฌ๊ณ  ๋ฒˆ์—ญ์— ์–ด๋–ป๊ฒŒ ๊ธฐ์—ฌํ•  ์ˆ˜ ์žˆ๋Š”์ง€์— ๋Œ€ํ•œ ๋‹จ์ผ ์ •๋ณด ์†Œ์Šค์ž…๋‹ˆ๋‹ค. + +## ์›๋ณธ (Source of truth) + +> **์˜์–ด (`en`) ๊ฐ€ ์›๋ณธ์ž…๋‹ˆ๋‹ค.** ๋ฌธ์„œ์— ๊ธฐ์ˆ ๋˜๋Š” ๋ชจ๋“  ์ œํ’ˆยทCLIยทAPI ๋™์ž‘์€ ์˜์–ด ํŒŒ์ผ์„ ๊ธฐ์ค€์œผ๋กœ ๋จผ์ € ์ž‘์„ฑ๋ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์–ธ์–ด๋“ค์€ ๊ทธ ์˜์–ด ์›๋ณธ์˜ ๋ฒˆ์—ญ๋ณธ์ด๋ฉฐ, ๋ฆด๋ฆฌ์Šค ์‹œ์ ๋ณด๋‹ค ๋’ค์ฒ˜์ ธ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. +> +> ๋ฒˆ์—ญ๋œ ํŽ˜์ด์ง€๊ฐ€ ์˜์–ด ํŽ˜์ด์ง€์™€ ๋‹ค๋ฅด๋ฉด, ๋ฒˆ์—ญ์ด ๊ฐฑ์‹ ๋  ๋•Œ๊นŒ์ง€ **์˜์–ด ํŽ˜์ด์ง€๋ฅผ ์‹ ๋ขฐํ•˜์„ธ์š”**. + +์˜์–ด ๋ฌธ์„œ๋Š” [`docs/en/`](https://github.com/bnbong/FastAPI-fastkit/tree/main/docs/en) ์•„๋ž˜์— ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ๋ฐ–์˜ ๋ชจ๋“  ์–ธ์–ด (`docs/ko/`, `docs/ja/`, ...) ๋Š” ๋ฒˆ์—ญ ๋Œ€์ƒ์ž…๋‹ˆ๋‹ค. + +## ์–ธ์–ด๋ณ„ ๋ฒˆ์—ญ ์ง„ํ–‰ ์ƒํ™ฉ + +์•„๋ž˜ ์ˆซ์ž๋Š” ๊ฐ ์–ธ์–ด ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์‹ค์ œ๋กœ ์กด์žฌํ•˜๋Š” ๋งˆํฌ๋‹ค์šด ํŽ˜์ด์ง€ ์ˆ˜๋ฅผ ์˜์–ด ์›๋ณธ ๋Œ€๋น„๋กœ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ์–ธ์–ด ์„ ํƒ๊ธฐ์— ๋ณด์ด๋Š” ์–ธ์–ด ๋ชฉ๋ก์ด ์•„๋‹ˆ๋ผ, ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ์‹ค์ œ ์ฒดํฌ์ธ๋œ ํŒŒ์ผ ์ˆ˜๊ฐ€ ๊ธฐ์ค€์ž…๋‹ˆ๋‹ค (๋‹ค์Œ ์„น์…˜์—์„œ ๊ทธ ์ฐจ์ด๋ฅผ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค). + +| ์–ธ์–ด | ์ƒํƒœ | ๋งˆํฌ๋‹ค์šด ํŽ˜์ด์ง€ | ๋น„๊ณ  | +|---|---|---:|---| +| ๐Ÿ‡ฌ๐Ÿ‡ง English (`en`) | โœ… ์›๋ณธ | 26 / 26 | ๊ถŒ์œ„ ์žˆ๋Š” ์›๋ณธ. | +| ๐Ÿ‡ฐ๐Ÿ‡ท ํ•œ๊ตญ์–ด (`ko`) | ๐ŸŸก ๋ถ€๋ถ„ ๋ฒˆ์—ญ | 8 / 26 | `index.md`, `changelog.md`, `reference/translation-status.md`, ๊ทธ๋ฆฌ๊ณ  user-guide 5๊ฐœ ํŽ˜์ด์ง€. ๋‚˜๋จธ์ง€ ํŽ˜์ด์ง€๋Š” ์˜์–ด ์›๋ฌธ์œผ๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. | +| ๐Ÿ‡ฏ๐Ÿ‡ต ์ผ๋ณธ์–ด (`ja`) | ๐Ÿ”ด ์Šค์ผˆ๋ ˆํ†ค | 0 / 26 | ๋นŒ๋“œ ๋Œ€์ƒ๋งŒ ์„ค์ •. ๋ชจ๋“  ํŽ˜์ด์ง€๋Š” ์˜์–ด ์›๋ฌธ์œผ๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. | +| ๐Ÿ‡จ๐Ÿ‡ณ ์ค‘๊ตญ์–ด (`zh`) | ๐Ÿ”ด ์Šค์ผˆ๋ ˆํ†ค | 0 / 26 | ๋นŒ๋“œ ๋Œ€์ƒ๋งŒ ์„ค์ •. ๋ชจ๋“  ํŽ˜์ด์ง€๋Š” ์˜์–ด ์›๋ฌธ์œผ๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. | +| ๐Ÿ‡ช๐Ÿ‡ธ ์ŠคํŽ˜์ธ์–ด (`es`) | ๐Ÿ”ด ์Šค์ผˆ๋ ˆํ†ค | 0 / 26 | ๋นŒ๋“œ ๋Œ€์ƒ๋งŒ ์„ค์ •. ๋ชจ๋“  ํŽ˜์ด์ง€๋Š” ์˜์–ด ์›๋ฌธ์œผ๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. | +| ๐Ÿ‡ซ๐Ÿ‡ท ํ”„๋ž‘์Šค์–ด (`fr`) | ๐Ÿ”ด ์Šค์ผˆ๋ ˆํ†ค | 0 / 26 | ๋นŒ๋“œ ๋Œ€์ƒ๋งŒ ์„ค์ •. ๋ชจ๋“  ํŽ˜์ด์ง€๋Š” ์˜์–ด ์›๋ฌธ์œผ๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. | +| ๐Ÿ‡ฉ๐Ÿ‡ช ๋…์ผ์–ด (`de`) | ๐Ÿ”ด ์Šค์ผˆ๋ ˆํ†ค | 0 / 26 | ๋นŒ๋“œ ๋Œ€์ƒ๋งŒ ์„ค์ •. ๋ชจ๋“  ํŽ˜์ด์ง€๋Š” ์˜์–ด ์›๋ฌธ์œผ๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. | + +*์Šค๋ƒ…์ƒท ๊ฒ€์ฆ ์‹œ์ : 2026-05-06; ko ํ–‰์€ ํ˜„์žฌ ๋ธŒ๋žœ์น˜ ๊ธฐ์ค€์œผ๋กœ ๋‹ค์‹œ ์ง‘๊ณ„๋จ.* ์ด ํ‘œ๋Š” ์ˆ˜๋™์œผ๋กœ ๊ด€๋ฆฌ๋ฉ๋‹ˆ๋‹ค. ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๋ฃจํŠธ์—์„œ ํ˜„์žฌ ์ƒํƒœ๋ฅผ ๋‹ค์‹œ ์„ธ๊ณ  ์‹ถ๋‹ค๋ฉด ๋‹ค์Œ์„ ์‹คํ–‰ํ•˜์„ธ์š”: + +```console +$ for loc in en ko ja zh es fr de; do + echo "$loc: $(find docs/$loc -name '*.md' 2>/dev/null | wc -l | tr -d ' ')" + done +``` + +๋‹ค์‹œ ์„ผ ๊ฒฐ๊ณผ๊ฐ€ ํ‘œ์™€ ๋‹ค๋ฅด๋‹ค๋ฉด ํ‘œ๊ฐ€ ์˜ค๋ž˜๋œ ๊ฒƒ์ด๋ฏ€๋กœ, ์ง์ ‘ ๊ฐฑ์‹ ํ•˜๊ฑฐ๋‚˜ PR / ์ด์Šˆ๋กœ ์•Œ๋ ค์ฃผ์„ธ์š”. + +๋ฒ”๋ก€: + +- โœ… **์›๋ณธ (Source of truth)** โ€” ์šฐ๋ฆฌ๊ฐ€ ๊ธฐ์ค€์œผ๋กœ ์ž‘์„ฑํ•˜๋Š” ์–ธ์–ด. +- ๐ŸŸก **๋ถ€๋ถ„ ๋ฒˆ์—ญ (Partial)** โ€” ์ผ๋ถ€ ํŽ˜์ด์ง€๋งŒ ๋ฒˆ์—ญ๋จ. ๋ฒˆ์—ญ๋˜์ง€ ์•Š์€ ํŽ˜์ด์ง€๋Š” ์˜์–ด ์›๋ฌธ์œผ๋กœ ๋Œ€์ฒด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. +- ๐Ÿ”ด **์Šค์ผˆ๋ ˆํ†ค (Skeleton)** โ€” ์–ธ์–ด ์„ ํƒ๊ธฐ์—๋Š” ๋…ธ์ถœ๋˜์ง€๋งŒ, ๋ฒˆ์—ญ๋œ ํŽ˜์ด์ง€๊ฐ€ ์•„์ง ์ฒดํฌ์ธ๋˜์ง€ ์•Š์€ ์ƒํƒœ. ๋ชจ๋“  ํŽ˜์ด์ง€๊ฐ€ ๋ฒˆ์—ญ๋œ nav ๋ผ๋ฒจ ์•„๋ž˜์—์„œ ์˜์–ด ์›๋ฌธ์œผ๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. + +## ๋Œ€์ฒด ํ‘œ์‹œ (fallback) ๋™์ž‘ ๋ฐฉ์‹ + +์ด ๋ฌธ์„œ ์‚ฌ์ดํŠธ๋Š” [`mkdocs-static-i18n`](https://github.com/ultrabug/mkdocs-static-i18n) ์„ `fallback_to_default: true` ์˜ต์…˜์œผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์˜๋ฏธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค: + +- ๊ฐ ๋ฒˆ์—ญ ์–ธ์–ด์— ๋Œ€ํ•ด MkDocs ๋Š” ํ•ด๋‹น ์–ธ์–ด ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์‹ค์ œ๋กœ ์กด์žฌํ•˜๋Š” ํŽ˜์ด์ง€๋งŒ ๋นŒ๋“œํ•ด์„œ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค. +- ์–ด๋–ค ํŽ˜์ด์ง€๊ฐ€ ๊ทธ ์–ธ์–ด์— **์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฉด**, ๋นŒ๋“œ๋Š” ๊ทธ ํŽ˜์ด์ง€๋ฅผ ์˜์–ด ๋ฒ„์ „์œผ๋กœ ๋Œ€์ฒด ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. +- ์‚ฌ์ดํŠธ ์ „์ฒด ์–ธ์–ด ์„ ํƒ๊ธฐ๋Š” ๊ฐ ์–ธ์–ด๊ฐ€ ๋ณด์œ ํ•œ ํŽ˜์ด์ง€ ์ˆ˜์™€ ๋ฌด๊ด€ํ•˜๊ฒŒ ํ•ญ์ƒ ์„ค์ •๋œ ๋ชจ๋“  ์–ธ์–ด๋ฅผ ๋…ธ์ถœํ•ฉ๋‹ˆ๋‹ค โ€” ์–ด์ฐจํ”ผ ๋นŒ๋“œ๊ฐ€ ๋ชจ๋“  ํŽ˜์ด์ง€์— ๋„๋‹ฌ ๊ฐ€๋Šฅํ•œ URL ์„ ๋งŒ๋“ค์–ด ์ฃผ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค (ํ•„์š” ์‹œ ์˜์–ด๋กœ ๋Œ€์ฒด). + +๋”ฐ๋ผ์„œ ์–ธ์–ด ์„ ํƒ๊ธฐ์— ๋ณด์ด๋Š” ๐Ÿ”ด ์Šค์ผˆ๋ ˆํ†ค ํ•ญ๋ชฉ์€ **๋ฒˆ์—ญ์ด ์™„๋ฃŒ๋๋‹ค๋Š” ์•ฝ์†์ด ์•„๋‹ˆ๋ผ**, ๊ทธ ์–ธ์–ด์˜ ๋นŒ๋“œ ๋Œ€์ƒ์ด ์„ค์ •๋˜์–ด ์žˆ๋‹ค๋Š” ๋œป์ผ ๋ฟ์ž…๋‹ˆ๋‹ค. ์™ธ๋ถ€ ๊ธฐ์—ฌ์ž๊ฐ€ ํ•œ ๋ฒˆ์— ํ•œ ํŽ˜์ด์ง€์”ฉ ์ ์ง„์ ์œผ๋กœ ๋ฒˆ์—ญํ•ด๋„ ๋งํฌ ๊ทธ๋ž˜ํ”„๊ฐ€ ๊นจ์ง€์ง€ ์•Š๋„๋ก ์˜๋„๋œ ๋™์ž‘์ด์ง€๋งŒ, ๊ฒฐ๊ณผ์ ์œผ๋กœ ์–ธ์–ด ์„ ํƒ๊ธฐ๋Š” ์‹ค์ œ ๋ฒˆ์—ญ ์ •๋„๋ณด๋‹ค ๋” ์™„์„ฑ๋œ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. + +## ๋ฌธ์„œ ์‚ฌ์ดํŠธ๋ฅผ ๋ณด๋Š” ๋ฐฉ๋ฒ• + +- **๊ฐ€์žฅ ์ •ํ™•ํ•˜๊ณ  ์ตœ์‹ ์˜ ์ •๋ณด**๋ฅผ ๋ณด๊ณ  ์‹ถ๋‹ค๋ฉด ํ•ญ์ƒ ์˜์–ด๋ฅผ ๊ธฐ๋ณธ์œผ๋กœ ์‚ฌ์šฉํ•˜์„ธ์š”. +- **๋ฒˆ์—ญ๋œ ์–ธ์–ด**๋Š” ์ด ํŽ˜์ด์ง€์—์„œ ํ•ด๋‹น ์–ธ์–ด์˜ ์ƒํƒœ๋ฅผ ๋จผ์ € ํ™•์ธํ•œ ๋’ค ์‚ฌ์šฉํ•˜์„ธ์š”. ๐ŸŸก ๋˜๋Š” ๐Ÿ”ด ์ƒํƒœ์ด๊ณ  ์•„์ง ๋ฒˆ์—ญ๋˜์ง€ ์•Š์€ ์ฃผ์ œ์— ๋„๋‹ฌํ•˜๋ฉด, ๋ฒˆ์—ญ๋œ nav ๋ผ๋ฒจ ์•„๋ž˜์—์„œ ์˜์–ด ์›๋ฌธ ๋Œ€์ฒด ํŽ˜์ด์ง€๋ฅผ ๋ณด๊ณ  ์žˆ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. + +## ๊ธฐ์—ฌ ๋ฐฉ๋ฒ• + +ํŽ˜์ด์ง€๋ฅผ ์ƒˆ๋กœ ๋ฒˆ์—ญํ•˜๊ฑฐ๋‚˜ ๊ธฐ์กด ๋ฒˆ์—ญ์„ ์ˆ˜์ •ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด: + +1. ์ž‘์—… ํ๋ฆ„ยท๋„๊ตฌยท์Šคํƒ€์ผ ๊ทœ์•ฝ์€ [Translation Guide](../contributing/translation-guide.md) ๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”. +2. ํ•œ ๋ฒˆ์— ํ•œ ํŽ˜์ด์ง€์”ฉ ๋ฒˆ์—ญํ•˜์„ธ์š” โ€” ๋ถ€๋ถ„ ๋ฒˆ์—ญ๋„ ํ™˜์˜ํ•˜๋ฉฐ ์ ์ง„์ ์œผ๋กœ ๋จธ์ง€๋ฉ๋‹ˆ๋‹ค. +3. `docs//` ์•„๋ž˜์— ์ƒˆ ํŒŒ์ผ์„ ์ถ”๊ฐ€ํ•˜๋Š” PR ์„ ์—ฌ์„ธ์š”. MkDocs ๊ฐ€ ์ž๋™ ์ธ์‹ํ•˜๋„๋ก ์˜์–ด ์›๋ณธ๊ณผ ํŒŒ์ผ ์ด๋ฆ„์„ ๋™์ผํ•˜๊ฒŒ ์œ ์ง€ํ•˜์„ธ์š”. +4. ์ƒˆ ๋ฒˆ์—ญ ์ง„ํ–‰ ์ƒํ™ฉ์„ ๋ฐ˜์˜ํ•˜๋„๋ก ์ด ํŽ˜์ด์ง€์˜ ํ‘œ๋ฅผ ๊ฐฑ์‹ ํ•˜์„ธ์š” (ํŽ˜์ด์ง€ ์ƒ๋‹จ์˜ ์žฌ์ง‘๊ณ„ ์Šค๋‹ˆํŽซ ์‚ฌ์šฉ). ๊ทธ๋ฆฌ๊ณ  ๋งˆ์ง€๋ง‰์œผ๋กœ ๊ฒ€์ฆํ•œ ์‹œ์ ์„ ์•Œ ์ˆ˜ ์žˆ๋„๋ก "์Šค๋ƒ…์ƒท ๊ฒ€์ฆ ์‹œ์ " ๋‚ ์งœ๋„ ํ•จ๊ป˜ ๊ฐฑ์‹ ํ•˜์„ธ์š”. + +๋ฒˆ์—ญ ํŽ˜์ด์ง€๊ฐ€ ์˜์–ด ์›๋ณธ๊ณผ ์–ด๊ธ‹๋‚˜ ์žˆ๋‹ค๋Š” ๋ฒ„๊ทธ ์‹ ๊ณ ๋„ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค โ€” ๋ถ„๋ฅ˜๊ฐ€ ์‰ฝ๋„๋ก ์˜์–ด ํŽ˜์ด์ง€์™€ ๋ฒˆ์—ญ ํŽ˜์ด์ง€๋ฅผ ํ•จ๊ป˜ ๋งํฌํ•ด ์ฃผ์„ธ์š”. + +## ๐Ÿ”ด ์Šค์ผˆ๋ ˆํ†ค ์–ธ์–ด๋ฅผ ๊ทธ๋Œ€๋กœ ๋‘๋Š” ์ด์œ  + +๋‘ ๊ฐ€์ง€ ์ด์œ ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค: + +1. **์˜ˆ์ธก ๊ฐ€๋Šฅํ•œ URL ๊ณต๊ฐ„.** ๊ฐ ์–ธ์–ด๋Š” ์ด๋ฏธ ์ž์‹ ์˜ `//` ํ•˜์œ„ ํŠธ๋ฆฌ์— ๋„๋‹ฌ ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ, ๋ฒˆ์—ญ๋œ ํŽ˜์ด์ง€๊ฐ€ ๋“ค์–ด์˜ค๋Š” ์‹œ์ ์— ์ฒซ๋‚ ๋ถ€ํ„ฐ ์•ˆ์ •์ ์ธ ๋งํฌ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค โ€” ์ด ๊ฐ€์ด๋“œ์— ๊ฒŒ์‹œ๋œ ๋งํฌ๋“ค๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค. +2. **๊ธฐ์—ฌ์ž ์ง„์ž… ์žฅ๋ฒฝ ๋‚ฎ์ถ”๊ธฐ.** ํ•œ ํŽ˜์ด์ง€๋ฅผ ๋ฒˆ์—ญํ•˜๋Š” ๊ธฐ์—ฌ์ž๊ฐ€ ์ƒˆ ์–ธ์–ด ๋นŒ๋“œ๋ฅผ MkDocs ์„ค์ •์— ์ถ”๊ฐ€ํ•˜๋Š” ์ž‘์—…์„ ๊ฐ™์ด ํ•  ํ•„์š” ์—†์ด, ๊ทธ๋ƒฅ ํŒŒ์ผ์„ ๋–จ์–ด๋œจ๋ฆฌ๊ธฐ๋งŒ ํ•˜๋ฉด ๋˜๋„๋ก. + +๐Ÿ”ด ์Šค์ผˆ๋ ˆํ†ค ์ƒํƒœ๋กœ ์˜ค๋žซ๋™์•ˆ ๊ธฐ์—ฌ ํ™œ๋™์ด ์—†๋Š” ์–ธ์–ด๊ฐ€ ์žˆ๋‹ค๋ฉด, ๋นŒ๋“œ ๋Œ€์ƒ์„ ๊ณ„์† ํ™œ์„ฑํ™”ํ•ด ๋‘˜์ง€ ๋‹ค์‹œ ๊ฒ€ํ† ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ๊ฒฐ์ •์€ ๋ณ„๋„๋กœ ์ถ”์ ๋˜๋ฉฐ, ์ด ํ˜„ํ™ฉ ํŽ˜์ด์ง€๊ฐ€ ์กฐ์šฉํžˆ ๋ฐ”๊พธ๋Š” ์ผ์€ **์—†์Šต๋‹ˆ๋‹ค**. diff --git a/docs/ko/user-guide/choosing-a-starter.md b/docs/ko/user-guide/choosing-a-starter.md new file mode 100644 index 0000000..8e3bcfd --- /dev/null +++ b/docs/ko/user-guide/choosing-a-starter.md @@ -0,0 +1,145 @@ +# ์–ด๋–ค ์Šคํƒ€ํ„ฐ๋ฅผ ์„ ํƒํ•ด์•ผ ํ• ๊นŒ? + +FastAPI-fastkit ์€ ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•˜๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด ํŽ˜์ด์ง€๋Š” ์‹ ๊ทœ ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•œ **๊ฒฐ์ • ๊ฐ€์ด๋“œ**์ž…๋‹ˆ๋‹ค: ์—ฌ๊ธฐ์„œ ๊ฒฝ๋กœ๋ฅผ ์ •ํ•œ ๋‹ค์Œ, ์‹ค์ œ ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ์€ [ํ€ต ์Šคํƒ€ํŠธ](quick-start.md) ๋กœ ์ด๋™ํ•ด์„œ ์ง„ํ–‰ํ•˜์„ธ์š”. + +ํ™•์‹ ์ด ์—†๋‹ค๋ฉด, ๋‹ต์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค: + +> **`fastkit init --interactive` ๋กœ ์‹œ์ž‘ํ•ด์„œ `domain-starter` ํ”„๋ฆฌ์…‹์„ ์„ ํƒํ•˜์„ธ์š”.** ๋ชจ๋˜ API ํ”„๋กœ์ ํŠธ๋ฅผ ์œ„ํ•œ ๊ถŒ์žฅ ๊ธฐ๋ณธ๊ฐ’์ž…๋‹ˆ๋‹ค. + +์ด ํŽ˜์ด์ง€์˜ ๋‚˜๋จธ์ง€ ๋ถ€๋ถ„์€ ๊ทธ ์ด์œ ์™€, ๋‹ค๋ฅธ ์„ ํƒ์„ ํ•ด์•ผ ํ•  ๊ฒฝ์šฐ๋ฅผ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. + +## TL;DR โ€” ์‚ฌ์šฉ์ž ์œ ํ˜•๋ณ„ ์„ ํƒ + +| ๋‹น์‹ ์ด... | ์‹œ์ž‘์  | +|---|---| +| FastAPI ๊ฐ€ ์ฒ˜์Œ์ด๊ณ  ๊ฐ€์ด๋“œ๋ฅผ ๋”ฐ๋ผ๊ฐ€๋ฉฐ ์‹œ์ž‘ํ•˜๊ณ  ์‹ถ๋‹ค | `fastkit init --interactive` (preset: **`domain-starter`**) | +| ๋™์ž‘ํ•˜๋Š” CRUD ๋ฐ๋ชจ๋ฅผ ์ฝ๊ณ  ์ˆ˜์ •ํ•˜๋ฉด์„œ ๋ฐฐ์šฐ๊ณ  ์‹ถ๋‹ค | `fastkit startdemo fastapi-default` | +| ๊ฐ€๋Šฅํ•œ ๊ฐ€์žฅ ์ž‘์€ ์Šค์บํด๋“œ๋ฅผ ์›ํ•œ๋‹ค | `fastkit init --interactive` (preset: **`minimal`**) | +| ๋น ๋ฅธ ํ”„๋กœํ† ํƒ€์ž… / ๋‹จ์ผ ํŒŒ์ผ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ž‘์„ฑํ•œ๋‹ค | `fastkit init --interactive` (preset: **`single-module`**) | +| ์‹ค์ œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ํ•„์š”ํ•˜๋‹ค (PostgreSQL + SQLAlchemy + Alembic) | `fastkit startdemo fastapi-psql-orm` | +| ์ค‘๊ฐ„ ๊ทœ๋ชจ API ๋ฅผ ์œ„ํ•œ ํ”„๋กœ๋•์…˜ ์Šคํƒ€์ผ ๋„๋ฉ”์ธ ๋ ˆ์ด์•„์›ƒ์„ ์›ํ•œ๋‹ค | `fastkit init --interactive` (preset: **`domain-starter`**) | + +## `startdemo` vs `init --interactive` โ€” ๋ฌด์—‡์ด ๋‹ค๋ฅธ๊ฐ€? + +์ด ๋‘˜์ด ๋ฉ”์ธ ์ง„์ž…์ ์ด๋ฉฐ, ์„œ๋กœ ๋‹ค๋ฅธ ์šฉ๋„๋ฅผ ๊ฐ–์Šต๋‹ˆ๋‹ค. + +### `fastkit startdemo