Getting started

This guide covers which app to install, how to import an existing record rather than typing it all again, the settings to make on day one, and how to keep your collection safe through updates and onto a new device.

Phone, desktop, or both

Inchgrove runs on Android phones and tablets, and on Windows and Linux computers. It's the same app with the same collection on each, but each device does the jobs it's physically suited to, so the first decision is where you'll use it.

On the phone
Photos straight from the camera, garden mode's big buttons for working among the trees, scanning printed labels, job reminders that arrive with the app closed, and exporting jobs to your device calendar
On the desktop
Printing QR labels and reports, entering a lot of records on a keyboard, dropping photos onto a gallery from a folder, and database snapshots
On both
Everything else: trees, pots and jobs, the diary, species and care guides, import, export and backup

If you have more than a handful of trees, using both works well, with the desktop for setting up and printing and the phone out at the bench. If you do, connect both to the same Dropbox or OneDrive (see Backups) and they keep each other in step. Without it the two are separate collections, and you'd be moving files between them by hand.

Installing

Everything is on the download page. The Windows and Linux builds install like any other program. The Android app is installed from a downloaded package rather than from Google Play, so your phone will ask you to allow installs from that source the first time. Installing on Android walks through it. Both are free, with no limits and nothing to sign up for.

Not sure yet? On a fresh install, Home offers to load an example collection. It's a safe way to look around every screen before committing your own records, and Clear All Records in Backup & Sync takes it away again.

Bringing an existing collection in

If your trees already live somewhere else, such as a spreadsheet, an old database or another app, you don't have to retype them. There are two ways to import, depending on how much you're bringing.

A spreadsheet (CSV)
Species, trees, pots, jobs, diary entries, measurements and photos, one row each. The quick route, and enough for most collections
A JSON file
Everything the app records, custom fields and recipes included, for moving a detailed history across from another tool

Before you start

  • Custom fields (anything you record that the app has no field for, like a show award or the shelf a tree lives on) are set up under Settings → Custom Fields. A spreadsheet can't bring their values in, so either define them and fill them in the app, or carry them in a JSON file.
  • Settle your tag numbers before you print labels. A printed label shows the tree's tag, so renumbering means reprinting, although the QR code on it finds the tree whatever its tag becomes.
  • Set where you grow (below) whenever suits. The winter readings work for every tree the moment it's set, imported or not.

From a spreadsheet

Open Settings → Backup & Sync and find Edit in a Spreadsheet. Under Or start from a blank template there's a template for each kind of record, plus a values sheet listing the styles, materials, container sizes and so on the app suggests. Fill in a template, then use Choose files to import. You can pick several files at once, so a pots file can put the trees from a trees file into their pots in the same import.

For trees, the template's first columns look like this, and the rest are optional:

Key,Tag,Name,Genus,Species,Cultivar,Style,Size,Stage,Acquired,Growing In
,1,Kiyohime,Acer,palmatum,Kiyohime,Informal upright,Shohin,In development,2019-04-12,Pot
,2,,Pinus,thunbergii,,Formal upright,,Mature,2016-09-03,Pot
  • Leave Key blank on a new row, or give it a name of your own, such as maple-1, for other files to point at. Key is how the app recognises a row it already has. If you export your data, edit it and import it back, the rows that kept their Key update those records instead of adding new ones.
  • Genus, Species and Cultivar pick the tree's species. A combination the catalogue already has is matched to it, and one it doesn't have is added as a species of your own. So you rarely need the species template at all.
  • Keep the column names exactly as they are, in English, whatever language your app is in. They're how the app tells a trees file from a pots file. Columns you don't need can be deleted.
  • Dates are written YYYY-MM-DD. Spreadsheet programs like to rewrite them as 12/08/2024 when they save, and the import refuses that, so give the date columns the yyyy-mm-dd format. Comma, semicolon or tab separators all work, so a file re-saved by your spreadsheet program in your own locale imports fine.

Every column, format and common mistake is in the spreadsheet guide.

Before anything is written, the app shows what the import would do: how many records it adds and updates, and every problem it found, with the file and line. Nothing is imported until the list of problems is empty, so a file with a mistake in it is never partly imported. A long list can be saved as a spreadsheet of its own to work through.

A spreadsheet carries only what fits in a row. Custom fields, repeating jobs and the recipes linked to jobs don't come in this way. A blank cell also always means “leave this alone”, never “clear it”. Clearing a value is done in the app.

From a JSON file

