Skip to content

BEKO2210/Prepper_Log

PrepTrack Logo

PrepTrack

Your supplies. Always in sight.
Dein Vorrat. Immer im Blick.

Live Demo

CI/CD Version License Stars Issues Forks

Features • Languages • Screenshots • Preview Video • Tech Stack • Getting Started • Contributing • License

Deutsche Version weiter unten


What is PrepTrack?

PrepTrack is a free, ad-free, offline-first Progressive Web App for managing your emergency supplies, pantry, and stockpile. Scan barcodes, track expiry dates, receive local notifications — all data stays on your device. No cloud. No accounts. No tracking.

Built for preppers, self-sufficiency enthusiasts, and anyone who wants to keep their supplies organized.


🌍 Languages

PrepTrack supports 6 languages with full translations for every screen, notification, and message:

🇩🇪

Deutsch
Default

🇬🇧

English
 

🇵🇹

Portugues
 

🇸🇦

العربية
RTL

🇮🇹

Italiano
 

🇫🇷

Francais
 
  • Auto-detection — the app detects your browser language on first visit
  • Language switcher — change anytime in Settings with country flags
  • Full RTL support — Arabic layout mirrors correctly (logical CSS properties)
  • Persistent — your choice is saved to localStorage

✨ Features

Feature Description
Barcode Scanner Scan barcodes with your camera. Auto-lookup via Open Food Facts API with automatic product image download. Duplicate detection.
Product Management Name, category, location, quantity, unit, expiry date (day/month/year precision), photo, notes.
Expiry Tracking Color-coded warnings: Red (expired/critical), Orange (warning), Yellow (soon), Green (OK).
Dashboard StatRing visualization, expiry distribution bar, urgent products, category overview, low stock counter.
Local Notifications Push reminders 30, 14, 7, 3, and 1 day before expiry. No external servers.
Storage Locations Create and manage custom locations. 8 defaults included.
Consumption Log Mark products as consumed, expired, or damaged. View statistics.
Data Export JSON backup (complete) and CSV export (Excel/Google Sheets compatible with proper encoding).
Data Import Restore from backup with automatic duplicate detection.
Offline-First Fully functional offline. All data in IndexedDB. Service Worker caches assets, fonts, and API responses.
Installable PWA Install as native app on Android, iOS, and Desktop.
Dark & Light Mode Dark theme by default. Toggle to light theme anytime. Accessible color contrast in both modes.
6 Languages German, English, Portuguese, Arabic (RTL), Italian, and French. Auto-detection + manual switcher.

📱 Screenshots

🌙 Dark Mode

Dashboard Dark   Supplies Dark   Product Detail Dark

Add Product Dark   Scanner Dark   Statistics Dark

☀️ Light Mode

Dashboard Light   Supplies Light   Product Detail Light

Add Product Light   Scanner Light   Statistics Light

🌐 Language Switcher

Settings English Light   Settings English Dark


🎬 Preview Video

Watch Preview Video


🛠 Tech Stack

Category Technology Purpose
Framework React 18 + TypeScript Interactive SPA with type safety
Bundler Vite 6 Fast dev server, optimized builds
Styling Tailwind CSS 3 Utility-first, dark mode, RTL-ready (logical properties)
State Zustand Lightweight, no boilerplate
Database Dexie.js (IndexedDB) Offline-first, reactive queries
PWA vite-plugin-pwa (Workbox) Auto-update, runtime caching
Scanner @zxing/browser Barcode/EAN recognition via camera
i18n react-i18next 6 languages (DE/EN/PT/AR/IT/FR), auto-detection
Icons Lucide React Consistent, lightweight SVG icons
Animation Framer Motion Smooth UI transitions
API Open Food Facts Free product database with images
CI/CD GitHub Actions Auto-deploy to GitHub Pages
Testing Vitest Unit tests (59 tests)

🚀 Getting Started

Prerequisites

Installation

# Clone the repository
git clone https://github.com/BEKO2210/Prepper_Log.git
cd Prepper_Log

# Install dependencies
npm install

# Start development server
npm run dev

The app is available at http://localhost:5173.

Build & Test

npm run build      # Production build (tsc + vite)
npm run preview    # Preview production build locally
npm run test       # Run all tests (Vitest)
npx tsc --noEmit   # Type check without building

Deploy (GitHub Pages)

  1. Push to your GitHub repository
  2. Go to Settings > Pages and set source to GitHub Actions
  3. Every push to main triggers automatic deployment

📲 PWA Installation

Android (Chrome)

  1. Open app in browser
  2. Tap "Install" banner or Menu > "Install app"

iOS (Safari)

  1. Open app in browser
  2. Tap Share button
  3. Select "Add to Home Screen"

Desktop (Chrome/Edge)

  1. Open app in browser
  2. Click install icon in the address bar

🔒 Privacy

