ggen 4.0.0

ggen is a deterministic, language-agnostic code generation framework that treats software artifacts as projections of knowledge graphs.
# Example make.toml - Fullstack project with workspaces
# Based on the design from docs/make-toml-complete-example.md

[project]
name = "fullstack-example"
type = "monorepo"
version = "1.0.0"
description = "Nuxt 4 frontend with Rust backend example"

# Workspaces
[workspace.frontend]
path = "apps/web"
framework = "nuxt"
runtime = "node:20"
package_manager = "pnpm"

[workspace.backend]
path = "apps/api"
framework = "axum"
runtime = "rust:1.75"
package_manager = "cargo"

[workspace.shared]
path = "packages/types"
runtime = "node:20"
package_manager = "pnpm"

# Lifecycle phases
[lifecycle.init]
description = "Initialize all workspaces"
commands = [
    "echo '๐Ÿ—๏ธ  Initializing workspaces...'",
    "mkdir -p apps/web apps/api packages/types",
    "echo 'Workspaces created'",
]

[lifecycle.setup]
description = "Install dependencies for all workspaces"
commands = [
    "echo '๐Ÿ“ฅ Setting up frontend...'",
    "echo '๐Ÿ“ฅ Setting up backend...'",
    "echo '๐Ÿ“ฅ Setting up shared types...'",
]

[lifecycle.dev]
description = "Start development servers"
command = "echo '๐Ÿš€ Starting dev servers (frontend:3000, backend:4000)'"
watch = true

[lifecycle.build]
description = "Build all workspaces"
commands = [
    "echo '๐Ÿ”จ Building shared types...'",
    "echo '๐Ÿ”จ Building backend...'",
    "echo '๐Ÿ”จ Building frontend...'",
]

[lifecycle.test]
description = "Run tests across all workspaces"
command = "echo '๐Ÿงช Running tests...'"

[lifecycle."sync:types"]
description = "Sync TypeScript types from Rust"
commands = [
    "echo '๐Ÿ”„ Syncing types from Rust to TypeScript...'",
    "echo 'Types synced'",
]

[lifecycle."generate:api"]
description = "Generate API endpoint with composable and types"
commands = [
    "echo 'โšก Generating Rust API route...'",
    "echo 'โšก Generating Nuxt composable...'",
    "echo 'โšก Generating TypeScript types...'",
]

# Hooks
[hooks]
before_build = ["test", "sync:types"]
after_build = []

before_deploy = ["build"]
after_deploy = []