How alexmattson/roost works
Roost is a browser-only analytics and reconciliation app for Sandpiper inventory and Quail point-of-sale. The user connects the services, loads their records, and gets a Home briefing, date-scoped analysis, inventory/POS lookup, and a full-range Sync view; findings can lead to edits or recording sales in Sandpiper. The graph follows the documented workflow and sampled app/data-provider wiring. Several page and backend implementations were not sampled, so their internal call links are intentionally limited.
Main entry points: data.jsx Shared data state · App.jsx App routing · Analyze.jsx Analyze views · webbackend.js Web backend adapter
Components 24
App experience
- App routing
src/App.jsx - Connection gate
src/pages/LoginGate.jsx - Home briefing
src/pages/Home.jsx - Analyze views
src/pages/Analyze.jsx - Inventory records
src/pages/Inventory.jsx - POS records
src/pages/PosSales.jsx - Sync findings
src/pages/Sync.jsx - Stock management
src/pages/AddStock.jsx - Print tags
src/pages/PrintTags.jsx - Channel management
src/pages/ManageChannels.jsx
Data preparation
- Shared data state
src/store/data.jsx - Mode and range state
src/store/nav.jsx - Normalize records
src/lib/analytics.js - Normalize POS sales
src/lib/quail.js - Channel attribution
src/lib/channel.js - Sales ledger
src/lib/ledger.js - Resolve venues
src/lib/resolve.js
Analysis and review
- Reconciliation engine
src/lib/reconcile.js - Analytics engine
src/lib/analytics.js
External systems
- Web backend adapter
src/lib/webbackend.js - Sandpiper
- Quail POS
- Browser storage
Other components
- Booth owner
Connections 32
- Booth owner → Connection gate: connects
- Connection gate → Shared data state: sets credentials
- Booth owner → App routing: uses
- App routing → Shared data state: loads and refreshes
- App routing → Home briefing: routes to
- App routing → Analyze views: routes to
- App routing → Inventory records: routes to
- App routing → POS records: routes to
- App routing → Sync findings: routes to
- Shared data state → Web backend adapter: requests data
- Web backend adapter → Sandpiper: fetches and updates
- Web backend adapter → Quail POS: fetches sales
- Web backend adapter → Browser storage: caches records
- Shared data state → Normalize records: normalizes inventory
- Shared data state → Normalize POS sales: normalizes sales
- Shared data state → Channel attribution: builds attribution
- Shared data state → Resolve venues: resolves venue context
- Shared data state → Sales ledger: builds ledger
- Shared data state → Reconciliation engine: computes findings
- Home briefing → Shared data state: reads briefing data
- Analyze views → Analytics engine: computes metrics
- Analyze views → Sales ledger: uses sales ledger
- Analyze views → Normalize POS sales: uses register times
- Inventory records → Shared data state: reads and edits records
- POS records → Shared data state: reads sales
- Sync findings → Shared data state: reads findings
- Sync findings → Reconciliation engine: reviews discrepancies
- Stock management → Shared data state: adds stock
- Print tags → Shared data state: requests barcodes
- Channel management → Shared data state: manages channels
- App routing → Mode and range state: selects views
- Mode and range state → Analyze views: sets range and tab