Skip to content

Latest commit

 

History

53 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Tomato Journal

🍅 Tomato Journal

Le carnet de culture de tomates qui vit entièrement dans votre navigateur.
The tomato growing journal that lives entirely in your browser.


Français   English



Zero dependencies PWA Local first 1987 varieties MIT



Thème clair Bio-Orbital
☀️ Bio-Orbital — thème clair
Thème sombre Night Garden HUD
🌙 Night Garden HUD — thème sombre

⚡ Démarrage en 10 secondes · Get started in 10 seconds

npm start          # puis / then → http://localhost:4173
Pas de npm ? · No npm?  →  python3 -m http.server 4173

🇫🇷 Français

🇬🇧 Switch to English

🌱 En bref

🔒

Aucun compte

Aucun serveur, aucun appel réseau. Tout reste dans le localStorage et l'IndexedDB du navigateur.

📦

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.


✨ Fonctionnalités

🪴 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.
Potager
Le Potager en thème clair Bio-Orbital : statistiques de la saison, filtres par zone et cartes des 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.
Récoltes par mois et par variété
Graphique annuel : douze mois en barres empilées par variété.

Rythme et répartition
Rythme hebdomadaire, répartition par variété, plus beaux fruits et journal des récoltes.
🗓️ 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.
Saisons et bilan qualitatif
La page Saisons : résumé de l'année, état du bilan et bilan qualitatif variété par variété.
🌾 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.
Catalogue de variétés
Le catalogue : 1987 fiches de tomates réparties en 5 types de plantes, avec recherche et filtres.
📷 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.

Onboarding
Première visite : conserver la démo ou commencer avec un carnet vide.

📲 Installer comme une application (PWA)

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.

AppareilComment faire
🖥️ Chrome / EdgeIcône d'installation dans la barre d'adresse, ou menu du navigateur.
🤖 AndroidMenu Installer l'application / Ajouter à l'écran d'accueil.
🍎 iPhone / iPadSafari → PartagerSur 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.


🧱 Sous le capot

SujetDétail
PhotosCompressé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.
StockageLe panneau Plus affiche une estimation du stockage, le nombre de photos et un avertissement en cas d'erreur ou de quota élevé.
Recherche globalePlantes, fiches catalogue, candidates, croisements, tâches, photos et récoltes.
Modulessrc/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 PWAnpm run build:sw hashe les assets du shell et régénère sw.js. Cache courant : tomato-journal-shell-b6e0a0a8bb76.
Sécurité du renduContexte de zone de la topbar, titres de page, tâches et résultats de recherche échappés via escapeHTML().

📁 Structure du projet

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


🇬🇧 English

🇫🇷 Revenir au français

A local, dependency-free web app for tracking a tomato growing season — from sowing to harvest, with no account and no server.

🌱 At a glance

🔒

No account

No server, no network call. Everything stays in the browser's localStorage and IndexedDB.

📦

Zero dependencies

Plain HTML, CSS and JavaScript. Nothing to install, nothing to build.

📱

Installable (PWA)

Installs on desktop, Android and iPhone, and works offline.


✨ Features

🪴 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.
Garden
The Garden in the Bio-Orbital light theme: season stats, zone filters and plant cards.
📊 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.
Harvests per month and variety
Yearly chart: twelve months as stacked bars per variety.

Pace and distribution
Weekly harvest pace, distribution per variety, biggest fruits and harvest journal.
🗓️ 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.
Seasons and qualitative review
The Seasons page: yearly summary, review status and the qualitative review, variety by variety.
🌾 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.
Variety catalog
The catalog: 1987 tomato sheets across 5 plant types, with search and filters.
📷 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.

Onboarding
First visit: keep the demo data or start with an empty journal.

📲 Install as an application (PWA)

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.

DeviceHow to
🖥️ Chrome / EdgeInstall icon in the address bar, or the browser menu.
🤖 AndroidMenu Install the app / Add to Home screen.
🍎 iPhone / iPadSafari → ShareAdd 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.


🧱 Under the hood

TopicDetail
PhotosCompressed, 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.
StorageThe More panel shows a storage estimate, the photo count, and a warning on errors or high quota.
Global searchPlants, catalog sheets, candidates, crosses, tasks, photos and harvests.
Modulessrc/photo-storage.js wraps IndexedDB binary persistence. The actionDispatch table in src/app.js is the entry point for UI action dispatch.
PWA cachenpm run build:sw hashes the shell assets and regenerates sw.js. Current cache: tomato-journal-shell-b6e0a0a8bb76.
Render safetyTop bar zone context, page titles, tasks and search results escaped with escapeHTML().

📁 Project structure

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


🍅 Tomato Journal — sous licence MIT · licensed under MIT

Fait pour les jardiniers qui aiment leurs données autant que leurs tomates.
Made for gardeners who love their data as much as their tomatoes.



Back to top

About

Carnet de culture local et hors ligne pour suivre une saison de tomates : potager, récoltes, tâches, analyse détaillée et catalogue de variétés. sans compte ni serveur.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages