3 changed files with 199 additions and 0 deletions
@ -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 |
||||||
@ -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. |
||||||
Loading…
Reference in new issue