Afficher la table des matières Masquer la table des matières
- Batch cooking juin : préparer un menu juin complet en 2 heures pour l’organisation semaine
- Pourquoi ce format fonctionne pour la cuisine rapide et la cuisine saine
- Ingrédients essentiels pour 4 portions : rapidité et flexibilité
- Substitutions pratiques pour toutes les preferences
- Équipement minimal pour un maximum d’efficacité
- Organisation du temps : minute par minute
- Quiz : Batch Cooking (Juin) — Prêt en 2 heures
- ${TEXTS.title} ${TEXTS.intro} Question ${state.currentIndex + 1} / ${QUESTIONS.length} `; root.appendChild(header); // Progress bar const progress = document.createElement('div'); progress.className = 'mt-3 w-full bg-gray-200 dark:bg-gray-700 rounded-full h-2 overflow-hidden'; const progressFill = document.createElement('div'); const pct = Math.round(((state.currentIndex) / QUESTIONS.length) * 100); progressFill.style.width = `${pct}%`; progressFill.className = 'h-2 bg-gradient-to-r from-green-400 to-green-600'; progress.appendChild(progressFill); root.appendChild(progress); // Current question const q = QUESTIONS[state.currentIndex]; const fieldset = document.createElement('fieldset'); fieldset.className = 'mt-6'; fieldset.setAttribute('role', 'group'); fieldset.setAttribute('aria-labelledby', `legend-${q.id}`); const legend = document.createElement('legend'); legend.id = `legend-${q.id}`; legend.className = 'text-base font-semibold mb-2'; legend.textContent = q.q; fieldset.appendChild(legend); // Options list const list = document.createElement('div'); list.className = 'space-y-3'; q.options.forEach(opt => { const optId = `${q.id}-${opt.id}`; const wrapper = document.createElement('label'); wrapper.className = 'flex items-center gap-3 p-3 rounded-md hover:bg-gray-50 dark:hover:bg-gray-700 cursor-pointer ring-1 ring-transparent focus-within:ring-yellow-200'; wrapper.tabIndex = 0; wrapper.setAttribute('role', 'option'); const radio = document.createElement('input'); radio.type = 'radio'; radio.name = q.id; radio.id = optId; radio.value = opt.id; radio.className = 'focus-ring'; radio.checked = (state.answers[q.id] === opt.id); radio.addEventListener('change', (e) => { state.answers[q.id] = e.target.value; saveProgress(); updateStatus(); }); // Keyboard support: Enter or Space on label toggles radio wrapper.addEventListener('keydown', (e) => { if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); radio.checked = true; radio.dispatchEvent(new Event('change', { bubbles: true })); } // Optionally allow ArrowDown/ArrowUp to move between options if (e.key === 'ArrowDown' || e.key === 'ArrowRight') { e.preventDefault(); const next = wrapper.nextElementSibling; if (next) next.focus(); } if (e.key === 'ArrowUp' || e.key === 'ArrowLeft') { e.preventDefault(); const prev = wrapper.previousElementSibling; if (prev) prev.focus(); } }); const fakeRadio = document.createElement('span'); fakeRadio.className = 'w-4 h-4 rounded-full border-2 border-gray-300 flex-shrink-0 flex items-center justify-center'; // small dot when checked (CSS-less approach) const dot = document.createElement('span'); dot.className = 'w-2 h-2 rounded-full bg-transparent'; dot.style.transition = 'background-color 120ms'; if (state.answers[q.id] === opt.id) dot.style.backgroundColor = '#111827'; radio.addEventListener('change', () => { // update dots for this question Array.from(list.querySelectorAll('input')).forEach(i => { const d = i.parentElement.querySelector('span > span'); if (d) d.style.backgroundColor = i.checked ? '#111827' : 'transparent'; }); }); fakeRadio.appendChild(dot); const labelText = document.createElement('span'); labelText.className = 'text-sm'; labelText.textContent = opt.text; wrapper.appendChild(radio); wrapper.appendChild(fakeRadio); wrapper.appendChild(labelText); list.appendChild(wrapper); }); fieldset.appendChild(list); root.appendChild(fieldset); // Controls const controls = document.createElement('div'); controls.className = 'mt-6 flex items-center justify-between gap-3'; const navLeft = document.createElement('div'); const btnPrev = document.createElement('button'); btnPrev.className = 'px-3 py-2 bg-gray-100 hover:bg-gray-200 rounded-md text-sm focus-ring'; btnPrev.textContent = TEXTS.prev; btnPrev.disabled = state.currentIndex === 0; btnPrev.addEventListener('click', () => { state.currentIndex = Math.max(0, state.currentIndex - 1); renderQuiz(); focusFirstOption(); }); navLeft.appendChild(btnPrev); const navRight = document.createElement('div'); const btnNext = document.createElement('button'); btnNext.className = 'px-3 py-2 bg-blue-600 hover:bg-blue-500 text-white rounded-md text-sm focus-ring'; btnNext.textContent = (state.currentIndex < QUESTIONS.length - 1) ? TEXTS.next : TEXTS.submit; btnNext.addEventListener('click', () => { if (state.currentIndex < QUESTIONS.length - 1) { state.currentIndex++; renderQuiz(); focusFirstOption(); } else { // Submit submitQuiz(); } }); // Also allow Enter key on the question area to go next root.addEventListener('keydown', (e) => { if ((e.key === 'Enter') && (document.activeElement && root.contains(document.activeElement))) { // If an input is focused, ignore to not double-trigger const activeTag = document.activeElement.tagName.toLowerCase(); if (['input', 'button', 'textarea'].includes(activeTag)) return; e.preventDefault(); btnNext.click(); } }); navRight.appendChild(btnNext); controls.appendChild(navLeft); controls.appendChild(navRight); root.appendChild(controls); // If submitted, show review for current question if (state.submitted) { const review = document.createElement('div'); review.className = 'mt-6 p-4 bg-gray-50 dark:bg-gray-700 rounded-md text-sm fade-in'; const correctId = QUESTIONS[state.currentIndex].correct; const userChoice = state.answers[QUESTIONS[state.currentIndex].id]; const isCorrect = userChoice === correctId; review.innerHTML = ` ${isCorrect ? 'Bonne réponse' : 'Réponse correcte'} ${QUESTIONS[state.currentIndex].explain} `; root.appendChild(review); } updateStatus(); } // Focus the first option of the current question for keyboard users function focusFirstOption() { const root = $('#quiz-root'); const firstLabel = root.querySelector('label[tabindex="0"]'); if (firstLabel) firstLabel.focus(); } // Update status text and footer buttons function updateStatus() { const status = $('#quiz-status'); const answeredCount = Object.keys(state.answers).length; status.textContent = `${answeredCount} / ${QUESTIONS.length} réponses renseignées. ${state.submitted ? TEXTS.saved : ''}`; // Footer buttons const btnRestart = $('#btn-restart'); const btnCopy = $('#btn-copy'); if (state.submitted) { btnRestart.classList.remove('hidden'); btnCopy.classList.remove('hidden'); btnRestart.setAttribute('aria-hidden', 'false'); btnCopy.setAttribute('aria-hidden', 'false'); } else { btnRestart.classList.add('hidden'); btnCopy.classList.add('hidden'); btnRestart.setAttribute('aria-hidden', 'true'); btnCopy.setAttribute('aria-hidden', 'true'); } } // Submit and score function submitQuiz() { // Validate that all questions have an answer const unanswered = QUESTIONS.filter(q => !(q.id in state.answers)); if (unanswered.length > 0) { // move to first unanswered state.currentIndex = QUESTIONS.findIndex(q => !(q.id in state.answers)); renderQuiz(); // Show a brief accessible alert const root = $('#quiz-root'); const alert = document.createElement('div'); alert.className = 'mt-4 p-3 bg-yellow-100 text-yellow-800 rounded-md text-sm'; alert.setAttribute('role', 'alert'); alert.textContent = `Vous devez répondre à toutes les questions. Question ${state.currentIndex + 1} sélectionnée.`; root.prepend(alert); setTimeout(() => alert.remove(), 4000); return; } // Score calculation let correct = 0; QUESTIONS.forEach(q => { if (state.answers[q.id] === q.correct) correct++; }); state.submitted = true; saveProgress(true); renderResult(correct, QUESTIONS.length); renderQuiz(); // rerender to show per-question review sections } // Render final result area below quiz function renderResult(correct, total) { const root = $('#quiz-root'); // Remove existing final area if any const prev = root.querySelector('.final-result'); if (prev) prev.remove(); const container = document.createElement('div'); container.className = 'final-result mt-6 p-4 bg-gradient-to-r from-indigo-50 to-white dark:from-indigo-900 dark:to-gray-800 rounded-md shadow-sm'; container.setAttribute('role', 'status'); const percent = Math.round((correct / total) * 100); let message = TEXTS.low; if (percent === 100) message = TEXTS.perfect; else if (percent >= 75) message = TEXTS.good; else if (percent >= 50) message = TEXTS.ok; container.innerHTML = ` ${TEXTS.scoreText(correct, total)} ${message} ${percent}% Conseils rapides : portionnez avant congélation, privilégiez la cuisson en lots, et réchauffez au four/poêle pour meilleure texture. `; root.appendChild(container); // Enable footer buttons const btnRestart = $('#btn-restart'); const btnCopy = $('#btn-copy'); btnRestart.classList.remove('hidden'); btnRestart.setAttribute('aria-hidden', 'false'); btnRestart.addEventListener('click', () => { resetQuiz(); }, { once: true }); btnCopy.classList.remove('hidden'); btnCopy.setAttribute('aria-hidden', 'false'); btnCopy.addEventListener('click', () => { const summary = `${TEXTS.title}n${TEXTS.scoreText(correct, total)} (${percent}%)n${message}`; navigator.clipboard && navigator.clipboard.writeText(summary) .then(() => { const prevNote = document.createElement('div'); prevNote.className = 'mt-2 text-sm text-green-600'; prevNote.textContent = 'Résultat copié dans le presse-papier.'; container.appendChild(prevNote); setTimeout(() => prevNote.remove(), 3000); }) .catch(() => alert('Impossible de copier automatiquement. Sélectionnez et copiez manuellement.')); }, { once: true }); // Save score to localStorage try { localStorage.setItem('batch_quiz_last_result', JSON.stringify({ correct, total, percent, timestamp: Date.now() })); } catch (e) { // ignore storage errors } } // Save progress to localStorage (auto) function saveProgress(final = false) { try { const payload = { answers: state.answers, currentIndex: state.currentIndex, submitted: state.submitted, savedAt: Date.now() }; localStorage.setItem('batch_quiz_progress', JSON.stringify(payload)); if (final) { // also flag saved const status = $('#quiz-status'); if (status) status.textContent = `${status.textContent} ${TEXTS.saved}`; } } catch (e) { // ignore } } // Load progress if available function loadProgress() { try { const raw = localStorage.getItem('batch_quiz_progress'); if (!raw) return; const payload = JSON.parse(raw); if (payload && payload.answers) { state.answers = payload.answers; state.currentIndex = Math.min(payload.currentIndex || 0, QUESTIONS.length - 1); state.submitted = payload.submitted || false; } } catch (e) { // ignore corrupt data } } // Reset quiz function resetQuiz() { state = { currentIndex: 0, answers: {}, submitted: false }; try { localStorage.removeItem('batch_quiz_progress'); } catch (e) {} renderQuiz(); focusFirstOption(); } // Initialisation (function init() { // Load any saved progress loadProgress(); // Render quiz renderQuiz(); // Focus first option for accessibility setTimeout(() => focusFirstOption(), 200); })(); Un Dîner Convivial au Biscuits Dorés, Préparé en Une Seule Poêle Obtenez un dîner convivial en moins de 30 minutes : un plat unique qui combine une garniture crémeuse et des biscuits dorés cuits dans une seule poêle, pour une préparation rapide et un nettoyage minimal. Ce format transforme la cuisine… Compote de pommes ultra simple avec seulement quatre ingrédients, dont… de l’eau ! Compote de pommes ultra simple, prête en moins d’une heure : voici une recette simple à quatre ingrédients (oui, de l’eau est l’un d’eux) pour une gourmandise saine à partager. 🍏 Cette préparation allie rapidité et saveur pour un dessert… Étapes pas‑à‑pas pour un batch cooking express (2 heures) Action immédiate : suivre cet enchaînement précis pour tenir les 2 heures. Étape 1 : mettre l’eau à bouillir et lancer le riz. Étape 2 : couper les protéines en dés, les assaisonner et les cuire. Étape 3 : préparer légumes et cuire à la vapeur en réutilisant la casserole du riz. Étape 4 : répartir dans 4 contenants en verre, laisser tiédir 20–30 minutes puis mettre au réfrigérateur. Insight : respecter cet ordre transforme une session chaotique en une routine fluide. Comment éviter la monotonie et garder du plaisir
- Conservation, réchauffage et astuces pour prolonger la fraîcheur
- Variantes rapides pour différents jours de la semaine
- Valeurs nutritionnelles et équilibre
En 2 heures de cuisine, transformez votre week‑end en une réserve de repas faits maison pour toute la semaine : plus de stress, plus de soirées filantes, juste du gain de temps et des repas équilibrés prêts à réchauffer. ✅
Batch cooking juin : préparer un menu juin complet en 2 heures pour l’organisation semaine
Point clé : consacrer une session de 2 heures suffit pour couvrir 4 repas principaux équilibrés. En commençant par ce qui demande le plus de temps (féculent ou protéine), l’ensemble se coordonne naturellement et l’organisation semaine devient facile à tenir. Claire, une jeune designer pressée, a testé ce rythme : chaque dimanche elle alloue exactement 2 heures et récupère 5 heures de temps libre en semaine. Insight : structurez la session autour d’un ingrédient lent à cuire et tout s’enchaîne.
Pourquoi ce format fonctionne pour la cuisine rapide et la cuisine saine
Conclusion immédiate : la répétition intelligente des ingrédients réduit le temps sans sacrifier la variété. En utilisant une même base (riz, quinoa ou patate douce) et en variant les assaisonnements, on obtient plusieurs plats distincts. Exemple concret : une base riz + brocoli + protéine devient bol méditerranéen, curry ou salade tiède en changeant simplement la sauce. Insight : une sauce différente suffit à renouveler trois repas.
La soirée pizza maison démarre avec cette pâte ultra simple à réaliser
La soirée pizza maison démarre avec cette pâte ultra simple à réaliser : en moins d’1h20, préparez une base moelleuse et dorée qui permet de garnir deux pizzas, congeler une portion et improviser un repas convivial en un clin d’œil.…
Le secret du mijoteur pour une cuisson de steak parfaitement tendre
À lire Plan de Repas Hebdomadaire du 7 Septembre 2026
Le secret pour obtenir un steak parfaitement tendre au mijoteur : maîtriser le slow cooking avec des étapes simples et un temps de repos adapté. Claire, prof de yoga et adepte d’une cuisine saine, a transformé des steaks abordables en…
Ingrédients essentiels pour 4 portions : rapidité et flexibilité
Règle d’or : 8 ingrédients polyvalents couvrent 4 repas équilibrés. Pour 4 portions, prévoir 500 g de poulet (ou tofu), 300 g de riz basmati, 200 g de brocolis, 2 carottes, 1 oignon, 2 cuillères à soupe d’huile d’olive, cumin et paprika. Ces ingrédients permettent d’assembler des plats variés sans alourdir la liste de courses. Insight : choisir des ingrédients interchangeables simplifie la planification repas et évite le gaspillage.
Substitutions pratiques pour toutes les preferences
Conclusion rapide : adaptez sans complexité. Le poulet peut être remplacé par du tofu ferme, le riz par du quinoa, et les brocolis par des courgettes ou des poivrons selon la saison. Une astuce : couper tous les légumes en morceaux de taille similaire pour une cuisson homogène et gagner du temps. Insight : garder une règle simple — protéine / légumes / féculent — facilite la composition de menus.
Une Soupe Taco Réconfortante pour les Soirées Pressées
Une soupe taco réconfortante, prête en moins de 45 minutes, pour transformer une soirée pressée en un repas chaud savoureux et rassasiant. 🔥 Ce bol unique combine viande assaisonnée, haricots, maïs et tomates épicées pour offrir une expérience inspirée du…
Plan de Repas Hebdomadaire du 7 Septembre 2026
Plan de repas hebdomadaire prêt à suivre pour la semaine du 7 septembre 2026 : gagnez du temps, maîtrisez votre budget et adoptez une alimentation équilibrée sans stress. Commencez la semaine avec un menu clair, des étapes de préparation des…
À lire Un Dîner Convivial au Biscuits Dorés, Préparé en Une Seule Poêle
Équipement minimal pour un maximum d’efficacité
Décision pragmatique : pas besoin d’appareils sophistiqués. Une grande casserole pour le riz, une poêle antiadhésive, un panier vapeur, une planche et un bon couteau suffisent pour réussir un batch cooking. Utiliser des contenants en verre hermétiques permet de conserver les saveurs et de réchauffer facilement. Insight : investir dans 4 boîtes en verre adaptées au micro‑ondes rembourse son coût en confort dès la première semaine.
Organisation du temps : minute par minute
Action immédiate : démarrer par ce qui prend le plus long. Lancer la cuisson du riz en premier, pendant que le poulet mariné cuit 8‑10 minutes à la poêle, et que les légumes passent 5‑7 minutes au panier vapeur. Pendant les temps de cuisson, découper et assaisonner la prochaine fournée pour éviter les temps morts. Insight : chronométrer en segments (15–20 minutes) permet de respecter la barre des 2 heures.
Quiz : Batch Cooking (Juin) — Prêt en 2 heures
Teste vos connaissances et repartez avec des conseils pratiques pour gagner du temps cette semaine.
Un Dîner Convivial au Biscuits Dorés, Préparé en Une Seule Poêle
Obtenez un dîner convivial en moins de 30 minutes : un plat unique qui combine une garniture crémeuse et des biscuits dorés cuits dans une seule poêle, pour une préparation rapide et un nettoyage minimal. Ce format transforme la cuisine…
Compote de pommes ultra simple avec seulement quatre ingrédients, dont… de l’eau !
Compote de pommes ultra simple, prête en moins d’une heure : voici une recette simple à quatre ingrédients (oui, de l’eau est l’un d’eux) pour une gourmandise saine à partager. 🍏 Cette préparation allie rapidité et saveur pour un dessert…
À lire Compote de pommes ultra simple avec seulement quatre ingrédients, dont… de l’eau !
Étapes pas‑à‑pas pour un batch cooking express (2 heures)
Action immédiate : suivre cet enchaînement précis pour tenir les 2 heures. Étape 1 : mettre l’eau à bouillir et lancer le riz. Étape 2 : couper les protéines en dés, les assaisonner et les cuire. Étape 3 : préparer légumes et cuire à la vapeur en réutilisant la casserole du riz. Étape 4 : répartir dans 4 contenants en verre, laisser tiédir 20–30 minutes puis mettre au réfrigérateur. Insight : respecter cet ordre transforme une session chaotique en une routine fluide.
Comment éviter la monotonie et garder du plaisir
Astuce pratique : garder des sauces séparées et ne pas trop saler d’avance. Préparer une sauce yaourt à l’ail, une vinaigrette soja‑miel et un filet d’huile citronnée permet de varier les assemblages. Bonus : un ajout final de fromage râpé ou de graines change instantanément la texture et le goût. Insight : les petites finitions réinventent le plat sans refaire toute la préparation.
Coupes fajitas au bœuf haché : un délice coloré et savoureux
Coupes fajitas au bœuf haché : le plat convivial et ultra rapide à adopter 🍽️ Point principal : Les coupes fajitas préparées avec du bœuf haché offrent un délice coloré et savoureux qui se prépare en moins de 35 minutes,…
Améliorez vos soirées pâtes grâce à cette sauce compatible congélation
Transformez vos soirées pâtes en repas rapides et réconfortants grâce à une sauce maison compatible congélation : une recette facile, une préparation rapide (10 min de préparation, 30 min de cuisson) et des portions prêtes à sortir du congélateur pour…
Conservation, réchauffage et astuces pour prolonger la fraîcheur
Règle simple : consommer 4 jours au frigo ou congeler les portions supplémentaires. Les plats se conservent bien jusqu’à 4 jours dans des boîtes hermétiques ; pour congeler jusqu’à 3 mois, privilégier le sous‑vide ou des sachets bien fermés. Pour redonner du moelleux après congélation, ajouter un filet d’huile avant le réchauffage. Insight : planifier la consommation (qui mange quoi quel jour) évite le gaspillage.
À lire Le Dîner du Dimanche : Prêt à l’Avance et Savoureux sans Effort
Variantes rapides pour différents jours de la semaine
Exemple concret : transformer une base en 3 menus différents en changeant l’assaisonnement. Base riz/poulet/brocoli devient bol méditerranéen (huile d’olive, herbes), bol curry (curry, lait de coco) ou salade froide (vinaigrette citron). Cette méthode permet d’avoir l’impression de plats nouveaux sans retomber dans la cuisine quotidienne. Insight : prévoir 2 sauces différentes suffit pour 5 jours de variété.
Ressources utiles et inspirations : pour approfondir les idées et trouver d’autres recettes rapides, consulter un guide pratique sur le batch cooking en 2 heures, explorer des recettes saines sur batch cooking healthy, ou découvrir des entraîneurs de menus express sur guides batch cooking 2h. Insight : s’inspirer d’autres approches accélère la personnalisation du menu.
Valeurs nutritionnelles et équilibre
Rappel important : viser l’équilibre protéines/féculents/légumes à chaque portion. Une estimation moyenne pour ce menu donne environ 450 calories, ~30 g de protéines et 6 g de fibres par portion — des chiffres qui garantissent un repas complet pour la soirée. Adapter les quantités permet d’ajuster l’apport énergétique selon les besoins. Insight : garder ces repères nutritionnels aide à planifier des repas sains sans y penser au quotidien.
Motivation finale : lancez votre première session ce dimanche, mettez une playlist, préparez votre café et transformez 2 heures en liberté pour toute la semaine — la routine se peaufine au fil des sessions et devient un vrai levier de sérénité. ✨