# svelixir v0.2.0 - Table of Contents

> Mix task that scaffolds new Elixir/Phoenix + Svelte (LiveSvelte) projects from a TOML config.

## Modules

- [Svelixir](Svelixir.md): Documentation for `Svelixir`.

- [Svelixir.CLI](Svelixir.CLI.md): Argument parsing and config-path validation for `mix svelixir.new`.
- [Svelixir.Config](Svelixir.Config.md): Loads, parses, and validates the Svelixir TOML configuration file.
- [Svelixir.Config.Api](Svelixir.Config.Api.md): API asset configuration.
- [Svelixir.Config.Assets](Svelixir.Config.Assets.md): Frontend and API asset configuration.
- [Svelixir.Config.Auth](Svelixir.Config.Auth.md): Authentication strategy configuration.
- [Svelixir.Config.Cache](Svelixir.Config.Cache.md): Cache layer configuration within the container.
- [Svelixir.Config.Container](Svelixir.Config.Container.md): Infrastructure container configuration.
- [Svelixir.Config.Features](Svelixir.Config.Features.md): Optional feature flags.
- [Svelixir.Config.Options](Svelixir.Config.Options.md): Top-level optional configuration block.
- [Svelixir.Config.Otp](Svelixir.Config.Otp.md): OTP-project-specific generation flags.
- [Svelixir.Config.Project](Svelixir.Config.Project.md): Project identity fields.
- [Svelixir.Config.Security](Svelixir.Config.Security.md): Security tooling configuration within the container.
- [Svelixir.Inline.BumpVersion](Svelixir.Inline.BumpVersion.md): Inline `scripts/bump-version.sh` template.
- [Svelixir.Inline.Cliff](Svelixir.Inline.Cliff.md): Inline `cliff.toml` template.
- [Svelixir.Inline.Config](Svelixir.Inline.Config.md): Inline configuration templates.
- [Svelixir.Inline.Coveralls](Svelixir.Inline.Coveralls.md): Inline `coveralls.json` template.
- [Svelixir.Inline.Credo](Svelixir.Inline.Credo.md): Inline `.credo.exs` template.
- [Svelixir.Inline.Doctor](Svelixir.Inline.Doctor.md): Inline `.doctor.exs` template.
- [Svelixir.Inline.Dprint](Svelixir.Inline.Dprint.md): Inline `dprint.json` template.
- [Svelixir.Inline.Lefthook](Svelixir.Inline.Lefthook.md): Inline `lefthook.yml` template.
- [Svelixir.Inline.License](Svelixir.Inline.License.md): Inline MIT LICENSE template.
- [Svelixir.Inline.Migration](Svelixir.Inline.Migration.md): Inline base `Ecto.Migration` wrapper template and its citext bootstrap migration.
- [Svelixir.Inline.MixConfig](Svelixir.Inline.MixConfig.md): Inline templates for a generated OTP project's `config/` directory
(`mix new` creates none of these; `mix phx.new` already creates all 5).

- [Svelixir.Inline.Readme](Svelixir.Inline.Readme.md): Inline README.md template.
- [Svelixir.Inline.Repo](Svelixir.Inline.Repo.md): Inline Ecto Repo module template.
- [Svelixir.Inline.Schema](Svelixir.Inline.Schema.md): Inline base `Ecto.Schema` wrapper template.
- [Svelixir.Inline.Sobelow](Svelixir.Inline.Sobelow.md): Inline `.sobelow-conf` template (web projects only).
- [Svelixir.Parse](Svelixir.Parse.md): Parses configuration and executes generation tasks using Igniter.
- [Svelixir.Parse.Base](Svelixir.Parse.Base.md): Runs the non-feature-related generation tasks (project structure, config,
container, assets) against the igniter. `Template` (project structure),
`Deps` (quality-gate/test-support dependencies), `Config` (quality-gate
dotfiles), `OtpRepo` (Repo/Schema/Migration baseline), `DevSecrets`
(.env.dev), `Docs` (guidance docs), `Readme` (LICENSE + README.md), and
`GitTooling` (lefthook/dprint/git-cliff + git_ops config) are currently
wired up.
- [Svelixir.Parse.Base.Config](Svelixir.Parse.Base.Config.md): Writes the baseline quality-gate dotfiles every svelixir project gets: .credo.exs, .doctor.exs,
coveralls.json, and (type=web only) .sobelow-conf.

- [Svelixir.Parse.Base.Deps](Svelixir.Parse.Base.Deps.md): Adds the baseline quality-gate and test-support dependencies every svelixir project gets
regardless of options, and pins the Elixir version floor to `~> 1.20`. `type=web` projects
additionally get `sobelow` -- `Config` already writes `.sobelow-conf` for `type=web` projects,
and `docker`'s own generated CI runs `mix sobelow --config`, so the dependency itself must
exist too, not just its config file. `project.otp.repo=true` additionally gets `uniq` (UUIDv7
generation for `OtpRepo`'s Schema convention, both project types); `type=otp` also gets
`ecto_sql`/`postgrex` -- `type=web` already has both via `mix phx.new`.

- [Svelixir.Parse.Base.DevSecrets](Svelixir.Parse.Base.DevSecrets.md): Copies `project.dev_secrets` in as `.env.dev` and adds it to `.gitignore`. A blank or absent
`project.dev_secrets` is silently skipped; a path that's set but unreadable is a real issue.
- [Svelixir.Parse.Base.Docs](Svelixir.Parse.Base.Docs.md): Copies svelixir's `.claude/` guidance docs (Karpathy instructions, process invariants, git-flow,
quality gates, etc.) into every generated project, unchanged by config.

- [Svelixir.Parse.Base.GitTooling](Svelixir.Parse.Base.GitTooling.md): Writes git/commit tooling config (lefthook, dprint, git-cliff, the version-bump script) and
wires git_ops into dev.exs.

- [Svelixir.Parse.Base.OtpRepo](Svelixir.Parse.Base.OtpRepo.md): When `project.otp.repo=true`: creates the `{Module}.Schema`/`{Module}.Migration` base
conventions (UUIDv7 primary keys, `:utc_datetime_usec` timestamps, citext) and a bootstrap
citext-enabling migration, for both `type=otp` and `type=web`. `type=otp` projects
additionally get `{Module}.Repo`, wired into the `--sup`-generated Application's supervision
tree, `ecto_repos` config, and local-Postgres dev/test connection defaults (matching
`mix phx.new`'s own convention) -- `type=web` already gets all of that for free from
`mix phx.new` itself.

- [Svelixir.Parse.Base.Readme](Svelixir.Parse.Base.Readme.md): Writes the MIT LICENSE and a templated README.md (task-command table + type-aware setup
instructions) for every generated project.

- [Svelixir.Parse.Base.Template](Svelixir.Parse.Base.Template.md): Creates the base project structure using Mix generators.

## Mix Tasks

- [mix svelixir.base.new](Mix.Tasks.Svelixir.Base.New.md): Generates the base project structure (via `mix new`/`mix phx.new`) from a
Svelixir TOML config, skipping feature, container, asset, and auth wiring.
- [mix svelixir.gen.config](Mix.Tasks.Svelixir.Gen.Config.md): Writes a boilerplate `config.toml` to the current directory.
- [mix svelixir.new](Mix.Tasks.Svelixir.New.md): Generates a new project from a Svelixir TOML config.

