From e548b3df49c3a61fa8bbec160c725d71d595491f Mon Sep 17 00:00:00 2001 From: bnbong Date: Wed, 6 May 2026 13:12:33 +0900 Subject: [PATCH 1/2] [DOCS] add starter selection guide & update fastkit output demos --- README.md | 11 +- docs/en/index.md | 104 ++++++---- docs/en/user-guide/choosing-a-starter.md | 194 ++++++++++++++++++ docs/en/user-guide/quick-start.md | 7 + docs/ko/index.md | 121 ++++++----- mkdocs.yml | 1 + .../fastapi-empty/README.md-tpl | 4 +- 7 files changed, 337 insertions(+), 105 deletions(-) create mode 100644 docs/en/user-guide/choosing-a-starter.md diff --git a/README.md b/README.md index 6c9c36b..825a385 100644 --- a/README.md +++ b/README.md @@ -67,6 +67,7 @@ fastkit init --interactive ``` - What it does: Guided step-by-step project setup with intelligent feature selection - Features: + - **Architecture preset**: `minimal` | `single-module` | `classic-layered` | `domain-starter` (default) - **Database selection**: PostgreSQL, MySQL, MongoDB, Redis, SQLite - **Authentication**: JWT, OAuth2, FastAPI-Users, Session-based - **Background tasks**: Celery, Dramatiq @@ -77,10 +78,10 @@ fastkit init --interactive - **Deployment**: Docker, docker-compose with auto-generated configs - **Package manager**: pip, uv, pdm, poetry - **Custom packages**: Add your own dependencies -- Auto-generates: - - `main.py` with selected features integrated - - Database and authentication configuration files - - Docker deployment files (Dockerfile, docker-compose.yml) +- Auto-generates (varies by preset โ€” see [the matrix](https://bnbong.github.io/FastAPI-fastkit/reference/preset-feature-matrix/) for details): + - `main.py` regenerated from selected features for `minimal` / `single-module`; preserved as-shipped for `classic-layered` / `domain-starter` + - Database and authentication configuration files at preset-specific paths + - Docker deployment files (`Dockerfile`, `docker-compose.yml`) with the preset's correct uvicorn entrypoint - Test configuration (pytest with coverage) ### Create a project from a template @@ -121,9 +122,11 @@ fastkit deleteproject For comprehensive guides and detailed usage instructions, visit our documentation: +- ๐Ÿงญ **[Which starter should I choose?](https://bnbong.github.io/FastAPI-fastkit/user-guide/choosing-a-starter/)** - Beginner decision guide for `startdemo` templates and interactive presets - ๐Ÿ“š **[User Guide](https://bnbong.github.io/FastAPI-fastkit/user-guide/quick-start/)** - Detailed installation and usage guides - ๐ŸŽฏ **[Tutorial](https://bnbong.github.io/FastAPI-fastkit/tutorial/getting-started/)** - Step-by-step tutorials for beginners - ๐Ÿ“– **[CLI Reference](https://bnbong.github.io/FastAPI-fastkit/user-guide/cli-reference/)** - Complete command reference +- ๐Ÿงฑ **[Architecture Preset Matrix](https://bnbong.github.io/FastAPI-fastkit/reference/preset-feature-matrix/)** - Per-preset / per-feature contract for interactive generation - ๐Ÿ” **[Template Quality Assurance](https://bnbong.github.io/FastAPI-fastkit/reference/template-quality-assurance/)** - Automated testing and quality standards ## Contributing diff --git a/docs/en/index.md b/docs/en/index.md index 47f8381..bbbf39e 100644 --- a/docs/en/index.md +++ b/docs/en/index.md @@ -275,35 +275,54 @@ Select package manager (pip, uv, pdm, poetry): uv ๐Ÿ“ Custom Packages (optional) Enter custom package names (comma-separated, press Enter to skip): -โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ Selected Configuration โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ -Project: my-fullstack-project -Database: PostgreSQL -Authentication: JWT -Background Tasks: Celery -Caching: Redis -Monitoring: Prometheus -Testing: Coverage -Utilities: CORS -Deployment: Docker, docker-compose -Package Manager: uv -โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ +๐Ÿ“‹ Project Configuration Summary +โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” +โ”‚ Setting โ”‚ Value โ”‚ +โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค +โ”‚ Project Name โ”‚ my-fullstack-project โ”‚ +โ”‚ Author โ”‚ John Doe โ”‚ +โ”‚ Email โ”‚ john@example.com โ”‚ +โ”‚ Description โ”‚ Full-stack FastAPI project with PostgreSQL and JWT โ”‚ +โ”‚ Architecture Preset โ”‚ domain-starter โ€” Domain-oriented: src/app/domains// (recommended)โ”‚ +โ”‚ Database โ”‚ PostgreSQL โ”‚ +โ”‚ Authentication โ”‚ JWT โ”‚ +โ”‚ Async Tasks โ”‚ Celery โ”‚ +โ”‚ Caching โ”‚ Redis โ”‚ +โ”‚ Monitoring โ”‚ Prometheus โ”‚ +โ”‚ Testing โ”‚ Coverage โ”‚ +โ”‚ Utilities โ”‚ CORS โ”‚ +โ”‚ Package Manager โ”‚ uv โ”‚ +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ + +Total dependencies to install: 18 Proceed with project creation? [Y/n]: y +โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ Info โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ +โ”‚ โ„น Injected metadata into pyproject.toml โ”‚ +โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ Success โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ -โ”‚ โœจ Generated main.py with selected features โ”‚ -โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ -โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ Success โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ -โ”‚ โœจ Generated database configuration โ”‚ +โ”‚ โœจ Generated dependency file with 18 packages โ”‚ โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ +โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ Info โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ +โ”‚ โ„น Preserving template-shipped main.py for preset โ”‚ +โ”‚ 'domain-starter'. โ”‚ +โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ Success โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ -โ”‚ โœจ Generated authentication configuration โ”‚ +โ”‚ โœจ Generated Docker deployment files โ”‚ โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ -โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ Success โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ -โ”‚ โœจ Generated test configuration โ”‚ +โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ Warning โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ +โ”‚ โš  Preset compatibility โ”‚ +โ”‚ fastapi-domain-starter's shipped src/app/main.py is โ”‚ +โ”‚ preserved. The selections below need manual wiring โ”‚ +โ”‚ there (CORS is already wired โ€” set โ”‚ +โ”‚ BACKEND_CORS_ORIGINS in .env to activate it). โ”‚ +โ”‚ Affected selections (packages installed, but no โ”‚ +โ”‚ dynamic main.py edits applied for the โ”‚ +โ”‚ 'domain-starter' preset): Prometheus โ”‚ โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ Success โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ -โ”‚ โœจ Generated Docker deployment files โ”‚ +โ”‚ โœจ Generated configuration files for selected stack โ”‚ โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ Creating virtual environment... @@ -312,27 +331,21 @@ Installing dependencies... ----> 100% โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ Success โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ -โ”‚ โœจ FastAPI project 'my-fullstack-project' created! โ”‚ -โ”‚ โ”‚ -โ”‚ Generated files: โ”‚ -โ”‚ โ€ข main.py (with all selected features) โ”‚ -โ”‚ โ€ข src/config/database.py โ”‚ -โ”‚ โ€ข src/config/auth.py โ”‚ -โ”‚ โ€ข tests/conftest.py โ”‚ -โ”‚ โ€ข Dockerfile โ”‚ -โ”‚ โ€ข docker-compose.yml โ”‚ -โ”‚ โ€ข pyproject.toml / requirements.txt โ”‚ +โ”‚ โœจ FastAPI project 'my-fullstack-project' from โ”‚ +โ”‚ 'fastapi-domain-starter' has been created! โ”‚ โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ ``` The interactive mode provides: +- **Architecture preset selection** (`minimal` / `single-module` / `classic-layered` / `domain-starter`) that picks the right base template and project layout - **Guided selection** for databases, authentication, background tasks, caching, monitoring, and more -- **Auto-generated code** for selected features (main.py, config files, Docker files) +- **Auto-generated code** for selected features โ€” varies by preset (regenerated `main.py` for `minimal` / `single-module`; preserve template-shipped `main.py` and overlay config modules for `classic-layered` / `domain-starter`) +- **Preset-aware Docker generation** โ€” the generated `Dockerfile` `CMD` targets the preset's actual entrypoint (`src.main:app` or `src.app.main:app`) - **Smart dependency management** with automatic pip compatibility -- **Feature validation** to prevent incompatible combinations -- **Always Empty project** as base for maximum flexibility +- **Feature validation** with manual-wiring warnings for selections the preset cannot auto-wire +- **Identity markers** in the generated `pyproject.toml` (description marker + `[tool.fastapi-fastkit]` table) so `is_fastkit_project()` can recognize generated projects later ### Add a new route to the FastAPI project @@ -434,18 +447,19 @@ To view the list of available FastAPI demos, check with: ```console $ fastkit list-templates - Available Templates -โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” -โ”‚ fastapi-custom-response โ”‚ Async Item Management API with โ”‚ -โ”‚ โ”‚ Custom Response System โ”‚ -โ”‚ fastapi-dockerized โ”‚ Dockerized FastAPI Item โ”‚ -โ”‚ โ”‚ Management API โ”‚ -โ”‚ fastapi-empty โ”‚ No description โ”‚ -โ”‚ fastapi-async-crud โ”‚ Async Item Management API Server โ”‚ -โ”‚ fastapi-psql-orm โ”‚ Dockerized FastAPI Item โ”‚ -โ”‚ โ”‚ Management API with PostgreSQL โ”‚ -โ”‚ fastapi-default โ”‚ Simple FastAPI Project โ”‚ -โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ + Available Templates +โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” +โ”‚ fastapi-custom-responseโ”‚ Async Item Management API with Custom Response System โ”‚ +โ”‚ fastapi-mcp โ”‚ FastAPI MCP Project โ”‚ +โ”‚ fastapi-domain-starter โ”‚ FastAPI Domain Starter โ”‚ +โ”‚ fastapi-dockerized โ”‚ Dockerized FastAPI Item Management API โ”‚ +โ”‚ fastapi-empty โ”‚ Minimal FastAPI Template โ”‚ +โ”‚ fastapi-async-crud โ”‚ Async Item Management API Server โ”‚ +โ”‚ fastapi-psql-orm โ”‚ Dockerized FastAPI Item Management API with โ”‚ +โ”‚ โ”‚ PostgreSQL โ”‚ +โ”‚ fastapi-default โ”‚ Simple FastAPI Project โ”‚ +โ”‚ fastapi-single-module โ”‚ FastAPI Single Module Template โ”‚ +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ ``` diff --git a/docs/en/user-guide/choosing-a-starter.md b/docs/en/user-guide/choosing-a-starter.md new file mode 100644 index 0000000..003ffae --- /dev/null +++ b/docs/en/user-guide/choosing-a-starter.md @@ -0,0 +1,194 @@ +# Which starter should I choose? + +FastAPI-fastkit ships several ways to bootstrap a project. This page is a +**decision aid** for newcomers: pick a path here, then jump to +[Quick Start](quick-start.md) to actually create the project. + +If you're not sure, the short answer is: + +> **Start with `fastkit init --interactive` and pick the +> `domain-starter` preset.** It's the recommended default for modern API +> projects. + +The rest of this page explains why, and when to pick something else. + +## TL;DR โ€” pick by user type + +| You are... | Start with | +|---|---| +| New to FastAPI, want a guided walkthrough | `fastkit init --interactive` (preset: **`domain-starter`**) | +| Want a working CRUD demo to read and modify | `fastkit startdemo fastapi-default` | +| Want the smallest possible scaffold | `fastkit init --interactive` (preset: **`minimal`**) | +| Writing a quick prototype / single-file script | `fastkit init --interactive` (preset: **`single-module`**) | +| Need a real database (PostgreSQL + SQLAlchemy + Alembic) | `fastkit startdemo fastapi-psql-orm` | +| Want production-style domain layout for a medium-sized API | `fastkit init --interactive` (preset: **`domain-starter`**) | + +## `startdemo` vs `init --interactive` โ€” what's the difference? + +These are the two main entry points. They serve different needs. + +### `fastkit startdemo