init-app Back to builder

CLI field guide

Know exactly what each choice creates.

Use this reference to tune Init App from a quick scaffold to a deliberate production foundation. Required flags establish the project; optional flags optimize its structure, delivery, and local workflow.

General configurationinit-app NAME --framework FRAMEWORK [optional flags]For automation, use --spec with a JSON project definition. For safety, add --dry-run before writing files.

Init App controls

Project identity

The smallest direct-generation setup needs a project name and framework.

nameRequired

Does: Names the generated project directory.

Optimize with: Always provide a clear, import-safe project name.

Example: billing_api
--frameworkRequired

Does: Selects a supported blueprint and its framework-aware defaults.

Optimize with: The web builder generates the selected Init App blueprint, including dbt analytics.

Example: --framework dbt_analytics
--appsDjango only

Does: Creates and registers multiple Django application packages.

Optimize with: Use when the project has separate domains such as catalog, billing, and users; the first name owns the primary generated routes.

Example: --apps catalog billing users
--spec FILEOptional

Does: Loads a JSON project specification; direct flags override it.

Optimize with: Use for repeatable team templates and automation.

Example: --spec project.json

Init App controls

Architecture and runtime

These flags shape the generated code structure and how the project is expected to run.

--typeOptional

Does: Selects standard, production, auto_config, or custom generation.

Optimize with: Use standard for a clean start, production for operational layers, and custom for exact folder control.

Example: --type production
--serverOptional

Does: Selects a Django-compatible runner.

Optimize with: Use gunicorn, waitress, or wsgiref for the generated Django project.

Example: --server gunicorn
--dbOptional

Does: Selects sqlite, postgresql, mysql, mongodb, or none.

Optimize with: Use sqlite for local work, PostgreSQL for production relational workloads, or none for framework-only projects.

Example: --db postgresql
--drfOptional

Does: Enables Django REST Framework integration; Django only.

Optimize with: Use when Django is serving an API with serializers, routers, and REST settings.

Example: --drf
--venv y|nOptional

Does: Controls whether Init App creates a project virtual environment.

Optimize with: Enable isolation for most local and team projects. Package tooling remains the user's choice.

Example: --venv y
--dbt-adapterdbt analytics only

Does: Selects a warehouse adapter such as Snowflake, Databricks, BigQuery, Redshift, Postgres, or DuckDB.

Optimize with: Init App checks dbt-core and the selected adapter in the chosen environment before native dbt initialization; use custom for any compatible PyPI adapter.

Example: --dbt-adapter snowflake
--dbt-adapter-package / --dbt-adapter-typedbt custom adapter only

Does: Defines the PyPI package and dbt adapter type for a provider outside the built-in catalog.

Optimize with: Use both flags together only with --dbt-adapter custom.

Example: --dbt-adapter custom --dbt-adapter-package dbt-acme --dbt-adapter-type acme
--dbt-profile / --dbt-targetdbt analytics only

Does: Creates or preserves the selected profile in project .dbt/profiles.yml and ~/.dbt/profiles.yml.

Optimize with: Credentials stay in environment variables, never in generated files or command output. dbt reads profiles.yml, not user.yml.

Example: --dbt-profile finance --dbt-target dev

Init App controls

What Init App runs

The generator uses framework-native commands only after its selected environment is available and dependencies are checked.

Django bootstrapDjango only

Does: Creates or reuses .venv, installs requirements, then runs Django's startproject and startapp commands.

Optimize with: Generated manage.py reuses .venv automatically, so team commands do not accidentally use a global Django install.

Example: python -m django startproject billing .
dbt bootstrapdbt analytics only

Does: Creates or reuses the selected environment, checks dbt-core and the selected adapter, then runs native dbt init without interactive profile setup.

Optimize with: The generated project keeps a portable .dbt/profiles.yml and uses --profiles-dir .dbt for dbt debug, deps, and run.

Example: python -m dbt.cli.main init --skip-profile-setup finance_transform
Profile verificationdbt analytics only

Does: Writes credential-free environment-variable placeholders and preserves an existing named profile instead of overwriting it.

Optimize with: Run dbt debug before dbt run; configure provider credentials in your environment or secret manager.

Example: dbt debug --profiles-dir .dbt

Init App controls

Folders and packages

Custom mode gives direct control over generated directories and Python package initialization.

