Skip to content

AetherAssembly/Before-Its-Gone

Before It's Gone

Track what's in your fridge, freezer, and pantry before it expires.

CI Release License: AGPL v3

Copr build status OBS build status Wiki

Offline-first app — desktop (Electron) or self-hosted PWA. No account required; all data stays on your device.


Features

Track expiry dates and get notified before things go off. Includes a shopping list, waste log, recipe suggestions, optional email digests, and opt-in Supabase cloud sync. Dark/light mode, drag-and-drop, and keyboard shortcuts. Barcode scanning works in both modes: in-browser camera on the PWA, phone-relay on the desktop.

Everything runs locally; the only outbound requests are Open Food Facts (barcode lookup), TheMealDB (recipe suggestions), and your own Supabase project if you enable sync.


Download

Linux & macOS:

curl -fsSL https://aetherassembly.org/install.sh | bash

Windows (PowerShell):

irm https://aetherassembly.org/install.ps1 | iex

Auto-detects your distro, architecture, and package manager. Run the same command again to update.

Or grab a specific build from the Releases page.

Platform Formats
Linux (x86_64) AppImage · .deb · .rpm · PKGBUILD (Arch)
Linux (arm64) AppImage · .deb (Raspberry Pi 4/5)
macOS DMG
Windows NSIS installer · Portable .exe

Fedora / RHEL / CentOS Stream / Rocky / Alma (COPR):

sudo dnf copr enable aster1630/before-its-gone
sudo dnf install before-its-gone

openSUSE (OBS):

sudo zypper addrepo https://download.opensuse.org/repositories/home:aster1630/openSUSE_Tumbleweed/home:aster1630.repo
sudo zypper refresh && sudo zypper install before-its-gone

Platform notes

macOS: if the app is blocked on first launch, go to System Settings > Privacy & Security and click Open Anyway.

Windows: if SmartScreen warns on the installer, click More info → Run anyway. The app is not yet code-signed.

Linux (Wayland/X11): the app auto-detects your session. To override:

BIG_LINUX_DISPLAY_BACKEND=wayland npm run dev
BIG_LINUX_DISPLAY_BACKEND=x11    npm run dev

Raspberry Pi: Electron may log a SUID sandbox warning on first launch. The app still runs; see the wiki to fix it permanently.

Debian/Ubuntu/Raspberry Pi OS: add the apt repo for automatic updates via apt upgrade:

curl -fsSL https://apt.aetherassembly.org/beforeitsgone.gpg.pub | sudo gpg --dearmor -o /usr/share/keyrings/beforeitsgone.gpg
echo "deb [signed-by=/usr/share/keyrings/beforeitsgone.gpg] https://apt.aetherassembly.org stable main" | sudo tee /etc/apt/sources.list.d/beforeitsgone.list
sudo apt update && sudo apt install before-its-gone-electron

See docs/packaging/linux/debian for details and the key fingerprint to verify.


Self-Hosted PWA

Run Before It's Gone as an installable Progressive Web App on any device on your LAN or Tailscale network — no Electron required.

Prerequisites: Docker, a self-signed cert (generated once), and the repo cloned.

# Generate a self-signed certificate (run once)
mkdir -p docker/certs
openssl req -x509 -newkey rsa:4096 -keyout docker/certs/key.pem \
  -out docker/certs/cert.pem -days 3650 -nodes \
  -subj "/CN=before-its-gone-local"

# Build and start
npm run docker:pwa:up

Then open https://<your-server-ip> from any device on the same network. Accept the self-signed cert warning once per device. Use the browser's Add to Home Screen prompt to install it as an app.

Tailscale: once the container is running, any device on your tailnet can reach it at https://<tailscale-hostname>. To avoid the cert warning entirely, use tailscale cert <hostname> to provision a Let's Encrypt cert and point nginx at it instead.

Barcode scanning: when accessing from a phone or tablet, a Scan barcode button in the add-item form opens the device camera directly via @zxing/browser. No phone-relay server or QR code needed.

Data: all inventory data is stored in the browser's IndexedDB, per device. Optional Supabase sync works the same as in the desktop app if you want to share state across devices.

Script What it does
npm run docker:pwa:up Build image and start the container in the background
npm run docker:pwa:down Stop and remove the container
npm run docker:pwa:build Rebuild the image without starting
npm run build:pwa Build the web bundle only (alias for build:web)

npm Packages

The core business logic and UI component are published to GitHub Packages and available for use in your own projects.

# configure your npm client to use the GitHub Packages registry for @aetherAssembly
echo "@aetherAssembly:registry=https://npm.pkg.github.com" >> .npmrc

npm install @aetherAssembly/core
npm install @aetherAssembly/ui
Package Description
@aetherAssembly/core Inventory logic, IndexedDB storage, expiry calculations, import/export, email templates
@aetherAssembly/ui InventoryCard React component

License notice: both packages are published under AGPL-3.0-only. If you use them in your own project, including as a network service, your project must also be released under AGPL-3.0 and its source made available to users. If that doesn't work for you, contact us at support@aetherassembly.org to discuss a commercial licence.


Development

Prerequisites

  • Node.js >= 22.12.0
  • npm >= 10

Setup

git clone https://github.com/AetherAssembly/Before-Its-Gone.git
cd Before-Its-Gone
npm install

Commands

npm run dev              # Electron app with hot reload
npm run dev:web          # Web only (binds to LAN at 0.0.0.0:5173)
npm run build            # Full build
npm run test             # Unit tests (packages/core)
npm run test:coverage    # With branch coverage report (target: ≥ 80%)
npm run package:linux        # AppImage + .deb + .rpm (x86_64)
npm run package:linux:arm64  # AppImage + .deb + .rpm (arm64, cross-compiled)
npm run package:macos        # .dmg  (run on macOS)
npm run package:windows      # .exe  (run on Windows)
npm run docker:pwa:up    # Build and start the self-hosted PWA container
npm run docker:pwa:down  # Stop the container

Docs


Privacy

All data is stored locally in IndexedDB by default. Optional features make outbound requests to Open Food Facts (barcode lookup), TheMealDB (recipe suggestions), your chosen email provider (digest emails), and your own Supabase project (cloud sync). See PRIVACY_POLICY.md for full details.


License

AGPL-3.0

About

Track what's in your fridge, freezer, and pantry before it expires.

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors