80 lines
2.9 KiB
Markdown
80 lines
2.9 KiB
Markdown
# Respellion Learning Platform
|
|
|
|
An internal AI-powered learning platform that keeps Respellion employees up to date with the company's evolving knowledge base.
|
|
|
|
## Features
|
|
|
|
- **Weekly Learning Station** — Each employee is assigned a topic each week (via deterministic hash of user ID + week number). They choose their preferred format: Article, Slides, or Infographic. Content is generated on-demand by Claude and cached per topic.
|
|
- **Weekly Test** — AI-generated quiz based on the knowledge graph. Results are stored and feed the leaderboard.
|
|
- **Leaderboard & Gamification** — Points for correct answers, badges for streaks and perfect scores.
|
|
- **R42 Chatbot** — An always-available AI assistant (backed by Claude) with access to the full knowledge graph. Can propose graph updates that admins approve or reject.
|
|
- **Admin Panel** — Manage the knowledge graph, upload source files, review generated content, refine it with AI, and monitor team progress.
|
|
|
|
## Tech Stack
|
|
|
|
| Layer | Technology |
|
|
|---|---|
|
|
| Frontend | React 18 + Vite |
|
|
| Styling | Vanilla CSS (custom properties) + Tailwind utility classes |
|
|
| Animations | Framer Motion |
|
|
| Icons | Lucide React |
|
|
| Graph viz | D3.js (admin knowledge graph only) |
|
|
| Backend / DB | PocketBase (self-hosted) |
|
|
| AI | Anthropic Claude (via Caddy reverse proxy) |
|
|
| Infra | Docker + Caddy |
|
|
|
|
## Getting Started (local dev)
|
|
|
|
```bash
|
|
# 1. Install dependencies
|
|
npm install
|
|
|
|
# 2. Start PocketBase (Windows)
|
|
./pocketbase.exe serve
|
|
|
|
# 3. Start the dev server
|
|
npm run dev
|
|
```
|
|
|
|
The Vite dev server proxies `/api/anthropic` and `/pb` — see `vite.config.js`.
|
|
|
|
## Deployment (Docker)
|
|
|
|
```bash
|
|
docker compose up -d
|
|
```
|
|
|
|
The `Caddyfile` handles:
|
|
- SPA fallback routing
|
|
- `/pb/*` → PocketBase sidecar
|
|
- `/api/anthropic/*` → Anthropic API (with server-side API key injection)
|
|
|
|
## Key Files
|
|
|
|
| File | Purpose |
|
|
|---|---|
|
|
| `src/lib/learningService.js` | Selective content generation (article / slides / infographic) |
|
|
| `src/lib/extractionPipeline.js` | Uploaded file → knowledge graph extraction |
|
|
| `src/lib/llm.js` | Core Anthropic LLM wrapper |
|
|
| `src/lib/db.js` | All PocketBase data access |
|
|
| `src/store/AppContext.jsx` | Global state; computes ISO week number on load |
|
|
| `src/components/admin/UploadZone.jsx` | Drag-and-drop file upload UI |
|
|
| `AI_AGENT.md` | Detailed context guide for AI coding agents |
|
|
|
|
## Content Types
|
|
|
|
Learning content is generated **on demand per type** and merged into the cached object:
|
|
|
|
| Type | Key in DB | Description |
|
|
|---|---|---|
|
|
| Article | `content.article` | Long-form reading |
|
|
| Slides | `content.slides` | Slide deck with speaker notes |
|
|
| Infographic | `content.infographic` | Visual summary with stats and steps |
|
|
|
|
> The podcast type was removed. Do not re-add it.
|
|
|
|
## Documentation
|
|
|
|
- **`AI_AGENT.md`** — Full architectural guide for AI coding agents (patterns, gotchas, decisions).
|
|
- **`CHANGELOG.md`** — PocketBase upstream changelog (not application changelog).
|