Monorepo: Vite React site (frontend) and FAQ chatbot API (backend, FastAPI + Uvicorn).
For a system overview and cross-cutting docs, see docs/ (start with docs/architecture.md).
- Node.js — see frontend/README.md
- Python 3.11+ — see backend/README.md
From the repository root:
yarn installThis repo is Yarn 1 only. Do not run npm install or pnpm install; yarn.lock is the only lockfile, and the Yarn version is pinned by the packageManager field in the root package.json.
- Frontend (Vite, env vars, build, tests, lint): frontend/README.md
- Backend (Python venv,
pip install, API env): backend/README.md
From the repo root, one command starts both the Vite app and the chat API:
yarn dev- Frontend only:
yarn dev:frontend - API only:
yarn dev:backend(runs Uvicorn with reload onbackend)
Environment files live in frontend/.env and backend/.env (copy from each package’s .env.example). Details: frontend/README.md, backend/README.md.
- Browser calls
POST /chaton the backend URL (VITE_CHATBOT_API_BASE_URL, defaulthttp://localhost:8787) and reads a Server-Sent Events stream - Guardrails screen the message, then a router sends it to feedback submission or the RAG path
- RAG retrieves snippets from static site copy and optional GitHub Markdown
- The configured provider streams a grounded answer: OpenRouter when
OPENROUTER_API_KEYis set, otherwise Hugging Face whenHF_TOKENis set (see backend/README.md) - Weak retrieval (with no prior conversation history) returns a safe fallback with contact guidance
yarn test
yarn test:backend- Frontend (Vitest): frontend/README.md
- Backend (pytest): backend/README.md
yarn lintSee frontend/README.md.
- Frontend build / preview: frontend/README.md
- API (Uvicorn): backend/README.md
yarn build:backend runs compileall on backend/app as a quick syntax check only.
- Contributing: CONTRIBUTING.md
- Code of Conduct: CODE_OF_CONDUCT.md
- Security policy: SECURITY.md
- License: MIT