Skip to content

Apps

apps/assistant

Standalone full-page AI assistant application. Provides a single-route SvelteKit app that renders ChatCore in full-viewport mode.

Entry point: apps/assistant/src/routes/+page.svelte

<ChatCore apiBaseUrl="/api" mode="full" />

This app is deployed as part of the celine-ai-assistant service, served at the root path. The layout provides no navigation or chrome — just the chat interface.

Docker image: ghcr.io/celine-eu/assistant-ui

Dev:

pnpm dev:assistant
# http://localhost:5174

apps/webapp

REC participant webapp. A full SvelteKit application for community members, including an energy overview, notifications, settings, and the embedded assistant.

Routes:

Route Description
/ Energy overview — production, consumption, incentives
/assistant Embedded ChatCore in full mode
/notifications Notification list and read/delete
/settings Notification preferences and push subscription

Layout: apps/webapp/src/routes/+layout.svelte

The root layout wraps the app in AssistantProvider, which injects the floating assistant widget. It also calls GET /api/me to check terms acceptance before rendering child routes.

BFF proxy pattern:

The webapp proxies assistant requests through its FastAPI BFF:

# webapp BFF
@router.api_route("/assistant/{path:path}", methods=["GET", "POST", "DELETE"])
async def proxy_assistant(path: str, request: Request):
    return await proxy_to(f"{ASSISTANT_URL}/api/{path}", request)

This keeps the assistant's API behind the same origin as the webapp, forwarding the user's identity automatically.

Dev:

pnpm dev:webapp
# http://localhost:5173