summaryrefslogtreecommitdiff
path: root/src/ollama_web/app.py
diff options
context:
space:
mode:
authortanaka takashi <isazaka@gmail.com>2026-06-23 18:37:46 +0900
committertanaka takashi <isazaka@gmail.com>2026-06-23 18:37:46 +0900
commit21b59cc1d0928dc04dcf5eac24470aaa05013b2d (patch)
tree9888aa23aafea3907ce96eb958a06d4369dad86e /src/ollama_web/app.py
parentde0513e7cb0593b1aa141e367ff4da7156d6110f (diff)
基本機能実装
Diffstat (limited to 'src/ollama_web/app.py')
-rw-r--r--src/ollama_web/app.py46
1 files changed, 46 insertions, 0 deletions
diff --git a/src/ollama_web/app.py b/src/ollama_web/app.py
new file mode 100644
index 0000000..d37557d
--- /dev/null
+++ b/src/ollama_web/app.py
@@ -0,0 +1,46 @@
+"""Starlette application factory for ollama-web."""
+
+from __future__ import annotations
+
+from pathlib import Path
+
+from starlette.applications import Starlette
+from starlette.middleware import Middleware
+from starlette.middleware.cors import CORSMiddleware
+from starlette.routing import Mount, Route
+from starlette.staticfiles import StaticFiles
+
+from .config import settings
+from .routes import chat as chat_route
+from .routes import models as models_route
+from .routes import pages as pages_route
+
+_STATIC_DIR = Path(__file__).resolve().parent / "static"
+
+
+def create_app() -> Starlette:
+ """Build and return the configured Starlette application."""
+ routes = [
+ Route("/", pages_route.index, name="index"),
+ Route("/api/chat", chat_route.chat, methods=["POST"], name="chat"),
+ Route("/api/models", models_route.get_models, methods=["GET"], name="models"),
+ Route("/api/health", models_route.health, methods=["GET"], name="health"),
+ Mount("/static", app=StaticFiles(directory=str(_STATIC_DIR)), name="static"),
+ ]
+
+ middleware = [
+ Middleware(
+ CORSMiddleware,
+ allow_origins=["*"],
+ allow_methods=["*"],
+ allow_headers=["*"],
+ )
+ ]
+
+ app = Starlette(routes=routes, middleware=middleware)
+ app.state.settings = settings
+ app.state.tool_names = ["web_search", "scrape_url"]
+ return app
+
+
+app = create_app() \ No newline at end of file