# PROJECT_STATE.md Project: monitor Version: v0.2.0 Updated: 2026-03-15 04:49:42 ## Project purpose Monitor is the OutsideTheBox pricing dashboard and oracle service. It serves two roles: 1. Human-facing market dashboard for fiat and crypto lines 2. Machine-facing oracle API for quote generation and billing integrations ## Current live architecture Price providers -> oracle fetch/cache -> monitor backend -> nginx on tax -> webfront on mintme -> monitor.outsidethebox.top ## Live backend components ### Monitor backend - File: `/home/def/monitor/backend/server.js` - Service: `monitor-backend.service` - Bind: `127.0.0.1:4010` ### Oracle refresh - File: `/home/def/monitor/oracle/fetch_prices.js` - Service: `otb-oracle-refresh.service` - Timer: `otb-oracle-refresh.timer` ### Frontend source - Directory: `/home/def/monitor/frontend` ### Live frontend served by nginx - Directory: `/var/www/monitor` ## Oracle milestone summary This version marks the first major oracle release. ### Added - Oracle asset registry - Oracle cache file - Oracle pricing engine - Oracle route layer - Oracle quote generation - Frontend oracle status panel - Frontend quote calculator - CoinGecko primary source support - CoinPaprika fallback support - Billing-enabled asset selection - Oracle integration into main monitor backend ### Current oracle endpoints - `/api/oracle/health` - `/api/oracle/assets` - `/api/oracle/prices` - `/api/oracle/price/:pairKey` - `/api/oracle/quote` - `/api/oracle/status` ## Asset status ### Billing-enabled - USDC_ARB - ETH_ETH - ETHO_ETHO - ETI_ETICA ### Present but not billing-enabled - EGAZ_ETICA ## Source behavior ### Primary - CoinGecko ### Fallback - CoinPaprika ### Notes - ETHO may resolve from CoinPaprika fallback depending on source response - EGAZ is intentionally excluded from billing until a trustworthy pricing source is finalized ## Operational notes - Oracle API is mounted inside the main monitor backend under `/api/oracle` - Standalone oracle API service is no longer required - Refresh timer keeps the oracle cache fresh independently of UI polling - Frontend must be redeployed to `/var/www/monitor` after frontend source changes ## Known constraints - Quote output currently supports CAD quote generation - EGAZ billing remains disabled - Frontend deployment is file-copy based rather than build-pipeline based - Monitor has no packaged release tooling yet ## Recommended next work - Improve oracle source resilience and quorum logic - Add stronger deployment/update workflow for frontend sync - Extend quote usage into OTB Billing invoice/payment flows - Add cleaner release packaging / backup workflow for monitor