Server-side Dart framework · Laravel-inspired primitives
Build real web apps with Dart on the server.
Archery gives you a clean, batteries-included backend: Router, Middleware, Kernel, IoC container, and templating — designed for speed, clarity, and a single-language workflow.
dart:io
native server core
No magic
explicit primitives
Fast
low overhead
Full-stack
views + APIs
Peek inside
Routing, controllers, and server setup — straight Dart.
Scroll →
Quickstart
The smallest “I get it” example.
~60 seconds
// routes.dart
Router()
..get('/', (req) => req.view('welcome'))
..get('/health', (req) => req.json({'ok': true}))
..group(prefix: '/api', routes: () {
r.get('/users/:id', (req) => req.json({'id': req.params.int('id')}));
});
Get Archery updates
Release notes, screencast drops, and milestone progress. No spam.
Unsubscribe anytime.
Why Dart on the server?
If you already like Dart’s ergonomics, this is the missing piece: a backend that feels intentional.
- One language. Share types, utilities, and tooling across CLI + server.
-
Fast I/O. Async-first with
dart:ioand isolates. - Less ceremony. Batteries included — no framework soup, no reflection tricks.
A focused toolkit
Archery is built from small primitives that compose cleanly — so your app stays readable as it grows.
- Batteries-included
-
Native
dart:ioserver + Router + Middleware + Kernel + App + Container. Start building immediately. - IoC container
- Register services, singletons, and scoped dependencies — without reflection or hidden magic.
- Static files
- Serve public assets with MIME detection + caching. Great for docs sites, landing pages, and full-stack apps.
- Dynamic routing
- Expressive routes with typed params and middleware pipelines — return JSON, HTML, or custom responses.
- Templating
- Lightweight, Blade-inspired views with layouts, components, and clean server-side rendering.
- Config API
- JSON config with dot-notation access, environment layering, and runtime reloads.