The Protevus Platform: Unified Full-Stack Development https://protevus.com
Find a file
2017-06-10 14:04:32 -04:00
.idea Updated VSCode as well 2017-06-10 11:35:36 -04:00
.vscode Updated VSCode as well 2017-06-10 11:35:36 -04:00
bin Fixed image regexp 2017-06-10 14:04:32 -04:00
config Update default.yaml 2017-01-28 11:23:35 -05:00
lib Comments, multi-thread update, bye Mongo 2017-06-10 11:24:36 -04:00
test/services Comments, multi-thread update, bye Mongo 2017-06-10 11:24:36 -04:00
tool Comments, multi-thread update, bye Mongo 2017-06-10 11:24:36 -04:00
views Favicon 2016-12-27 09:30:22 -05:00
web Bye DS store 2017-02-12 19:08:06 -05:00
.analysis-options Update .analysis-options 2017-03-12 18:57:24 -04:00
.dockerignore Docker! 2017-01-14 19:15:20 -05:00
.gitignore Update .gitignore 2017-03-05 22:03:59 -05:00
Dockerfile 121 2017-01-14 19:56:30 -05:00
LICENSE :) 2016-04-21 22:56:21 -04:00
pubspec.yaml Comments, multi-thread update, bye Mongo 2017-06-10 11:24:36 -04:00
README.md Fix snippet 2017-06-10 11:45:59 -04:00

The Angel Framework

Gitter version: v1.0.0

Fill out the v1.0.0 survey now!!!

Wiki (in-depth documentation)

API Documentation

Roadmap

File an Issue

The Dart server framework that's ready for showtime.

Angel is a full-featured server-side Web application framework for the Dart programming language. It strives to be a flexible, extensible system, to be easily scalable, and to allow as much code to be shared between clients and servers as possible. Ultimately, I believe that this approach will shorten the time it takes to build a full-stack Web application, from start to finish. Read more...

Like what you see? Please lend us a star.

Newest Tutorials

Installation & Setup

Having errors with a fresh Angel installation? See here for help.

Once you have Dart installed, bootstrapping a project is as simple as running one shell command:

Install the Angel CLI:

pub global activate angel_cli

Bootstrap a project:

angel init hello

You can even have your server run and be live-reloaded on file changes:

dart bin/server.dart

Next, check out the detailed documentation to learn to flesh out your project.

Features

With features like the following, Angel is the all-in-one framework you should choose to build your next project:

Basic Example

More examples and complete projects can be found in the angel-example organization.

The following is an explosive application complete with a REST API and WebSocket support. It interacts with a MongoDB database, and reads configuration automatically from a config/<ANGEL-ENV-NAME>.yaml file. Templates are rendered with Mustache, and all responses are compressed via GZIP.

All in just about 20 lines of actual code.

import 'dart:async';
import 'package:angel_common/angel_common.dart';
import 'package:angel_websocket/server.dart';
import 'package:mongo_dart/mongo_dart.dart';

main() async {
  var app = await createServer();
  var server = await app.startServer(InternetAddress.LOOPBACK_IP_V4, 8080);
  print('Angel listening at http://${server.address.address}:${server.port}');
}

Future<Angel> createServer() async {
  // New instance...
  var app = new Angel();
  
  // Configuration
  await app.configure(loadConfigurationFile());
  await app.configure(mustache());
  Db db = new Db();
  await db.open(app.mongodb_url);
  app.container.singleton(db); // Add to DI

  // Routes
  app.get('/foo', (req, res) => res.render('hello'));
  
  app.post('/query', (Db db) async {
    // Db is an injected dependency here :)
    return await db.collection('foo').find().toList();
  });
  
  // Services (which build REST API's and are broadcasted over WS)
  app.use('/bombs', new MongoService(db.collection('bombs')));
  app.use('/users', new MongoService(db.collection('users')));
  app.use('/explosions', new AnonymousService(create: (data, [params]) => data));
  
  
  // Setup WebSockets, add GZIP, etc.
  await app.configure(new AngelWebSocket());
  app.responseFinalizers.add(gzip());
  
  return app;
}

Get Social

Join an activate chat about the Angel Framework, or seek assistance: https://gitter.im/angel_dart/discussion