Dr. Claw
Full-stack research workspace. From idea to paper with AI agents.
Aptitude testing and lead management for education institutes.
EducationTypeScript · PLpgSQLGitHub @lwspuneOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗Aptitude screening for NDA coaching admissions. Staff issue a 15-question, 15-minute reasoning test to a candidate; the parent receives the link on WhatsApp, the candidate takes it within three hours, and it grades itself.
Handles minors' personal data. This repository must stay private.
npm install
cp .env.example .env.local # then fill it in — see below
npm run dev
.env.local needs the Supabase project URL, anon key and service-role key,
plus NEXT_PUBLIC_APP_URL and a CRON_SECRET. It is gitignored and must stay
that way — the service-role key bypasses every RLS policy.
Create the first staff account, since the Supabase dashboard cannot set the role that RLS reads:
npm run staff:add -- [email protected] <password> superadmin
npm run staff:list # flags any account with no role
Seed the item bank:
npm run items:seed -- --live
Issue a test link without the console, for local testing:
npm run issue -- "Candidate Name" 9876543210
Run all of these before calling anything done.
| Command | What it covers |
|---|---|
npm run lint | ESLint, including the react-hooks rules |
npm run typecheck | tsc --noEmit |
npm test | 111 unit tests over the pure modules |
npm run test:integration | 35 tests against a real database |
npm run items:lint | Item shape, duplication, answer-length tells |
npm run build:check | Production build, into .next-verify |
npm run db:verify | Schema and constraints (empty database only) |
npm run db:verify-rls -- <email> <pass> | RLS as a real staff session (empty database only) |
Never run next build while next dev is live. It overwrites the .next
directory the dev server is serving from, every asset 404s, and nothing in the
output explains why. npm run build:check writes to .next-verify instead.
The two database probes write rows, so they refuse to run against a database holding real leads and exit 2 — a skip, not a failure. They are development tools, not a production health check.
Migrations live in supabase/migrations and are applied deliberately, never by
a deploy:
npx supabase db push --db-url "postgresql://postgres:<password>@db.<ref>.supabase.co:5432/postgres"
Rules are enforced by constraints and triggers rather than application code —
the reissue cap, the MCQ/numeric item shape, answer idempotency, and the
assessment state machine. npm run db:verify checks the database actually
rejects what it claims to.
See DEPLOY.md. Two things that will bite:
NEXT_PUBLIC_APP_URL must be the deployed origin. The staff console
builds the candidate link from it; left at localhost, every link it produces
is unusable.