feat: Add web application interface

Implements a modern web-based interface alongside the existing desktop app.

Features:
- Flask backend with REST API and WebSocket support
- Responsive web UI with TailwindCSS and Alpine.js
- Real-time updates via Socket.IO
- All desktop features available in browser
- Multi-user support
- Mobile-friendly responsive design
- Same async import queue functionality

Technology Stack:
- Backend: Flask + Flask-SocketIO + Flask-CORS
- Frontend: HTML5 + TailwindCSS + Alpine.js
- Real-time: WebSocket (Socket.IO)
- Icons: Font Awesome 6

New Files:
- src/stocktool/web/app.py - Flask application server
- src/stocktool/web/templates/index.html - Main web interface
- src/stocktool/web/static/js/app.js - Alpine.js application logic
- WEB_APP.md - Complete web app documentation

API Endpoints:
- GET /api/config - Application configuration
- GET /api/locations - List locations
- POST /api/part/search - Search for part
- POST /api/part/import - Queue part import
- POST /api/stock/add - Add stock
- POST /api/stock/update - Update stock
- POST /api/stock/check - Check stock level
- POST /api/part/locate - Locate part
- GET /api/pending - Get pending imports

WebSocket Events:
- import_complete - Part import finished
- import_retry - Import failed, retrying
- import_failed - Import failed completely
- barcode_parsed - Barcode successfully parsed

Benefits:
- Access from any device with a browser
- No desktop installation required
- Better mobile experience
- Multiple users can work simultaneously
- Easier deployment and updates
- Network-accessible within local network

Usage:
  uv run stock-tool-web
  # Open browser to http://localhost:5000

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-10-29 11:20:22 +07:00
parent 0fdc319774
commit 03b7a4b0c8
7 changed files with 1467 additions and 1 deletions

View File

@@ -2,6 +2,10 @@
A comprehensive barcode scanning application for InvenTree inventory management.
**Available in two versions:**
- **Desktop App** (tkinter) - Traditional GUI application
- **Web App** (Flask) - Modern browser-based interface **⭐ NEW!**
## Features
- **Stock Addition**: Add stock to inventory by scanning barcodes
@@ -11,6 +15,7 @@ A comprehensive barcode scanning application for InvenTree inventory management.
- **Async Part Import**: Non-blocking background import for unknown parts
- **Server Connection Monitoring**: Real-time connection status
- **Barcode Command Support**: Control the app via barcode commands
- **Web Interface**: Access from any device with a browser (NEW!)
## Requirements
@@ -29,10 +34,16 @@ cd stocktool
# Install with uv
uv sync
# Run the application
# Run the DESKTOP application
uv run stock-tool
# OR run the WEB application
uv run stock-tool-web
# Then open browser to http://localhost:5000
```
**👉 For Web App setup, see [WEB_APP.md](WEB_APP.md)**
### Manual Installation
```bash