t_4a71eab5: Strip admin UI from main index.html
- Replaced loadSettingsCache() with hardcoded seed data (categories, makes, keys, badges) - Removed tabActivity lifecycle hook (activity log moved to admin app) - Updated version to v3.0 + Admin Panel link in drawer footer - Updated PROJECT.md with v3 project structure (3 repos, admin server docs) - Removed backup files (.bak, .orig) - Main index.html reduced from 7645 to 4228 lines
This commit is contained in:
+31
-13
@@ -1,25 +1,26 @@
|
|||||||
# Canteen Asset Tracker — Project Structure
|
# Canteen Asset Tracker — Project Structure (v3)
|
||||||
|
|
||||||
Two projects, one API contract.
|
Three projects, shared DB.
|
||||||
|
|
||||||
## Repositories
|
## Repositories
|
||||||
|
|
||||||
```
|
```
|
||||||
~/projects/canteen-asset-tracker/ ← Web app (Python/FastAPI backend + SPA frontend)
|
~/projects/canteen-asset-tracker/ ← Main app (technician-facing: scan, check-in, assets, map, nav)
|
||||||
~/projects/canteen-asset-tracker-android/ ← Android app (Kotlin, Jetpack Compose)
|
~/projects/canteen-asset-tracker-android/ ← Android app (Kotlin, Jetpack Compose)
|
||||||
|
~/projects/canteen-admin-server/ ← Admin app (users, customers, settings, exports, activity)
|
||||||
```
|
```
|
||||||
|
|
||||||
## Web App (`canteen-asset-tracker`)
|
## Web App (`canteen-asset-tracker`)
|
||||||
|
|
||||||
```
|
```
|
||||||
canteen-asset-tracker/
|
canteen-asset-tracker/
|
||||||
├── server.py FastAPI backend — all 78 API routes + DB logic
|
├── server.py FastAPI backend — core technician API routes (assets, checkins, visits, auth, OCR, upload)
|
||||||
├── openapi.yaml **Shared API contract** — source of truth for both projects
|
├── openapi.yaml **Shared API contract** — source of truth for both projects
|
||||||
├── assets.db SQLite database (WAL mode, foreign keys on)
|
├── assets.db SQLite database (WAL mode, foreign keys on)
|
||||||
├── static/
|
├── static/
|
||||||
│ └── index.html Single-page frontend (276 KB, self-contained)
|
│ └── index.html Single-page frontend (technician UI: scan, assets, map, nav)
|
||||||
├── tests/ pytest test suite (319 tests)
|
├── tests/ pytest test suite
|
||||||
├── uploads/ User-uploaded photos/icons
|
├── uploads/ User-uploaded photos
|
||||||
├── cert.pem / key.pem Self-signed TLS certs
|
├── cert.pem / key.pem Self-signed TLS certs
|
||||||
├── requirements.txt Python deps (fastapi, uvicorn, pytesseract, pillow)
|
├── requirements.txt Python deps (fastapi, uvicorn, pytesseract, pillow)
|
||||||
├── start.sh Launch script (production)
|
├── start.sh Launch script (production)
|
||||||
@@ -28,10 +29,26 @@ canteen-asset-tracker/
|
|||||||
|
|
||||||
- **Port:** 8901 (HTTPS)
|
- **Port:** 8901 (HTTPS)
|
||||||
- **URL:** https://canteen.ourpad.casa (NPMPlus reverse proxy → backend :8901)
|
- **URL:** https://canteen.ourpad.casa (NPMPlus reverse proxy → backend :8901)
|
||||||
- **Admin URL:** https://admin.canteen.ourpad.casa (NPMPlus proxy ID 20, same backend :8901 — admin user login)
|
- **Frontend:** Single HTML file — no build step, no npm (~200KB, technician-focused).
|
||||||
- **Frontend:** Single HTML file — no build step, no npm. All JS/CSS/HTML in one file (~284KB).
|
- **Backend:** FastAPI with SQLite (WAL mode). Auth via Bearer tokens. OCR via Tesseract. EXIF GPS extraction via PIL.
|
||||||
- **Backend:** FastAPI with SQLite (WAL mode). Auth via Bearer tokens. OCR via Tesseract.
|
|
||||||
- **Tests:** pytest test suite + Playwright E2E browser tests.
|
## Admin App (`canteen-admin-server`)
|
||||||
|
|
||||||
|
```
|
||||||
|
canteen-admin-server/
|
||||||
|
├── admin_server.py FastAPI backend — admin-only API routes (users, customers, locations, rooms, settings, activity, stats, exports, geofences)
|
||||||
|
├── static/
|
||||||
|
│ └── index.html Single-page admin frontend (settings, user mgmt, activity, reports)
|
||||||
|
├── requirements.txt Python deps (fastapi, uvicorn)
|
||||||
|
└── run.sh Launch script (port 8900)
|
||||||
|
```
|
||||||
|
|
||||||
|
Admin functions separated into their own project:
|
||||||
|
- **Port:** 8900
|
||||||
|
- **URL:** https://admin.canteen.ourpad.casa (NPMPlus proxy → backend)
|
||||||
|
- **Shared DB:** Uses same `assets.db` via `CANTEEN_DB_PATH` env var
|
||||||
|
- **Auth:** Same login system as main app (admin role required for admin endpoints)
|
||||||
|
- **Frontend:** Standalone SPA with Dashboard, Settings, Users, Customers/Locations, Activity Log, CSV Exports, DB Reset
|
||||||
|
|
||||||
## Android App (`canteen-asset-tracker-android`)
|
## Android App (`canteen-asset-tracker-android`)
|
||||||
|
|
||||||
@@ -130,10 +147,11 @@ cd ~/projects/canteen-asset-tracker-android
|
|||||||
./gradlew test # run unit tests
|
./gradlew test # run unit tests
|
||||||
```
|
```
|
||||||
|
|
||||||
## Recent Changes (May 2026)
|
## Recent Changes (May 2026 — v3)
|
||||||
|
|
||||||
|
- **v3 admin separation** — Admin functionality extracted to separate project `~/projects/canteen-admin-server/` (port 8900). Main `server.py` reduced from 3005→1946 lines by removing admin routes. Main `index.html` reduced from 7645→4228 lines by removing admin UI panels. Admin app live at https://admin.canteen.ourpad.casa.
|
||||||
|
- **EXIF GPS extraction** — `/api/ocr` and `/api/upload/photo` now extract GPS coordinates from image EXIF data server-side (PIL getexif()) and return `{exif_gps: {lat, lng}}` alongside results. Raw file bytes preserved — no re-compression, no EXIF stripping.
|
||||||
- **OCR fix** — Now extracts only the last 5 digits from Connect ID (e.g., `05912-095330` → `95330`). Added `raw_match` field to response for debugging.
|
- **OCR fix** — Now extracts only the last 5 digits from Connect ID (e.g., `05912-095330` → `95330`). Added `raw_match` field to response for debugging.
|
||||||
- **Barcode scanner fix** — Switched from `decodeFromVideoElement` to `decodeFromVideoDevice` with 1D-only format hints (Code 128, Code 39, EAN/UPC, ITF, Codabar). Added `TRY_HARDER` hint and 50ms scan interval for fast, reliable detection.
|
- **Barcode scanner fix** — Switched from `decodeFromVideoElement` to `decodeFromVideoDevice` with 1D-only format hints (Code 128, Code 39, EAN/UPC, ITF, Codabar). Added `TRY_HARDER` hint and 50ms scan interval for fast, reliable detection.
|
||||||
- **Auto check-in** — New assets automatically check in with GPS on creation (all three entry modes: barcode, OCR, manual). Best-effort: silently skips if GPS unavailable.
|
- **Auto check-in** — New assets automatically check in with GPS on creation (all three entry modes: barcode, OCR, manual). Best-effort: silently skips if GPS unavailable.
|
||||||
- **Service stability** — Added NPMPlus reverse proxy. Service runs as background process on port 8901.
|
- **Service stability** — Added NPMPlus reverse proxy. Service runs as background process on port 8901.
|
||||||
- **Admin password** — Updated to `Brett85!@`.
|
|
||||||
|
|||||||
Binary file not shown.
|
After Width: | Height: | Size: 1.1 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 993 B |
Binary file not shown.
|
After Width: | Height: | Size: 189 B |
Binary file not shown.
|
After Width: | Height: | Size: 959 B |
Reference in New Issue
Block a user