ESP32-S3 Bench Guide
ESP32‑S3 N16R8 벤치 가이드: 실시간 핀아웃, 강의, 시뮬레이터 및 벤치 로그
의료진·학생용 임상 사례 시뮬레이션, 실제 환자와 숨은 진단, 힌트 없이 전 단계 제공
Clinical case simulation for doctors and medical students. Real patients, hidden diagnoses, no hints — from first-contact care to the world's hardest cases. India, USA and UK.
교육TypeScript · JavaScriptGitHub @ramrajkvpy100온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗A clinical case simulator for doctors and medical students in India. The player is the doctor; the patient answers only what is asked; orders are executed exactly as written — including the wrong ones — and the consequences unfold in simulated time. Teaching happens after the case closes.
Modes: OPD · Phone consult (no examination or tests — triage and advice) · Emergency Care levels: Primary Health Centre → Community Health Centre → District Hospital → Medical College → Apex Institute (AIIMS-level) → Grand Rounds (rare-disease diagnostic puzzles). The level sets both difficulty and what the facility can do — a PHC can run a 20WBCT but not renal function. Habit loop: XP, daily goal, streaks, badges, medical ranks (Medical Student → Master Clinician) and weekly leaderboards per mode. Freemium: Free = 3 cases a day at PHC, CHC and District levels. Pro = unlimited cases and every level.
npm install
cp .env.example .env.local # set RAMAI_SESSION_SECRET (≥ 32 chars)
npm run dev # http://localhost:3000
npm test # engine, case-lint, mode and server tests
npm run build && npm start # production
Requires Node ≥ 22.13 (for the built-in node:sqlite). /dev/media (development only) shows every procedural clinical image. In development, RAMAI_SEED_DEMO=1 fills the leaderboards with fictional players and RAMAI_DEMO_BILLING=1 lets you switch on Pro without paying.
src/app pages: / (landing or home), /login, /signup, /case, /leaderboard, /profile, /pricing
↓ src/lib/engine-client.ts browser client — every call goes through the API
/api/auth/* · /api/me accounts (scrypt), HttpOnly session cookie (hashed at rest)
/api/cases/* plan-gated case start, turns, resume — zod-validated, rate-limited
/api/leaderboard · /api/billing/* weekly/all-time boards per mode; Razorpay orders + signature verification
↓ src/server db (node:sqlite) · auth · results (XP, streaks, ranks, boards) · billing
↓ src/engine/engine.ts public engine API (server-only)
├ providers/ mock (offline library + rules) | openai (generation + language)
├ intent.ts free text → structured intents
├ simulator.ts deterministic state machine: clock, results, hazards, rescue, phone & facility rules
├ levels.ts care levels, modes and what each facility can perform
├ physiology.ts global safety hazards from the hidden patient profile
├ reducer.ts effects → CaseState (isomorphic)
├ scoring.ts · debrief.ts /100 rubric and teaching, released only at closure
├ progression.ts ranks, streaks, daily goal, badges (computed on the server)
└ cases/ server-only case library (hidden truth)
server-only. The browser holds an opaque AES-256-GCM-sealed token (case reference, owner, and the intent-resolved action log) and the revealed CaseState. Every turn the server unseals the token, checks it belongs to the signed-in user, and replays the log deterministically.| Level | Cases |
|---|---|
| PHC | Viper snakebite with consumption coagulopathy (20WBCT, ASV before referral) |
| CHC | Steroid-modified tinea · Dengue with warning signs |
| District | Acne · Melasma (OCP/TXA trap) · Appendicitis (penicillin allergy, perforation clock) · Phone: night-time chest pain (sildenafil + Sorbitrate trap) |
| Medical College | Psoriasis + PsA (weekly MTX) · Aorto-iliac PAD · Acute heart failure (IV-fluid trap) |
| Apex Institute | SLE with class IV lupus nephritis |
| Grand Rounds | Acute intermittent porphyria (porphyrinogenic-drug trap) |
Add cases in src/engine/cases/ and register them in cases/index.ts; tests/cases.test.ts lints every cross-reference.
ECGs, X-rays, ultrasound, fundus and skin photographs are procedural vector renders driven by structured specs — players can ask to see any result again ("show me the ECG"). Set media.src on a case to use licensed photography instead. Photorealistic AI image generation is planned for the OpenAI step.
The heart is RamAI's own procedural model (scripts/build-heart.mjs). The brain and lungs are real anatomy — BodyParts3D meshes segmented from a real body's scans (© DBCLS, CC BY-SA 2.1 JP) — simplified and shaded by scripts/build-organ-scans.mjs; the derived files in public/models carry the same licence (see public/models/CREDITS.txt) and are credited on the scenes and on /about.
Set RAMAI_ENGINE=openai and OPENAI_API_KEY (server-side only). src/engine/providers/openai.ts generates cases for any specialty, mode and level as JSON validated by openai-schema.ts, and handles free text the rules can't place (patient_response contract). Model output is recorded into the sealed log so replay never calls the model again; any failure falls back to the offline library and rules. This path is written but not yet exercised against the live API.
RAMAI_SESSION_SECRET is required in production.RAMAI_DB_PATH). For serverless or multiple instances, port the few tables in src/server/db.ts to Postgres — every query lives in src/server/*.razorpay SDK, src/server/billing.ts). Prices come from PRICE_BOOK on the server. Pro starts only after the checkout signature is verified and Razorpay confirms the payment's order, amount and currency; /api/billing/webhook (signed with RAZORPAY_WEBHOOK_SECRET, each event processed once in payment_events) records payments even when the buyer closes the tab, plus failures and refunds. Dollars and pounds wait for RAZORPAY_INTERNATIONAL=1. Demo billing and demo players are disabled in production.Clinical simulation for educational purposes. Cases are fictional.