Gram
Codez vos recettes.
Un DSL déclaratif open-source pour la cuisine. Conçu pour la logique culinaire, Gram compile vos instructions en texte brut en données structurées, calculées et relationnelles.
## Crémeux Citron
[Mélanger] Fouetter le @jus de citron{100 g}<@citrons{3}, les @œufs{2}, et le @sucre{120% @&jus de citron} dans une #casserole{}. ->&base{}
[Cuire] Chauffer la &base{} à ^{82C} sur feu moyen pendant ~{5m}.
[Emulsionner] Retirer du feu et incorporer le @beurre{120 g}. Réserver au frais pendant ~_frigo{2h}.Philosophie
Pensé pour être fluide à écrire, intuitif à versionner et rapide à analyser.
Fichiers texte & Git
Aucun verrouillage propriétaire. Vos recettes sont de simples fichiers texte, faciles à versionner avec Git, à partager et à éditer dans l'éditeur de votre choix.
En savoir plus →Calculs automatiques
Ajustez les portions sans calculs mentaux. Gram gère nativement l'arithmétique, les variables et la conversion d'unités.
En savoir plus →Recettes modulaires (@use)
Ne dupliquez plus vos pâtes, bouillons ou sauces. Découpez vos préparations de base dans des fichiers dédiés et importez-les dans n'importe quelle recette en une seule ligne.
En savoir plus →Support IDE dédié
Grâce à son serveur de langage (LSP) dédié, profitez de l'autocomplétion, de la coloration sémantique et des diagnostics en temps réel, directement dans votre éditeur favori.
En savoir plus →Export universel
Gram compile vos recettes en un arbre syntaxique (AST) complet. Générez du JSON ou du Markdown pour alimenter le générateur de site statique de votre choix et créer le carnet de recettes ultime.
En savoir plus →CLI puissante
Pilotez votre espace de travail directement depuis le terminal. La CLI officielle permet d'initialiser un projet, de formater et de compiler vos recettes en une seule commande.
En savoir plus →Gram en pratique
Découvrez comment le compilateur transforme vos instructions texte en données typées et exploitables.
Base de données & nutrition
Standardisez vos mesures et calculez vos macros grâce à une base de données locale auto-générée à partir de vos fichiers.En savoir plus →
---
portions: 4
---
## Crème Chantilly
[Fouetter] La @crème liquide{1 tasse} et le @sucre glace{2 c.à.s} jusqu'à obtenir des pics souples.
[Incorporer] Ajouter délicatement l'@extrait de vanille{1 c.à.c}.- FouetterLa crème liquide (240g) et le sucre glace (25g) jusqu'à obtenir des pics souples.
- IncorporerAjouter délicatement l'extrait de vanille (4g).
- dont sucres6.3 g
{
"shopping_list": [
{
"id": "creme-liquide",
"name": "crème liquide",
"qty": 1,
"unit": "cup",
"normalizedMass": 240,
"isEstimate": true,
"conversionMethod": "estimate"
},
{
"id": "sucre-glace",
"name": "sucre glace",
"qty": 2,
"unit": "tbsp",
"normalizedMass": 300,
"isEstimate": true,
"conversionMethod": "estimate"
},
{
"id": "extrait-de-vanille",
"name": "extrait de vanille",
"qty": 1,
"unit": "tsp",
"normalizedMass": 300,
"isEstimate": true,
"conversionMethod": "estimate"
}
]
}Planification intelligente (ALAP)
Visualisez votre rétroplanning. Gram détecte vos minuteries et planifie les tâches passives « Aussi Tard Que Possible » pour réduire les temps morts en cuisine.En savoir plus →
## Pâtes Tomate Basilic
[Bouillir] Les @pâtes{200g} dans de l'eau salée pendant ~_ebullition{10min}. ->&pâtes cuites{}
[Sauter] Les @tomates cerises{200g} et l'@ail{2 gousses} dans de l'@huile d'olive{} pendant ~{5min}. ->&sauce
[Mélanger] Les &pâtes cuites{} dans la &sauce chaude avec du @basilic frais{1 poignée}.{
"metrics": {
"totalTime": 19,
"totalBreakdown": [
{
"label": "timer_named:ebullition",
"duration": 10
},
{
"label": "section_active:Pâtes Tomate Basilic",
"duration": 2
}
],
"idleTime": 5,
"activeTime": 7,
"activeBreakdown": [
{
"label": "section_active:Pâtes Tomate Basilic",
"duration": 7
}
],
"preparationTime": 7,
"prepBreakdown": [
{
"label": "ingredients_overhead",
"duration": 7
}
]
}
}Recettes modulaires (@use)
Importez vos préparations de base avec @use. Gram résout les dépendances, imbrique les étapes dans la recette et adapte automatiquement les quantités au besoin.En savoir plus →
@use "./bases/pate-sablee.gram" as &pâte
## Tarte Citron
[Foncer] Le #cercle à tarte{} avec la &pâte{250g}.
[Cuire à blanc] Cuire au four pendant ~_four{18min} à ^{175°C}.
[Garnir] Verser le @crémeux citron{300g}.Pâte Sablée
📦 bases/pate-sablee.gram → pâte (×0.5)- SablerLa farine (125g), le beurre (62.5g), le sucre glace (45g) et l'eau (17.5g).
Tarte Citron
- FoncerLe cercle à tarte avec la pâte (250g).
- CuireAu four pendant 18min à 175°C.
- GarnirVerser le crémeux citron (300g).
{
"modules": [
{
"binding": "pate",
"uri": "./bases/pate-sablee.gram",
"scaleFactor": 0.5,
"mode": "inline"
}
],
"sections": [
{
"title": "Pâte Sablée",
"intermediate_preparation": "pate",
"module": {
"binding": "pate",
"uri": "./bases/pate-sablee.gram"
},
"ingredients": [
{
"id": "farine",
"qty": 125,
"unit": "g"
},
{
"id": "beurre",
"qty": 62.5,
"unit": "g"
},
{
"id": "sucre-glace",
"qty": 45,
"unit": "g"
},
{
"id": "eau",
"qty": 17.5,
"unit": "g"
}
]
},
{
"title": "Tarte Citron",
"ingredients": [
{
"type": "reference",
"id": "pate",
"qty": 250,
"unit": "g"
},
{
"id": "cremeux-citron",
"qty": 300,
"unit": "g"
}
]
}
]
}Le pourcentage du boulanger
Gérez nativement le pourcentage du boulanger. Liez vos ingrédients à une masse de référence pour recalculer n'importe quelle recette en un instant.En savoir plus →
## Pain de Campagne
[Mélanger] La @*farine T65{400g}, la @farine complète{100g}, l'@eau{75% @&farine T65}, le @sel{2% @&farine T65}, et le @levain{20% @&farine T65}.{
"shopping_list": [
{
"id": "farine-a-pain",
"name": "farine à pain",
"modifiers": [
"bakers_percentage"
],
"qty": 400,
"unit": "g",
"normalizedMass": 400,
"isEstimate": false,
"conversionMethod": "physical",
"bakersPercentage": 100
},
{
"id": "farine-complete",
"name": "farine complète",
"qty": 100,
"unit": "g",
"normalizedMass": 100,
"isEstimate": false,
"conversionMethod": "physical",
"bakersPercentage": 25
},
{
"id": "eau",
"name": "Eau",
"relative": true,
"normalizedMass": 300,
"isEstimate": false,
"conversionMethod": "relative",
"qty": 300,
"unit": "g",
"bakersPercentage": 75
},
{
"id": "sel",
"name": "Sel",
"relative": true,
"normalizedMass": 8,
"isEstimate": false,
"conversionMethod": "relative",
"qty": 8,
"unit": "g",
"bakersPercentage": 2
},
{
"id": "levain",
"name": "levain",
"relative": true,
"normalizedMass": 80,
"isEstimate": false,
"conversionMethod": "relative",
"qty": 80,
"unit": "g",
"bakersPercentage": 20
}
]
}Rejoindre le projet
Découvrir le langage
Le guide de référence pour tout comprendre de Gram : sa syntaxe, son outillage et son moteur. Le point d'entrée idéal pour démarrer ou approfondir les concepts avancés.
Lire la documentation →Contribuer
Gram est un projet open-source et collaboratif. N'hésitez pas à explorer le code, signaler des anomalies ou proposer une contribution (PR) sur le compilateur ou la documentation.
Voir sur le dépôt officiel →Créer un projet
Initialisez votre espace de travail en quelques secondes. La CLI génère tout le nécessaire pour que vous puissiez rédiger votre première recette.
$ npx @gram-lang/cli init