Directory Structure
Andurel v2 separates application-owned code, reusable framework modules, and executable process boundaries.
Application layout
1cmd/app/ web process and Fx composition root
2cmd/queue/ queue worker process and lifecycle
3cmd/ssr/ Node SSR process owner (Inertia)
4cmd/seeds/ seed command entry point
5config/ environment loading and typed providers
6controllers/ HTTP handlers and route registration
7router/cookies/ kiks jar, session payload, cookie module
8router/middleware/ auth and related Echo middleware
9router/routes/ typed route declarations
10views/ Templ components and Inertia root document
11resources/js/ Inertia pages, layouts, Vite entry (when enabled)
12models/ entities, model APIs, and Fx module
13models/factories/ generated test and seed builders
14models/queries/ application-written narsilc SQL
15models/internal/queries/ generated narsilc implementation
16services/ application workflows
17queue/jobs/ River argument types
18queue/workers/ River workers and registration
19email/ Templ email components
20migrations/ embedded Goose SQL migrations
21seeds/ named seed sets and registry
22telemetry/ application observability wiring
23assets/ embedded compiled assets
24andurel.toml project manifest (UI, database, tool pins)
25andurel.lock tool download digests
Reusable framework packages
Generated applications import github.com/mbvlabs/andurel/pkg/* modules for routing, server, storage, validation, hypermedia, Inertia, email, kiks, and telemetry behavior. Their versions are pinned in the application's go.mod and do not have to match the CLI version.
Unlike v1, these implementations are not copied into an application-owned internal/ tree. Configuration, middleware policy, controllers, model behavior, and presentation remain application-owned.
Project metadata
andurel.toml records scaffold choices (frontend adapter, package manager, SSR runtime, database null strategy) and pinned tool versions. andurel.lock stores per-platform SHA-256 digests for those tools. Commit both with the project. go.mod remains the source of truth for framework package versions; use andurel packages update to bump them deliberately. See Project Lock.