Commit Graph

17 Commits (14d079bb359602502e475fe2157d6d4c9f79fca2)

Author SHA1 Message Date
isnowglobal-admin 14d079bb35 Redis-backed session store + session secret hardened + cookie sameSite=lax + 7d maxAge 2026-06-30 11:40:20 -04:00
isnowglobal-admin f35924eb54 fix: Use raw pool client for DDL to avoid Drizzle prepared statement issue with CREATE IF NOT EXISTS 2026-06-30 10:11:40 -04:00
isnowglobal-admin b8f590708d feat: Auth-guard custom tickers and config endpoints 2026-06-30 02:15:53 -04:00
isnowglobal-admin 2949da2937 feat: Brevo SMTP email config, fire-and-forget verification emails
- Configure Brevo SMTP (smtp-relay.brevo.com:587) for production emails
- Make sendVerificationEmail fire-and-forget so SMTP failures don't block registration
- Update .env with real SMTP credentials and APP_URL=https://gammanexus.io
- Fix resend-verification to also use non-blocking email send
2026-06-30 01:45:20 -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 0f7722e513 release: alpha release candidate 2026-06-22 21:40:10 -04:00
isnowglobal-admin 45340d8f85 Fix: Remove import.meta from static.ts for CJS compatibility
- Use process.cwd() first, then __dirname fallback
- No more import.meta.url in CJS bundle
2026-06-13 19:30:55 -04:00
isnowglobal-admin 1877bb7aa7 Fix: PostgreSQL setup on production droplet
- Revert schema to pgTable/serial (matches PostgreSQL)
- db.ts switched back to node-postgres driver
- PostgreSQL 16 installed and running on 142.93.245.235
- Database: gammanexus, User: gn_admin
- Same schema across local and production
2026-06-13 19:28:48 -04:00
isnowglobal-admin 8763a426e0 Fix: Switch schema from PostgreSQL to SQLite for user registration
- Use sqliteTable/integer instead of pgTable/serial
- Fix Drizzle ORM compatibility with better-sqlite3 driver
- This was causing silent failures on user registration
2026-06-13 19:24:34 -04:00
isnowglobal-admin f019e4114f Fix production deployment: SQLite DB, externals, static path
- Switch DB from PostgreSQL to SQLite (data.db) for now
- Add better-sqlite3, pg, drizzle-orm/* to build externals
- Fix serveStatic path resolution with cwd fallback
- Fix import.meta issue in static.ts for CJS bundle
- Rate limit whitelist for home subnet (192.168.x.x)
- Relax dev rate limits: 500/15min general, 50/15min auth
2026-06-13 18:54:11 -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 db0f693a22 Docs: meeting notes and implementation plan from team call 2026-05-21 19:33:22 -04:00
isnowglobal-admin 87da0d19b3 Fix auth: hash routing bugs, proper error parsing from JSON responses 2026-05-21 16:24:39 -04:00
isnowglobal-admin 5d0b8736fc Redesign: Nexus AI theme - deep black background, neon green accent, modern typography 2026-05-21 03:48:41 -04:00
isnowglobal-admin 003a913186 GammaDesk initial commit - Options Gamma Analytics platform 2026-05-21 01:41:11 -04:00