- Changed Core Backend to 'Go (REST API)' (removed gRPC, kept REST) - Removed BLE from IoT (not supported yet) - Fixed text overflow in boxes by adjusting layout and labels - Updated description to reflect REST-only API
1.9 KiB
1.9 KiB
TallyFlow Architecture
Diagram: TallyFlow-Architecture-Diagram.html
Overview (5 Components)
TallyFlow is built around exactly five primary components, with Core as the central hub that owns the database.
1. Core (Central)
- Core Backend (Go) positioned in the center — provides the REST API
- Core Web UI (Vue.js) on the left — consumes the Core API
- Owns MongoDB (assets, tags, photos, zones, events)
- Single API integration point for all other components
- Handles configuration, reporting, and orchestration
2. Assets (Mobile)
- Flutter native mobile application
- Lightweight inventory, geiger-style seek & find, enrollment, zone moves
- Communicates with Core via REST/WebSocket API
3. Print
- Flutter + Rust implementation
- Zebra ZPL-compatible label printing and RFID encoding
- Includes Print UI for configuration
- Can also be driven directly via the Print API
- Can register assets directly with Core
4. Capture (PhotoTag)
- Native mobile application (not Go/Vue)
- Associates photos with barcodes, work orders, and metadata
- Focused on quality control and visual documentation
- Sends data to Core via API
5. IoT
- Rust-based service
- Integrates fixed RFID readers (Impinj, Zebra) and environmental sensors
- Pushes tag events and sensor data to Core (optional / dashed connection)
- Can integrate with ERP systems
MongoDB is not a standalone component — it is fully owned and managed inside Core.
Data Flows
- Assets, Print, Capture → Core: Solid lines (primary flows)
- IoT → Core: Dashed line (optional, event-driven)
- Print additionally supports asset registration back into Core
- Core Web UI communicates with Core Backend via the same API used by other components
This structure was verified by reviewing the actual source repositories in ~/src/. All external modules interact exclusively through Core’s REST API layer.