me0nline b73d3b6250
Build and Push Fridger Container / Build & Push Fridger Image (push) Successful in 1m27s
feat(manage): implement interactive Scan/Search -> Add/Remove -> Packet/Amount workflow
2026-10-10 23:48:28 +02:00

🧊 Fridger

Smart Fridge Inventory & Grams Tracker with live Barcode Scanner and Dual View/Manage modes.

Docker Node.js SQLite


✨ Features

  • 👁️ Fridge View Mode ("What's in my fridge?"):

    • Visual layout organized by shelf/compartment (Top Shelf, Middle Shelf, Bottom Shelf, Crisper Drawer, Door Rack, Freezer).
    • Clear stock level and remaining grams/ml progress indicators with percentage fullness.
    • Expiration countdown badges (Fresh, Expiring Soon, Expired).
    • Quick consume buttons (-50g, -100g, -1 item, or custom slider).
  • ⚙️ Manage Fridge Mode:

    • Full inventory CRUD management.
    • Dynamic Grams/Weight Tracking: When an item has weight (e.g. 250g cheese pack, 1kg flour, 500ml cream), easily slide or click quick-adjustment chips (-10g, -25g, -50g, -100g, Half, Empty) to log partial usage after cooking.
    • Opened vs. unopened item tracking with open date.
  • 📸 Live Barcode Scanner & Search:

    • Camera-based barcode scanner (html5-qrcode) directly in your browser (mobile & desktop).
    • Open Food Facts API integration for instant autofill: product title, brand, package net weight (grams/ml/units), category, and image.
    • No nutrition/macro clutter — purely focused on what is in your fridge and how much is left!
  • 🚀 Self-Contained Container & CI/CD:

    • Lightweight Alpine container (node:22-alpine) with built-in SQLite engine.
    • Automated build & push pipeline via Gitea Actions to gitea.eibl.tech/me0nline/fridger:latest.

🐳 Quick Start with Docker

Using Docker Run

docker run -d \
  --name fridger \
  -p 3000:3000 \
  -v fridger-data:/data \
  gitea.eibl.tech/me0nline/fridger:latest

Using Docker Compose

services:
  fridger:
    image: gitea.eibl.tech/me0nline/fridger:latest
    container_name: fridger
    restart: unless-stopped
    ports:
      - "3000:3000"
    volumes:
      - fridger-data:/data

volumes:
  fridger-data:
    name: fridger-data

Access the web interface at http://localhost:3000.


🛠️ Local Development

# 1. Install dependencies
npm install

# 2. Run backend test suite
npm test

# 3. Start development server
npm start

📡 REST API Summary

Method Endpoint Description
GET /api/items List items (supports search, category, location, status)
GET /api/items/:id Get single item details
POST /api/items Add item
PUT /api/items/:id Update item details
PATCH /api/items/:id/quantity Adjust grams/count ({ delta: -50 } or { newQuantity: 150 })
DELETE /api/items/:id Remove item
GET /api/barcode/:code Barcode lookup (local cache + Open Food Facts)
GET /api/stats Summary stats (total, fresh, expiring soon, opened, low)
GET /api/meta Predefined categories, shelf locations, and units
GET /health Healthcheck status

📜 License

MIT

S
Description
A docker web-app that is built to scan and store what you have in your fridge
Readme
261 KiB
Languages
JavaScript 65.7%
HTML 31.9%
CSS 1.6%
Dockerfile 0.8%