Commit Graph

6 Commits (b8f590708da19a1883116799a71900300e8a4265)

Author SHA1 Message Date
isnowglobal-admin b8f590708d feat: Auth-guard custom tickers and config endpoints 2026-06-30 02:15:53 -04:00
isnowglobal-admin 3d8968e593 feat: Tanuki gamma levels (ORATS-backed), custom ticker CRUD, futures levels
- Add ORATS-backed Tanuki 5-level gamma profiles (C1, cTrans, HVL, pTrans, P1 + extended)
- Derive regime classification from GEX strike data (no Tanuki API required)
- /api/tanuki/:symbol falls back to ORATS when Tanuki not configured
- /api/tanuki multi-symbol endpoint for comparison view
- Dynamic symbol selector pulls all registered tickers from /api/symbols
- Custom ticker CRUD: POST/DELETE /api/symbols (persisted in PostgreSQL)
- SymbolSelector UI: add custom tickers with name/type/sector
- Futures Levels page with SPX weekly open/liquidation levels
- Wire Tanuki + Futures routes to App.tsx and sidebar navigation
- Add .gitignore entry for tanuki_research/
2026-06-29 22:53:35 -04:00
isnowglobal-admin a03ae5b62c Security hardening: rate limit whitelist for home subnet, relaxed dev limits, ORATS fixes
- Add .env to .gitignore (already present)
- Whitelist 192.168.x.x, 10.x.x.x, 127.x in rate limiter
- Relax rate limits: 500/15min general, 50/15min auth (was 100/10)
- ORATS API v2 integration: datav2 base URL, ?token= auth, flat response parsing
- GEX metrics: DTE ≤ 7 filter, 80-120% strike range, 500 OI threshold
- Save button: real-time singleton update, cache invalidation
- Server binds to 0.0.0.0 for network access
- Added Docker support, security middleware, auth routes
2026-06-13 14:21:27 -04:00
isnowglobal-admin cd07de09c6 ORATS integration: implemented client with v1 API, fallback to mock data
- Added ORATS API client with authentication (X-API-Key header)
- Implemented market data routes with ORATS → mock fallback
- Added ORATS status endpoint (/api/orats/status)
- Configured API key in .env (currently returning Forbidden - needs verification)
- Market data endpoints: /api/market/:symbol/summary, /gex, /expirations
- Screener endpoint uses ORATS when available, falls back to mock
2026-05-21 21:56:21 -04:00
isnowglobal-admin f112a14d60 Phase 1: Migrate from SQLite to PostgreSQL
- Provisioned PostgreSQL 16 droplet (2vCPU/4GB) on DO
- Converted Drizzle ORM from better-sqlite3 to node-postgres
- Updated schema to use pgTable, serial, timestamp
- Added initDb() startup function for table creation
- Configured connection pooling (max 20, idle timeout)
- Removed better-sqlite3 dependency
- Deployed and verified: auth create/read works on PostgreSQL
- DB: gammanexus@gammanexus-db (10.136.95.120 private network)
2026-05-21 19:50:37 -04:00
isnowglobal-admin 003a913186 GammaDesk initial commit - Options Gamma Analytics platform 2026-05-21 01:41:11 -04:00