Configuration Reference

Quick lookup for all fastappkit configuration options.

Project Configuration (fastappkit.toml)

Location

Project root (where you run fastappkit commands).

Schema

[tool.fastappkit]
apps = [
  "apps.blog",        # Internal app
  "fastapi_payments", # External app
]

[tool.fastappkit.migration]
order = ["core", "auth", "blog"]  # Optional: override internal app order

Options

Option Type Required Default Description
apps array[string] Yes [] List of app entries
migration.order array[string] No apps order Migration execution order (internal apps only)

App Entry Formats

  • Internal app: apps.<name> (resolves to ./apps/<name>/)
  • External app: <package_name> (must be pip-installed, importable)

Settings Configuration (core/config.py)

Required Settings

Setting Type Required Default Env Var Description
database_url str Yes sqlite:///./app.db DATABASE_URL Database connection string
debug bool Yes False DEBUG Debug mode flag

Settings Class Structure

from pydantic import Field
from pydantic_settings import BaseSettings, SettingsConfigDict

class Settings(BaseSettings):
    database_url: str = Field(default="sqlite:///./app.db", alias="DATABASE_URL")
    debug: bool = Field(default=False, alias="DEBUG")

    model_config = SettingsConfigDict(
        env_file=".env",
        env_file_encoding="utf-8",
        populate_by_name=True
    )

Common Custom Settings

  • secret_key: str - Secret key for encryption/signing
  • host: str - Server host
  • port: int - Server port
  • redis_url: str - Redis connection string
  • email_settings: EmailConfig - Nested email configuration
  • logging_level: str - Logging verbosity

Environment Variables

  • Location: .env file in project root
  • Format: KEY=value (uppercase with underscores)
  • Precedence: Environment variables > .env file > defaults

External App Manifest (<app>/<app>/fastappkit.toml)

Location

Package directory (<app_name>/<app_name>/fastappkit.toml).

Schema

[tool.fastappkit]
name = "payments"
version = "0.1.0"
entrypoint = "payments:register"
migrations = "migrations"
models_module = "payments.models"
route_prefix = "/payments"

Fields

Field Type Required Default Description
name string Yes - App name (must match package)
version string Yes - Semantic version
entrypoint string Yes - Dotted path to register function
migrations string Yes - Path to migrations directory
models_module string Recommended - Dotted path to models module
route_prefix string No /<appname> Router mount prefix

Entrypoint Formats

  • "module:function" - Function in module (e.g., "payments:register")
  • "module:Class" - Class with register method (e.g., "payments:App")
  • Defaults to "module:register" if just module name

Quick Reference Tables

Project Configuration Options

Section Option Type Required Description
[tool.fastappkit] apps array[string] Yes List of apps
[tool.fastappkit.migration] order array[string] No Internal app migration order

Settings Options

Setting Type Required Default Env Var
database_url str Yes sqlite:///./app.db DATABASE_URL
debug bool Yes False DEBUG

Manifest Fields

Field Type Required Default
name string Yes -
version string Yes -
entrypoint string Yes -
migrations string Yes -
models_module string Recommended -
route_prefix string No /<appname>

Examples

Complete Project Configuration

[tool.fastappkit]
apps = [
  "apps.blog",
  "apps.auth",
  "fastapi_payments",
]

[tool.fastappkit.migration]
order = ["core", "auth", "blog"]

Complete Settings Configuration

from pydantic import Field
from pydantic_settings import BaseSettings, SettingsConfigDict

class Settings(BaseSettings):
    database_url: str = Field(default="sqlite:///./app.db", alias="DATABASE_URL")
    debug: bool = Field(default=False, alias="DEBUG")

    secret_key: str = Field(default="", alias="SECRET_KEY")
    redis_url: str = Field(default="redis://localhost:6379", alias="REDIS_URL")

    model_config = SettingsConfigDict(
        env_file=".env",
        env_file_encoding="utf-8",
        populate_by_name=True
    )

Complete Manifest Configuration

[tool.fastappkit]
name = "payments"
version = "0.1.0"
entrypoint = "payments:register"
migrations = "migrations"
models_module = "payments.models"
route_prefix = "/api/payments"

Learn More