PrepTrack takes your privacy seriously:

  • All data stored locally on your device (IndexedDB). No cloud. No servers. No accounts.
  • No tracking. No analytics. No cookies. No ads. No data shared with third parties.
  • External service: Only the Open Food Facts API is contacted during barcode scans (open-source, non-profit). Only the barcode is transmitted.
  • Notifications are generated locally. No push tokens sent to external servers.
  • Full control: Export/import your data anytime. Delete via browser settings.

📂 Project Structure

src/
├── components/           UI Components
│   ├── Dashboard.tsx         Main overview with stats
│   ├── ProductList.tsx       Product list with filters
│   ├── ProductForm.tsx       Add/edit form with draft persistence
│   ├── BarcodeScanner.tsx    Camera barcode scanner
│   ├── Settings.tsx          Settings, language, export/import, legal
│   ├── Statistics.tsx        Consumption statistics
│   ├── Navigation.tsx        Bottom navigation bar
│   ├── StatRing.tsx          SVG ring chart component
│   ├── OfflineBanner.tsx     Offline indicator
│   ├── PWAInstallPrompt.tsx  PWA install prompt
│   └── ErrorBoundary.tsx     Error fallback UI
├── hooks/                Custom React Hooks
│   ├── useDarkMode.ts        Dark/light mode toggle
│   ├── useOnlineStatus.ts    Online/offline detection
│   └── usePWAInstall.ts      PWA installation
├── i18n/                 Internationalization
│   ├── i18n.ts               i18next configuration
│   └── locales/              Translation files (de, en, pt, ar, it, fr)
├── lib/                  Business Logic
│   ├── db.ts                 Dexie.js database, CRUD, export/import
│   ├── utils.ts              Expiry calculation, formatting, barcode lookup
│   ├── utils.test.ts         Unit tests (59 tests)
│   └── notifications.ts      Local notifications
├── store/                State Management
│   └── useAppStore.ts        Zustand store (navigation, filters, state)
├── types/                TypeScript Types
│   └── index.ts              Product, Category, Units, etc.
├── App.tsx               Main component with routing
├── main.tsx              Entry point
└── sw-handler.ts         Service Worker update handler

🤝 Contributing

Contributions are welcome! Please read the Contributing Guide before submitting a pull request.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

See open issues for planned features and known bugs.


🛡 Security

If you discover a security vulnerability, please report it responsibly. See SECURITY.md for details.


📊 Star History

Star History Chart

❤️ Support

PrepTrack is free and ad-free. If you like the app, you can support development:

Donate with PayPal

Or simply give the project a ⭐ on GitHub — it helps a lot!


👨‍💻 Development

This project was developed with the assistance of Claude Code (Anthropic, Model: claude-opus-4-6).

That does not mean blind copy-paste or generated spaghetti code. Every function was controlled through targeted instructions, every bug was analyzed and systematically fixed, every feature was implemented and tested step by step. The human sets the direction, the AI executes.

See CHANGELOG.md for the complete change history.


📄 License

Copyright 2026 Belkis Aslani

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

See LICENSE for the full license text.



🇩🇪 Deutsch

Dein Vorrat. Immer im Blick.


Was ist PrepTrack?

PrepTrack ist eine kostenlose, werbefreie, Offline-first Progressive Web App zur Verwaltung von Vorräten. Produkte scannen, Mindesthaltbarkeitsdaten tracken, Benachrichtigungen erhalten — alle Daten bleiben auf deinem Gerät. Keine Cloud. Keine Accounts. Kein Tracking.

Entwickelt für Prepper, Selbstversorger und alle, die ihren Vorrat im Griff haben wollen.


🌍 Sprachen

PrepTrack unterstützt 6 Sprachen mit vollständigen Übersetzungen für jeden Bildschirm, jede Benachrichtigung und Meldung:

🇩🇪

Deutsch
Standard

🇬🇧

English
 

🇵🇹

Portugues
 

🇸🇦

العربية
RTL

🇮🇹

Italiano
 

🇫🇷

Francais
 
  • Automatische Erkennung — die App erkennt deine Browsersprache beim ersten Besuch
  • Sprachumschalter — jederzeit in den Einstellungen mit Länderflaggen umschaltbar
  • Volle RTL-Unterstützung — arabisches Layout wird korrekt gespiegelt (logische CSS-Properties)
  • Persistent — deine Auswahl wird in localStorage gespeichert

✨ Funktionen

