- Un framework web simple et puissant pour l’écosystème Ruby, basé sur une faible abstraction et un niveau de cérémonial réduit (low-ceremony), qui propose une architecture centrée sur les pages, les formulaires et les actions unitaires sans notion de contrôleur ni de ressource REST.
- Rendu HTML côté serveur, écriture directe de JS/CSS, intégration OpenTelemetry, outils Ruby modernes tels que Sequel et OptionParser inclus, avec une installation et un développement possibles en quelques minutes
- Structure basée sur les classes, une gestion des sessions, des formulaires et des paramètres basée sur de vrais types, et une réduction de l’usage des méthodes dynamiques et des hash pour viser un code clair et une documentation automatique
- Exploitation active de la plateforme web moderne : validation serveur/client intégrée, BrutJS (Web Components), bundling et hash du CSS avec esbuild, renforcement des bases en matière de sécurité et de conception de base de données
- Réduction de YAML, configuration basée sur Ruby/Hash avec un nommage explicite et une séparation claire des rôles, objectif : profiter de Ruby et des technologies navigateur sans imposer d’abstractions ni de patterns inutiles
Principales caractéristiques du framework Brut
Une structure entièrement nouvelle — sans contrôleur, centrée sur les pages
- Au lieu de contrôleurs, de ressources REST et d’actions de route, l’architecture repose sur des pages, formulaires et gestionnaires d’action unique basés sur des classes
- L’HTML est généré directement côté serveur, JS/CSS peuvent être écrits librement
- Exemple : une page d’affichage de l’heure est définie directement avec
TimePage < AppPage
Exploitation active de la plateforme web moderne
- UX de formulaire avec validation intégrée serveur/ client
- BrutJS (bibliothèque de composants web) pour une extension progressive de l’HTML
- Traitement concis du CSS avec esbuild pour le bundle et le hash, sans PostCSS ni SASS
Productivité de développement et fonctionnalités de base intégrées
- Instrumentation basée sur OpenTelemetry, accès aux données via Sequel, automatisation en ligne de commande basée sur OptionParser
- Politiques de sécurité par défaut, valeurs par défaut/clé étrangère/indice des colonnes DB, gestion du temps toujours timezone-aware, localisation simplifiée
- Tests RSpec, génération de données avec Faker/FactoryBot, génération HTML avec Phlex
Exclusion de YAML, structure de configuration claire
- I18n basé sur un Hash Ruby, configuration dynamique gérée via dotenv (presque pas de YAML)
- Seule exception : utilisation de YAML via docker-compose
Aucune abstraction ni pattern inutile imposé
- Nommage et structure explicites (ex. :
WidgetsPage s’ouvre sur /widgets)
- Couche de données (
DB::Widget) et couche domaine (Widget) totalement séparables
- Pas de concept de contrôleur, logique métier implémentable à votre manière
- Pas d’imposition de patterns fonctionnels complexes, de monades, de Proc, etc.
Expérience développeur et flexibilité
- Intégration de base des outils modernes de l’écosystème Ruby tels que RSpec
- Utilisation active de bibliothèques majeures : Phlex (HTML), Faker/FactoryBot, Sequel, OpenTelemetry
- En se détachant des boilerplates, réglages et arbitrages répétitifs, focus sur le “plaisir” de Ruby et des technologies navigateur
Pourquoi Brut ?
- Au lieu des cycles de configuration répétitifs des frameworks existants comme Rails, des débats sans fin sur la conception/la structure et de la flexibilité inutile, priorité est donnée au plaisir du code lui-même
- En tant que framework d’applications web Ruby pour construire, développer et déployer rapidement, l’objectif est de se concentrer sur la productivité et la clarté
Démarrage et roadmap
- Image Docker officielle Brut, création et exécution d’app en mode commande rapides
- Exemples d’applications réelles, dont ADRs.cloud
- Sortie attendue de la version 1.0 et mises à jour continues de la roadmap officielle
Aucun commentaire pour le moment.