89 lines
2.5 KiB
Markdown
89 lines
2.5 KiB
Markdown
# SekiPOS v1.2 🍫🥤
|
|
|
|
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://<SERVER_IP>:5000/scan"
|
|
```
|
|
|
|
### 🪟 Windows
|
|
```powershell
|
|
.\ScannerGO-windows.exe -port "COM3" -baud 115200 -url "http://<SERVER_IP>: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 fields after scanning of new product
|
|
|
|
## 🥼 Food Datasets
|
|
- https://www.ifpsglobal.com/plu-codes-search
|
|
- https://world.openfoodfacts.org |