# SekiPOS v1.1 🍫🥤 A reactive POS inventory system for software engineers with a snack addiction. Features real-time UI updates, automatic product discovery via Open Food Facts, and local image caching. ## 🚀 Features - **Real-time UI:** Instant updates via Socket.IO. - **Smart Fetch:** Pulls product names/images from Open Food Facts if not found locally. - **Local Cache:** Saves images locally to `static/cache` to avoid IP bans. - **CLP Ready:** Chilean Peso formatting ($1.234) for local commerce. - **Secure:** Hashed password authentication via Flask-Login. ## 🐳 Docker Deployment (Server) Build and run the central inventory server: ```bash # Build the image docker build -t sekipos:latest . # Run the container (Map port 5000 and persist the database/cache) docker run -d \ -p 5000:5000 \ -v $(pwd)/sekipos/db:/app/db \ -v $(pwd)/sekipos/static/cache:/app/static/cache \ --name sekipos-server \ sekipos:latest ``` Or use this stack: ```yml name: sekipos services: sekipos: ports: - 5000:5000 volumes: - YOUR_PATH/sekipos/db:/app/db - YOUR_PATH/sekipos/static/cache:/app/static/cache container_name: sekipos-server image: sekipos:latest ``` ## 🔌 Hardware Scanner Bridge (`ScannerGO`) The server needs a bridge to talk to your physical COM port. Use the `ScannerGO` binary on the machine where the scanner is plugged in. ### 🐧 Linux ```bash chmod +x ScannerGO-linux ./ScannerGO-linux -port "/dev/ttyACM0" -baud 115200 -url "http://:5000/scan" ``` ### 🪟 Windows ```powershell .\ScannerGO-windows.exe -port "COM3" -baud 115200 -url "http://:5000/scan" ``` *Note: Ensure the `-url` points to your Docker container's IP address.* All this program does its send the COM data from the scanner gun to: ``` https://scanner.sekidesu.xyz/scan?content=BAR-CODE ``` ## 📦 Local Installation (Development) If you're too afraid of Docker: ```bash pip install -r requirements.txt python app.py ``` ## 🔐 Credentials - **Username:** `admin` - **Password:** `seki123` (Change this in `app.py` or you'll be hacked by a smart-fridge) ## 📁 Structure - `app.py`: The inventory/web server. - `static/cache/`: Local repository for product images. - `db/pos_database.db`: SQLite storage. ## 📋 TODOs? - Better admin registration(?) - Cache user edited pictures - clear edited filed after scanning of new product ## 🥼 Food Datasets - https://www.ifpsglobal.com/plu-codes-search - https://world.openfoodfacts.org