From 3b84e1effcdd388ed1fba1ce26c50e7b8917f619 Mon Sep 17 00:00:00 2001 From: Amirhossein Khalili Date: Thu, 18 Jun 2026 21:20:09 +0330 Subject: [PATCH] fix: serve slides assets in app --- .dockerignore | 5 ++++- Dockerfile | 1 + app/main.py | 14 +++++++++++++- 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/.dockerignore b/.dockerignore index 31dc87d..72cf306 100644 --- a/.dockerignore +++ b/.dockerignore @@ -9,5 +9,8 @@ __pycache__/ .ruff_cache/ .uvicorn.pid -docs/ +docs/images/ +docs/screenshots/ +docs/*.pdf +docs/presentation.md README.md diff --git a/Dockerfile b/Dockerfile index 721fad2..4c00865 100644 --- a/Dockerfile +++ b/Dockerfile @@ -10,6 +10,7 @@ RUN pip install --no-cache-dir --upgrade pip setuptools wheel -i https://package && pip install --no-cache-dir -r requirements.txt -i https://package-mirror.liara.ir/repository/pypi/simple COPY app ./app +COPY docs/slides ./docs/slides EXPOSE 8000 diff --git a/app/main.py b/app/main.py index 3f451e6..c96a61c 100644 --- a/app/main.py +++ b/app/main.py @@ -1,7 +1,7 @@ from pathlib import Path from fastapi import FastAPI -from fastapi.responses import FileResponse +from fastapi.responses import FileResponse, RedirectResponse from fastapi.staticfiles import StaticFiles from app.websocket.chat import router as chat_router @@ -9,6 +9,7 @@ from app.websocket.manager import manager BASE_DIR = Path(__file__).resolve().parent STATIC_DIR = BASE_DIR / "static" +SLIDES_DIR = BASE_DIR.parent / "docs" / "slides" app = FastAPI(title="Simple WebSocket Chatroom") @@ -20,6 +21,17 @@ app.include_router(chat_router) app.mount("/static", StaticFiles(directory=STATIC_DIR), name="static") +@app.get("/slides", include_in_schema=False) +async def slides_redirect(): + """Redirect to the static slides directory so relative asset paths work.""" + return RedirectResponse(url="/slides/") + + +# Serves the presentation and its relative assets. +# This keeps docs/slides/index.html openable directly from the file system too. +app.mount("/slides", StaticFiles(directory=SLIDES_DIR, html=True), name="slides") + + @app.get("/") async def home(): """Serve the chatroom GUI."""