Lab Notes
Encrypted lab journal.
Every save is an AES-256 encrypted commit in GitHub.
Press + New Entry to begin.
Working…
End-to-end encrypted. Notes are unreadable without your password — including in the GitHub repo.
Encrypted lab journal.
Every save is an AES-256 encrypted commit in GitHub.
Press + New Entry to begin.
Track every plant accession — origin, status,
acquisition date and linked lab entries.
Press + New Accession to begin.
Store all your media formulations — MS, WPM, B5,
custom blends, hormone regimes.
Press + New Recipe to begin.
Entries with a Next Review Date set. Click any card to open the note.
All contamination log entries across the lab.
Timers, stopwatches and lab utilities — all run locally, no data saved.
Derived from your notes and accession registry.
Latest plant tissue culture publications from PubMed. Results are saved to your repo as dated JSON files for future reference.
Toggle on to load the latest 100 plant tissue culture papers from PubMed.
You need two things: your Encryption Password (chosen by you — never leaves your browser) and a GitHub Personal Access Token with repo scope.
Create a token: github.com → Settings → Developer settings → Personal access tokens → Classic → New token → tick repo → Generate
⚠️ Never lose your encryption password. There is no recovery — all note content is AES-256-GCM encrypted client-side. The GitHub repo stores only ciphertext.
Tap ☰ (top-left) to open the left navigation drawer. For Notes, Registry, and Recipes, the drawer stays open and shows the search, filters, and list — the main panel on the right shows the selected entry or editor. For all other sections (Analytics, Tools, Help, etc.) the drawer closes after navigating. The top bar contains: weather, export, lock, and theme toggle.
Your token is stored in sessionStorage only — cleared on tab close. Your password is in memory only. Lock or tab-close wipes both. After first login, data is cached for 10 minutes so re-unlocking is near-instant (⚡ Loaded from cache).
After logging in, tap Yes, save on the trust banner. Your GitHub token is saved encrypted in localStorage — next visit just enter your password, no token needed. Tap Forget this device on the login screen to remove it.
Click ☀️ / 🌙 in the top bar to toggle themes. Preference persists across visits.
Click + New Entry or tap the blue + FAB (floating button, bottom-right) for a quick two-field entry. The full editor has:
| Field | Purpose |
|---|---|
| Title | Required. Shown in the drawer note list and search results. |
| Experiment Type | Categorises the entry; auto-loads a Markdown template when body is empty. |
| TC Stage | Stage 0 – IV, Self Notes / Unclassified, or N/A. |
| Species / Accession | Links this entry to Registry accessions automatically. |
| Recipe Used | Pick a saved recipe; shows as a clickable purple badge on the note. |
| Next Review Date | Sets a reminder shown in the ⏰ Reminders tab with nav badge count. |
| Tags | Comma-separated. Start typing to see autocomplete suggestions from your existing tags. |
| Cultures Out | Optional integer — number of propagules / cultures produced. Powers media efficiency analytics. |
Every keystroke is debounced and saved to sessionStorage after 1.5 s. If you accidentally refresh or navigate away, reopen the editor and a yellow banner appears: "Draft restored from Xm ago". Click Discard to clear it.
Above the note body, three buttons toggle the view: ✏️ Edit (textarea only), ⬛ Split (editor left, live Markdown preview right), 👁 Preview (rendered only). On mobile, Split stacks vertically.
Type [[Note Title]] anywhere in the body to create a link to another note. In the rendered view, it becomes a purple link — click to navigate. If the title doesn't match any note, it shows greyed out.
Use the [[]] toolbar button to open a searchable note picker instead of typing manually.
Below the note body, a Linked from section lists notes whose body contains [[this note's title]] — populated from notes you've opened in this session.
On any note's view panel, click 📜 History. A slide-in panel shows every GitHub commit for that note file, newest first. The current version is labelled. Click ↩ Restore this version to load an old body into the editor for review — you must explicitly Save to overwrite.
The blue + button in the bottom-right corner opens a minimal modal: just Title and Body. Saves immediately as a Self Notes / Brainstorming entry. Disappears while the full editor is open.
The toolbar wraps selected text or inserts at cursor. Buttons: H2, H3, Bold, Italic, Strikethrough, inline code, code block, blockquote, horizontal rule, bullet list, numbered list, task list, link, image embed, table, [[]] wiki-link, 📷 Camera/Barcode. Shortcuts: Ctrl+B Bold, Ctrl+I Italic, Ctrl+K Link, Tab = 2 spaces.
Click 📷 in the toolbar to open the camera. Tap 📸 Capture Photo to insert a JPEG image directly into the note body (base64 encoded, encrypted with the note). Tap 🔍 Scan Barcode to activate the ZXing barcode reader — supports QR codes, Code128, EAN, DataMatrix, and more. Once scanned, insert the result into the note or copy to clipboard. Use ⇄ Switch to toggle between front and rear camera.
Click 🖼 to pick an image. It is base64-encoded and inserted inline — encrypted inside the note. Keep under 1 MB.
The search box in the left drawer instantly filters the note list by title, species, and tags. Pressing Enter triggers a deep search — decrypts every note body and returns highlighted excerpts.
Filter pills in the drawer: All types, ☣️ Contamination only, ⏰ Overdue, and TC Stages I–IV.
Start typing in any Species field — a dropdown appears with matching species from the active taxonomy packs. Each suggestion shows the scientific name, common name, and conservation status badge (CR/EN/VU/NT/LC). Click to select, or ignore and type whatever you like. If you already have accessions of a species with flairs, those show as sub-rows in the dropdown.
Go to 🌱 Species → Taxonomy Packs to browse all built-in species. Three packs are available: Carnivorous Plants (Nepenthes, Drosera, Sarracenia, etc.), Orchids, and Banana & Relatives. Each pack can be toggled on/off — disabled packs are excluded from autocomplete (takes effect after next login). You can also add your own custom species at the bottom of the panel.
Flairs are coloured labels you define in 🌱 Species → Flairs (e.g. Borneo clone, Highland form, SCV-01). Once defined, assign them to any accession record in the Registry editor. You can assign multiple flairs and add a free-text provenance note. Assigned flairs appear as coloured pills in the accession list and detail view, and in the autocomplete dropdown when that species is typed.
Click 📅 Calendar in the nav drawer. Use ‹ › to move between months and Today to snap back to the current month.
Each day shows colour-coded dots:
Click any day to open the detail panel on the right. It lists all entries for that day with type, stage, and species. Click any entry to open the full note. On mobile the panel opens full-screen.
Click a day, then click + New note on this date (past dates) or + Schedule note for this date (future dates). Past dates set the experiment date; future dates pre-fill the Next Review Date field.
Click ⬇ Export in the calendar header and choose This week or This month. A print-ready window opens with all entries expanded — full note bodies, badges, and flags for contamination and pending reviews. Use your browser's print dialog to save as PDF.
| Shortcut | Action |
|---|---|
| Ctrl+S | Save current note to GitHub |
| Ctrl+B | Bold selected text |
| Ctrl+I | Italic selected text |
| Ctrl+K | Insert link |
| Tab | Insert 2 spaces (inside editor) |
| Enter in search | Deep full-text search across all notes |
| Escape | Close Quick Log modal / Wiki picker |
Track every plant accession — species, accession number, origin, source, acquisition date, and status. Any note whose Species/Accession field matches the accession's species name is automatically linked.
Each accession view has two tabs: 📋 Details (the accession record) and 📅 Timeline. The Timeline tab shows all linked lab entries as a chronological vertical timeline with stage icons — click any entry title to open that note.
Store complete media formulations. Each recipe records base medium, sucrose, agar/gelrite, pH, growth regulators, autoclave parameters, and preparation notes.
Choose from the curated list: general (MS, LS), orchid-specific (Knudson C, VW, Pierik, New Dogashima), monocot/banana (B5, N6, MS-Musa), woody plants (WPM, DKW, Anderson's). Select ✏️ Custom to type any name.
Presets: 121°C/15m, 121°C/20m, 121°C/45m, 115°C/20m, Filter sterile. Or type exact temperature and hold time manually.
Pick a recipe in the Recipe Used dropdown when creating a note. It shows as a purple badge — clicking opens the recipe. Recipe links are used in the Analytics tab to compute usage frequency and media efficiency.
Any lab entry with a Next Review Date appears in the ⏰ Reminders tab, grouped by urgency:
The nav badge shows overdue + this-week count. Click any reminder card to open the note.
The 🌡️ weather chip in the nav bar shows the current real-feel temperature at the lab (SARE, Thiruporur). Data is fetched from Open-Meteo every 60 seconds — no API key, always live.
Click the chip to expand a popover showing both locations side by side:
| Location | Metrics shown |
|---|---|
| 🏛️ Lab — SARE, Thiruporur | Feels-like °C, 💧 Humidity %, ☀️ UV Index, 🌧️ Rain probability % |
| 🌿 Greenhouse — Thaiyur, Kelambakkam | Same four metrics |
Click anywhere outside the popover to close it.
Click the 📊 Analytics tab to see all metrics computed from your notes, accessions, and recipes in real time. No data is sent anywhere — everything runs in your browser from already-decrypted in-memory data.
A line chart of how many lab entries you created in each of the last 6 calendar months. Useful for spotting quiet periods or high-activity sprints.
A donut chart showing what proportion of your notes are at each TC stage (Stage I–IV). Helps you see where most of your active work is concentrated. Each stage has a distinct colour: blue (I), green (II), yellow (III), purple (IV), red (Contamination).
Horizontal bars showing success rate for each species — the percentage of notes for that species that are not Contamination Log entries. Only species with 2 or more notes are shown. Colour-coded: green >70%, yellow 40–70%, red <40%.
A line chart of how many Contamination Log entries occurred per month over the last 6 months. An upward trend is a warning signal to investigate media, laminar flow, or explant source.
Horizontal bars for the top 6 most-used recipes — counted by how many notes reference each recipe. Shows which media formulations you rely on most.
Your top 30 tags displayed as sized pills — larger and more opaque tags are used more frequently. Gives a quick overview of recurring themes and topics in your lab journal.
Stacked horizontal bars for your top 5 species (by note count), showing how their notes are distributed across Stage I → II → III → IV. A healthy progression should show entries at multiple stages. A species with only Stage I entries may have stalled.
Badge cards showing the average number of days between consecutive lab entries for each species with 3 or more notes. This approximates your subculture interval — useful for optimising transfer frequency.
A ranked table showing how well each combination of Recipe × Species × Stage performs. Requires at least 2 notes sharing the same recipe, species, and stage.
| Column | Meaning |
|---|---|
| Recipe | The saved media recipe used |
| Species | The plant species |
| Stage | TC Stage (I–IV, abbreviated) |
| Avg Out | Average value of the Cultures Out field across all matching notes. This is the number of propagules or cultures produced per transfer. Set "Cultures Out" on your notes to populate this. |
| Contam% | Percentage of matching notes that are Contamination Log entries |
| Score | Composite efficiency score (0–100). Formula: (Avg Out ÷ global average) × (1 − contamination rate) × 100, capped at 100. Higher is better. A recipe with high output but high contamination will score lower than a reliable medium with moderate output. |
💡 Tip: Always fill in Cultures Out when saving a Multiplication or Rooting note to get meaningful efficiency data. Without it, the Avg Out and Score columns show "—".
Click Species in the nav drawer to see a live table of all species derived from your notes and accession registry. Shows: note count, TC stages distribution, contamination rate, average Cultures Out, and accession status. Click Taxonomy ↗ next to any species to look it up in the PhytoCommerce taxonomy database.
Tap ✦ (bottom-right, above the quick log FAB) to open the AI assistant powered by Google Gemini. When you ask a question, the assistant automatically sends rich context about your current session:
Pre-built chips: Summarise note (bullet-point summary of the open note body), PGR advice (recommendations based on species + media context), Contam analysis (likely causes + prevention), Lab overview (status across all species). Press Enter to send free-text questions.
Click News in the nav drawer to see the latest 100 plant tissue culture publications from PubMed. Toggle the switch to load articles as individual cards — each shows title (linked to DOI), authors, journal, and year. Toggle off to clear from memory.
When loaded, results are automatically archived to your GitHub repo at news/YYYY-MM-DD.json with the date stamp. These files accumulate over time as a research archive you can reference later.
The ⚡ Activity tab on the right edge of the screen opens a live panel showing the last 30 GitHub commits on your lab repo. Each entry shows the commit message, time ago, and date.
Icons indicate the type of activity:
| Icon | Meaning |
|---|---|
| 🌱 | New note added or Quick Log |
| ✏️ | Note updated |
| 🗑 | Note deleted |
| 🌿 | Accession registry updated |
| 🧪 | Recipe saved or updated |
| 📋 | Index updated |
| ✨ | App feature added |
Click any note-related commit (🌱 or ✏️) in the list to jump directly to that note. Click ↻ to refresh. Click ✕ or click the ⚡ Activity tab again to close. The panel is minimised by default — just a small tab on the right edge.
Click + Add Timer. Enter hours, minutes, seconds, and a name (e.g. "Autoclave", "Surface sterilisation"). Press ▶ to start. Up to 5 simultaneous timers. A repeating beep plays when a timer reaches zero. Press ↺ to reset.
Up to 4 stopwatches with lap recording. Press ⏱ Lap to record a split without stopping. Press ↺ to clear laps and reset.
A step-by-step sterilisation protocol guide. Select your surface sterilisation method and the stepper walks you through each stage with a built-in countdown timer per step. Each step supports a temperature field (e.g. 55 °C water bath) and a notes field for lot-specific reminders or observations. The old general-purpose calculator has been removed — use the BioChemistry Calculator below for numeric calculations.
Scale any saved recipe up or down. Enter a target volume (e.g. 500 mL) and the scaler recalculates all ingredient quantities proportionally. Useful when preparing a partial batch or scaling an existing formulation to a new vessel size.
Click ⬇ (ZIP) or CSV in the top bar to export your data. ZIP downloads all notes as decrypted Markdown files plus accessions and recipes as JSON. CSV downloads two spreadsheet files: one for all note metadata (id, title, date, type, stage, species, tags, next review, recipe, cultures out), one for all accessions.
Each ZIP note file includes YAML front matter with all metadata.
Your data is always in the GitHub repo as encrypted .enc files — every save is a git commit, so you have full version history at github.com/Phyto-Evolution/tcplants. The repo is your backup.
Open any note or recipe, then click 🖨 Print / PDF. A clean print-optimised window opens. Use your browser's print dialog → Save as PDF.
All note content is encrypted client-side with AES-256-GCM using a key derived from your password via PBKDF2 (600,000 iterations, SHA-256). The GitHub repo contains only ciphertext — even repo admins cannot read your notes without your password.
Your password never leaves your browser. The GitHub token is stored only in sessionStorage (cleared on tab close). The session data cache in sessionStorage contains decrypted data but is cleared on lock and on tab close.