Inspiration

As retail traders, we found existing platforms either too complex for beginners or too limited for serious analysis. Bloomberg Terminal costs $24,000/year. Robinhood lacks depth. We wanted to build something in between — a platform that gives every trader access to professional-grade tools without the price tag or complexity.

What it does

TradeX is a full-stack trading platform that brings together:

  • Real-time market data across crypto, stocks, forex, and commodities
  • AI-powered trading signals using Google Gemini Flash — with BUY/SELL/HOLD recommendations, confidence scores, price targets, and plain-English explanations
  • Paper trading engine — practice with $100,000 virtual balance at live market prices
  • Portfolio management — track holdings, P&L, and asset allocation
  • Financial news aggregated in real time
  • Two-factor authentication and enterprise-grade security (2FA, CSRF, rate limiting, bcrypt)
  • Password reset via email with branded Resend transactional emails
  • 7-day persistent sessions that survive page refreshes

How we built it

Frontend: React 18 + Vite, React Router, Recharts for charts, Framer Motion for animations, CSS Modules for scoped styling.

Backend: Node.js + Express with a layered architecture — Routes → Controllers → Services → Repositories → PostgreSQL (Supabase).

AI: Google Gemini Flash 1.5 analyzes technical indicators (RSI, MACD, Bollinger Bands, EMA, SMA) and returns structured trading signals with full explainability. Rule-based analysis acts as fallback when Gemini is unavailable.

Auth: JWT tokens stored in localStorage with a 7-day expiry, sent as Authorization Bearer headers on every request — bypassing cross-domain cookie restrictions on Render's free tier.

Infrastructure: Frontend on Render Static Site, backend on Render Web Service, PostgreSQL on Supabase. Keep-alive pings prevent cold starts. Retry logic handles slow server wakeups.

Challenges we ran into

  • Cross-domain session loss: Cookies are blocked between different Render subdomains. Solved by switching to localStorage + Authorization Bearer token headers.
  • Render cold starts: Free tier servers sleep after 15 minutes of inactivity. Solved with a keep-alive ping every 10 minutes, retry logic on timeout, and a "server waking up" banner for first-time visitors.
  • AI signal quality: Raw Gemini responses needed structured parsing, confidence clamping (60–85%), and graceful fallback to rule-based signals to avoid empty or nonsensical outputs.
  • SPA routing on Render: Direct URL navigation (e.g. password reset links) returned 404. Solved by configuring Render's Redirect/Rewrite rules to serve index.html for all routes.
  • News API limitations: Free tier APIs either required paid keys or had broken endpoints. Built a CoinGecko trending fallback that generates news articles from live trending coins.

Accomplishments that we're proud of

  • Shipped a fully working AI signal engine backed by Gemini Flash with explainability — not just a confidence score, but why it made the decision
  • Built end-to-end password reset with branded email — fully functional, not a placeholder
  • Achieved 7-day session persistence across page refreshes on a cross-domain free-tier deployment
  • Deployed a production-grade app with real users able to sign up, trade, and use every feature on the live site

What we learned

  • Cross-domain authentication is harder than it looks — cookies have strict rules, Bearer tokens are the pragmatic fix
  • AI outputs need guardrails — clamping, parsing, and fallback logic are non-negotiable for reliability
  • Free-tier cloud infrastructure has real constraints that force creative engineering solutions
  • A layered backend architecture (controllers → services → repositories) pays off immediately when debugging production issues

What's next for TradeX

  • Real brokerage integration (Alpaca, Zerodha) for actual trade execution
  • WebSocket-based live price streaming instead of polling
  • Mobile app (React Native)
  • Portfolio optimization using Modern Portfolio Theory
  • Alerts via SMS/push notifications when signals trigger
  • Multi-user watchlists and social trading features

Built With

  • alpha-vantage-api
  • axios
  • bcrypt
  • coingecko-api
  • css-modules
  • express.js
  • framer-motion
  • google-gemini-flash
  • jwt
  • node.js
  • postgresql
  • react
  • recharts
  • render
  • resend
  • speakeasy
  • supabase
  • vite
Share this project:

Updates