FR: Un écosystème logiciel cohérent autour de MATL-ABC
Abystream is a full-stack web framework designed for the MATL-ABC programming language.
It provides the foundations required to build web applications with MATL-ABC, including HTTP routing, server-side rendering, WebSockets, authentication and application structure.
- HTTP server and routing
- Server-side rendering
- Template engine
- WebSocket support
- JWT authentication
- Middleware
- MVC application architecture
- Modular services
- Environment-based configuration
- Database integration
- Deployment-oriented runtime
Application
│
├── Routes
│
├── Controllers
│
├── Models
│
├── Views
│
└── Services
│
▼
Abystream
│
▼
MATL-ABC Runtime
│
▼
LLVM
A route group can be declared using HTTP method nodes and controller handlers.
For example:
NodeGroup* build_routes() {
return new NodeGroup(
"",
new GET(route("/"), (Request* req, Response* res) => {
AuthController* c = new AuthController();
c.connexion(req, res);
}),
new POST(route("/login"), (Request* req, Response* res) => {
AuthController* c = new AuthController();
c.login(req, res);
}),
new GET(route("/logout"), (Request* req, Response* res) => {
AuthController* c = new AuthController();
c.logout(req, res);
})
);
}Routes can therefore be associated directly with controller methods.
For example:
GET / → AuthController.connexion()
POST /login → AuthController.login()
GET /logout → AuthController.logout()
GET /edt → EdtController.index()
GET /scolarite → ScolariteController.edition()
POST /scolarite/cours → ScolariteController.ajouter()
POST /scolarite/supprimer → ScolariteController.supprimer()The routing system is based on a NodeGroup containing HTTP method nodes such as GET and POST.
Abystream is developed alongside MATL-ABC.
Instead of treating the web framework as an external library, the project explores what a web development ecosystem can look like when the programming language, runtime and framework are designed together.
MATL-ABC
│
▼
Compiler / LLVM
│
▼
Runtime
│
▼
Abystream
│
▼
Web Applications
Abystream is an experimental and evolving project.
The API, runtime and framework architecture may change as MATL-ABC continues to evolve.
Documentation is currently being developed.
- MATL-ABC — programming language and compiler
- Abystream Blog — reference application built with Abystream
Abystream is released under the MIT License.
See LICENSE for the full license text.
Houssam BACAR
- Medium: https://medium.com/@houssambacar
- GitHub: https://github.com/dev-houssam
- LinkedIn: https://linkedin.com/in/houssambacar/
