Commit Graph

15 Commits (9b21b40da818efc2333231927374d4abdc7d15ff)

Author SHA1 Message Date
isnowglobal-admin 9b21b40da8 release: alpha2.0 — session persistence, Tanuki stability, login flow
Auth & Session:
- Add credentials: include to all frontend fetch calls (queryClient,
  auth-context, tanuki-trades, symbol-selector, settings, verify)
- Redis-backed session store with connect-redis, 7-day cookie expiry,
  sameSite=lax, httpOnly=true
- Add app.set('trust proxy', 1) so Express honors X-Forwarded-Proto from
  nginx — fixes secure cookies never being sent over HTTPS
- Cookie secure flag also checks APP_URL for reverse proxy deployments

Login Flow:
- Fix post-login redirect race condition: use full page reload
  (window.location.href) instead of hash navigation so auth cookie is
  established before ProtectedRoute checks session
- Disable SymbolSelector query when not authenticated to prevent blocking
  fetches on login page
- SymbolSelector returns null when not authenticated — no UI rendered

Tanuki Trades:
- Add ErrorBoundary component to isolate Tanuki page crashes
- Use unique queryKey ['tanuki-tickers'] to prevent React Query cache
  collision with symbol selector
- Defensive query syntax with async/await for error isolation

Testing:
- Verified login → redirect → refresh → session persists (no 401)
- Verified Tanuki page no longer crashes the entire app
- Verified /api/auth/me returns user data across requests with cookie
2026-07-01 14:53:24 -04:00
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 003a913186 GammaDesk initial commit - Options Gamma Analytics platform 2026-05-21 01:41:11 -04:00