The JSON format is the app's own, the same one its backups use, with one document holding every kind of record. It's the way in for a detailed history from another tool, and it's worth it if you're comfortable producing a file from a script or a database export.

The quickest way to learn it is to look at a real one. The Restore section of Backup & Sync has Get Example File, which saves a sample. Better still, add a tree of your own with a diary entry and a photo, then make a Quick Backup. That file is a bundle, and your own file only has to look like it. It also lists every built-in species with its id, the value a tree's speciesId takes. A minimal file:

{
  "version": 1,
  "trees": [
    {
      "id": "0b6f6e3c-5d0e-4c1a-9a57-3f0f1c2d7a10",
      "tag": 1,
      "name": "The hedge maple",
      "speciesId": "9940d84d-faee-4442-8058-99131da6219c",
      "acquired": "2018-05-20"
    }
  ],
  "diary": [
    {
      "id": "6a1d2f4e-8b3c-4e5f-a9d0-1c2b3a4d5e6f",
      "treeId": "0b6f6e3c-5d0e-4c1a-9a57-3f0f1c2d7a10",
      "text": "Repotted into the oval; took off a third of the roots.",
      "createdAt": "2024-03-14T10:00:00.000"
    }
  ],
  "treePhotos": [
    {
      "id": "c3e8a1b2-7d4f-4a6e-8b9c-0d1e2f3a4b5c",
      "treeId": "0b6f6e3c-5d0e-4c1a-9a57-3f0f1c2d7a10",
      "uri": "maple-2024-spring.jpg",
      "timestamp": "2024-04-02T09:30:00.000",
      "caption": "After the repot"
    }
  ]
}
  • "version": 1 is required. Every section is optional, so a file can carry only trees, or only photos.
  • Give every record its own id (a UUID, as the app uses) and link records by it: a diary entry's treeId is its tree's id.
  • A tree needs a speciesId: either a built-in species' id, or the id of a species you include in a species section.
  • The file must be under 5 MB. Records that point at something that doesn't exist, such as a diary entry for a missing tree, are dropped after the import, so check your ids line up.

Every section, field and limit is in the bundle format reference, including recipes, custom fields, trunk measurements and how deletions travel.

Import it from the Restore section of Backup & Sync. The app shows what the file contains before anything is written. Importing is a merge, never a replacement. Records are added alongside what you already have, and importing the same file twice does no harm.

Bringing your photos in

A tree, a pot, a species and the collection itself each have their own gallery. How you fill them depends on how many photos you have.

A few at a time
Open the record's gallery and add from your photo library, several at once. On the desktop you can also drag files from a folder straight onto the gallery
A whole archive
A photos spreadsheet or a JSON file, as above, with a row or record for each photo naming its file. The app copies the files in during the import

For a JSON import, set each photo's uri to just its filename, as in the example above, and put all the files together in one folder. When the import reaches them, the app asks you for that folder (Select Photos Folder on the desktop, Grant Folder Access on Android) and matches files to records by name. A photo whose file isn't in the folder is skipped rather than failing the import.

  • Photos: JPEG, PNG, GIF, WebP or HEIC, each under 25 MB.
  • Videos: MP4, MOV, M4V or WebM, each under 30 seconds and 150 MB.
  • To bring captions and tags in too, set caption and photoTag on the photo's record.

Bringing trees in from a spreadsheet and want their photos too? Add a photos file to the same import, each row's Tree Key naming a tree's Key from the trees file. For trees you already have, Export trees for editing shows each one's Key. The app asks for the folder of photos once it has read the rows, and matches files by name. The spreadsheet guide has the details.

Telling the app where you grow

Three settings on the collection are worth making before anything else: hardiness zone, country and climate. On the Home tab, tap the collection's photo at the top to open its page, and choose Edit Collection. Each one is set once, applies to every tree, and syncs to your other devices.

Hardiness zone
The USDA zone your garden sits in, which says how cold it gets. The app shows the rough RHS equivalent beside it
Country
Which way round your seasons run
Climate
How hot and how wet it gets, which is a different question from how cold

Winter readings need the hardiness zone. Every species carries the zone it survives in the ground, and with yours set, every tree reads as hardy, needing protection, or needing to come indoors. A tree in a pot is treated as two zones tenderer, because a pot freezes right through where open ground doesn't. A tree you've marked as planted out isn't. The trees that need something done are badged in the gallery and in garden mode, and the overwintering report is built from the same readings. Without a zone, none of it can be worked out, and the app asks for one.

