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

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors