Django for Dart developers - A comprehensive web framework with Flutter admin interface
curl -fsSL https://raw.githubusercontent.com/dartango/framework/main/install.sh | bash# Download and run install.bat
iwr -Uri "https://raw.githubusercontent.com/dartango/framework/main/install.bat" -OutFile install.bat
./install.batgit clone https://github.com/dartango/framework.git
cd framework
chmod +x install.sh
./install.sh- Dart SDK (β₯3.0.0) - Install Dart
- Flutter (β₯3.10.0) - Install Flutter (for admin interface)
The Dartango SDK installs to ~/.dartango/ and includes:
~/.dartango/
βββ packages/
β βββ dartango/ # Core framework
β βββ dartango_cli/ # Command line tools
β βββ dartango_admin/ # Flutter admin interface
β βββ dartango_shared/ # Shared utilities
βββ examples/ # Example projects
βββ docs/ # Documentation
βββ bin/dartango # Global CLI
dartango --versiondartango create my_blog
cd my_blog# Terminal 1: Backend server
dartango serve
# Terminal 2: Flutter admin interface
cd admin
flutter run -d chrome- Backend API: http://localhost:8000
- Flutter Admin: http://localhost:8080 (or Chrome debug port)
- Default Login: admin / admin123
dartango create <project> # Create new project
dartango serve # Start development server
dartango startapp <app> # Create new app within project
dartango generate <type> # Generate boilerplate code
dartango build # Build for production
dartango test # Run tests
dartango doctor # Check system dependenciesWhen you create a new project, you get:
my_blog/
βββ bin/
β βββ main.dart # Server entry point
βββ lib/
β βββ app.dart # Main application
β βββ models/ # Data models
β βββ views/ # View controllers
β βββ admin/ # Admin configurations
β βββ urls.dart # URL routing
βββ admin/ # Flutter admin interface
β βββ lib/
β βββ web/
β βββ pubspec.yaml
βββ templates/ # HTML templates
βββ pubspec.yaml # Dependencies
- Django-style ORM with Model classes
- URL routing with pattern matching
- Admin interface with automatic CRUD
- Authentication and permissions
- Template system with inheritance
- Database migrations
- REST API endpoints
- WebSocket support
- Middleware pipeline
- Forms and validation
- Material Design admin interface
- Responsive layout for all devices
- Real-time updates via WebSocket
- CRUD operations for all models
- Dashboard with analytics
- Authentication flow
- Data visualization with charts
- Export functionality
// lib/models/blog_post.dart
import 'package:dartango/dartango.dart';
class BlogPost extends Model {
BlogPost();
@override
ModelMeta get meta => const ModelMeta(
tableName: 'blog_posts',
appLabel: 'blog',
);
String get title => getField<String>('title') ?? '';
set title(String value) => setField('title', value);
String get content => getField<String>('content') ?? '';
set content(String value) => setField('content', value);
bool get published => getField<bool>('published') ?? false;
set published(bool value) => setField('published', value);
}// lib/admin/blog_post_admin.dart
import 'package:dartango/dartango.dart';
import '../models/blog_post.dart';
class BlogPostAdmin extends ModelAdmin<BlogPost> {
BlogPostAdmin({required super.adminSite}) : super(modelType: BlogPost);
@override
List<String> get listDisplay => ['title', 'published', 'createdAt'];
@override
List<String> get searchFields => ['title', 'content'];
}// lib/urls.dart
import 'package:dartango/dartango.dart';
import 'views/blog_view.dart';
final urlPatterns = [
path('/', HomeView.asView(), name: 'home'),
path('/blog/', BlogView.asView(), name: 'blog'),
];// lib/app.dart
@override
Map<String, dynamic> get settings => {
'DEBUG': true,
'DATABASE_URL': 'sqlite:///myapp.db',
// or 'postgresql://user:pass@localhost:5432/mydb'
'SECRET_KEY': 'your-secret-key',
};@override
Future<void> setupAdmin(AdminSite adminSite) async {
adminSite.register<BlogPost>(BlogPost, BlogPostAdmin(adminSite: adminSite));
adminSite.register<User>(User, UserAdmin(adminSite: adminSite));
}# Build backend
dartango build
# Build Flutter admin
cd admin
flutter build webFROM dart:stable
WORKDIR /app
COPY . .
RUN dart pub get
RUN dart compile exe bin/main.dart -o server
FROM ubuntu:20.04
COPY --from=0 /app/server /app/server
COPY --from=0 /app/admin/build/web /app/admin
EXPOSE 8000
CMD ["/app/server"]- Documentation: dartango.dev/docs
- Examples:
~/.dartango/examples/ - Issues: GitHub Issues
- Discord: Dartango Community
# Check for updates
dartango doctor
# Reinstall latest version
curl -fsSL https://raw.githubusercontent.com/dartango/framework/main/install.sh | bashrm -rf ~/.dartango
# Remove from your shell profile: ~/.zshrc, ~/.bashrc, etc.
# Remove the lines:
# export DARTANGO_HOME="$HOME/.dartango"
# export PATH="$DARTANGO_HOME/bin:$PATH"If you're contributing to Dartango itself:
# Clone the repository
git clone https://github.com/dartango/framework.git
cd dartango
# Install melos for workspace management
dart pub global activate melos
# Bootstrap the workspace
melos bootstrap
# Run tests
melos test
# Run example
melos run:example- MTV Architecture: Model-Template-View pattern
- ORM with Active Record: Full-featured database abstraction
- Request/Response Pipeline: Middleware system
- URL Routing: Regex-based routing with named patterns
- Template Engine: Django-compatible template syntax
- Admin Interface: Auto-generated CRUD interfaces
- Authentication: User model with permissions
- Forms Framework: Declarative form definitions
- Static File Handling: Development and production serving
- Database Migrations: Automatic schema migrations
- Multiple Database Backends: PostgreSQL, MySQL, SQLite
- Caching: Memory, Redis, Memcached support
- Security: CSRF, XSS, SQL injection protection
- Development Tools: CLI management, debug toolbar
- Production Features: ASGI server, connection pooling
π Django for Dart developers - Build modern web applications with the power of Dart and the elegance of Django!