Frost warnings are optional. Turn on Frost warnings under Settings → Notifications and pick your town, and the app checks the coming night's forecast and names any trees the cold puts at risk. It's the one setting that needs more than a country: the town you pick stays on that device, and only its rounded position goes to the weather service. Mark trees that winter in a cold frame or greenhouse as under cover or frost-free on the tree's page, so the warnings leave them out.

Country and climate drive the seasonal guide, which tells you what to be doing now in eight half-season slots across the year. Country tells it your hemisphere, so the advice is never six months out. Climate decides between a temperate calendar and a tropical one. You set it yourself, because a country doesn't tell you it (the US runs from rainforest to tundra). If spring comes early or late where you are, the guide takes a correction.

Country and climate also travel with any care guide notes you share, so another grower can judge whether your advice suits their garden. Nothing finer than a country is ever recorded on the collection.

Making sure reminders arrive

A job with a due date reminds you at 8am that day. The reminders are scheduled on the device itself, with no server involved, so whether they arrive depends on what the device allows. Job reminders in Settings turns them on and off.

Android
Allow notifications when the app asks. If you refused, turn them on in the app's page in your phone's settings
Android, on time
On recent Android versions, a reminder only arrives at the time you set if the app is allowed Alarms & reminders, in the same settings page. Without it, Android picks the moment itself, which can be hours later
Desktop
Reminders appear only while the app is open

If you use both, rely on the phone for reminders.

Backups

Your collection lives on your device, and only there. There's no account and no server holding a copy, which keeps it private. It also means that if the device is lost, or the app uninstalled, anything you haven't backed up goes with it. Everything below is in Settings → Backup & Sync.

Cloud sync
Keeps a copy in your own Dropbox or OneDrive and merges every device connected to it. OneDrive needs a personal Microsoft account, not a work or school one. It can run by itself each time you open the app, and on Wi-Fi only if you prefer
Back Up Everything
One .zip file with every record and every photo, which rebuilds your collection on any device. After the first, it can take only the photos added since, to stay small
Quick Backup
Records only, saved in seconds. No photos, so a supplement to the above
Database snapshot
Desktop only: an exact copy of the database and photos, restoring this computer to precisely that moment

The screen puts first the backup your setup calls for: Back Up Everything without cloud sync, or Also Save a File with it. The others are under Other backup types.

A sensible routine is cloud sync switched on, plus a Back Up Everything file now and then, kept somewhere that isn't the device. Sync alone isn't enough, because it copies a deletion just as it copies an edit, so a tree deleted by mistake is deleted everywhere. An archive gives you an earlier copy to restore from.

Restoring is in the same place. An archive or a Quick Backup merges into what's there. Each record keeps a version, so a newer edit on the device is never overwritten by an older backup, and restoring the same file twice is harmless. A database snapshot is the exception. It replaces everything with its contents, and the app asks first.

The screen shows how fresh your last backup is, for records and photos separately, since a Quick Backup doesn't include photos. Set Remind me to back up to weekly or monthly and the app will prompt you. If you go too long without one, Home nudges you anyway.

What's under Edit in a Spreadsheet and Export for Other Apps, and printed reports, are for working on or reading elsewhere, not backups. They can't rebuild your collection, and the app doesn't count them as one.

Updating the app

The downloads from this site don't update themselves. Small fixes arrive on their own, but a new version means fetching a new package from the download page and installing it. The app looks once a day and tells you when one is out, unless you turn off Check for updates in Settings.

Android
Open the new package and install it over the one you have. Your collection stays where it is
Windows
Run the new installer. It replaces the program and leaves your collection alone
Linux
Replace the old AppImage file with the new one. Your collection is kept in your home folder, not in the AppImage

Never uninstall the Android app to update it. Uninstalling deletes every tree, diary entry and photo on the phone. Installing over the top is all an update needs. Back up first either way.

Moving to a new device

Install the app on the new device, then bring the collection across one of two ways:

Through cloud sync
If the old device syncs, connect the new one to the same Dropbox or OneDrive account in Backup & Sync. The first sync brings everything down. Keep the app open until it finishes, which can take a while with a lot of photos
From an archive
Make a Back Up Everything file on the old device, copy it across, and open it from Restore on the new one. Records and photos come in together

Either way works between a phone and a computer too, since it's the same collection everywhere. Leave the old device's copy alone until you've checked the new one.

Getting help

Something not working, a care instruction that looks wrong, or a translation that reads badly? Write to info@inchgrove.co.uk. Say which device and which version you're on (it's in the app's About screen), and what you expected to happen.