Express-like API
Familiar routing patterns and hook system that feels right at home for Express.js developers
Arcade is a minimal web framework for Dart that brings the simplicity and familiarity of Express.js to the Dart ecosystem. It provides a clean, intuitive API for building web applications and APIs while leveraging Dart’s strong typing and performance.
Express-like API
Familiar routing patterns and hook system that feels right at home for Express.js developers
Type Safety
Full type safety with Dart’s strong typing system, catching errors at compile time
WebSocket Support
Built-in WebSocket support for real-time applications with a clean, simple API
Minimal Core
Lightweight core that doesn’t impose opinions, letting you structure your app your way
import 'package:arcade/arcade.dart';
void main() async { await runServer( port: 3000, init: () { route.get('/').handle((context) => 'Hello, World!');
route.get('/users/:id').handle((context) { final userId = context.pathParameters['id']; return {'userId': userId, 'name': 'John Doe'}; });
route.post('/users') .before((context) { // Run authentication check before handler print('Authenticating user...'); return context; }) .handle((context) async { final body = await context.jsonMap(); // Handle user creation return {'created': true, 'user': body.value}; }) .after((context, result) { // Log after handler completes print('User created successfully'); return (context, result); }); }, );}
If you’ve used Express.js, you’ll feel right at home. Arcade brings the same intuitive routing patterns to Dart.
Built with real-world applications in mind, Arcade includes features like:
Arcade’s minimal core is designed to be extended. Use it standalone for simple applications, or combine it with dependency injection frameworks like Injectable for larger projects.
Arcade comes with a growing ecosystem of packages:
Check out the Getting Started guide to create your first Arcade application!