# TallyFlow Architecture **Diagram:** [[TallyFlow-Architecture-Diagram.html]] ## Overview TallyFlow is built around **Core** as the central hub that owns the database, plus field and site modules. **Scout** is an Edge companion handheld, not a sixth Core-connected peer equal to Assets. ### 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 - **Auth Service** — handles login and SSO support - Owns MongoDB (assets, tags, photos, zones, events) - Single API integration point for Core-connected components - Handles configuration, reporting, and orchestration ### 2. Assets (Mobile) - Flutter native mobile application (`tallyflow_mobile`) - Lightweight inventory, geiger-style seek & find, enrollment, zone moves, **scan-and-print** - Communicates with **Core** via REST/WebSocket API - **Not the same product as Scout** ### 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** - Parent container EPC namespace (SDG RAIN assignment 8000); multi-unit retail companion AI 21; register preflight against duplicate identities ### 4. Capture (PhotoTag) - Native mobile applications (iOS/Android) + web - Associates photos with barcodes, work orders, and metadata - Focused on quality control and visual documentation - Public share collections on web (controlled external access) - Sends data to Core via API where deployed ### 5. Edge - Rust-based site edge service (repo `tallyflow-iot`; **product name TallyFlow Edge**) - Fixed RFID readers (Impinj, Zebra, ATID ATF862 / Invengo XC-RF861 where supported) - Remote reader REST API for handhelds - Unified multi-reader feed → CSV / REST / AMQP → Core (optional) - Keyboard wedge, ops UI, MCP read tools - **Can integrate with ERP systems** without requiring Core ### 6. Scout (Edge companion handheld) - Flutter app **TallyFlow Scout** (repo `tallyflow-assets-iot`) - **Collect / Verify / Locate** - Submits to **Edge** remote reader API (or CSV offline); Locate works offline - **Does not replace Assets** and does not talk to Core as the asset app **MongoDB** is not a standalone component — it is fully owned and managed inside Core. ## Data Flows - **Assets, Print, Capture** → Core: Solid lines (primary Core flows) - **Scout** → **Edge**: Solid (remote reader / site feed) - **Edge → Core**: Dashed line (optional, event-driven AMQP/etc.) - **Print** additionally supports asset registration back into Core - Core Web UI communicates with Core Backend via the same API used by other Core clients Core-connected modules interact through Core’s REST API layer. Edge/Scout may operate standalone for site RFID programs.