Skip to content
source

Faculty onboarding · walkthrough

From “yes I'll review” to your first signed entry — in 30 minutes.

ทุก entry วันนี้อยู่ที่ขั้น ◆ Verified (อ้างอิง + cross-check อย่างน้อย 2 แหล่ง). ขั้นถัดไป — ✓ Expert-reviewed — ต้องมีอาจารย์ผู้เชี่ยวชาญลงนาม Ed25519 และยังไม่มี entry ไหนไปถึง: คุณจะเป็นผู้ลงนามคนแรก. หน้านี้คือ flow จริง — มี $ prompt + sample output + อธิบายว่าแต่ละขั้นตอนทำอะไร (ชื่อและค่าในตัวอย่างเป็นค่าสมมติ).

First-time setup

~30 min

generate key, register PR, install Node

Per entry after

~5 min

read, edit, sign, PR

Hardware needed

None

laptop with Node 20+ and Git

Before you start

What signing means

When you sign an entry, you publicly attest that you personally read every clinical sentence, cross-checked at least one dose against an independent authoritative source, and stand behind the content. Your signature is verifiable by any reader in the world, forever, with no central authority needed. It is structurally stronger than any reviewing relationship in print — Plumb's citations point at a Plumb's edition; here, your name is on the byte-level hash of the exact entry you reviewed.


The flow

5 steps to your first signed entry

1

Clone the repo + install

2 min

คุณต้องมี Node.js 20+ และ Git. ไม่ต้องมี server, ไม่ต้องสมัครบัญชี.

$ git clone https://github.com/palmzamak2547/cuvetsmo-source.git
$ cd cuvetsmo-source
$ npm install
added 359 packages in 48s
2

Generate your signing key

3 min

เลือก kid (key id) ที่สั้น เสถียร และเป็น kebab-case. Convention: firstname.lastname.

$ node scripts/keygen.mjs somsri.example --display "รศ.สพ.ญ.ดร. สมศรี ตัวอย่าง"

✓ Ed25519 keypair generated
  kid:         somsri.example
  display:     รศ.สพ.ญ.ดร. สมศรี ตัวอย่าง
  fingerprint: ed25519:7c2b9e4f1a3d0c87
  public:      content/keys/somsri.example.pub.json  (COMMIT this)
  private:     ~/.cuvetsmo-keys/somsri.example.priv.json  (NEVER commit — outside repo)
Private key safety. The private key lands in your home directory outside the repo. Never email, paste, or screenshot it. If it leaks, file a key-rotationissue and we'll revoke + reissue.
3

Register your public key (one-time PR)

5 min

Create a PR titled keys: register somsri.example. The maintainer merges after verifying your name + affiliation against the faculty directory.

$ git checkout -b keys/somsri-example
$ git add content/keys/somsri.example.pub.json
$ git commit -m "keys: register somsri.example"
$ git push origin keys/somsri-example
$ gh pr create --title "keys: register somsri.example"

✓ PR opened: github.com/palmzamak2547/cuvetsmo-source/pull/N
4

Pick an entry, review, sign

5–10 min per entry

เปิด content/drugs/<slug>.json — read every clinical section, confirm each cited source still says what the entry says, fix any Thai phrasing, cross-check at least one dose against an independent source. Then add your reviewer block:

json"reviewedBy": {
  "name": "รศ.สพ.ญ.ดร. สมศรี ตัวอย่าง",
  "title": "รองศาสตราจารย์",
  "department": "ภาควิชาเภสัชวิทยา",
  "affiliation": "คณะสัตวแพทยศาสตร์ จุฬาลงกรณ์มหาวิทยาลัย",
  "date": "2026-06-15",
  "did": "did:web:source.cuvetsmo.com:faculty:somsri-example",
  "signerKeyId": "ed25519:7c2b9e4f1a3d0c87"
}

Then sign:

$ npm run check
OK — 618 content unit(s) pass Iron Rule 0 integrity checks.

$ node scripts/sign.mjs meloxicam --signer somsri.example

✓ Signed meloxicam
  signer:      รศ.สพ.ญ.ดร. สมศรี ตัวอย่าง  (kid: somsri.example)
  fingerprint: ed25519:7c2b9e4f1a3d0c87
  contentHash: 10d5c44cc278d863f9d4b8ee1ed669bcc40baceaa6f74bad78ff10c3d859b033
  signature:   bm5Hb55PtAwQd/Udiue+IyPTjhJ3...  (base64, 88 chars)
  version:     2
  log seq:     2

Verify it:
  npm run verify                           (CLI lint, crypto-verifies all signatures)
  http://localhost:3000/verify/meloxicam   (browser-side verify, no server trust)
5

Open the PR, the entry becomes expert-reviewed

3 min

Final PR for the signed entry:

$ git checkout -b sign/meloxicam
$ git add content/drugs/meloxicam.json content/log/transparency-log.jsonl
$ git commit -m "Sign meloxicam after editorial review"
$ git push origin sign/meloxicam
$ gh pr create --title "Sign meloxicam — first faculty review" --fill

Once a maintainer merges, the entry moves from ◆ Verified to ✓ Expert-reviewed (emerald) on the live site, and your name + title + date show up in the trust stamp + the transparency log + the chain of trust visualization. Anyone who fetches the entry — now or 10 years from now — can verify in their browser that you specifically vouched for it on this date.


Quick reference

Pre-signing checklist

  • I read every clinical section in full (not skimmed)
  • I cross-checked at least one dosage against an independent authoritative source
  • I confirmed every dose cell still matches the source it cites
  • I corrected any Thai phrasing that read awkwardly to a Thai vet practitioner
  • npm run check passes locally with no errors
  • I added myself to reviewedBy with full title + affiliation
  • I am signing for content I reviewed — not delegating to a student or RA

Boundaries

When NOT to sign

  • You skimmed instead of reading every line
  • You signed off on a dose without opening the source it cites
  • A student helped translate but you didn't re-read after their edits
  • You're uncertain about a specific dose — flag the cell as needing further review instead
  • You feel pressure from the maintainer team — let them know rather than sign reluctantly