Le carnet de culture de tomates qui vit entièrement dans votre navigateur.
The tomato growing journal that lives entirely in your browser.
![]() ☀️ Bio-Orbital — thème clair |
![]() 🌙 Night Garden HUD — thème sombre |
npm start # puis / then → http://localhost:4173python3 -m http.server 4173
|
Aucun compte Aucun serveur, aucun appel réseau. Tout reste dans le |
Zéro dépendance HTML, CSS et JavaScript natifs. Rien à installer, rien à compiler. |
Installable (PWA) S'installe sur ordinateur, Android et iPhone, et fonctionne hors ligne. |
🪴 Potager, zones et fiches plantes
| Potager | Plantes, zones, filtres et affichage grille/liste. |
| Zones | Ajout, renommage et suppression depuis Potager ou Plus. |
| Sécurité | Les actions destructives demandent une double confirmation. |
| Fiche plante | Variété, caractéristiques, emplacement et notes. |
| Actions groupées | Le bouton « Sélectionner » applique un statut, une zone, l'archivage, la comparaison ou une suppression à plusieurs plantes. |
📊 Analyse détaillée et récoltes
- Récoltes, rythmes, répartitions, rendements par zone et comparaison des saisons au même endroit.
- Graphique annuel : douze mois en barres empilées par variété — la hauteur représente le poids récolté et chaque segment reprend la couleur de la fiche concernée.
- Les poids acceptent les décimales en grammes (par exemple 1 200,5 g) et restent pris en compte dans tous les totaux et moyennes.
- Rendements par plant et par zone, moyennes, meilleure journée et note gustative moyenne.
- Les fenêtres longues de planification et de budget restent défilables sur ordinateur comme sur mobile.
🗓️ Tâches, calendrier et rappels
- Tâches : arrosage, fertilisation, tuteurage, échéance, répétition, quantité/dosage et détails.
- Calendrier de culture : plantations, maturités estimées, tâches et jours de récolte.
- Rappels calculés depuis la date de plantation et les jours de maturité de chaque fiche.
- Comparaison : tableau entre plants avec poids, fruits, précocité et goût.
🏆 Saisons, bilans et dégustations
- Notes gustatives : saveur, sucrosité, acidité, texture, note globale et commentaires.
- Saisons : résumé annuel, état du bilan (en cours, incomplet ou clôturé) et moments à retenir.
- Bilan qualitatif : goût, vigueur, précocité, quantité perçue et décision retenir / revoir / écarter, sans pesée obligatoire.
- Comparaison de saisons : rendement, variétés productives, zones, notes gustatives et budget année par année.
- Bilan partageable : carte visuelle, badges, indice potager, records et défi amical, avec copie du texte, partage natif et téléchargement de la carte SVG.
🌾 Catalogue, semences, croisements et planification
- Catalogue de variétés : 1987 fiches (193 d'origine, enrichies depuis Kokopelli, Meraki Seeds et Baker Creek) réparties en cinq types de plantes : Micro-naine, Dwarf, Bush, Déterminée et Indéterminée, avec noms des variétés et détails botaniques conservés ; recherche, filtres, consultation, ajout de variétés et ajout prérempli au potager. Les filtres par type de plante se combinent à des filtres par caractéristiques (couleur, taille et forme du fruit, maturité, type de feuillage, tolérances au climat et résistances déclarées) ; une tolérance n’est retenue que si la fiche l’énonce explicitement, jamais sur une simple évocation ou une formule négative. Chaque fiche affiche un résumé « Caractéristiques retenues » (celles qui alimentent les filtres) et une section « Contrôle partiel » repliée par défaut. Chaque fiche peut être modifiée directement dans l’application : les retouches sont enregistrées localement sans écraser la vérification documentaire. Cliquez à nouveau sur le type actif pour afficher toutes les variétés. Les anciennes catégories sont mises à jour au chargement et lors de l’import des sauvegardes. Le formulaire « Ajouter une plante » propose aussi un menu déroulant du catalogue.
- Vérification documentaire : les 1987 fiches ont été passées en revue avec un contrôle daté, des sources et une portée explicite. Les erreurs documentées sont corrigées ; les contradictions, souches incertaines et lots personnels sont signalés, sans certification globale. Rapport complet du 7 septembre 2026. Les délais non documentés depuis plantation utilisent une hypothèse de calendrier de 75 jours, signalée et modifiable.
- Photos catalogue : chaque fiche peut recevoir une photo de référence locale, stockée dans IndexedDB et incluse dans les sauvegardes.
- Inventaire de graines : stocks restants, unités, achat/récolte, viabilité, emplacement, source, notes et candidate associée. Les candidates « à acheter » sans stock sont signalées.
- Candidats et achats : liste séparée pour la saison suivante — candidate, à acheter, achetée, semée, plantée, retenue, écartée — avec priorité, quantité et notes.
- Croisements et lignées : parents femelle/mâle, génération F1/F2/F3, dates de pollinisation et d'extraction, quantité de graines, plants sélectionnés, caractères recherchés et stabilité. Chaque lignée peut alimenter le catalogue local et les candidats de saison.
- Planification : sélection pour la prochaine saison et recommandations basées sur les performances actuelles.
📷 Photos, santé des plants et budget
- Journal photo : photos compressées et conservées localement avec titre, date et observation.
- Suivi sanitaire : symptômes structurés, gravité, traitement, date, évolution, notes et photo associée. Historique modifiable, exporté pour l'IA et restaurable.
- Budget du potager : dépenses par catégorie, variété et zone, coût par kilogramme, ventilation par zone, prix commercial de référence, économies estimées et projection de la saison suivante.
- Carte imprimable : Plus → Carte imprimable affiche les zones et les plants, avec impression navigateur ou « Enregistrer au format PDF ».
🎨 Thèmes et palette des fruits
| Thème | Mode |
|---|---|
| Bio-Orbital | ☀️ Clair |
| Night Garden HUD | 🌙 Sombre |
Bascule rapide et préférence mémorisée.
Palette des fruits : sélection de 1 à 3 teintes avec prévisualisation immédiate, en Couleur unie ou Dégradé multicolore. En mode uni, plusieurs teintes sont mélangées en une couleur résultante ; en mode dégradé, elles restent visibles séparément. La palette alimente les bandes latérales des fiches, les repères de la page Récoltes, les détails et les exports. Les anciennes données sans colorMode restent compatibles.
💾 Sauvegarde, export et corbeille
- Export JSON complet (catalogue inclus) et import de sauvegarde.
- Export CSV des plantes et récoltes, réimportable pour ajouter ou mettre à jour, avec dédoublonnage des événements identiques. Un rappel indique la date relative du dernier export.
- Contexte pour une IA en Markdown, JSON structuré ou texte brut : vue d'ensemble, zones, plantes, récoltes, tâches, dégustations, journal photo, budget, bilans qualitatifs, croisements, candidats, plans de saison, inventaires, observations et photos catalogue.
- Corbeille : restauration des plantes, zones, récoltes, tâches, photos, dégustations, dépenses, candidats, croisements et fiches de catalogue.
- Les données de démonstration peuvent être réinitialisées dans Plus.
🚀 Première visite (onboarding)
Un parcours léger propose de conserver la démo ou de repartir avec un carnet vide, puis guide vers une zone, une plante et une première récolte.
Ouvrez l'application avec http://localhost:4173 en développement, ou une adresse https:// en production. Dans Plus → Installer l'application, retrouvez les instructions adaptées à votre appareil.
| Appareil | Comment faire |
|---|---|
| 🖥️ Chrome / Edge | Icône d'installation dans la barre d'adresse, ou menu du navigateur. |
| 🤖 Android | Menu ⋮ → Installer l'application / Ajouter à l'écran d'accueil. |
| 🍎 iPhone / iPad | Safari → Partager → Sur l'écran d'accueil. |
Tip
Après installation, l'application s'ouvre dans une fenêtre dédiée et fonctionne hors ligne grâce au service worker.
Warning
Les données restent propres à ce navigateur et à cet appareil. Exportez régulièrement une sauvegarde JSON avant de désinstaller ou de changer d'appareil.
| Sujet | Détail |
|---|---|
| Photos | Compressées puis conservées dans IndexedDB (tomato-journal-media-v1). L'état JSON ne garde que les métadonnées et l'identifiant média ; les anciennes photos en dataUrl sont migrées au premier lancement. |
| Stockage | Le panneau Plus affiche une estimation du stockage, le nombre de photos et un avertissement en cas d'erreur ou de quota élevé. |
| Recherche globale | Plantes, fiches catalogue, candidates, croisements, tâches, photos et récoltes. |
| Modules | src/photo-storage.js encapsule la persistance binaire IndexedDB. La table actionDispatch de src/app.js est le point d'entrée du dispatch des actions UI. |
| Cache PWA | npm run build:sw hashe les assets du shell et régénère sw.js. Cache courant : tomato-journal-shell-b6e0a0a8bb76. |
| Sécurité du rendu | Contexte de zone de la topbar, titres de page, tâches et résultats de recherche échappés via escapeHTML(). |
Tomato-journal/
├── index.html # Point d'entrée : lance l'application
├── sw.js # Service worker (doit rester à la racine pour la portée PWA)
├── package.json # Scripts npm (start, test, build)
├── src/
│ ├── app.js # Logique, vues et dispatch des actions
│ ├── styles.css # Thèmes Bio-Orbital & Night Garden HUD
│ ├── photo-storage.js # Persistance binaire (IndexedDB)
│ └── seed-catalog.js # Catalogue de 1987 variétés de tomates / 5 types de plantes
├── assets/
│ ├── manifest.webmanifest # Manifeste PWA
│ ├── favicon.png # Icône d'onglet
│ ├── apple-touch-icon.png # Icône iOS
│ ├── icon-192.png # Icône PWA 192 px
│ └── icon-512.png # Icône PWA 512 px
├── scripts/
│ ├── build-sw-cache.mjs # Régénère le cache versionné (sw.js)
│ ├── build-catalog-import.mjs # Import du catalogue
│ ├── build-catalog-enrich.mjs # Enrichissement multi-sources
│ └── build-catalog-report.mjs # Génération du rapport documentaire
├── docs/
│ ├── verification-catalogue.md # Audit des 1987 fiches
│ ├── enrichissement-catalogue.md # Suivi de l'enrichissement
│ └── screenshots/ # Captures d'écran
├── data/ # Données d'enrichissement du catalogue
└── tests/ # Tests de non-régression
A local, dependency-free web app for tracking a tomato growing season — from sowing to harvest, with no account and no server.
|
No account No server, no network call. Everything stays in the browser's |
Zero dependencies Plain HTML, CSS and JavaScript. Nothing to install, nothing to build. |
Installable (PWA) Installs on desktop, Android and iPhone, and works offline. |
🪴 Garden, zones and plant sheets
| Garden | Plants, zones, filters, and grid/list views. |
| Zones | Add, rename and delete from the Garden or More screens. |
| Safety | Destructive actions require double confirmation. |
| Plant sheet | Variety, characteristics, location and notes. |
| Bulk actions | The "Select" button applies a status, a zone, archiving, comparison or deletion to several plants. |
📊 Detailed analysis and harvests
- Harvests, pacing, distributions, yields per zone and season-over-season comparison for the same spot.
- Yearly chart: twelve months as stacked bars per variety — the height is the harvested weight and each segment reuses the color of the related plant sheet.
- Weights accept decimals in grams (e.g. 1200.5 g) and count toward every total and average.
- Yields per plant and per zone, averages, the best day and the average taste rating.
- Long planning and budget windows stay scrollable on desktop and mobile.
🗓️ Tasks, calendar and reminders
- Tasks: watering, fertilizing, staking, due date, recurrence, quantity/dosage and details.
- Growing calendar: plantings, estimated maturity dates, tasks and harvest days.
- Reminders computed from the planting date and each sheet's days to maturity.
- Comparison: a side-by-side table across plants with weight, fruit count, earliness and taste.
🏆 Seasons, reviews and tastings
- Taste notes: flavor, sweetness, acidity, texture, overall rating and comments.
- Seasons: yearly summary, review status (in progress, incomplete or closed) and highlights worth remembering.
- Qualitative review: taste, vigor, earliness, perceived quantity and a keep / reconsider / drop decision — no weighing required.
- Season comparison: yield, most productive varieties, zones, taste ratings and budget, year by year.
- Shareable summary: visual card, badges, garden score, records and a friendly challenge, with copy-to-text, native sharing and SVG card download.
🌾 Catalog, seeds, crosses and planning
- Variety catalog: 1987 sheets (193 originals, enriched from Kokopelli, Meraki Seeds and Baker Creek) grouped into five plant types: Micro-dwarf, Dwarf, Bush, Determinate and Indeterminate, with botanical details preserved; search, filters, sheet viewing, adding new varieties and pre-filled add to garden. Plant-type filters combine with characteristic filters (fruit colour, size and shape, maturity, leaf type, climate tolerances and declared resistances); a tolerance is kept only when the sheet states it explicitly, never from a passing mention or a negative wording. Every sheet shows a "Retained characteristics" summary (the values that drive the filters) and a "Partial check" section collapsed by default. Every sheet can be edited directly in the app: changes are saved locally without overwriting the documentary verification. Click the active type again to show all varieties. Legacy categories are updated on load and when importing backups. The "Add a plant" form also offers a catalog dropdown.
- Documentary review: all 1987 sheets were reviewed with a dated control, references and explicit scope. Documented errors are corrected; conflicting sources, uncertain identities and personal seed lots are flagged, not certified. Full report, 7 September 2026 (French). Where no transplant-based maturity is documented, the editable 75-day calendar assumption is explicitly disclosed.
- Catalog photos: every sheet can carry a local reference photo, stored in IndexedDB and included in JSON backups.
- Seed inventory: remaining stock, units, purchase/harvest, viability, location, source, notes and the linked candidate. "To buy" candidates without stock are flagged.
- Candidates and purchases: a separate list for next season — candidate, to buy, bought, sown, planted, kept, dropped — with priority, quantity and notes.
- Crosses and lines: female/male parents, F1/F2/F3 generation, pollination and extraction dates, seed count, selected seedlings, target traits and stability. Each line can feed the local catalog and season candidates.
- Planning: selection for the next season and recommendations based on current performance.
📷 Photos, plant health and budget
- Photo journal: photos compressed and stored locally with a title, date and observation.
- Plant health tracking: structured symptoms, severity, treatment, date, evolution, notes and an attached photo. Editable history, exported for AI and restorable.
- Garden budget: expenses by category, variety and zone, cost per kilogram, breakdown per zone, reference retail price, estimated savings and next-season projection.
- Printable map: More → Printable map shows zones and plants, with browser printing or "Save as PDF".
🎨 Themes and fruit palette
| Theme | Mode |
|---|---|
| Bio-Orbital | ☀️ Light |
| Night Garden HUD | 🌙 Dark |
Quick toggle and remembered preference.
Fruit palette: pick 1 to 3 hues with instant preview, then choose Solid color or Multicolor gradient. In solid mode, several hues blend into one resulting color; in gradient mode they stay separately visible. The palette drives the side bands of plant and variety sheets, the markers and boxes on the Harvests page, details and exports. Older data without colorMode remains compatible.
💾 Backup, export and trash
- Full JSON export (catalog included) and backup import.
- CSV export of plants and harvests, re-importable to add or update, with deduplication of identical events. A reminder shows the relative date of the last export.
- Context for an AI in Markdown, structured JSON or plain text: overview, zones, plants, harvests, tasks, tastings, photo journal, budget, qualitative reviews, crosses, candidates, season plans, inventories, observations and catalog photos.
- Trash: restore plants, zones, harvests, tasks, photos, tastings, expenses, candidates, crosses and catalog sheets.
- Demo data can be reset from the More screen.
🚀 First visit (onboarding)
A lightweight onboarding offers to keep the demo data or start with an empty journal, then guides you toward a zone, a plant and a first harvest.
Open the app at http://localhost:4173 in development, or at an https:// address in production. In More → Install the app, you will find instructions tailored to your device.
| Device | How to |
|---|---|
| 🖥️ Chrome / Edge | Install icon in the address bar, or the browser menu. |
| 🤖 Android | Menu ⋮ → Install the app / Add to Home screen. |
| 🍎 iPhone / iPad | Safari → Share → Add to Home Screen. |
Tip
Once installed, the app opens in its own window and works offline thanks to the service worker.
Warning
Data stays tied to this browser and device. Export a JSON backup regularly before uninstalling or switching devices.
| Topic | Detail |
|---|---|
| Photos | Compressed, then kept in IndexedDB (tomato-journal-media-v1). The JSON state only keeps metadata and the media id; legacy dataUrl photos are migrated on first launch. |
| Storage | The More panel shows a storage estimate, the photo count, and a warning on errors or high quota. |
| Global search | Plants, catalog sheets, candidates, crosses, tasks, photos and harvests. |
| Modules | src/photo-storage.js wraps IndexedDB binary persistence. The actionDispatch table in src/app.js is the entry point for UI action dispatch. |
| PWA cache | npm run build:sw hashes the shell assets and regenerates sw.js. Current cache: tomato-journal-shell-b6e0a0a8bb76. |
| Render safety | Top bar zone context, page titles, tasks and search results escaped with escapeHTML(). |
Tomato-journal/
├── index.html # Entry point: launches the app
├── sw.js # Service worker (root scope: must stay here)
├── package.json # npm scripts (start, test, build)
├── src/
│ ├── app.js # Logic, views and action dispatch
│ ├── styles.css # Bio-Orbital & Night Garden HUD themes
│ ├── photo-storage.js # Binary persistence (IndexedDB)
│ └── seed-catalog.js # Catalog of 1987 tomato varieties / 5 plant types
├── assets/
│ ├── manifest.webmanifest # PWA manifest
│ ├── favicon.png # Tab icon
│ ├── apple-touch-icon.png # iOS icon
│ ├── icon-192.png # PWA icon 192 px
│ └── icon-512.png # PWA icon 512 px
├── scripts/
│ ├── build-sw-cache.mjs # Regenerates the versioned cache (sw.js)
│ ├── build-catalog-import.mjs # Catalog import
│ ├── build-catalog-enrich.mjs # Multi-source enrichment
│ └── build-catalog-report.mjs # Documentary report generation
├── docs/
│ ├── verification-catalogue.md # Audit of all 1987 sheets
│ ├── enrichissement-catalogue.md # Enrichment follow-up
│ └── screenshots/ # Screenshots
├── data/ # Catalog enrichment data
└── tests/ # Regression tests






