The manual, gesture by gesture.
Ten sections covering everything you do in Hardtack day to day, from adding a tin of beans to reading how many days your household would hold out. Around twenty-three minutes to read, or jump straight to the section you are missing.
Getting started
On first launch, a five-screen setup collects what the calculation needs. It takes two minutes, and you can run it again whenever you like from Settings → Preferences → Relaunch onboarding. Running it again resets nothing: the kits you renamed, reordered or created stay where they are, only the recommended kit and the visibility of the pet and infant kits are recomputed from your new answers.
- An intro screen states the three principles behind the app: local data, readable in full sun, entry in the dry.
- Household: how many adults, how many children, then how many pets of each size, Small, Medium and Large. This is what sets the daily needs, so the whole days-of-supply calculation rests on it, and the water estimate shown just below updates on every tap. Every profile you declare is created, with no cap, in both versions. On the free version, the screen simply notes that the axis-by-axis breakdown, water, calories and medication, is part of the full version.
- Risk zones: what you are preparing for. It only drives the starter kit recommendation, it never filters your inventory.
- Autonomy target: the number of days you are aiming for. Five common marks are offered, 3 days, 2 weeks, 1 month, 3 months and 1 year, and the slider accepts any value between 1 and 365 days. Beyond a year, the target is typed in from Settings → Preferences → Autonomy, with no upper limit at all: a ten-year target, that is 3650 days, is accepted as is.
- Confirmation: your reference profile, the recommended kit, and the Kits hidden line naming the ones your household will not use. On first launch, you then land on the dashboard. A setup relaunched from Settings, on the other hand, puts you back on the Settings screen you had just left.
- Autonomy: the dashboard. Days covered, limiting factor, expiry alerts and kits from the free version on, then with the full version the axis-by-axis and per-category breakdown, the nutritional balance and the stock value.
- Stock: your item list, the search field, the filters, the sort order and the Add or remove button (section 03).
- Settings: household, storage locations, kits, notifications, appearance, measurements and currency, autonomy goal, privacy, security, export and backup.
Adding an item
Everything starts with the Add or remove button at the bottom of the Stock tab. It opens three entries: two lead to the form for a new item, the third takes stock out and is covered in section 05.
- Open the Stock tab and tap Add or remove.
- Scan a barcode opens the camera. Frame the code: the app queries several public product databases, one after another until one answers, and fills in whatever it finds, name, brand, nutrition values, net weight, Nutri-Score and the product image.
- Enter manually opens the same form, blank. That is the normal route for loose goods, home preserves and regional products.
- Scan to remove is the third entry. It creates nothing, it decrements: see section 05.
- Fill in what the scan cannot guess. Three fields block the save: Name, Quantity with its unit, and a location picked in the Storage section. The Category, on the other hand, always comes pre-filled, on Food by default and on Other when the scan recognised nothing: no database guesses it, so check it.
- Save. Arriving from the scan, saving first opens a confirmation you have to answer, Scan another item or View my inventory. From manual entry, you go straight back to Stock. The item shows up in the list right away. It only adds to the days of supply, though, if it carries what it takes to be counted: calories per 100 g and a known mass (a weight unit, or the Net weight field for items counted by the piece) for the calorie axis, a volume unit or a net weight for an item in the Water category, the quantity alone for the Medical category. Without those values, the item sits in the inventory without adding a single day.
- Nutrition: Calories, Protein, Fat and Carbs, all expressed per 100 g, plus the Net weight of one unit. This is the section that brings the item into the days of supply (section 08): the scan fills it in when the database knows the product, otherwise it is down to you. A summary of the total stock appears as soon as a net weight is entered.
- Expiration: one or more dates, each driving its reminders and feeding the rotation view (section 04).
- Minimum threshold: feeds the shopping list (section 07).
- Unit cost: feeds the stock value by category, on the dashboard. The field can be filled in from the free version, but the summary itself is part of the full version.
- Notes: free text, never parsed, never sent anywhere by the app. It does follow the item if you export or share your inventory yourself (section 10).
Reading, filtering and sorting your stock
The Stock tab carries everything you need to find an item: a search field, a filter bar, a sort button and a switch between list and grid. It all sits on one screen, with nothing to go and find elsewhere.
- The field at the top, Name, brand or barcode, searches as you type. It works with no network, and you can paste a barcode into it. The cross that appears on its right does more than wipe the text: it also lifts every active filter, exactly like the Clear chip.
- Right below, the chips filter: Category, Location, Expiring soon, Low stock. They combine, and as soon as at least one narrowing is active, search text included, a Clear chip is added at the head of the row, to the left of Category: it lifts every filter and empties the search field in one go.
- To the right of that bar, a double-arrow icon opens Sort by: Name, Soonest expiry, Quantity or Recently added. It carries a coloured dot for as long as the sort is not Name.
- Right next to it, two small icons with no label switch between the list view (stacked rows) and the grid view (tiles).
- Top right of the screen, a single icon, Shopping list (section 07), followed by the free-version item counter.
- At the bottom, the Add or remove button, covered in sections 02 and 05.
- With an empty field and no active chip, you have the full inventory. The sort order, however, stays applied.
- Category opens a sheet where several categories can be ticked at once: the chip takes the name of the category when there is only one, otherwise it shows their count, and Apply closes the sheet. Location holds one location only, the chip takes its name, and the All locations row cancels the filter.
- Expiring soon keeps what expires in 30 days or less, already expired included, and leaves aside the items with no date. Low stock only shows the items that have dropped below their minimum, so it stays empty until a minimum is set (section 07).
- The grid view shows more items at once, at the cost of detail. It has no swipe gestures: to remove or delete from the grid, press and hold a card (section 05). Press and hold works in list view too, and it opens the same sheet: it is the alternative to the swipe if the gesture does not go through.
- Sorting by expiry puts what expires soonest on top. That is FIFO rotation without leaving Stock.
- The free version caps you at 10 items, and the counter top right tells you where you stand.
Expiry and rotation
The date goes in the Expiration section of an item. It is optional, and an item with no date will never trigger a reminder.
Hardtack does not separate a use-by date, which is a food safety limit, from a best-before date, which is about quality. Knowing which one you are entering is up to you: the second can be passed safely, the first cannot.
- Tap an item card in Stock to open it.
- Set the date in the Expiration section, then save.
- Stock bought in several goes? Under the date field, Add a date opens one more line, as soon as the first date is picked. From two dates on, each line carries its date, its quantity in the item's unit and a cross to remove it. The Quantity field then becomes the sum of the lines, read-only, captioned “Total: the sum of the expiry dates”. With a single date nothing changes: the quantity goes in Quantity and the date covers the whole stock.
- Back from the shops, scan a product already in stock: its item reopens, and the Already in your stock banner offers to add an expiry date for the new purchase.
- Only one reminder is pending at a time, the one for the next milestone: 7 days before the date, then 1 day before once the first has gone out and the app has been relaunched or the stock changed. An item saved less than seven days from its date only gets the day-before reminder, and an item saved the day before or on the day itself gets none.
- Set the delivery time in Settings → Notifications, 9 a.m. by default, or switch everything off with the Enable alerts toggle. With the alerts off, the Alert time field stays visible but greyed out.
- Everything coming due is listed under Autonomy → Alerts → See all, the Consume first screen, which lists every dated item, even beyond thirty days. The See all link appears as soon as one item carries a date, and both the Alerts card and the reminders are free.
- Dates falling on the same day are grouped into one notification, not ten.
- An item with several dates is tracked date by date: each one gets its own reminders and its own line in Consume first.
- The rotation screen sorts into four groups: Expired, This week, This month, Later.
- The dashboard counts what expires within 30 days separately from what has already expired.
- No reminders coming through? Check the permission in your system settings first. Hardtack does not ask for it on first launch, but at the moment it has a first reminder to schedule, or when you switch the Enable alerts toggle back on. A refusal is never asked again on its own.
- On Android, the delivery time is approximate: the reminder goes out on an inexact alarm, so the system is free to shift it. Some manufacturers also suspend scheduled tasks for apps put to sleep. Take Hardtack out of battery optimisation to keep the delay down.
Taking stock out, fixing, deleting
Three gestures worth keeping apart. Taking stock out decrements a quantity, fixing edits the item, deleting removes it for good.
- Take stock out: swipe the card to the right. A sheet asks how much went out, and the message that follows offers to undo. The gesture is free and unlimited.
- Fix: tap the card, change what needs changing in the form, save.
- Delete: swipe the card to the left, then confirm. The swipe asked for is deliberately firmer than the previous one. An existing item also carries a Delete item button at the very bottom of its form, with the same confirmation.
- The grid view has no swipe gestures. Press and hold a card instead: a sheet opens with Remove from stock and Delete. Press and hold works in list view too, if you prefer the gesture.
- To wipe everything at once, Settings → Danger zone → Clear inventory: your storage locations and household profiles are kept. Back up first, the operation is final (backup is part of the full version).
- From a card, taking out an item already at zero does not open the sheet, a message tells you so.
- Deleting an item takes its expiry dates and the matching reminders with it.
- The scanner carries an Add / Remove switch at the top of the viewfinder, and the third entry of the Add or remove button, Scan to remove, opens the scanner already set to Remove. Every code read then opens the quantity sheet without leaving the scanner: you confirm, the camera starts again straight away for the next item, which is fast on the way back from the shops. That switch is part of the full version, while removing stock by hand stays free.
Storage locations and categories
An item lives in a location and in a category picked from a fixed list. The app creates a first location on startup, “Pantry”, which you are free to rename. The steps below, which create an extra location, are part of the full version. The difference between location and category is not cosmetic.
- Open Settings → Storage locations → Add a location.
- Pick a Type, garage, bug-out bag, cellar, vehicle, cabin or custom. Pantry is not on the list, the app creates one for you on first launch. The type sets the location icon and pre-fills the Name field with its label, except “custom”, which leaves the field empty. Once a name is in place, changing the type no longer overwrites it.
- Name it whatever you want, up to 50 characters.
- To rename or delete a location, tap its row in the same list.
- A location that still holds items cannot be deleted. Move them out first, item by item, from their own screen.
- The ten categories, water, food, medical, tools, hygiene, energy, documents, clothing, animals and a catch-all, cannot be created or renamed. The days-of-supply engine has to know for certain what counts as water and what counts as medication.
- The free version covers one location, the full version takes as many as you need.
Minimum thresholds and the shopping list
The shopping list is not filled in by hand. It is the consequence of one number you set once per item, the minimum threshold.
- Open an item, fill in Minimum threshold, save.
- As soon as the quantity drops below that threshold, the item joins the list with the gap to close, along the lines of “Need 4 L”.
- Open the list from the Shopping list icon, the only one in the Stock header.
- The share icon, top right of the list, sends it as plain text through your phone’s share sheet, into a message, a note or an email. It only appears if the list holds at least one item.
- An item with no threshold never shows up in the list. That is deliberate: not everything is meant to be restocked.
- The list recomputes itself on every quantity change, including after stock is taken out.
- A row opens the item’s form on a tap, to adjust the threshold or enter what you have just bought back.
- It is available in the free version.
Days of supply
That is the large number at the top of the Autonomy tab. It answers one question: how many days your household would hold out with what it has right now.
Three axes are computed separately, water, calories and medication. For each one, the app divides the stock by the household’s daily need and rounds down. The figure shown is the smallest of the axes kept, and the axis responsible is named right below it, under Limited by. As soon as the macronutrients take over from calories, see further down, the ranking runs on five axes instead of three.
- Open Settings → Household. An adult profile is already there at install, with 2,000 kcal and 2.5 L a day. Add one profile per person and per pet, with no cap and no purchase: the household sits in the denominator of the calculation, so a missing profile overstates your days of supply.
- Adjust everyone’s daily needs. Defaults are 2.5 L of water and 2,000 kcal per adult, 1.5 L and 1,500 kcal per child. For a pet, the value comes from its size: 0.25 L for a small one (cat, bird), 0.75 L for a medium one (dog from 10 to 25 kg), 1.5 L for a large one (dog over 25 kg). The size only seeds the water field, you can correct it afterwards.
- Set your target in Settings → Preferences → Autonomy. The sheet that opens is titled Autonomy goal and offers 7, 14, 30, 60, 90, 180 or 365 days as shortcuts, or any value typed in by hand, with no upper limit.
- Fill in the nutrition values of your items to sharpen the result. Calories per 100 g are not enough on their own: the item also has to carry a usable mass, either a mass unit (g, kg) or a net weight. An item counted in units and with no net weight stays at zero on the calorie axis, even with a complete nutrition panel. And as soon as 80 % of the calories in your stock come from items whose calories and three macronutrients are all filled in, the calorie axis gives way to three axes, carbohydrates, fat and protein. Calories do not disappear for all that: the full version keeps showing them next to the figure, as an energy ceiling.
- An axis with no declared need is ignored, not counted as zero.
- Each axis draws on a precise source. Water only counts the items filed in the Water category, and only if they carry a volume or a net weight. Medication only counts the Medical category, at one dose per unit in stock. Calories add up every item whose nutrition panel is filled in and whose mass is known, whatever its category, the Animals category alone excepted.
- The Med doses / day field starts at zero for everyone: the medication axis stays silent until you fill it in yourself.
- A pet only counts on the water axis, never on calories. Pick the Animal type and the Calories / day field disappears, replaced by the Size selector. Its food does not count either: an item filed in the Animals category is left out of the calorie calculation, even if you filled in its nutrition panel. So do file the kibble in that category, that is what keeps it out of your own reserve.
- The overall figure and its limiting factor stay visible in the free version. The axis-by-axis and category breakdowns are part of the full version.
Ready-made kits
Eight starter kits cover the usual preparations: Bug-out 72h, Car kit, Earthquake kit, Blackout kit, EDC, Infant kit, Pet kit and Basic medical kit. They are starting points, not a frozen catalogue: every one of them can be hidden, reordered, renamed and edited line by line. They stay independent from your inventory, ticking a line consumes nothing and changes no quantity.
- Kits live on the Autonomy tab, each showing its completion percentage. The Manage action at the head of the section opens the management screen. In the free version, only the unlocked kit shows that percentage, the others carry a padlock and the Pro tag.
- Tap a kit to open it and tick what you already own. The kit your setup answers make the most relevant carries a Recommended tag on its card.
- A long press on a dashboard card hides that kit, and the message that follows carries a Show that puts it back.
- Inside an open kit, the pencil button in the header (Edit) opens edit mode: tap a line to change its label and its category, drag to reorder, the button at the end of a line removes it and Add a line creates one. The same button, now a tick (Done), leaves edit mode.
- The actions menu, right next to it, carries Rename, Duplicate and Hide from the dashboard, which becomes Show on the dashboard on a kit already hidden. Restore the original kit is only added on a starter kit you have edited, and Delete this kit only on a kit you created yourself: the eight starter kits are not deleted, they are hidden.
- Settings → Preferences → Kits opens the same management screen: which kits show, in what order, and Create a kit.
- Hiding and reordering kits are free. Two kits even hide themselves at the end of setup, the pet one if you declare you have none and the infant one if you declare you have no children: with the default answers, a fresh dashboard shows six of the eight. A household declaring a child and a pet keeps all eight, and running the questionnaire again brings the kit concerned back.
- The Bug-out 72h kit is open from the free version on, editing included. The other seven, plus creating and duplicating, are part of the full version.
- “Reset the order” appears at the bottom of the management screen as soon as you have moved at least one kit.
Backing up, exporting, protecting
There is no account, no server and no synchronisation. The trade-off is plain: backing up is your job, not a cloud’s.
- Settings → Export & backup → Full backup writes a file you keep wherever you want, in Files, on a drive, or in the service of your choice.
- Restore a backup reads that file back. Restoring adds to the existing inventory, it does not overwrite it.
- Export as CSV produces a table Numbers or Excel can read, one row per item. It is an output format: it cannot be imported back, and it boils each item down to its nearest expiry date and its number of dates.
- Export as JSON produces the complete content, every expiry date included, and that one is read back by Restore a backup.
- Settings → Security → Share inventory encrypts your inventory with a passphrase of at least 8 characters, then displays it as a QR code. On the other phone, Import inventory, in the same section, scans that QR code and asks for the same passphrase again. Nothing goes over the network, the two devices talk through a screen and a camera. Past a certain size, the inventory no longer fits in a QR code and the screen switches to an encrypted file, but the import screen only reads QR codes: for a large inventory, go through Full backup then Restore a backup instead.
- App lock with a 6-digit PIN, under Settings → Security. Once the lock is in place, a Face ID / biometrics toggle adds quick unlocking, without replacing the PIN.
- Obfuscate names replaces item names with “Item 1, Item 2…” in Stock, on the dashboard, in the rotation view and in the kits, without touching the data. The shopping list, on the other hand, keeps showing the real names, including in the text it shares.
- Decoy mode: once the app lock is on, a Decoy mode row appears under Settings → Security and has you choose a second 6-digit PIN. Entered on the lock screen, it opens a plain, read-only list, and your real data stays out of sight.
- Export, backup, encrypted sharing and those three protections are part of the full version.
- Settings → Preferences → Privacy controls the crash reports, the only thing the app sends of its own accord: device model, OS version, error trace and the app’s own recent log lines. They are on by default, hold nothing from your inventory and are tied to no identity. One toggle turns them off for good.
- Settings → About → Write to us prepares a support message in your own mail app, with a short technical block you see before sending. The app never sends it itself.
When something does not work
The wider questions, what leaves the device, how the calculation is run, what the free version contains, are answered in the FAQ, and the full list of what the app does is on the Features page. If the problem holds out, the simplest route is Settings → About → Write to us inside the app: a screen has you pick the type of message, then “Write the email” opens a draft in your own mail app with a short technical block already filled in, the version and the build number, the free or full plan, the platform and its version, the language on screen. Nothing else is attached, and you read it before sending. Otherwise write to us at atech.contact@proton.me, reply within 48 business hours.
This guide describes version 1.0. If a screen does not match what is written here, take down the Version line at the very bottom of Settings and give it to us when you write: it carries the full number, along the lines of “1.0.3 (13)”, and that is what saves us a round trip.