# Awesome Dart

A curated list of awesome Dart frameworks, libraries, and software. Items on the list are actively maintained, well documented, and popular in the Dart community. Inspired by the awesome lists.

### Contributing

Please take a quick look at the contribution guidelines first. If you see a package or project here that is no longer maintained or is not a good fit, please submit a pull request to improve this file. Thank you to all contributors; you rock!

### Contents

- Libraries
  - Client Web App Frameworks
  - Server Frameworks
  - Game Development
  - Animation
  - Template
  - Database
  - Package Managers
  - Utilities
  - Dependency Injection
  - Parsers
  - Validation
  - ORM
  - Image
  - Algorithms
  - Testing
  - Unions
- Tools
- IDEs, Editors, and Plugins
- Tutorials
- Community
- Everything Else

## Client Web App Frameworks

- AngularDart Community - Community-maintained AngularDart websites, packages, tools, and more!
- Flutter - Flutter is a framework to build high-performance, cross-platform mobile apps, allowing applications to be written for Android, iOS and Web Apps.
- MDL/Dart - Material Design Lite for Dart is a framework of components for web developers based on Google’s Material Design philosophy.
- OverReact - A library for building statically-typed React UI components.

## Server Frameworks

- Jaguar - A server framework built for speed, simplicity and extensibility.
- Start - Sinatra inspired web framework to serve static files, handle dynamic requests, websockets and create JSON responses.
- Shelf - Shelf makes it easy to create and compose web servers and parts of web servers.
  - There are many packages written for Shelf. By convention they start with shelf_.
- Vane - Framework with built-in server runtime environment and middleware system.
- Rikulo Stream - Lightweight web server with request routing, filtering, template engine, WebSocket, MVC design pattern, and file-based static resources.
- Alfred - Minimal ExpressJS-inspired server with routing and middlware.
- Dart Frog - A fast, minimalistic backend framework for Dart.

## Web Frameworks

- Jaspr - Jaspr is an modern web framework for building websites in Dart with support for both client-side and server-side rendering.

## Other Frameworks

- Rapid Open Hardware Development (ROHD) Framework - A framework for describing and verifying hardware.

## Cross-platform development

- universal_io - dart:io that also works in the browser.
- universal_html - dart:html that also works in the VM/Flutter.

## Game Development

- Flame - A minimalist Flutter game engine.
- StageXL - StageXL offers an easy to use and complete API (based on the Flash API) for impressive 2D content like games and other rich applications.
- DartRocket - DartRocket is a HTML5 game framework written in Dart and which uses the StageXL rendering engine.
- Pixi Dart - A port of the pixi.js rendering engine.
- Ranger - A game engine centered around HTML5 Canvas and a scene graph.

## Animation

- Universal Tween Engine - A port of the original java Universal Tween Engine created by Aurelien Ribbon.
- Spine Dart - An implementation of the Esoteric Software Spine runtime.

## Template

- mustache_template - A mustache template library that supports dart2js and dart2native.
- jaded - Port of the excellent Jade view engine.
- mason - Tools which allow developers to create and consume reusable templates called bricks.

## Database

- Postgres - A PostgreSQL database driver that uses the extended, binary protocol for more efficient and secure queries.
- SQLJockey - MySQL connector.
- PostgreSQL - PostgreSQL database driver.

## Package Managers

- Pub - Pub is used to manage packages.
- Cloudsmith - A fully managed package management SaaS, with support for Dart, Flutter, and much more. [Free for Public/OSS] [$]

## Utilities

- Archive - A library to encode and decode various archive and compression formats.
- built_collection - Immutable collections via the builder pattern.
- built_value - Immutable value types, enum classes, and serialization.
- Frappe - A functional reactive programming library for Dart. Frappé extends the functionality of Dart’s streams, and introduces new concepts like properties/signals.
- Quiver - A set of utility libraries that makes using many libraries easier and more convenient, or adds additional functionality.
- route_hierarchical - Route is a client routing library for Dart that helps make building single-page web apps.
- Darq - A port of functional LINQ from the .NET library.
- Basics - A Dart library containing convenient extension methods on basic Dart objects.

## Dependency Injection

- Angular DI - Dependency Injection framework by Angular.
- Dependencies - A simple and modular dependency injection system which doesn’t use mirrors.
- package: inject - Compile-time dependency injection for Dart and Flutter

## Parsers

