Architecture
How Rovex works.
A transparent look at the event-driven, multi-provider system behind your market data and emails.
Market data
Two data modes, one cache.
Charts always stream from TradingView. Everything we price ourselves goes through a shared cache with timeouts, so a slow provider never stalls a page.
Cached
Every minute in sessionDefault for the public site. Quotes refresh every minute while the market is open and hourly once it closes, shared by every user, so cost grows with symbols, not people.
Realtime
Every 15 secondsFor Rovex Cloud and self-hosting. Set NEXT_PUBLIC_OPENSTOCK_DATA_MODE=realtime and on-screen prices refresh live and email price alerts turn on.
| Market | Charts | Our quotes and alerts |
|---|---|---|
| US stocks, crypto | Live | Yes |
| Forex | Live | No |
| Canada, Australia | Delayed | No |
| Saudi Arabia (Yahoo Finance) | Delayed | No |
| India (BSE), Germany | End of day | No |
AI
Emails that don’t go down with a provider.
Welcome emails and news summaries are written by Gemini 2.5 Flash-Lite. If it fails, the request is retried on MiniMax-M3.1-Flash by default. Set MINIMAX_MODEL to MiniMax-M3 or keep your configured model override.
- 1A user signs up, or a cron fires
- 2Inngest runs the function
- 3Gemini writes the text
- 4MiniMax takes over if Gemini fails
- 5The email goes out
Background jobs
Four jobs keep things moving.
Welcome email
Weekly news
Price alerts
Re-engagement
Stack