Skip to content
dev-houssamPublic

About

Un écosystème logiciel cohérent autour de MATL-ABC

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

27 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Abystream

FR: Un écosystème logiciel cohérent autour de MATL-ABC

Abystream : Full-stack web framework for MATL-ABC.

Architecture d'Abystream

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.

Features

  • 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

Architecture

Application
│
├── Routes
│
├── Controllers
│
├── Models
│
├── Views
│
└── Services
       │
       ▼
   Abystream
       │
       ▼
   MATL-ABC Runtime
       │
       ▼
      LLVM

Example

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.

Why Abystream?

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

Project status

Abystream is an experimental and evolving project.

The API, runtime and framework architecture may change as MATL-ABC continues to evolve.

Documentation

Documentation is currently being developed.

Related projects

  • MATL-ABC — programming language and compiler
  • Abystream Blog — reference application built with Abystream

License

Abystream is released under the MIT License.

See LICENSE for the full license text.

Author

Houssam BACAR

About

Un écosystème logiciel cohérent autour de MATL-ABC

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages