Dartvel
A full-stack application platform built around Flutter.
You write pages, data models, backend functions, UI and business logic. Routing, the typed client, serialization, forms, the admin and the server are generated, compiled or served for you.
dartvel_dev is the umbrella package: one dependency that brings the whole
framework at one coherent set of versions. The command you run is dartvel,
from dartvel_cli.
Start a project
Install the CLI from pub.dev:
dart pub global activate dartvel_cli
Activate dartvel_cli, the command, rather than this package: this one is what
an application depends on, and it depends on Flutter, which pub does not run as
a global command. Pub puts dartvel in ~/.pub-cache/bin; add that to your
PATH if your shell cannot find it.
The same CLI also comes as a self-contained binary, with no Dart or Flutter needed to run it:
brew install Danroyal001/dartvel_dev/dartvel_dev
npm install -g dartvel_dev
or take one from the releases page. Then:
dartvel create my_app
cd my_app
dartvel dev
The dartvel_cli README covers every install route, the command reference and configuration.
What is in it
| Package | What it carries |
|---|---|
dartvel_core |
Pure Dart: data models, database, cache, queues and jobs, auth, notifications, AI adapters, the annotations the generator reads. |
dartvel_flutter |
Flutter: DVBox, DVText and the DVModifier chain, routing, signals, DV.Platform native APIs, generated forms and pages. |
dartvel_shelf |
The Rust/Axum server runtime, reached over FFI, speaking HTTP/2 and HTTP/3. |
dartvel_cli |
The dartvel command: generation, dev server, build, deploy. |
It exposes them through these libraries:
| Import | What it gives you |
|---|---|
package:dartvel_dev/dartvel.dart |
Everything: core, Flutter, the server's Router, serve and options, observability, Rust bindings. |
package:dartvel_dev/dartvel_ui.dart |
The whole of dartvel_flutter. |
package:dartvel_dev/dartvel_core.dart |
The whole of dartvel_core. |
package:dartvel_dev/dartvel_backend.dart |
@DVBackendFunction, @DVBackendCron, request and response types, and dartvel_shelf. |
package:dartvel_dev/dartvel_database.dart |
DV.Database, its adapters, and the cache adapters. |
package:dartvel_dev/dartvel_storage.dart |
DV.FileStorage, with its in-memory and S3 adapters. |
package:dartvel_dev/dartvel_auth.dart |
DV.Auth, providers and password hashing. |
package:dartvel_dev/dartvel_ai.dart |
DV.AI and the adapters for Claude, OpenAI, Gemini, OpenRouter, Ollama and a local one. |
package:dartvel_dev/dartvel_platform.dart |
DV.Platform and its device APIs. |
package:dartvel_dev/dartvel_observability.dart |
Logging and observability. |
package:dartvel_dev/dartvel_rust_bindings.dart |
DVRust, the Rust bindings. |
package:dartvel_dev/dartvel_cli.dart |
The CLI as a library, for tools that drive it from Dart. |
In an application, pages and widgets import the generated barrel,
lib/dartvel_client/dartvel_client.dart, which re-exports the framework
alongside the application's own generated routes, models and client. Data
models and backend functions, which the generator reads rather than writes,
import package:dartvel_core/dartvel.dart.
The umbrella, or the individual packages
dartvel create writes the individual packages into the new project's
pubspec.yaml: dartvel_core, dartvel_flutter and dartvel_shelf, with
dartvel_cli as a dev dependency. That is the layout to start from.
Depend on the individual packages when:
- the code is pure Dart, such as a server, a worker or a command-line tool.
dartvel_devdepends on Flutter, anddartvel_coredoes not; - you want only part of the framework, or want to move one package ahead of the others;
- your source imports
package:dartvel_core/...orpackage:dartvel_flutter/...by name, as the filesdartvel createanddartvel generatewrite do. Those imports resolve through the umbrella, but thedepend_on_referenced_packageslint reports each one until the package is declared.
Depend on dartvel_dev when you want one line that moves every Dartvel
package together, for a Flutter application or a Flutter package built on
Dartvel. Each release of dartvel_dev constrains its siblings to the
versions published beside it (0.9.2 takes dartvel_core, dartvel_flutter
and dartvel_cli ^0.9.2 and dartvel_shelf ^0.9.1), so raising that one
constraint moves the whole set.
In an application, keep backend functions importing
package:dartvel_core/dartvel.dart, not the umbrella. The generated server is
pure Dart and leaves out any import that reaches Flutter, and
package:dartvel_dev does. Declaring dartvel_core and dartvel_flutter
beside the umbrella, with no version of their own to manage, keeps the lint
quiet:
dependencies:
flutter:
sdk: flutter
dartvel_dev: ^0.9.2
dartvel_core: any # the umbrella decides the version
dartvel_flutter: any
dev_dependencies:
dartvel_cli: ^0.9.2 # to run the CLI with `dart run dartvel_cli:dartvel`
dart run <package>:<executable> is for packages the project depends on
directly, so declare dartvel_cli if you run the CLI that way rather than
from an installed binary.
Every Dartvel package needs Dart 3.13 and Flutter 3.47 or newer.
example/README.md shows a project on the umbrella.
Every Dartvel package needs Dart 3.13 and Flutter 3.47 or newer.
example/README.md shows a project on the umbrella.
Why the package is dartvel_dev
The framework is Dartvel and the command is dartvel. Only the published
identifier carries a suffix, because dartvel on pub.dev was taken on
2026-08-06 by an unrelated package. The same name is used on pub.dev, npm and
Homebrew so that whichever way you install it, it is called the same thing.
Status, stated plainly
Dartvel is published early. Per-section implementation status lives in
docs/spec-status.json
and is checked by a tool that fails when a section claims to be built and the
evidence it names does not exist. dartvel spec status summarises it.
Each entry carries two independent labels: how much the public surface can still move, and how much is actually built. A frozen contract that is deliberately unbuilt is marked as such rather than implied to work, and what is absent is written down next to what is present.
Verified per-target build status lives in
docs/build-targets.md,
where "verified" means the command was run and the artifact inspected, never
inferred because a sibling target works.
Links
- dartvel.dev
- Repository and getting started
- Changelog; 0.7.0 carries breaking changes in the CLI, core and Flutter packages, listed in their changelogs.
- Issues
Libraries
- dartvel
- dartvel_ai
- AI: the
DV.AIfacade plus everything needed to configure and drive it. - dartvel_auth
- Authentication: the
DV.Authfacade, providers, and password hashing. - dartvel_backend
- dartvel_cli
- dartvel_core
- dartvel_database
- Database: the
DV.Databasefacade and its adapters, andDV.Cachewith the cache adaptersDV.Cache.withAdapterswitches to. - dartvel_observability
- dartvel_platform
- dartvel_rust_bindings
- dartvel_storage
- File storage: the
DV.FileStoragefacade and its adapters. - dartvel_ui