MedGryd
의대생이 만든 하나의 계정으로 플래너·문제은행·환자 시뮬레이터·보드 플랜·OMM 프로토콜·성적 관리까지 제공
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Retenir ce qu'on apprend : on dépose une info, l'IA en tire des questions, la répétition espacée les repose au bon moment. Next.js 15, Prisma, PostgreSQL, Stripe.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗On dépose ce qu'on veut retenir : une phrase, un article collé, une capture d'écran. Un modèle de
langage le découpe en concepts (Atom) et écrit pour chacun quatre questions (Variant) qui
l'interrogent sous des angles différents. La répétition espacée (FSRS) planifie le concept, jamais
la question : les formulations tournent pour qu'on retienne l'idée, pas une phrase.
| Domaine | Choix |
|---|---|
| Application | Next.js 16 (App Router), React 19, TypeScript strict |
| Données | PostgreSQL (Neon), Prisma 7 |
| Modèle de langage | OpenRouter, repli automatique sur Claude Sonnet, sorties validées par Zod |
| Répétition espacée | ts-fsrs |
| Authentification | better-auth (code par email, Google en option) |
| Interface | Tailwind v4, primitives shadcn/ui retokenisées, Motion |
| Services | Resend (emails), Stripe (paiement), Vercel (hébergement, mesure sans cookie) |
Prérequis : Node.js 24 (voir .nvmrc) et une base PostgreSQL 16+. Aucune clé de modèle n'est
nécessaire : en développement, MOCK_AI=true sert des réponses écrites à la main, et tout le
pipeline tourne sans un seul appel réel.
git clone https://github.com/Namirop/kairn.git && cd kairn
npm install
cp .env.example .env # renseigner DATABASE_URL, DIRECT_URL, BETTER_AUTH_SECRET
npm run db:migrate
npm run db:seed # un compte de démonstration avec deux mois d'historique
npm run dev
Sans clé Resend, le code de connexion s'affiche dans les journaux du serveur : on entre dans le
compte de démonstration sans configurer d'email. Les variables d'environnement sont décrites dans
docs/environnements.md.
| Commande | Effet |
|---|---|
npm run dev | Serveur de développement |
npm test | Tests unitaires et propriétés (Vitest, fast-check) |
npm run lint | ESLint, frontières d'architecture comprises |
npm run typecheck | TypeScript |
npm run knip | Code mort : fichiers, exports et dépendances inutilisés |
npm run docs:check | Docs dont le code a changé sur la branche |
npm run verifier:* | Vérifications contre une vraie base : garde-fous, ingestion, abus… |
La liste complète, et la logique qui la range, est dans docs/outillage.md.
app/ Routes Next.js : landing, application, API (cron, webhook, export)
components/ Interface, par domaine ; components/ui/ pour les primitives
lib/
domain/ Logique métier pure, sans Next ni Prisma : c'est là qu'elle se teste
db/ Seul accès à la base
ai/ Seul accès au modèle : callAI(), prompts, schémas, fixtures
… auth, email, jobs, paiement, i18n
prisma/ Schéma, migrations, seed
scripts/ Vérifications, maintenance, banc d'évaluation des modèles
Les dépendances vont dans un seul sens, app/ → lib/db/ → lib/domain/, et ESLint le fait
respecter. Tout appel au modèle passe par callAI(), qui porte les garde-fous de budget : mode
mock, plafonds journaliers (global, par compte, sans compte), validation de la sortie, registre de
chaque appel avec son coût. Aucune génération n'a lieu pendant une requête : un dépôt écrit un job
et rend la main.
Le détail est dans docs/architecture.md.
Le modèle en production n'a pas été choisi sur sa notoriété. scripts/evaluation/ est un banc
qui passe le même corpus de dépôts (texte court, article long, capture d'écran, affirmation fausse,
opinion à rejeter, langue étrangère…) à plusieurs modèles et mesure ce qui se vérifie : concepts
manqués ou inventés, doublons, fidélité des questions, formats. Un juge d'une autre lignée note
les sorties, et la règle de décision a été écrite avant de voir les chiffres. Deux campagnes,
extraction puis questions, ont retenu le même challenger. Il remplace Claude Sonnet à moins d'un
dixième du prix catalogue, sans perte mesurée. Le protocole est dans
docs/campagne-modeles.md.
main est protégée :
rien n'y entre sans PR verte.docs:check
signale celles à relire quand ce code change.Les conventions de travail sont dans CONTRIBUTING.md.
| Document | Contenu |
|---|---|
docs/architecture.md | Appels au modèle, ingestion, essai sans compte, révision |
docs/deploiement.md | Mise en ligne, crons, emails, retour arrière |
docs/environnements.md | Variables d'environnement, dev et production |
docs/paiement.md | Stripe, webhook, TVA |
docs/outillage.md | Commandes, étages de vérification |
DESIGN.md | Système visuel |
Le code est en français, sauf le vocabulaire du domaine et ce qu'imposent les outils : le produit est francophone, et ce choix est écrit dans les conventions.
Repo public à des fins de portfolio. Utilisation, reproduction ou réutilisation du code soumises à autorisation préalable.