# CLAUDE.md This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. ## Project Overview Pantry is a simple web app for tracking kitchen pantry items. It's a single-page application with no build step, consisting of just two files: - `index.html` - Frontend (HTML/CSS/JS all in one file) - `api.php` - Backend API (JSON file-based storage) ## Architecture **Frontend (`index.html`)**: - Vanilla JavaScript, no frameworks - Uses QRCode.js from CDN for QR code generation - Custom CSS with CSS variables for theming (earthy color palette: cream, terracotta, forest green) - Container types defined in `containerTypes` object (around line 754) - must be kept in sync with backend - All API calls go through the `apiCall()` function which POSTs to `api.php` **Backend (`api.php`)**: - JSON file-based storage in `data/` directory - Endpoints: `get`, `add`, `update`, `delete`, `setPin`, `verifyPin` - Default inventory defined in `$defaultInventory` array (lines 31-64) - Container types should match frontend when modified **Data Storage**: - `data/inventory.json` - Inventory items - `data/pin.txt` - 4-digit PIN for edit mode (plain text, view-only protection) ## Development This is a no-build project. To test locally: ```bash php -S localhost:8000 ``` Then open `http://localhost:8000` in a browser. ## Key Implementation Details - PIN system is view-only protection (anyone can view, PIN required to edit) - PIN stored in plain text - adequate for household use only - Items have: `id`, `name`, `container` (type), `outOfStock` (boolean) - Frontend sorts items: in-stock first, then alphabetically - 8 container types with color-coded dots in UI ## Deployment Designed for YunoHost "My Webapp" deployment. Upload `index.html` and `api.php` to the `www/` folder. The `data/` directory is created automatically and must be writable by the web server.