Funktion Beschreibung
Barcode-Scanner Barcode scannen mit der Kamera. Automatische Erkennung via Open Food Facts API mit automatischem Produktbild-Download. Duplikat-Warnung.
Produktverwaltung Name, Kategorie, Lagerort, Menge, Einheit, MHD (Tag/Monat/Jahr), Foto, Notizen.
MHD-Tracking Farbcodierte Warnung: Rot (abgelaufen/kritisch), Orange (Warnung), Gelb (bald), Grün (OK).
Dashboard StatRing-Visualisierung, MHD-Verteilung, dringende Produkte, Kategorien, Unterbestand.
Benachrichtigungen Lokale Push-Erinnerungen 30, 14, 7, 3 und 1 Tag vor Ablauf. Keine externen Server.
Lagerorte Eigene Lagerorte anlegen und verwalten. 8 Standard-Lagerorte vorinstalliert.
Verbrauchslog Produkte als verbraucht, abgelaufen oder beschädigt markieren. Statistiken einsehen.
Daten-Export JSON-Backup (vollständig) und CSV-Export (Excel/Google Sheets kompatibel).
Daten-Import Backup wiederherstellen mit automatischer Duplikat-Erkennung.
Offline-First Vollständig offline nutzbar. Alle Daten in IndexedDB. Service Worker cached alles.
Installierbar Als PWA auf Android, iOS und Desktop installierbar. Fühlt sich an wie native App.
Dark & Light Mode Dunkles Design als Standard. Jederzeit umschaltbar. Barrierefreier Kontrast in beiden Modi.
6 Sprachen Deutsch, Englisch, Portugiesisch, Arabisch (RTL), Italienisch und Französisch. Auto-Erkennung + manueller Umschalter.

📱 Screenshots

🌙 Dunkler Modus

Dashboard Dunkel   Vorräte Dunkel   Produktdetail Dunkel

Produkt hinzufügen Dunkel   Scanner Dunkel   Statistik Dunkel

☀️ Heller Modus

Dashboard Hell   Vorräte Hell   Produktdetail Hell

Produkt hinzufügen Hell   Scanner Hell   Statistik Hell

🌐 Sprachumschalter

Einstellungen Englisch Hell   Einstellungen Englisch Dunkel


🎬 Vorschau-Video

Vorschau-Video ansehen


🚀 Installation & Start

# Repository klonen
git clone https://github.com/BEKO2210/Prepper_Log.git
cd Prepper_Log

# Dependencies installieren
npm install

# Entwicklungsserver starten
npm run dev

Die App ist dann unter http://localhost:5173 verfügbar.

Build & Tests

npm run build      # Production Build (tsc + vite)
npm run preview    # Build lokal testen
npm run test       # Tests ausführen (Vitest, 59 Tests)
npx tsc --noEmit   # Type-Check ohne Build

Deploy (GitHub Pages)

  1. Repository auf GitHub pushen
  2. Unter Settings > Pages die Source auf GitHub Actions setzen
  3. Bei jedem Push auf main wird automatisch deployed

📲 PWA Installation

Android (Chrome)

  1. App im Browser öffnen
  2. Banner "Installieren" antippen oder Menü > "App installieren"

iOS (Safari)

  1. App im Browser öffnen
  2. Teilen-Button antippen
  3. "Zum Home-Bildschirm" wählen

Desktop (Chrome/Edge)

  1. App im Browser öffnen
  2. Installieren-Icon in der Adressleiste klicken

🔒 Datenschutz

  • Alle Daten lokal auf deinem Gerät (IndexedDB). Keine Cloud. Keine Server. Keine Accounts.
  • Kein Tracking. Keine Analytics. Keine Cookies. Keine Werbung.
  • Externer Dienst: Nur die Open Food Facts API wird beim Barcode-Scan kontaktiert (Open Source, gemeinnützig). Es wird nur der Barcode übermittelt.
  • Benachrichtigungen werden lokal erzeugt. Keine Push-Tokens an externe Server.
  • Volle Kontrolle: Daten jederzeit exportieren/importieren. Löschen über Browser-Einstellungen.

❤️ Unterstützen

PrepTrack ist kostenlos und werbefrei. Wenn dir die App gefällt, kannst du die Entwicklung mit einer kleinen Spende unterstützen:

Mit PayPal spenden

Oder gib dem Projekt einfach einen ⭐ auf GitHub — das hilft enorm!


👨‍💻 Entwicklung

Dieses Projekt wurde mit Unterstützung von Claude Code (Anthropic, Modell: claude-opus-4-6) entwickelt.

Das bedeutet nicht blindes Copy-Paste oder generierter Spaghetti-Code. Jede Funktion wurde durch gezielte Anweisungen gesteuert, jeder Bug wurde analysiert und systematisch behoben, jedes Feature wurde Schritt für Schritt implementiert und getestet. Der Mensch gibt die Richtung vor, die KI setzt um.

Siehe CHANGELOG.md für die vollständige Änderungshistorie.


📄 Lizenz

Copyright 2026 Belkis Aslani

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Siehe LICENSE für den vollständigen Lizenztext.


Made with ❤️ in Germany

About

PrepTrack is a free, ad-free, offline-first Progressive Web App for managing emergency supplies, pantry stock, and prepper inventories. Scan barcodes, track expiry dates, get local notifications, and keep all data securely stored on your device – no cloud, no accounts, no tracking.

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors