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/seeds/ seed command entry point
4config/ environment loading and typed providers
5controllers/ HTTP handlers and route registration
6router/routes/ typed route declarations
7router/appctx/ typed request metadata helpers
8views/ Templ components and optional Inertia root
9models/ entities, model APIs, and Fx module
10models/factories/ generated test and seed builders
11models/queries/ application-written sqlc SQL
12models/internal/queries/ generated sqlc implementation
13services/ application workflows
14queue/jobs/ River argument types
15queue/workers/ River workers and registration
16email/ Templ email components
17migrations/ embedded Goose SQL migrations
18seeds/ named seed sets and registry
19telemetry/ application observability wiring
20assets/ embedded compiled assets
Reusable framework packages
Generated applications import github.com/mbvlabs/andurel/pkg/* modules for routing, server, storage, validation, hypermedia, Inertia, and email 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.lock records the framework version, tools, extensions, database conventions, frontend adapter, JavaScript package manager, and the separate Inertia SSR runtime. Commit it with the project. go.mod remains the source of truth for framework package versions.