/equal

eQual is a versatile web-oriented framework aiming to elegantly manage Business Logic involved in modern Web Applications. It gives the ability to create instant REST API & reusable micro-services, and is ready for low-code development & interactions with front-end Apps.

Primary LanguageJavaScriptGNU Lesser General Public License v3.0LGPL-3.0

eQual is a complete open-source low-code web-based framework, designed to efficiently create and manage modern softwares that can adapt to any Application Logic.

"Not everyone can be a fullstack developer, but with eQual, anyone can develop like one": Developing an application from end to end is extremely complex and requires a wide range of skills that few people possess on their own. eQual's mission is to enable any developer to create production-ready applications by helping them compensate for the aspects they are less proficient in.

⭐ Before reaching the moon, we need stars: if you find eQual useful, nice, or simply relevant, please consider giving us a star on GitHub! Your support encourages us and will help making eQual the most powerful framework ever.

🛠️ Contributors welcome! You want to contribute to a great open-source project? We need help to keep on 🚀, finishing 🚧, fixing 🐛, and make it 🎨

Build Status Number of contributors PRs Welcome first-timers-only License: LGPL v3 GitHub commit activity GitHub stars Discord Follow us on X, formerly Twitter Follow us on Mastodon

eQual - Create great Apps, your way!

✨ eQual - Create great Apps, your way! ✨

eQual - Create great Apps, your way!

eQual offers a native Low-Code approach, based on the definition of the application logic and components (rather than on code or the language used).

Data is modeled via entities, to which a large part of the application logic is associated (workflow, roles, events, actions, policies), which are manipulated by the ORM, with which it is possible to interact using CQRS controllers.

In turn, the Controllers can be invoked via an API.

eQual offers tools that allow the visual consultation and editing of the different components, in turn in the form of relational diagrams, and entity, workflow, view, menu, and translation editors.

It also has a rendering engine that allows views and menus to be assembled in order to define a complete application.

This mechanism enables eQual to generate an application without writing a single line of code, providing both a user interface and an API that can be connected to any external service.

Features

Beside its revolutionary edge, eQual is a fully-featured framework providing an amazing set of both traditional and innovative features.

Low-Code

Visual Workbench for building Apps: No-code editor for all components (models, views, routes, ...).
Instant APIs Without Code: Auto-documented controllers with an announcement system.
Desktop & mobile: Customizable layout to fit any device screen.
Views: Create any view without coding - form, lists, menus, charts, Dashboard.

Architecture

CQRS architecture: Division of controllers into Action Handlers, Data Providers, and App Providers.
MVC segregation: Strict distinction between Models (entities), Views and Controllers.
Dependency injection: Inject services into classes, methods, controllers, or functions anywhere.
Data Adaptation: Automatically transform received data based on format and context.
Services Extensibility: Ability to extend services behavior, and to register custom ones.
Cascading Configuration: Overridable settings at different levels (default, global, package).
I/O as HTTP messages: Inputs & outputs are handled as text in all contexts (default is 'application/json').

Entities & ORM

Model definition: With support for inheritance, workflows, actions, roles and policies, transitions, and events.
CRUD operations: Perform create, read, update, and delete operations on individual objects or collections.
Domains: Simple array notation for any possible boolean condition, either directly or with references.
Date References: Enables defining a date relative to another date using specific syntactic notations.
Explicit typing (Usages): Attach any value to a Usage that can be flawlessly adapted (converted) to any other language or environment.

Security

Authentication Management: HTTP Auth support (JWT) & 3 levels of visibility (public, protected, private).
Granular access control: Set permissions of any kind at any level (ACL, RBAC, PBAC, ABAC, ReBAC).
Security Policies: Restrict access to a set of users or groups, based on their IP or Schedule.
Secure: All the credentials are securely encrypted using bcrypt 448-bits with random salt.

Native Features

Settings values: Global, group, user, with multilingual support.
Emails sending: Send emails via SMTP, either instantly or queued.
Multi-formats exports: Export any Controller data in TXT, CSV, or PDF formats.

Miscellaneous

Database: Ability to connect to various data source (DBMS), with guidelines to develop your own if needed.
Multi-user: Allows concurrency through Optimistic Concurrency Control.
Multi-lang & Multi-locale support: Provides multilingual support and regional settings.
Self-host: Supports Docker, Kubernetes, AWS EC2, Google Cloud Run, and more.
Embedded documentation: Embeds end-user documentation directly in Apps.
CLI: Powerful command-line tool to easily discover available controllers and their roles & expected params.
Auto-documented Controllers: Description with parameters along with their types and attributes.
Logging: Recording of the history of changes made to entities, including user and date.
Scheduled tasks: Execute controllers as scheduled tasks, either recurring or one-time.
Alerts system: Allows to manage alerts (notice or error) linked to Controllers, with ability to ignore retry execution.

Coding Amenities

Selectable debug levels and modes: Report anything, anywhere in the code, with 6 levels and 7 modes.
Unit testing: Use AAA (Arrange, Act, Assert) pattern and support for rollback.
Debug Console: Search amongst logs, grouped by threads, with keywords, level or mode.

Upcoming features

🔲 Version control: Keep track of all versions of any object.
🔲 Authentication Policies: Set the level of required auth (token, password, mfa) based on the context (trust).
🔲 Pipelines: Ability to visually create and edit data flow by chaining controllers together.

Benefits

Rock Solid Security Secure every API endpoint with User Management, Role-Based Access Controls, SSO Authentication, JWT, CORS, and OAuth.

Server-Side Scripting Implement custom logic on any endpoint to build your own custom API, and interact with it using your preferred programming language.

Low-Code Instant APIs Automatically generate a complete set of ReST API endpoints with live documentation for any SQL or NoSQL database, file storage system, or external service.

Documentation

For a comprehensive documentation that includes examples and step-by-step instructions, please visit our full documentation at https://doc.equal.run.

Requirements

eQual requires the following environment:

  • PHP 8+ with extensions (opcache, zip, tidy, ...)
  • Apache 2+ or Nginx
  • SQL:2011 compatible DBMS (SQLite, MariaDB Server, Microsoft SQL Server, Oracle MySQL)

Install

Download code as ZIP:

wget https://github.com/equalframework/equal/archive/master.zip

or clone with Git :

git clone https://github.com/equalframework/equal.git

For more info, see : http://doc.equal.run/getting-started/installation

Contributing

Contributions are what make the open-source community such an amazing place to learn, inspire, and create.

If you'd like to contribute, please kindly read our Contributing Guide to familiarize yourself with our development process, how to suggest bug fixes and improvements, and the steps for building and testing your changes.

Contributors

Stats

Alt

Questions & Support

For questions or any type of support, you can reach out via Discord

License

eQual framework project - Released under the GNU Lesser General Public License v3.0.