diff --git a/PROJECT_STATE.md b/PROJECT_STATE.md new file mode 100644 index 0000000..76e831a --- /dev/null +++ b/PROJECT_STATE.md @@ -0,0 +1,110 @@ +# 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 diff --git a/README.md b/README.md new file mode 100644 index 0000000..dbd4f75 --- /dev/null +++ b/README.md @@ -0,0 +1,88 @@ +# Monitor + +Monitor is the pricing and oracle dashboard for `monitor.outsidethebox.top`. + +It began as a rotating market display for fiat and crypto lines and now includes a live oracle subsystem for billing-oriented crypto quote generation. + +## Current scope + +Monitor currently provides: + +- Rotating fiat and crypto line updates +- 7-day sparkline display for supported assets +- CoinGecko market chart integration for tracked assets +- KlingEx pair support for selected ecosystem assets +- Oracle asset registry and live cache +- Oracle status panel in the frontend +- Live quote calculator using oracle quote data +- Oracle API endpoints for billing and future checkout integrations + +## Oracle milestone + +This release introduces the first production-style oracle layer for OutsideTheBox billing and payment work. + +Highlights: + +- Added `/api/oracle/assets` +- Added `/api/oracle/prices` +- Added `/api/oracle/price/:pairKey` +- Added `/api/oracle/quote` +- Added `/api/oracle/status` +- Added oracle price cache refresh timer +- Added CoinGecko primary pricing +- Added CoinPaprika fallback pricing +- Added billing-enabled asset handling +- Added quote priority ordering +- Added frontend Oracle Status panel +- Added frontend live quote calculator +- EGAZ remains visible but is currently excluded from billing quotes + +## Current tracked oracle assets + +- USDC on Arbitrum +- ETH on Ethereum +- ETHO +- ETI +- EGAZ (displayed, not billing-enabled for now) + +## Services and runtime layout + +Primary backend: + +- `backend/server.js` +- Served by `monitor-backend.service` + +Oracle refresh: + +- `oracle/fetch_prices.js` +- Refreshed by `otb-oracle-refresh.timer` + +Frontend: + +- Static files served by nginx from `/var/www/monitor` +- Source files maintained in `/home/def/monitor/frontend` + +## Deployment notes + +Backend is served locally on: + +- `127.0.0.1:4010` + +Oracle routes are mounted under: + +- `/api/oracle/*` + +The tax nginx vhost serves the frontend and proxies API requests to the backend. +The mintme webfront proxies public traffic to the tax host. + +## Important note + +If frontend changes are made under `/home/def/monitor/frontend`, they must also be copied into: + +- `/var/www/monitor` + +or the live site will continue serving the older frontend files. + +## Status + +This project is now at its first documented oracle milestone and is ready to be consumed by other internal systems such as OTB Billing. diff --git a/VERSION b/VERSION new file mode 100644 index 0000000..1474d00 --- /dev/null +++ b/VERSION @@ -0,0 +1 @@ +v0.2.0