Update: updating project readme
This commit is contained in:
parent
8d016a5b56
commit
2ac0157b4a
2 changed files with 88 additions and 188 deletions
0
.prompts/.gitkeep
Normal file
0
.prompts/.gitkeep
Normal file
276
README.md
276
README.md
|
@ -1,211 +1,111 @@
|
||||||
# Angel3 Framework
|
<p align="center"><a href="https://protevus.com" target="_blank"><img src="https://git.protevus.com/protevus/branding/raw/branch/main/protevus-logo-bg.png"></a></p>
|
||||||
|
|
||||||
[![Angel3 Framework](angel3_logo.png)](https://github.com/dart-backend/angel)
|
# Protevus Platform
|
||||||
|
|
||||||
|
Protevus Platform is a highly versatile and extensible application server platform for the Dart programming language. It is a hard fork of the Angel3 framework, inspired by Express.js and Laravel, aiming to provide a familiar and Laravel-compatible API while leveraging the power of Dart.
|
||||||
|
|
||||||
![Pub Version (including pre-releases)](https://img.shields.io/pub/v/angel3_framework?include_prereleases)
|
> **Note:** This repository contains the core code of the Protevus Platform. If you want to build an application using Protevus, visit the main [Protevus repository](https://github.com/protevus/protevus).
|
||||||
[![Null Safety](https://img.shields.io/badge/null-safety-brightgreen)](https://dart.dev/null-safety)
|
|
||||||
[![Discord](https://img.shields.io/discord/1060322353214660698)](https://discord.gg/3X6bxTUdCM)
|
## About Protevus
|
||||||
[![License](https://img.shields.io/github/license/dart-backend/angel)](https://github.com/dart-backend/angel/LICENSE)
|
|
||||||
[![melos](https://img.shields.io/badge/maintained%20with-melos-f700ff.svg?style=flat-square)](https://github.com/invertase/melos)
|
|
||||||
|
|
||||||
**A production-ready dart backend framework.**
|
Protevus Platform allows developers to leverage their existing Laravel knowledge and experience in the Dart ecosystem. It combines the best features of Angel3 with Laravel-inspired design patterns and APIs, creating a powerful and familiar environment for web application development.
|
||||||
|
|
||||||
-----
|
## AI Assistance
|
||||||
|
|
||||||
## About
|
The Protevus Platform project utilizes AI assistance in various aspects of its development process. We believe in leveraging the capabilities of AI to enhance productivity, code quality, and overall project progress while maintaining transparency and adhering to ethical practices.
|
||||||
|
|
||||||
Angel3 originated from a fork of the archived Angel framework in support of Dart SDK 2.12.x or later. It is a full-stack backend framework in Dart that aims to streamline development by providing many common features out-of-the-box in a consistent manner. The codebase has been completely migrated and refactored to support null safety. One of the main goal is to enable developers to build both frontend and backend in dart language. Angel3 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. Visit our [website](<https://angel3-framework.web.app/>) to learn more.
|
### AI Tools and Models
|
||||||
|
|
||||||
The available features in Angel3 includes:
|
The following AI tools and models have been primarily employed in the development of the Protevus Platform:
|
||||||
|
|
||||||
* OAuth2 Authentication
|
- **Continue** (continue.dev)
|
||||||
* WebSocket
|
- **OpenRouter** (openrouter.ai)
|
||||||
* HTTP/2
|
- **Claude** (claude.ai)
|
||||||
* HTTP Streaming
|
- **Codestral** (mistral.ai)
|
||||||
* GraphQL
|
- **Voyage** (voyage.ai)
|
||||||
* Markdown, Mustache, Jinja and JAEL as Server-Side HTML Rendering
|
- Other tools and LLMs
|
||||||
* ORM for PostgreSQL and MySQL
|
|
||||||
* MongoDB, Sembast and RethinkDB as storage
|
|
||||||
* Redis as cache
|
|
||||||
|
|
||||||
See all of the available [`packages`](https://angel3-docs.dukefirehawk.com/packages) for more information.
|
### Guidelines and Limitations
|
||||||
|
|
||||||
## Important Notes
|
While AI assistance has been invaluable in accelerating certain aspects of development, we adhere to strict guidelines to ensure quality, security, and ethical use of AI in our development process.
|
||||||
|
|
||||||
Angel3 packages are published under `angel3_` prefix on pub.dev. These packages have passed all of their respective test suites before going live. The development work are currently focused on:
|
## Features
|
||||||
|
|
||||||
* Keeping the packages with `angel3_` prefix in sync with Dart SDK releases
|
- **Laravel API Compatibility**: Familiar API for Laravel developers
|
||||||
* Remove and replace deprecated classes and methods while keeping backward compatible
|
- **Modular Architecture**: Separating core components and libraries
|
||||||
* Refactor the code to use new language features
|
- **High Performance**: Built on top of the multi-threaded Conduit API
|
||||||
* Fix and resolve reported issues
|
- **Extensibility**: Support for custom extensions
|
||||||
* Performance tunning
|
- **Community-Driven**: Open-source principles and community contributions
|
||||||
* Improve on existing features, unit test, user guide and examples
|
- **Modular Packages**: Standalone Dart packages for each component
|
||||||
* Add new features
|
- **Comprehensive Routing**: Powerful routing capabilities
|
||||||
|
- **Dependency Injection**: Built-in support
|
||||||
|
- **Middleware Support**: For filtering HTTP requests
|
||||||
|
- **Authentication & Authorization**: Robust tools
|
||||||
|
- **Database Abstraction**: Query builder and ORM
|
||||||
|
- **Queueing System**: Manage background tasks
|
||||||
|
- **Event Broadcasting**: Real-time event capabilities
|
||||||
|
- **Full-Stack Experience**: Server-side views and Flutter support for frontends
|
||||||
|
- **WebSocket Support**: Real-time communication
|
||||||
|
- **ORM and Database Integration**: Work with various database systems
|
||||||
|
- **Templating Engine**: For server-side rendering
|
||||||
|
- **Static File Serving**: Built-in middleware
|
||||||
|
- **Testing Utilities**: Comprehensive testing support
|
||||||
|
|
||||||
The status of the project is as follows:
|
## Getting Started
|
||||||
|
|
||||||
Branch: `master`
|
To get started with Protevus Platform, follow these steps:
|
||||||
|
|
||||||
* Dart version : 3.x.x or later.
|
1. **Install Dart**: Ensure you have the Dart SDK installed on your system.
|
||||||
* Publish : Yes. Refer to packages with `angel3_` prefix on [pub.dev](https://pub.dev/publishers/dukefirehawk.com/packages).
|
|
||||||
* Null Safety : Yes
|
|
||||||
* Status : Production
|
|
||||||
* Notes : Use this branch for all PR submission
|
|
||||||
|
|
||||||
For more details, checkout [Project Status](https://github.com/dart-backend/angel/wiki/Project-Status)
|
2. **Create a new project**:
|
||||||
|
- dart create -t console my_protevus_app cd
|
||||||
|
- my_protevus_app
|
||||||
|
|
||||||
## Release Notes
|
3. **Add Protevus dependencies**: Add the following to your `pubspec.yaml`:
|
||||||
|
```yaml
|
||||||
|
dependencies:
|
||||||
|
protevus_framework: ^1.0.0
|
||||||
|
protevus_configuration: ^1.0.0
|
||||||
|
```
|
||||||
|
4. **Run pub get**:
|
||||||
|
```shell
|
||||||
|
dart pub get
|
||||||
|
```
|
||||||
|
5. **Create your first Protevus application**: Replace the contents of bin/my_protevus_app.dart with:
|
||||||
|
```dart
|
||||||
|
import 'package:protevus_framework/protevus_framework.dart';
|
||||||
|
import 'package:protevus_framework/http.dart';
|
||||||
|
|
||||||
### Release 9.0.0 (Future)
|
void main() async {
|
||||||
|
var app = Protevus();
|
||||||
|
var http = ProtevusHttp(app);
|
||||||
|
|
||||||
* Performance optimsation
|
app.get('/', (req, res) => res.write('Hello, Protevus!'));
|
||||||
* Update ORM to support macro
|
|
||||||
|
|
||||||
### Release 8.0.0 (Current)
|
await http.startServer('localhost', 3000);
|
||||||
|
print('Server listening at http://localhost:3000');
|
||||||
|
}
|
||||||
|
```
|
||||||
|
6. **Run your application**:
|
||||||
|
```shell
|
||||||
|
dart run bin/my_protevus_app.dart
|
||||||
|
```
|
||||||
|
Visit http://localhost:3000 in your browser to see your Protevus app in action!
|
||||||
|
|
||||||
* Updated `angel3_` packages to require dart >= 3.0.0
|
## Documentation
|
||||||
* Updated dependencies to the latest
|
Comprehensive documentation for Protevus Platform is available at protevus.com/docs/platform. The documentation covers installation, configuration, usage, and advanced topics, including guides and examples.
|
||||||
* Updated code generator to use `analyzer` 6.x.x
|
|
||||||
* Resolved issues related to generated container
|
|
||||||
|
|
||||||
### Release 7.0.0
|
## Plugins and Packages
|
||||||
|
Protevus Platform offers a wide range of official plugins and packages to extend its functionality, building upon the Angel3 ecosystem and introducing new Laravel-inspired components.
|
||||||
|
|
||||||
* Updated `angel3_` packages to require dart >= 2.17.x
|
## Community and Support
|
||||||
* Updated dependencies to the latest
|
GitHub Discussions: github.com/protevus/platform/discussions
|
||||||
* Updated code generator to use `analyzer` 5.x.x
|
Twitter: @Protevus
|
||||||
* Fixed ORM issues
|
Contributing
|
||||||
|
We welcome contributions from the community! Please read our CONTRIBUTING.md for guidelines on how to contribute to Protevus Platform.
|
||||||
### Release 6.0.0
|
|
||||||
|
## License
|
||||||
* Updated all `angel3_` packages to require dart >= 2.16.x
|
Protevus Platform is open-source software licensed under the MIT license.
|
||||||
* Updated ORM to support MariaDB 10.2.x (stable) and MySQL 8.x (beta)
|
|
||||||
* Updated code generator to use `analyzer` 3.x.x
|
## Acknowledgements
|
||||||
* Updated exception handling
|
Protevus Platform is built upon the foundation of Angel3 and inspired by Laravel. We'd like to thank the creators and contributors of both these frameworks for their invaluable work in the web development ecosystem.
|
||||||
* Added default logger to generate standardised logging messages
|
|
||||||
* Added `melos` support
|
|
||||||
* Removed deprecated API
|
|
||||||
* [**Breaking**] `error` for `AngelHttpException` is no longer mandatory
|
|
||||||
|
|
||||||
## TODO
|
|
||||||
|
|
||||||
* Improve HTTP and ORM performance
|
|
||||||
* Improve ORM for MySQL
|
|
||||||
* Add cache support in ORM (using Redis)
|
|
||||||
* Upgrade and release angel3_oauth2 8.0.0 (5 failed test cases)
|
|
||||||
* Upgrade and release angel3_auth_twitter 8.0.0 (Migrate to OAuth2)
|
|
||||||
* Upgrade and release angel3_shelf 8.0.0 (2 failed test cases)
|
|
||||||
|
|
||||||
## Installation and Setup
|
|
||||||
|
|
||||||
### Create a new project by cloning from boilerplate templates
|
|
||||||
|
|
||||||
1. Download and install [Dart](https://dart.dev/get-dart)
|
|
||||||
|
|
||||||
2. Clone one of the following starter projects:
|
|
||||||
* [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)
|
|
||||||
|
|
||||||
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:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
angel3 init hello
|
|
||||||
```
|
|
||||||
|
|
||||||
4. Run the project in development mode (*hot-reloaded* is enabled on file changes).
|
|
||||||
|
|
||||||
```bash
|
|
||||||
dart --observe bin/dev.dart
|
|
||||||
```
|
|
||||||
|
|
||||||
5. Run the project in production mode (*hot-reloaded* is disabled).
|
|
||||||
|
|
||||||
```bash
|
|
||||||
dart bin/prod.dart
|
|
||||||
```
|
|
||||||
|
|
||||||
6. Run as docker. Edit and build the image with the provided `Dockerfile` file.
|
|
||||||
|
|
||||||
7. Next, refer to the [developer guide](https://angel3-docs.dukefirehawk.com/) to learn more about Angel3 framework.
|
|
||||||
|
|
||||||
### Migrating from Angel to Angel3
|
|
||||||
|
|
||||||
Check out [Migrating to Angel3](https://angel3-docs.dukefirehawk.com/migration/angel-2.x.x-to-angel3/migration-guide-3)
|
|
||||||
|
|
||||||
## Performance Benchmark
|
|
||||||
|
|
||||||
The performance benchmark can be found at [TechEmpower Framework Benchmarks](https://www.techempower.com/benchmarks/#section=data-r22&test=composite&hw=ph)
|
|
||||||
|
|
||||||
The test cases are build using standard `Angel3 ORM` template for PostgreSQL and MySQL database. The result are used for fine-tuning Angel3 framework with respect to other frameworks. The following test cases will be added in the upcoming update to the benchmark.
|
|
||||||
|
|
||||||
1. Cache with Redis
|
|
||||||
2. Angel3 with MongoDB
|
|
||||||
|
|
||||||
## Examples and Documentation
|
|
||||||
|
|
||||||
Please visit our [User Guide](https://angel3-docs.dukefirehawk.com/) and [Examples](https://github.com/dart-backend/angel3-examples) for more detailed information on the available features of Angel3 framework.
|
|
||||||
|
|
||||||
## Community
|
|
||||||
|
|
||||||
Join us on [Discord](https://discord.gg/3X6bxTUdCM).
|
|
||||||
|
|
||||||
## Contributing
|
|
||||||
|
|
||||||
If you are interested in contributing to Angel3 framework please check out the [Contribution Guide](CONTRIBUTING.md).
|
|
||||||
|
|
||||||
### Development Setup
|
|
||||||
|
|
||||||
1. Fork `angel` repository
|
|
||||||
|
|
||||||
2. Clone the project to local and create a new branch
|
|
||||||
|
|
||||||
```bash
|
|
||||||
git clone https://github.com/<your_repo_name>/angel.git
|
|
||||||
git checkout -b feature/<your_branch_name>
|
|
||||||
```
|
|
||||||
|
|
||||||
3. Download and install [Dart 3](https://dart.dev/get-dart)
|
|
||||||
|
|
||||||
4. Install `melos` 6.1
|
|
||||||
|
|
||||||
```bash
|
|
||||||
dart pub global activate melos
|
|
||||||
```
|
|
||||||
|
|
||||||
5. Run `melos exec "dart pub upgrade"` to update all the packages
|
|
||||||
|
|
||||||
6. Make changes to the packages
|
|
||||||
|
|
||||||
## Donation & Support
|
|
||||||
|
|
||||||
If you like this project and interested in supporting its development work, you are welcome to make a donation via the following links.
|
|
||||||
|
|
||||||
* [![GitHub Sponsor](https://img.shields.io/static/v1?label=Sponsor&message=%E2%9D%A4&logo=GitHub&color=%23fe8e86)](https://github.com/sponsors/dukefirehawk)
|
|
||||||
* [Paypal Donation](https://paypal.me/dukefirehawk?country.x=MY&locale.x=en_US)
|
|
Loading…
Reference in a new issue