- Modernize template contract to be pyproject-first (#42)
- Template inspection now accepts
pyproject.toml-tpl(PEP 621) as the primary metadata file. A template passes structural validation as long astests/,README.md-tpl, and at least one ofpyproject.toml-tpl/setup.py-tplare present.requirements.txt-tplis no longer strictly required whenpyproject.toml-tpldeclares[project].dependencies. _check_dependenciesconsults every available source (requirements.txt-tpl,pyproject.toml-tpl[project].dependencies,setup.py-tplinstall_requires) independently and passes if any one declaresfastapi. A template with a stalerequirements.txt-tplis no longer rejected when itspyproject.toml-tplis authoritative.read_template_stackgained a pyproject fallback between the existingrequirements.txt-tplandsetup.py-tplpaths; legacy templates resolve dependencies exactly as before.- Template authoring docs (
src/fastapi_fastkit/fastapi_project_template/README.md,docs/en/contributing/template-creation-guide.md,docs/en/reference/template-quality-assurance.md) now describe required vs optional files under the pyproject-first contract. - Added focused tests for the new rules (pyproject-only structural and dependency validation, setup.py-only legacy validation, pyproject fallback in
read_template_stack, andrequirements.txt-tpl-over-pyproject precedence).
- Template inspection now accepts
- Pyproject-aware project identity detection (follow-up to #42)
is_fastkit_project()now recognises FastAPI-fastkit-managed projects frompyproject.tomlin addition to legacysetup.py. Detection precedence:[tool.fastapi-fastkit].managed = true→[project].descriptioncontains the[FastAPI-fastkit templated]marker (case-insensitive) →setup.pycontainsfastapi-fastkit(case-insensitive). Keeps the pre-existing setup.py path working; the new pyproject paths prevent pyproject-only templates from being mistaken for unrelated FastAPI projects in the user's workspace.- Canonical marker strings (
[FastAPI-fastkit templated]and the[tool.fastapi-fastkit]table keyfastapi-fastkit) are exported fromfastapi_fastkit.utils.mainasFASTKIT_DESCRIPTION_MARKER/FASTKIT_TOOL_SECTIONso templates, metadata injection, and detection all reference the same strings. _process_pyproject_fileidempotently ensures the description marker and[tool.fastapi-fastkit]\nmanaged = truesection are present after placeholder replacement, providing a safety net when a template author forgets to include them.- All 8 shipped
pyproject.toml-tpltemplates updated to carrydescription = "[FastAPI-fastkit templated] <description>"and a[tool.fastapi-fastkit]table withmanaged = true.
fastkit initfailure no longer wipes the user workspace- Introduced
_cleanup_failed_projecthelper; the previousshutil.rmtree(project_dir)on error could delete the entire workspace whencreate_project_folder=False(in-place deploy). Cleanup now refuses to remove the workspace and only deletes freshly created project folders.
- Introduced
- Single-module template (
fastapi-single-module) now renders the project nameinject_project_metadata()was not substituting<project_name>placeholders that live directly inmain.py. Added_process_main_fileso single-module templates come out with the correct title/name.
- Generated test configuration written to
pytest.ini, nottests/conftest.py- Interactive init used to dump INI-format content into a Python module, breaking the generated project's test suite immediately. Test config now lands in
pytest.iniat the project root.
- Interactive init used to dump INI-format content into a Python module, breaking the generated project's test suite immediately. Test config now lands in
- Poetry dependency generation now handles the full PEP 508 spec
PoetryManager.generate_dependency_filepreviously only split on==. Any other specifier (>=,~=,<=,!=,===), environment marker (e.g.; sys_platform != 'win32'), orextras + versioncombination was emitted as part of the TOML key, producing an invalidpyproject.tomlthatpoetry installcould not parse. Added_parse_pip_requirementto split name, extras, version specifier, and marker, emitting inline tables when needed.
- SQLite stack now installs
aiosqlitecore/settings.pycatalog previously omitted the async driver, so SQLite projects failed at runtime when the generated code used async sessions.
- Dockerfile
CMDuses exec form with double-quoted JSON array- The previous single-quoted form was interpreted as shell form by some Docker versions and bypassed signal handling (no graceful shutdown on
SIGTERM).
- The previous single-quoted form was interpreted as shell form by some Docker versions and bypassed signal handling (no graceful shutdown on
Addressed open Dependabot advisories by bumping minimum versions:
pytest >= 9.0.3— tmpdir handling advisory (GHSA)black >= 26.3.1— arbitrary file writes via cache file namepygments >= 2.20.0— ReDoS in GUID regex (transitive viarich)requests >= 2.33.0— insecure temp file reuse inextract_zipped_pathspymdown-extensions >= 10.17.2— required to run onpygments2.20+ (preventshtml.escape(None)crash during docs build)
- FAQ (
docs/en/reference/faq.md): the "interactive mode automatically generates" bullets now accurately describe what is generated conditionally — database/auth files only when the selected option supports code generation, Docker files only for the selected deployment option, and coverage config only whenCoverageorAdvancedtesting is selected. - Contributing and development-setup guides updated;
fastkit --versionexample refreshed to 1.2.1.
- Added regression tests for every fix above, plus targeted tests to close Codecov patch-coverage gaps (
_process_main_fileerror handling,_cleanup_failed_projectedge cases, interactive init failure branch). - Cleaned up Ruff warnings in
src/fastapi_fastkit/cli.py(E402 import ordering for__version__, four stray F541f""prefixes). - Refreshed
requirements.txt,requirements-docs.txt,pdm.lock, anduv.lockto the new security floors.
-
(Breaking Change) Add
fastkit init --interactivefeature: Revolutionary feature-by-feature project builderfastkit init --interactivenow provides guided project setup with intelligent feature selection- Always uses Empty project (fastapi-empty template) as base template to prevent conflicts with DynamicConfigGenerator
- Interactive project configuration with validation and compatibility warnings
- Real-time dependency collection based on selected features
- Confirmation summary before project creation
-
Dynamic Code Generation: Intelligent code generation based on feature selections
- Integrated DynamicConfigGenerator for automatic code scaffolding
- Generates
main.pywith selected features (auth, database, monitoring, etc.) - Creates database configuration files for PostgreSQL, MySQL, MongoDB, SQLite
- Generates authentication setup for JWT, OAuth2, FastAPI-Users
- Auto-generates test configuration (pytest with optional coverage)
- Docker deployment files (Dockerfile, docker-compose.yml) generation
-
Enhanced Dependency Management: Multi-format dependency file generation
- Automatically generates both package-manager-specific files AND requirements.txt
- Ensures pip compatibility regardless of selected package manager
- Dependencies correctly reflect all selected stack features
- Smart dependency deduplication and version management
- Interactive CLI Experience:
- Step-by-step feature selection with descriptions. Each selection step proceeds in the following order below:
- Database selection (PostgreSQL, MySQL, MongoDB, Redis, SQLite)
- Authentication options (JWT, OAuth2, FastAPI-Users, Session-based)
- Background tasks (Celery, Dramatiq)
- Caching layer (Redis, fastapi-cache2)
- Monitoring integration (Loguru, OpenTelemetry, Prometheus)
- Testing framework (Basic, Coverage, Advanced)
- Utilities (CORS, Rate-Limiting, Pagination, WebSocket)
- Deployment configuration (Docker, docker-compose)
- Package manager selection (pip, uv, pdm, poetry)
- Custom package addition support
- Step-by-step feature selection with descriptions. Each selection step proceeds in the following order below:
- Interactive Backend Architecture:
InteractiveConfigBuilder: Orchestrates full interactive flowDynamicConfigGenerator: Generates feature-specific codeDependencyCollector: Intelligently collects stack dependencies- Input validators with comprehensive error handling
- Multi-select prompts for utilities and deployment options
- Feature compatibility validation system
- Add AI translation support of user guides(docs/ folder sources that mkdocs renders)
- Adaptive Console Sizing: Enhanced terminal output display
- Console width is 80% of terminal width, capped at 120 characters
- Console height is terminal height minus buffer (5 lines)
- Automatic terminal size detection with fallback to default sizes (80x24)
- Dynamic sizing based on actual terminal dimensions
- Text Truncation Prevention: Completely eliminated text truncation in CLI output
- Template names and descriptions are now fully displayed without "..." truncation
- Table columns automatically adjust to content length to prevent text cutting
- Added
overflow="fold"andno_wrap=Falsesettings to Rich tables - Template listing now shows complete template names (e.g.,
fastapi-custom-responseinstead offastapi-custom-respo...)
- Fixing the object
consolenot found error- this critical error was occurred every version before this version.
- this error was occurred because of the mismatched logic between distribute github actions workflow and the top
__init__.pyfile of fastkit project package. - This issue was discovered during the development of version 1.1.2, and I spent a lot of time troubleshooting it. I believe this was due to my lack of development experience. I sincerely apologize.
this version was hotfix build, but it is deprecated.
The issues that were being addressed during the development of this version remained unresolved and were fixed in version v1.1.5.
For more details, please refer to the CHANGELOG.md file for v1.1.5.
- add
fastapi-single-moduletemplate - update
fastapi-psql-ormtemplate : fix dockerfile & docker-compose.yml scripts errors
- add a feature of
fastkit init,fastkit startdemocommand to define to make a new project folder at current working directory - add
setuptoolspackage atfastapi-emptytemplate's dependency list. - add a feature of
fastkit addroutecommand to recognize current working project (with cmd option.).
- fix template inspection workflow & script
- fixing uv supportation compatibility
- for now, template inspection is running with
uvpackage manager
-
Package Manager Support: Add comprehensive support for multiple Python package managers
- Support for UV (default), PDM, Poetry, and PIP package managers
- Interactive package manager selection in
fastkit initandfastkit startdemocommands --package-managerCLI option for non-interactive usage- Automatic generation of appropriate dependency files (
pyproject.tomlfor UV/PDM/Poetry,requirements.txtfor PIP) - PEP 621 compliant project metadata for modern package managers
-
Automated Template Testing System: Revolutionary zero-configuration template testing
- Dynamic template discovery - new templates are automatically tested
- Comprehensive end-to-end testing with actual project creation
- Multi-package manager compatibility testing
- Virtual environment creation and dependency installation validation
- Project structure and FastAPI integration verification
- Parameterized testing with pytest for scalable test execution
- Enhanced CLI Experience: Package manager selection with interactive prompts and helpful descriptions
- Better Template Quality Assurance: Multi-layer quality assurance with static inspection and dynamic testing
- Improved Developer Experience: Zero boilerplate test configuration for template contributors
- Cross-Platform Compatibility: Enhanced support for different package manager workflows
- Updated all user guides with package manager selection examples
- Enhanced CLI reference with comprehensive package manager documentation
- Updated contributing guidelines with new automated testing system
- Improved template creation guide with zero-configuration testing instructions
- Enhanced template quality assurance documentation
- Implemented BasePackageManager abstract class with concrete implementations
- Added PackageManagerFactory for dynamic package manager instantiation
- Enhanced project metadata injection for all package managers
- Improved test infrastructure with dynamic template discovery
- Updated CI/CD pipelines for multi-package manager testing
- Default Package Manager: Changed from PIP to UV for better performance
- CLI Prompts: Added package manager selection step in interactive commands
- add logging feature at
--debugmode option : debugging log will be stored at package directory
- add coverage test report and apply it at pre-commit hook
- bump
h11version from 0.14.0 to 0.16.0
- add github.io site for FastAPI-fastkit (with termynal & mkdocs-material)
- add a test case : test_cli_extended.py
official release version
- rename some
fastkitcommands:fastkit startup->fastkit startdemofastkit startproject->fastkit init
- add
fastkit addroutecommand : for adding a route to project - add
fastkit runservercommand : for running FastAPI server
- complete contribution guides
pre-release version
- modified template metadata injection modules
initial release : pre-release version
- add
fastapi-defaulttemplate - add
fastapi-asnyc-crudtemplate - add
fastapi-customized-responsetemplate - add
fastapi-dockerizedtemplate - add
fastapi-psql-ormtemplate
- add
fastkitcommand line base structure :fastkit <command>- add
fastkit --helpcommand : for more information about fastkit command - add
fastkit --versioncommand : for version information - add
fastkit --debugcommand : for debugging information - add
fastkit echocommand : for echo test - add
fastkit list-templatescommand : for listing available templates - add
fastkit startupcommand : for starting project with template - add
fastkit startprojectcommand : for starting empty FastAPI project - add
fastkit deleteprojectcommand : for deleting project
- add
- add test cases including template test cases
- add version tag system
- add pr-branching methods