# SekiPOS v1.0 🍫🥤 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 . # Run the container (Map port 5000 and persist the database/cache) docker run -d \ -p 5000:5000 \ -v $(pwd)/pos_database.db:/app/pos_database.db \ -v $(pwd)/static/cache:/app/static/cache \ --name sekipos-server \ sekipos ``` Or ose 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 ``` ## 🔌 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.* ## 📦 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. - `pos_database.db`: SQLite storage.