Getting started
Requirements#
-
Dart SDK
^3.13(Flutter 3.47 or later ships it). -
Nothing else for SQLite:
package:sqlite3downloads a hash-verified SQLite build at build time and ships it with your app. To use the operating system's library instead, add topubspec.yaml:hooks: user_defines: sqlite3: source: system
Create a project#
dart pub global activate dartisan_cli # from pub.dev
dartisan new blog # api template: auth, users, tokens, tests
dartisan new tiny --template=minimal
cd blog
dartisan migrate --seed
dartisan serve --watch # hot reload
Every project has a project-bound CLI, bin/dartisan.dart, that knows your
application (createApp() in bootstrap/app.dart). Inside a project the
global dartisan runs it, so dartisan alone lists every command, including
your own, and dartisan migrate --help shows a command's options.
dart run bin/dartisan.dart <command> is the same without the global tool.
Project structure#
The layout mirrors Laravel 12:
| Path | Purpose |
|---|---|
bootstrap/app.dart |
createApp(): routing, middleware, auth, rate limits, exceptions |
bootstrap/*.dart |
explicit registries: migrations, seeders, jobs, policies, listeners, commands |
routes/api.dart, routes/web.dart, routes/console.dart |
routes and the schedule |
lib/app/http/controllers, requests, resources |
HTTP layer |
lib/app/models, jobs, events, listeners, policies |
domain |
database/migrations, seeders, factories |
schema and data |
test/feature, test/unit, test/conformance |
tests |
Daravel uses no reflection and no code generation at build time. What
Laravel discovers automatically is listed explicitly in bootstrap/;
dartisan make:* generators add the entries for you, and
dartisan lint reports files missing from a registry.
Generators#
dartisan make:model Post --migration --factory
dartisan make:controller PostController --api --model=Post
dartisan make:request StorePostRequest
dartisan make:job PublishPost
Templates live in dartisan_cli; stub:publish copies them into stubs/
so you can change them.
Build and run#
dartisan build # dart build cli → build/server/bundle
APP_ISOLATES=4 ./build/server/bundle/bin/server
dartisan build --docker # multi-stage Dockerfile
The bundle is a directory: bin/server plus lib/ with the bundled SQLite.
Deploy the whole directory. See Deployment.