尚未收集儲存庫資訊。
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
製作者的介紹僅有上面的一句話。 更多詳情請閱讀儲存庫 README。 儲存庫 README ↗
正在載入完整 README。
檢視完整 README ↗Webbapp för Optimental (Marcus Engström) med två delar:
/behandlare): RAADS-14, GAD-7, MADRS-S och OCI-R. Behandlaren klickar i svaren och får totalpoäng, delskalor, tolkning och färdig journaltext att kopiera.Grundprincip: vi sparar ingenting. Inga konton, ingen databas, inga kakor och ingen analys. Allt som fylls i lever i webbläsaren. PDF:en och journaltexten skapas på klienten.
npm install
cp .env.example .env.local # valfritt – lägg in ANTHROPIC_API_KEY för AI-hjälpen
npm run dev # http://localhost:3000
| Kommando | Gör |
|---|---|
npm run dev | Utvecklingsserver |
npm run build | Produktionsbygge |
npm test | Enhetstester (skattningar, mallar, AI-skydd) |
npm run check | Lint + typer + tester |
npm run format | Prettier |
CI (.github/workflows/ci.yml) kör lint, format, typer, tester och bygge på varje push och PR.
Next.js 16 (App Router, Cache Components), React 19, Tailwind CSS 4, TypeScript (strict), Zod, @react-pdf/renderer (PDF i webbläsaren) och @anthropic-ai/sdk (Claude Opus 5.5). Stilen bygger på optimental.vercel.app: samma orange, svart och logga, med Fraunces-serif i rubrikerna, en varm pappersbakgrund och pratbubblan från loggan som motiv för hjälpen.
src/
├─ app/
│ ├─ hemuppgifter/[slug] Formulär per mall (statiskt genererade)
│ ├─ behandlare/[slug] Rättningsmall per skattning
│ ├─ api/hjalp AI-hjälpen (enda serverlogiken)
│ └─ integritet Integritetstext
├─ lib/
│ ├─ templates/ Hemuppgiftsmallar som data (en fil per mall)
│ ├─ scales/ Skattningar: poäng, tolkning, journaltext (+ tester)
│ ├─ ai/ Systemprompt, krisscreening, rate limit, schema
│ └─ pdf/ PDF-layout och nedladdning
└─ proxy.ts Ger 404 för okända mallar/skattningar
Ny hemuppgift: skapa src/lib/templates/<namn>.ts efter samma mönster som tankedagbok.ts och lägg till den i src/lib/templates/index.ts. Sidan, biblioteket, länken på behandlarsidan och PDF:en kommer med automatiskt. Varje fält behöver en help-text, och mallen ska ha ett example och en aiContext (behandlarens instruktion till AI:n). Testerna kontrollerar att exemplet matchar fälten.
Ny skattning: skapa src/lib/scales/<namn>.ts med items, svarsalternativ och en compute() som returnerar poäng, tolkning och journaltext. Lägg sedan till den i src/lib/scales/index.ts och skriv tester för gränsvärdena i scales.test.ts.
AI_ENABLED=false stänger av AI-hjälpen helt, även om nyckeln finns kvar. Då döljs chatten, /api/hjalp svarar 503, och start- och integritetssidan beskriver bara förklaringarna och exemplen. AI_ENABLED=true slår på den och stoppar bygget om nyckel saknas, så att sidan aldrig utlovar en AI som inte finns. Tomt värde betyder på om nyckel finns. Byt i Vercel under Settings → Environment Variables och gör sedan Redeploy.npm run dev utan nyckel körs AI-hjälpen i testläge med förskrivna svar som bygger på mallens egna texter. Skriv #kris eller #fel i en fråga för att prova kris- och felflödet. AI_MODEL=mock aktiverar testläget även i ett produktionsbygge.ANTHROPIC_API_KEY och välj modell med AI_MODEL (claude-haiku-5-5, claude-sonnet-5-5 eller claude-opus-5-5; standard är Sonnet 5.5). Ett felstavat modellnamn stoppar bygget med ett tydligt fel.npm run dev, eller med AI_MODEL_SWITCHER=1 i en preview-miljö, finns en modellväljare i chatten, och varje svar märks med vilken modell som svarade. Servern godtar bara modeller från väljaren, så en klient kan aldrig välja en dyrare modell i skarp drift.[KRIS]. I båda fallen visas 112, Mind Självmordslinjen 90101 och 1177 i stället för ett svar.max_tokens-tak. Sonnet och Opus har dessutom server-side fallback vid nekat svar; Haiku 5.5 saknar det stödet. Innehåll loggas aldrig.effort: "low", vilket ger snabba och korta svar.AI_ENABLED (true/false), ANTHROPIC_API_KEY (valfri), AI_MODEL (valfri, se ovan) och NEXT_PUBLIC_SITE_URL (den publika adressen). Sätt AI_MODEL_SWITCHER=1 bara för Preview-miljön./api/hjalp, till exempel 30 anrop per minut och IP. Rate limiten i koden gäller per serverinstans.frame-ancestors 'none', Referrer-Policy: no-referrer och Permissions-Policy.noindex och robots.txt).help-texter, exempel och aiContext. De är skrivna som ett utkast och ska godkännas kliniskt.Journaltexterna följer Marcus formler ordagrant, med de här rättningarna:
B20) i stället för poängen (C20). I Google Sheets är text alltid ”större” än tal, så mallen skrev alltid ”över cut-off” oavsett poäng. Det är rättat och testat (13 p ger under, 14 p ger över).B2:B10, det vill säga fråga 2–9 plus totalen, i stället för fråga 1–9. Texten blev också ”…depressiva symtom symtom” vid låga poäng.