Example Apps
Complete, runnable Grove applications covering common patterns. Each example is a standalone module that passes
grove-cli checkand includes tests.
What you'll learn: How real Grove applications are structured, from simple CRUD to multi-entity workflows.
Todo App
A task tracker with state machine transitions (open -> in_progress -> done), validation, and full test coverage.
Features demonstrated: record, events, actions, @create, @delete, enum, state machine, invariant, reusable validate, inline validate, tests.
manzano check examples/apps/todo
manzano test examples/apps/todo
See the 5-Minute Tutorial for a step-by-step walkthrough of this app.
Pet Store
A pet adoption service with custom types, composite fields, optional types, and a multi-step lifecycle.
Features demonstrated: custom type, nested types, optional fields (T?), List<T>, functions, multiple state transitions, @lookup annotation.
See Build a Pet Adoption Service for the tutorial.
Issue Tracker
A project issue tracker with assignees, labels, comments, and priority levels.
Features demonstrated: multiple actions, list manipulation (.append(), .filter()), computed values in events, conditional logic in apply blocks.
Shopping Cart
An e-commerce shopping cart with line items, quantity updates, and checkout.
Features demonstrated: child record patterns, computed totals with .map() and .sum(), multi-event actions.
Blog CMS
A content management system with articles, drafts, publishing workflow, and categories.
Features demonstrated: rich state machine (draft -> review -> published -> archived), string manipulation, date fields.
Running Examples
All examples follow the same structure:
examples/apps/<name>/
grove.toml # project_id
module.grove # Main module
<name>_test.grove # Tests
request_*.json # Sample requests
To run any example:
# Type-check
manzano check examples/apps/<name>
# Run tests
manzano test examples/apps/<name>
# Execute an action
manzano run examples/apps/<name> \
--request examples/apps/<name>/request_create.json
# Execute with database persistence
manzano run-db examples/apps/<name> \
--request examples/apps/<name>/request_create.json \
--backend sqlite --db /tmp/grove-example.sqlite
See Also
- Workflow Scenarios -- Multi-service integration examples
- Hello World -- Your first module
- Cookbook -- Pattern-focused recipes