- html - A library for working with HTML documents. Previously known as html5lib.
- markdown - Parse markdown into HTML on both the client and server.
- PetitParser - PetitParser combines ideas from scannerless parsing, parser combinators, parsing expression grammars and packrat parsers to model grammars and parsers as objects that can be reconfigured dynamically.
- XML - A lightweight library for parsing, traversing, querying and building XML documents.
- xmlstream - A streaming event-based XML Parser.
- YAML - A parser for YAML.
- Dart Tags - The library for parsing ID3 tags, written in pure Dart.

## Validation

- Constrain - Provides a constraint based Validation library inspired by Java Bean Validation but leveraging the superior language capabilities of Dart.
- validator.dart - String validation and sanitization for Dart.

## ORM

- Objectory - Objectory provides typed, checked environment to model, save and query data persisted on MongoDb.

## Image

- image - Provides server and web apps the ability to load, manipulate, and save images with various image file formats including PNG, JPEG, GIF, WebP, TIFF, TGA, PSD, PVR, and OpenEXR.

## Testing

- Guinness - A port of the Jasmine library.
- test - Provides a standard way of writing and running tests in Dart.
- spec - A streamlined testing framework for Dart & Flutter.

## Unions

- Freezed - Code generation for immutable classes that has a simple syntax/API without compromising on the features.

## Crash monitoring

- Sentry - Sentry provides self-hosted and cloud-based error monitoring that helps all software teams discover, triage, and prioritize errors in real-time.

## Tools

- DevTools - a suite of debugging and performance tools for Dart and Flutter.
- dart2js - compiles Dart code to JavaScript.
- js2dart - compiles Javascript code to Dart.
- Stagehand - A project scaffolding generator, inspired by tools like Web Starter Kit and Yeoman.
- Crossdart - Cross-referenced source code of the packages from Pub.
- Crossdart Github Chrome Extension - Adds “Go to declaration” and “Find Usages” functionality to your Dart projects on Github (both in tree views and pull requests).
- gulp-dart - A gulp plugin for compiling Dart code to JavaScript using dart2js.
- dev_compiler - Dart to JavaScript compiler designed to create idiomatic, readable JavaScript output.
- json2dart - Given a json, it generates the dart classes to parse and generate json with given structure.
- webdev_proxy - A proxy wrapper around webdev which adds support for rerouting 404s to the index, allowing for HTML push-based routing while running locally.
- Dart Code Metrics - Additional linter which reports code metrics, checks for anti-patterns and provides additional rules for Analyzer.
- m2cgen - A CLI tool to transpile trained classic ML models into a native Dart code with zero dependencies.
- Lakos - Visualize internal library dependencies in Graphviz and detect dependency cycles.

## Multithreading

- isolator - Isolator offer to you a simple way for creating two-component states with isolated part and frontend part of any kind - BLoC, MobX, ChangeNotifier and others

## Tutorials

- Hello Dart - A playful introduction to Dart.
- Getting Started with Dart & React
- Tour of Heroes - An app which covers the core fundamentals of AngularDart.
- Dart for beginner - Dart Chinese tutorial for beginner.
- Resolving Dart package version conflicts, faster than ever - How to use any package version in pub to resolve package version conflicts.

## Community

- Dartlang SubReddit
- Gitter Chat Channel
- Google Group
- Stack Overflow
- Facebook Group (pt-BR)
- Telegram chat (ru-RU)
- Telegram chat (id-ID)

## IDEs, Editors, and Plugins

- IntelliJ Plugin - Dart plugin from JetBrains for WebStorm, IntelliJ IDEA, PhpStorm, PyCharm, and RubyMine.
- Sublime Text Package - Sublime Text 3 Dart Package.
- Emacs Plugin - An Emacs mode for the Dart language.
- Vim Plugin - Syntax highlighting for Dart in Vim.
- Atom Plugin - Dart support for Atom.
- VSCode Plugin - Dart support for Visual Studio Code.
- DartPad - Online lightweight editor.
- Dart Code - Dart support for Visual Studio Code.
- Module Linker - Chrome Extension that adds direct links to module import statements on GitHub.
- Dart Barrel File Generator - VSCode extension that generates barrel files for Dart projects.

## Everything Else

There are lots of awesome libraries being added to Pub all the time. If you can’t find a library on this list that meets your needs, go ahead and search for it on Pub. And if you end up finding an awesome library, we would love a pull request with the info so that everyone else can discover it as well. Just make sure to read the contributing guidelines first.

## License

dart.md Github