mirror of
https://github.com/Mihirkansara/nexus-quant-terminal.git
synced 2026-08-04 06:27:43 +00:00
chore: prepare for Vercel + Koyeb deployment
- API base URL now reads from VITE_API_URL env var (frontend) - WorldMap localhost URLs replaced with env-aware API constant - Added httpx to backend requirements (live data proxy) - Added Procfile for Koyeb backend deployment - Added vercel.json for frontend SPA routing Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1 @@
|
||||
web: uvicorn app.main:app --host 0.0.0.0 --port $PORT
|
||||
@@ -6,3 +6,4 @@ pandas>=2.0,<4.0
|
||||
yfinance>=0.2.38
|
||||
pydantic>=2.0,<3.0
|
||||
reportlab>=4.0,<5.0
|
||||
httpx>=0.27,<1.0
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import axios from 'axios'
|
||||
|
||||
const api = axios.create({ baseURL: '/api' })
|
||||
const BASE = import.meta.env.VITE_API_URL ? `${import.meta.env.VITE_API_URL}/api` : '/api'
|
||||
const api = axios.create({ baseURL: BASE })
|
||||
|
||||
// Market
|
||||
export const fetchMarket = (ticker) => api.get(`/market/${ticker}`).then(r=>r.data)
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
import { useState, useEffect, useRef, useCallback } from 'react'
|
||||
|
||||
const API = import.meta.env.VITE_API_URL || ''
|
||||
import { MapContainer, TileLayer, Marker, Popup, CircleMarker, useMap } from 'react-leaflet'
|
||||
import L from 'leaflet'
|
||||
import 'leaflet/dist/leaflet.css'
|
||||
@@ -95,7 +97,7 @@ export default function WorldMap() {
|
||||
const loadAircraft = useCallback(async () => {
|
||||
setLoadingAc(true)
|
||||
try {
|
||||
const r = await fetch('http://localhost:8000/api/live/aircraft')
|
||||
const r = await fetch('${API}/api/live/aircraft')
|
||||
const d = await r.json()
|
||||
const planes = (d.states || [])
|
||||
.filter(s => s[5] != null && s[6] != null && !s[8])
|
||||
@@ -118,7 +120,7 @@ export default function WorldMap() {
|
||||
|
||||
const loadQuakes = useCallback(async () => {
|
||||
try {
|
||||
const r = await fetch('http://localhost:8000/api/live/earthquakes')
|
||||
const r = await fetch('${API}/api/live/earthquakes')
|
||||
const d = await r.json()
|
||||
const qs = d.features || []
|
||||
setQuakes(qs)
|
||||
@@ -128,7 +130,7 @@ export default function WorldMap() {
|
||||
|
||||
const loadEvents = useCallback(async () => {
|
||||
try {
|
||||
const r = await fetch('http://localhost:8000/api/news/calendar')
|
||||
const r = await fetch('${API}/api/news/calendar')
|
||||
const d = await r.json()
|
||||
const evs = (d.events || []).filter(e => CCY_POS[e.country])
|
||||
setEvents(evs)
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"buildCommand": "npm run build",
|
||||
"outputDirectory": "dist",
|
||||
"framework": "vite",
|
||||
"rewrites": [{ "source": "/(.*)", "destination": "/index.html" }]
|
||||
}
|
||||
Reference in New Issue
Block a user