diff --git a/.gitignore b/.gitignore
index cff1e8f..cd1c23c 100644
Binary files a/.gitignore and b/.gitignore differ
diff --git a/backend/app/db.py b/backend/app/db.py
index 4e3754e..2d17440 100644
--- a/backend/app/db.py
+++ b/backend/app/db.py
@@ -2,11 +2,14 @@
from sqlalchemy.orm import sessionmaker, declarative_base
import os
-DATABASE_URL = os.getenv("DATABASE_URL")
-if not DATABASE_URL:
- raise RuntimeError("DATABASE_URL is required and must point to a PostgreSQL database, e.g. postgresql://user:password@localhost:5432/stockvision")
+DATABASE_URL = os.getenv("DATABASE_URL", "sqlite:///./stockvision.db")
+
+# Create engine with appropriate settings for SQLite or PostgreSQL
+if DATABASE_URL.startswith("sqlite"):
+ engine = create_engine(DATABASE_URL, connect_args={"check_same_thread": False}, echo=False)
+else:
+ engine = create_engine(DATABASE_URL, pool_pre_ping=True, echo=False)
-engine = create_engine(DATABASE_URL, pool_pre_ping=True, echo=False)
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
Base = declarative_base()
diff --git a/backend/env.example b/backend/env.example
index 9e62f90..6ade0a3 100644
--- a/backend/env.example
+++ b/backend/env.example
@@ -16,6 +16,8 @@ REDIS_URL=redis://localhost:6379/0
# External APIs
ALPHA_VANTAGE_API_KEY=your_alpha_vantage_api_key
YAHOO_FINANCE_API_KEY=your_yahoo_finance_api_key
+POLYGON_API_KEY=your_polygon_api_key
+FINNHUB_API_KEY=your_finnhub_api_key
# Security
SECRET_KEY=your_secret_key_here
diff --git a/backend/main.py b/backend/main.py
index 9e3f5b2..038b9f1 100644
--- a/backend/main.py
+++ b/backend/main.py
@@ -6,7 +6,7 @@
from dotenv import load_dotenv
# Import routers
-from app.routers import stocks, market, portfolios, auth
+from app.routers import stocks, market, portfolios, auth, chatbot
# Import database
from app.db import engine, Base
@@ -43,6 +43,13 @@
app.include_router(portfolios.router)
app.include_router(auth.router) # Auth routes added
+# Include routers
+app.include_router(auth.router, prefix="/api", tags=["Authentication"])
+app.include_router(stocks.router, prefix="/api", tags=["Stocks"])
+app.include_router(market.router, prefix="/api", tags=["Market"])
+app.include_router(portfolios.router, prefix="/api", tags=["Portfolios"])
+app.include_router(chatbot.router, prefix="/api", tags=["Chatbot"])
+
# Create all DB tables
Base.metadata.create_all(bind=engine)
diff --git a/backend/requirements.txt b/backend/requirements.txt
index 57ff23f..b1a40ab 100644
--- a/backend/requirements.txt
+++ b/backend/requirements.txt
@@ -21,4 +21,5 @@ pandas>=2.1.0
numpy>=1.25.0
yfinance>=0.2.0
requests>=2.31.0
-aiofiles>=23.2.0
\ No newline at end of file
+aiofiles>=23.2.0
+aiohttp>=3.8.0
\ No newline at end of file
diff --git a/frontend/app/HomeClient.tsx b/frontend/app/HomeClient.tsx
index 350b66d..1b4170e 100644
--- a/frontend/app/HomeClient.tsx
+++ b/frontend/app/HomeClient.tsx
@@ -1,22 +1,25 @@
"use client";
import { useEffect, useState } from "react";
import Landing from "@/components/Landing";
+import SimpleLanding from "@/components/SimpleLanding";
import Preloader from "@/components/Preloder";
let hasShownPreloader = false;
export default function HomeClient() {
- const [isLoading, setIsLoading] = useState(!hasShownPreloader);
+ // Temporarily disable preloader for debugging
+ const [isLoading, setIsLoading] = useState(false);
useEffect(() => {
if (!hasShownPreloader) {
const timer = setTimeout(() => {
setIsLoading(false);
hasShownPreloader = true;
- }, 2500);
+ }, 500); // Reduced to 0.5 seconds for testing
return () => clearTimeout(timer);
}
}, []);
+ // Use original Landing component
return isLoading ? : ;
}
diff --git a/frontend/app/layout.tsx b/frontend/app/layout.tsx
index 0f8b887..b4796de 100644
--- a/frontend/app/layout.tsx
+++ b/frontend/app/layout.tsx
@@ -3,6 +3,7 @@ import { ThemeProvider } from "@/components/theme-provider";
import { Toaster as Sonner } from "@/components/ui/sonner";
import { Toaster } from "@/components/ui/toaster";
import { TooltipProvider } from "@/components/ui/tooltip";
+import Chatbot from "./components/chatbot";
import "@/styles/globals.css";
import { Analytics } from '@vercel/analytics/react';
import { Inter } from "next/font/google";
@@ -50,6 +51,7 @@ export default function RootLayout({
{children}
+