2021-06-21 04:07:48 +00:00
# Angel3 Framework
[![Angel3 Framework ](./logo3.png )](https://github.com/dukefirehawk/angel)
2020-02-15 23:35:27 +00:00
2021-12-21 01:11:53 +00:00
![Pub Version (including pre-releases) ](https://img.shields.io/pub/v/angel3_framework?include_prereleases )
2021-05-16 09:54:16 +00:00
[![Null Safety ](https://img.shields.io/badge/null-safety-brightgreen )](https://dart.dev/null-safety)
[![Gitter ](https://img.shields.io/gitter/room/nwjs/nw.js.svg )](https://gitter.im/angel_dart/discussion)
2021-05-16 08:07:47 +00:00
[![License ](https://img.shields.io/github/license/dukefirehawk/angel )](https://github.com/dukefirehawk/angel/LICENSE)
2022-03-20 00:55:30 +00:00
[![melos ](https://img.shields.io/badge/maintained%20with-melos-f700ff.svg?style=flat-square )](https://github.com/invertase/melos)
2020-02-15 23:35:27 +00:00
2023-03-11 04:44:22 +00:00
**A polished, production-ready backend framework in Dart.**
2020-02-15 23:35:27 +00:00
-----
2021-06-21 04:07:48 +00:00
2020-02-15 23:35:27 +00:00
## About
2021-06-21 04:07:48 +00:00
2023-03-11 04:44:22 +00:00
Angel3 started life as a fork of the archived `Angel framework` to support null-safety in Dart SDK 2.12.x and beyond. It is a full-stack Web framework in Dart that aims to streamline development by providing many common features out-of-the-box in a consistent manner. One of the main goal is to enable developers to build both frontend and backend in the same language, Dart. Angel3 framework is designed as a collection of plugins that enable developers to pick and choose the parts needed for their projects. A series of starter templates are also provided for quick start and trial run with Angel3 framework. Visit our [website ](<https://angel3-framework.web.app/> ) for more details.
2020-02-15 23:35:27 +00:00
2022-08-28 17:51:56 +00:00
The available features in Angel3 includes:
2021-06-21 04:07:48 +00:00
2023-03-11 04:44:22 +00:00
* Basic and OAuth2 Authentication
* ORM for PostgreSQL and MySQL
* MongoDB
2021-06-21 04:07:48 +00:00
* GraphQL
2023-03-11 04:44:22 +00:00
* Proxy and Cache
* Static File Handling
* Server Side Rendering
* Websocket
2020-02-15 23:36:29 +00:00
2021-06-21 04:07:48 +00:00
See all the available [`packages` ](https://angel3-docs.dukefirehawk.com/packages ) for more information.
## Important Notes
2020-02-15 23:35:27 +00:00
2023-03-11 04:44:22 +00:00
The development work are currently focused on:
* Keeping the packages with `angel3_` prefix in sync with Dart SDK releases
* Remove and replace deprecated classes and methods while keeping backward compatible
* Refactor the code to use new language features
* Fix and resolve reported issues
* Performance tunning
* Improve on existing features, unit test, user guide and examples
* Add new features
2021-03-13 02:32:48 +00:00
2021-08-20 04:59:15 +00:00
The status of the code base is as follows:
2021-03-13 02:00:29 +00:00
2021-08-20 04:59:15 +00:00
Branch: `master`
2021-06-21 04:07:48 +00:00
2022-08-28 17:51:56 +00:00
* Dart version : 2.17.x or later.
2021-08-20 04:59:15 +00:00
* Publish : Yes. Refer to packages with `angel3_` prefix on [pub.dev ](https://pub.dev/publishers/dukefirehawk.com/packages ).
2021-12-01 07:10:58 +00:00
* Null Safety : Yes
* Status : Production
* Notes : Use this branch for all PR submission
2021-03-13 02:00:29 +00:00
2021-05-16 08:07:47 +00:00
For more details, checkout [Project Status ](https://github.com/dukefirehawk/angel/wiki/Project-Status )
2021-03-13 02:12:24 +00:00
2022-04-24 01:42:33 +00:00
## Release Notes
2023-03-11 04:44:22 +00:00
### Release 8.0.0 (Upcoming)
2022-08-28 17:51:56 +00:00
2023-03-11 04:44:22 +00:00
* Updated all `angel3_` packages to 8.0.0
* Updated all `angel3_` packages to require dart >= 3.0.x
### Release 7.0.0 (Current)
* Updated all `angel3_` packages to 7.0.0
2022-08-28 17:51:56 +00:00
* Updated all `angel3_` packages to require dart >= 2.17.x
* Updated dependencies to the latest libraries
* Fixed ORM issues
* Fixed `dart analyze .` warnings
2021-06-21 04:07:48 +00:00
## Installation and Setup
2020-02-15 23:35:27 +00:00
2021-08-20 04:59:15 +00:00
### Create a new project by cloning from boilerplate templates
2021-06-21 04:07:48 +00:00
1. Download and install [Dart ](https://dart.dev/get-dart )
2021-08-20 04:59:15 +00:00
2. Clone one of the following starter projects:
2022-10-03 15:31:46 +00:00
* [Angel3 Basic Template ](https://github.com/dukefirehawk/boilerplates/tree/v7/angel3-basic )
* [Angel3 ORM Template ](https://github.com/dukefirehawk/boilerplates/tree/v7/angel3-orm )
* [Angel3 ORM MySQL Template ](https://github.com/dukefirehawk/boilerplates/tree/v7/angel3-orm-mysql )
* [Angel3 Graphql Template ](https://github.com/dukefirehawk/boilerplates/tree/v7/angel3-graphql )
2021-05-16 10:46:58 +00:00
2021-08-20 04:59:15 +00:00
3. Run the project in development mode (*hot-reloaded* is enabled on file changes).
```bash
dart --observe bin/dev.dart
```
4. Run the project in production mode (*hot-reloaded* is disabled).
```bash
dart bin/prod.dart
```
5. Run as docker. Edit and build the image with the provided `Dockerfile` file.
6. Next, refer to the [developer guide ](https://angel3-docs.dukefirehawk.com/ ) to learn more about Angel3 framework.
### Create a new project with Angel3 CLI
1. Download and install [Dart ](https://dart.dev/get-dart )
2. Install the [Angel3 CLI ](https://pub.dev/packages/angel3_cli ):
```bash
dart pub global activate angel3_cli
```
3. On terminal, create a new project:
2021-06-21 04:07:48 +00:00
2021-08-20 04:59:15 +00:00
```bash
angel3 init hello
```
2020-02-15 23:35:27 +00:00
2021-08-20 04:59:15 +00:00
4. Run the project in development mode (*hot-reloaded* is enabled on file changes).
2020-02-15 23:35:27 +00:00
2021-08-20 04:59:15 +00:00
```bash
dart --observe bin/dev.dart
```
2020-02-15 23:35:27 +00:00
2021-08-20 04:59:15 +00:00
5. Run the project in production mode (*hot-reloaded* is disabled).
2020-02-15 23:35:27 +00:00
2021-08-20 04:59:15 +00:00
```bash
dart bin/prod.dart
```
2020-02-15 23:35:27 +00:00
2021-08-20 04:59:15 +00:00
6. Run as docker. Edit and build the image with the provided `Dockerfile` file.
2020-02-15 23:35:27 +00:00
2021-08-20 04:59:15 +00:00
7. Next, refer to the [developer guide ](https://angel3-docs.dukefirehawk.com/ ) to learn more about Angel3 framework.
2020-02-15 23:35:27 +00:00
2021-08-20 04:59:15 +00:00
### Migrating from Angel to Angel3
2021-03-13 03:00:04 +00:00
2021-06-21 04:07:48 +00:00
Check out [Migrating to Angel3 ](https://angel3-docs.dukefirehawk.com/migration/angel-2.x.x-to-angel3/migration-guide-3 )
2021-05-16 08:07:47 +00:00
2021-12-21 01:11:53 +00:00
## Performance Benchmark
The performance benchmark can be found at
2022-07-24 04:00:10 +00:00
[TechEmpower Framework Benchmarks Round 21 ](https://www.techempower.com/benchmarks/#section=data-r21&test=composite )
2021-12-21 01:11:53 +00:00
2022-08-28 17:51:56 +00:00
The test cases are build using standard `Angel3 ORM` template. The result are used for fine-tuning Angel3 framework. The following test cases will be added in the upcoming update to the benchmark.
2022-01-08 08:16:50 +00:00
2022-10-03 15:31:46 +00:00
1. Cached queries
2. Angel3 with MongoDB
2021-12-21 01:11:53 +00:00
2020-02-15 23:35:27 +00:00
## Examples and Documentation
2021-06-26 10:02:41 +00:00
Visit the [User Guide ](https://angel3-docs.dukefirehawk.com/ ) for dozens of guides and resources, including video tutorials, to get up and running as quickly as possible with Angel3 framework.
2020-02-15 23:35:27 +00:00
2021-06-21 04:07:48 +00:00
Examples and complete projects can be found [here ](https://github.com/dukefirehawk/angel3-examples ).
2020-02-15 23:35:27 +00:00
2021-06-21 04:07:48 +00:00
You can also view the [Angel3 API ](http://www.dartdocs.org/documentation/angel_framework/latest ).
2020-02-15 23:35:27 +00:00
2020-02-15 23:36:29 +00:00
## Contributing
2021-06-21 04:07:48 +00:00
2021-06-26 10:02:41 +00:00
Interested in contributing to Angel3? See the contribution guide [here ](CONTRIBUTING.md ).
2022-08-13 02:14:43 +00:00
2022-08-16 11:19:04 +00:00
## Donation & Support
2022-08-13 02:14:43 +00:00
2022-08-28 17:51:56 +00:00
If you like this project and interested in supporting its development, you can make a donation via [paypal ](https://paypal.me/dukefirehawk?country.x=MY&locale.x=en_US ) service.