Cleaned project directory and added new development plan for simplified stack

This commit is contained in:
Jo Eskil
2025-11-13 23:43:39 +01:00
parent 384d5364a8
commit 2ed89fecbc
21 changed files with 0 additions and 513 deletions

67
main.py
View File

@@ -1,67 +0,0 @@
import asyncio
import json
from fastapi import FastAPI, WebSocket, Request, Depends
from fastapi.responses import HTMLResponse, RedirectResponse
from starlette.websockets import WebSocketDisconnect
from starlette.middleware.base import BaseHTTPMiddleware
from sqlalchemy.orm import Session
from chat_listeners import listen_youtube_chat, listen_twitch_chat
from auth import router as auth_router, serializer
from database import get_db, User, create_tables
app = FastAPI()
@app.on_event("startup")
async def startup_event():
create_tables()
# The chat listeners will be started dynamically based on user activity
# and not on application startup.
class SessionMiddleware(BaseHTTPMiddleware):
async def dispatch(self, request: Request, call_next):
response = await call_next(request)
session_cookie = request.cookies.get("session")
if session_cookie:
try:
data = serializer.loads(session_cookie, max_age=3600 * 24 * 7) # 1 week
db = next(get_db())
user = db.query(User).filter(User.id == data["user_id"]).first()
request.state.user = user
except Exception:
request.state.user = None
else:
request.state.user = None
return response
@app.get("/")
async def read_root():
return {"Hello": "World"}
@app.get("/login", response_class=HTMLResponse)
async def get_login_page():
with open("login.html", "r") as f:
return f.read()
@app.get("/dashboard", response_class=HTMLResponse)
async def get_dashboard(user: User = Depends(get_current_user)):
if not user:
return RedirectResponse(url="/login")
with open("dashboard.html", "r") as f:
return f.read()
@app.get("/overlay", response_class=HTMLResponse)
async def get_overlay():
with open("index.html", "r") as f:
return f.read()
@app.websocket("/ws")
async def websocket_endpoint(websocket: WebSocket):
await websocket.accept()
connected_clients.append(websocket)
try:
while True:
# Keep the connection alive, or handle incoming messages if needed
await websocket.receive_text()
except WebSocketDisconnect:
connected_clients.remove(websocket)