Skip to content

samuelkchris/dartango

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

34 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Dartango Framework SDK

Django for Dart developers - A comprehensive web framework with Flutter admin interface

πŸš€ Quick Installation

macOS/Linux

curl -fsSL https://raw.githubusercontent.com/dartango/framework/main/install.sh | bash

Windows

# Download and run install.bat
iwr -Uri "https://raw.githubusercontent.com/dartango/framework/main/install.bat" -OutFile install.bat
./install.bat

Manual Installation

git clone https://github.com/dartango/framework.git
cd framework
chmod +x install.sh
./install.sh

βœ… Prerequisites

πŸ“¦ What Gets Installed

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

🎯 Quick Start

1. Verify Installation

dartango --version

2. Create Your First Project

dartango create my_blog
cd my_blog

3. Start Development

# Terminal 1: Backend server
dartango serve

# Terminal 2: Flutter admin interface  
cd admin
flutter run -d chrome

4. Access Your App

πŸ› οΈ Available Commands

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 dependencies

πŸ—οΈ Project Structure

When 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

🎨 Features

Backend (Dart)

  • 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

Frontend (Flutter)

  • 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

πŸ“š Examples

Creating a Blog Model

// 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);
}

Registering with Admin

// 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'];
}

URL Routing

// 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'),
];

πŸ”§ Configuration

Database Setup

// 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',
};

Admin Registration

@override
Future<void> setupAdmin(AdminSite adminSite) async {
  adminSite.register<BlogPost>(BlogPost, BlogPostAdmin(adminSite: adminSite));
  adminSite.register<User>(User, UserAdmin(adminSite: adminSite));
}

🌍 Deployment

Building for Production

# Build backend
dartango build

# Build Flutter admin
cd admin
flutter build web

Docker Deployment

FROM 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"]

πŸ†˜ Support

πŸ”„ Updating

# Check for updates
dartango doctor

# Reinstall latest version
curl -fsSL https://raw.githubusercontent.com/dartango/framework/main/install.sh | bash

πŸ—‘οΈ Uninstalling

rm -rf ~/.dartango
# Remove from your shell profile: ~/.zshrc, ~/.bashrc, etc.
# Remove the lines:
# export DARTANGO_HOME="$HOME/.dartango" 
# export PATH="$DARTANGO_HOME/bin:$PATH"

πŸ—οΈ Development Setup (Contributors)

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

πŸ“‹ Core Framework Features

Complete Django Feature Parity

  • 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!

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors