Enter password

Sign in to your Equipment on Loan portal.

Dashboard

Search customers, check coffee equipment availability, and see what needs attention.

Customers

Equipment

Agreements

Agreement Expiry

Signing Status

System Status

Connection and version checks.

Connection: checking...

App version: checking...

Cover Letter Templates

Upload Word cover letters that use the same agreement fields and print as PDFs.

No cover letter template uploaded yet.

Core Agreement Fields {{customerName}} {{legalName}} {{tradingName}} {{abn}} {{contactFirstName}} {{agreementId}} {{agreementStartDate}} {{agreementEndDate}} {{contractTermMonths}} Legacy Coffee Fields (still supported for existing templates and standard coffee terms) {{kgPerWeek}} {{totalContractedKg}} {{pricePerKg}} {{moqPricing}} Custom / Generic Commercial Terms Fields (use these for custom commercial terms) {{commercialTermHeading1}} {{commercialTermValue1}} {{commercialTermHeading2}} {{commercialTermValue2}} {{commercialTermHeading3}} {{commercialTermValue3}} {{commercialTermHeading4}} {{commercialTermValue4}} Document and Sender Fields {{equipmentList}} {{generatedDate}} {{currentUserName}} {{currentUserEmail}} {{senderName}} {{senderEmail}} {{coverLetterTemplateName}} {{coverLetterTemplateVersion}}

Branding

Manage logos, company details, and document headers and footers.

Branding settings ready.

Application Header

PDF Header

PDF Footer

Backups

Create database backups and full restore archives.

Automatic backup: ready

Recovery backups: ready

App versionChecking...
Database backupChecking...
Full recovery backupChecking...
Google DriveChecking...
PDF flatteningChecking...
Disk usageChecking...
Last checkedChecking...

Downloaded database backups contain the main customer, agreement, equipment and install database only. They do not include electronic-signing records, signed PDFs, or signing file storage. Use full recovery backup when you need a complete restore archive with the app files, settings, database, users, uploaded PDFs/signatures, templates, assets, and vendor files needed to rebuild the system on a fresh server. Printable records PDF creates a human-readable hard-copy index of customers, linked agreements, equipment, and signed document references. Signed documents pack downloads the actual manual and electronic signed PDFs grouped by customer and agreement.

Backup storage

See which backup folders are using server space before running cleanup.

Backup area What it contains Files Size Latest file
Checking backup storage...

Use cleanup to prune old server backups using the app's safe keep rules. Keep the latest full recovery backup and one known-good older full backup before deleting anything manually.

Backup files

Select old backup files to remove from the server.

Backup area File Version Date Size Status
Click Refresh files to list backups.

Automatic backup status: checking...

Google Drive: checking...

Restore

Restore database data, or follow the guide below for a full server recovery.

Warning: Database restores replace the current customer, agreement, equipment and install database only. They do not restore electronic-signing records, signed PDFs, or signing file storage. Use a full recovery backup for a complete server restore.

Use the import button for downloaded database JSON backups only. To restore electronic-signing records/files or a downloaded FULL-*.tar.gz file, use the Disaster Recovery guide below.

Disaster Recovery Guide

Simple steps to rebuild the app if the server fails.

What the full recovery backup contains

  • App files: app.js, server.mjs, index.html, styles.css, package.json, package-lock.json.
  • Assets, vendor files, scripts, and the protected DATA_DIR snapshot needed by the live app.
  • Primary business data: DATA_DIR/eol-database.json.
  • Users, sessions, login audit, branding settings and logos, email settings, automatic backup status, uploaded PDFs/signatures, templates, customers, agreements, gear, installs, swaps, returns, and movements where stored in DATA_DIR.

Fresh server restore steps

  1. Create a new DigitalOcean Ubuntu droplet.
  2. Install Node.js.
  3. Upload the latest FULL recovery backup file.
  4. Extract the backup into the app folder.
  5. Confirm app.js, server.mjs, package.json, and DATA_DIR/eol-database.json exist.
  6. Run npm install or npm ci.
  7. Start the app using DATA_DIR=/var/lib/kaffeina-eol node server.mjs or the matching PM2 command.
  8. Open the server IP in a browser and confirm the login page loads.
  9. Log in and check customers, agreements, coffee gear, install records, swap/return records, reports, users, branding settings, email settings, and backup settings.
  10. Create a new database backup and a new full recovery backup to prove the restored system works.

Recovery validation checklist

  • Login page loads
  • Admin login works
  • Customers visible
  • Agreements visible
  • Coffee Gear visible
  • Install records visible
  • Swap/Return records visible
  • Reports work
  • Users present
  • Branding settings present
  • Email settings present
  • Backup settings present
  • Database backup succeeds
  • Full recovery backup succeeds

Admin Tools

Users, security, templates, and database actions.

Business Rules & Defaults

Configure safe app defaults and review locked workflow rules.

Locked workflow rules

  • Duplicate serial items stay Draft until the serial is made unique.
  • Duplicate customer names are allowed; CIN7 ID is the main duplicate check.
  • One customer can have multiple agreement sites without being treated as a duplicate agreement.
  • Agreement extensions keep their original agreement reference and print as extensions.
  • Allocating gear creates the matching draft install record.
  • Customer initials are excluded from internal reports.
  • Saves write changed rows only, not the full database.

Help Guides

Edit the short help text shown from the question mark on each page.

Use plain text. Start a line with "- " for a bullet, or "# " for a small heading.

Coffee Gear Fields

Add, rename, hide, or restore values used for Coffee Gear dropdown fields. Used values are hidden instead of deleted so old records stay intact.

Contract Templates

Upload Word templates and generate customer contracts from agreements.

No contract template uploaded yet.

Supported fields {{templateName}} {{templateVersion}} {{contractTemplateName}} {{contractTemplateVersion}} {{generatedDate}} {{generatedAt}} {{appVersion}} {{footerVersion}} {{currentUserName}} {{currentUserEmail}} {{senderName}} {{senderEmail}} {{customerId}} {{customerCreatedAt}} {{customerName}} {{tradingName}} {{legalName}} {{customerLegalName}} {{abn}} {{customerAbn}} {{customerAddress}} {{customerEmail}} {{customerPhone}} {{contactName}} {{contactFirstName}} {{contactLastName}} {{contactPositionTitle}} {{customerType}} {{customerStatus}} {{customerNotes}} {{siteName}} {{siteAddress}} {{siteTradingName}} {{siteContactName}} {{sitePhone}} {{siteEmail}} {{agreementSite}} Core Agreement Fields {{agreementId}} {{invoiceNumbers}} {{fullAgreementVersion}} {{fullAgreementVersionLabel}} {{scheduleVersion}} {{scheduleVersionLabel}} {{simpleAgreementVersion}} {{simpleAgreementVersionLabel}} {{agreementStartDate}} {{agreementEndDate}} {{contractTermMonths}} Legacy Coffee Fields (still supported for existing templates and standard coffee terms) {{kgPerWeek}} {{totalContractedKg}} {{pricePerKg}} {{moqPricing}} Custom / Generic Commercial Terms Fields (use these for custom commercial terms) {{commercialTermHeading1}} {{commercialTermValue1}} {{commercialTermHeading2}} {{commercialTermValue2}} {{commercialTermHeading3}} {{commercialTermValue3}} {{commercialTermHeading4}} {{commercialTermValue4}} Document and Signing Fields {{equipmentList}} {{ppsrNumber}} {{signingDate}} {{customerInitial}} {{customerInitials}} {{customerSignature}} {{customerDate}} {{customerSigningDate}} {{customerSignerName}} {{customerSignerTitle}} {{customerSignerLabel}} {{customerSignatureLabel}} {{customerSignerCapacity}} {{customerSigningFor}} {{customerEntityName}} {{kaffeinaInitial}} {{kaffeinaInitials}} {{kaffeinaSignature}} {{kaffeinaDate}} {{kaffeinaSigningDate}} {{kaffeinaSignerName}} {{kaffeinaSignerTitle}}

Create Customer or Import from CIN7

Search Customers

0 selected
IDStatusDateNameCIN7SourcePhone

Import PDF and Match Customer/Equipment

Add Agreement Details

Search Agreements

0 selected
IDStatusCustomer / siteDatesKg/WkContract length in monthsMinimum Order Commitment$/KgPPSRPPSR statusFiles

Add Coffee Equipment

Search Coffee Gear

Search & Filter Equipment

0 selected
More actions
LockIDStatusItemBrandModelSerialCustomerInstall dateFundingDepreciation Start DateInstant write offPurchase Cost (Ex GST)Depn yearsResidualCurrent WDVLease monthlyLease termAuto CAPEXReplacement Cost (Ex GST)

Duplicate Serial Check

Shows serial numbers allocated to more than one customer. Select the correct customer or unallocate the wrong record.

ActionsIDStatusSerialEquipmentCurrent customerDuplicate note

Not allocated to customer

0 selected
IDStatusItemBrandModelSerialFundingReplacement Cost (Ex GST)

Equipment History

Select History on an equipment row to view its history.

Install Equipment at Customer

Search Install Gear

0 selected
IDStatusAgreementCustomerCoffee gearInstall dateReturn date

Service Swap Coffee Equipment

Search Service Swap History

0 selected
IDStatusAgreementCustomerOld itemNew itemDateReason

Reports

Reports, registers, customer packs, and internal reporting.

Reports Dashboard Choose the report workspace you need. Manage customer reports, transaction registers, and internal reporting.

Detailed Customer Report

Report date -

Transaction Register

ReferenceAgreementDateTypeCustomerEquipmentSerialStaff member

Forward Coffee Forecast

Forecast period Next 12 months

Summary by contract class

Contract classAgreementsCustomersKg/monthValue/monthForecast kgForecast value

Detail by customer

CustomerSiteAgreementTypeStatusTermDatesMonthsKg/weekKg/monthPrice/kgValue/monthForecast kgForecast value

Draft agreements needing dates

CustomerSiteAgreementAgreement typeStatusStart dateEnd dateContract lengthKg/weekPrice/kgMissing

CAPEX Depreciation Report

Report date Report period All dates
0 selected