--foldersCustom only

Does: Lists the folders to create.

Optimize with: Use when the default architecture does not match the project boundary.

Example: --folders src services tests
--packagesCustom only

Does: Marks selected folders for __init__.py generation.

Optimize with: Every package must also be listed in --folders; keep package initialization intentional.

Example: --packages src services
--gitignore-presetOptional

Does: Chooses framework, python, django, dbt, node, cpp, or minimal ignore rules.

Optimize with: Use dbt to exclude artifacts, packages, and local dbt environment files.

Example: --gitignore-preset dbt
--gitignore / --ignoreOptional

Does: Adds custom ignore patterns.

Optimize with: Protect secrets, local data, generated assets, and machine-specific files.

Example: --gitignore .env.local uploads/ *.secret
--no-rag-contextOptional

Does: Disables the local safe file-inventory bundle.

Optimize with: Keep the default enabled when local tooling needs project context; disable it for minimal output.

Example: --no-rag-context

Init App controls

Generated files

Infrastructure flags accept one or more exact files, so you can keep the project focused.

--dockerOptional

Does: Adds selected Docker files.

Optimize with: Choose Dockerfile for a container image, compose files for local services, and DOCKER.md for notes.

Example: --docker docker/Dockerfile docker/docker-compose.yml
--githubOptional

Does: Adds selected GitHub workflow and issue-template files.

Optimize with: Start with ci.yml for pull-request checks and add security.yml for dependency scanning.

Example: --github .github/workflows/ci.yml
--k8sOptional

Does: Adds selected Kubernetes manifests.

Optimize with: Use deployment and service first; add ingress, secrets, storage, or autoscaling as needed.

Example: --k8s k8s/deployment.yml k8s/service.yml
--jenkinsOptional

Does: Adds selected Jenkins pipeline files.

Optimize with: Choose the Jenkinsfile and add build/deploy scripts when Jenkins owns delivery.

Example: --jenkins jenkins/Jenkinsfile
--communityOptional

Does: Adds contribution, conduct, security, and changelog files.

Optimize with: Use for public repositories and teams that want contribution standards from day one.

Example: --community CONTRIBUTING.md SECURITY.md
--package-filesOptional

Does: Adds package metadata files such as setup.py, setup.cfg, and requirements.txt.

Optimize with: Select only the packaging files your distribution or deployment workflow needs.

Example: --package-files setup.cfg requirements.txt

Init App controls

Paths and safety

These flags control where generation happens and how automation behaves.

--output-dir PATHOptional

Does: Chooses the explicit parent directory for the generated project.

Optimize with: Use when the project should not be created in the current directory; leaving it empty keeps generation local.

Example: --output-dir ~/Projects
--hereOptional

Does: Creates the project in the current directory.

Optimize with: Use when the current directory is already the intended project root.

Example: --here
--forceOptional

Does: Allows generation into a non-empty project directory.

Optimize with: Use carefully after reviewing existing files; the default refusal protects work.

Example: --force
--dry-runOptional

Does: Prints the resolved configuration without writing files.

Optimize with: Use in CI, previews, and reviews before committing to a filesystem change.

Example: --dry-run
--path-behaviorOptional

Does: Sets one-off documents, current, or custom path behavior.

Optimize with: Use to override the saved default for one generation.

Example: --path-behavior current
--show-path-configUtility

Does: Displays saved path defaults and exits.

Optimize with: Use when a project is appearing in an unexpected location.

Example: --show-path-config
--reset-path-configUtility

Does: Resets saved path defaults and exits.

Optimize with: Use to return path resolution to its clean default state.

Example: --reset-path-config

Starting points

Useful configurations

These recipes combine the controls for common project goals.

Local Django app

init-app orders -f django -t standard --db sqlite --apps orders --venv y --server wsgiref

Production Django service

init-app billing -f django -t production --db postgresql --apps billing users --venv y --server gunicorn --docker docker/Dockerfile --github .github/workflows/ci.yml

Django REST API

init-app catalog -f django -t production --db postgresql --drf --apps catalog billing --venv y --server gunicorn

Snowflake dbt project

init-app finance_transform -f dbt_analytics --dbt-adapter snowflake --dbt-profile finance --env-manager uv

Exact custom layout

init-app worker -f django -t custom --apps worker --folders src services tests --packages src services --gitignore-preset django