# TFM aInventory (2026 Edition) A unified, offline-first Inventory Management System built as a Progressive Web App (PWA). Features include AI-powered label extraction (OCR), local barcode/QR scanning, and multi-user authentication with LDAP support. --- ## 🛠 Project Modes This project supports three distinct operational modes: ### 1. 🚀 Development Mode (Bare-Metal) Ideal for local development on macOS/Linux. * **Command:** `./start_server.sh` * **Details:** Runs FastAPI (backend) and Next.js (frontend) in development mode. Uses `local-ssl-proxy` for HTTPS. * **Backend:** http://localhost:8000 * **Frontend:** https://localhost:3003 ### 2. 🐳 Docker Mode (Recommended for Production) Isolated and portable container stack. * **Command:** `docker-compose up -d --build` * **Details:** Uses Caddy as a reverse proxy for HTTPS. Persistent data and logs are mapped to `./data` and `./logs`. * **Access:** https://localhost:3003 ### 3. 🐧 Standalone Linux Mode (Systemd) Native Linux installation (Alma/Debian/Ubuntu) without Docker dependencies. * **Installation:** `sudo ./install_service.sh` * **Execution:** `sudo systemctl start inventory` * **Details:** Compiles the frontend for production and manages the entire stack as a system service. * **Access:** https://:3003 --- ## 📦 Production Distribution To generate a clean production package without AI-agent metadata or development artifacts: 1. Run `./export_prod.sh` 2. A `.zip` archive will be created (e.g., `aInventory-PROD-v1.3.2.zip`). 3. This archive contains a specialized `README.txt` with deployment-only instructions. --- ## 🏗 Technical Overview * **Backend:** FastAPI (Python 3.12+) * **Frontend:** Next.js 15+ (React PWA) * **Database:** SQLite (SQLAlchemy) with Dexie.js (IndexedDB) for client-side sync. * **Proxy:** Caddy (Docker) or local-ssl-proxy (Standalone/Dev). * **AI Engine:** Google Gemini (Generative AI SDK). For more details, see [PROJECT_ARCHITECTURE.md](PROJECT_ARCHITECTURE.md). --- ## 📜 AI Operational Rules AI agents working on this project MUST follow the guidelines in [AI_RULES.md](AI_RULES.md).