GMATE is a Next.js study app for GMAT-style practice with topic mastery, spaced repetition, smart session selection, and an adaptive learning engine.
Install dependencies and start the app:
npm ci
npm run devThe app expects Postgres via DATABASE_URL. The repo includes a local database definition in docker-compose.yml.
Use the open-source importer for bridge GMAT-like quant content. The approved source registry currently contains only aqua-rat, which is imported as QUANTITATIVE_REASONING / PROBLEM_SOLVING and tagged as non-official.
Preview the first 200 records without writing anything:
npx tsx scripts/import-open.ts --source aqua-rat --split dev --dry-run --limit 200Import a full split once the dry run looks good:
npx tsx scripts/import-open.ts --source aqua-rat --split devImport all approved open sources and all splits:
npx tsx scripts/import-open.ts --source all --split allThe importer will:
- reject sources that are not explicitly redistributable
- keep low-confidence topic assignments out of the adaptive engine by leaving
topicId = null - preserve source provenance through
QuestionSource,sourceExternalId,sourceUrl, andsourceMetadata
For copyrighted material that you have separately licensed or extracted for local use, keep using the private importer:
npx tsx scripts/import-official.tsThat script reads data/official-questions.json, which is intentionally gitignored.
scripts/import-gmatclub.ts is deprecated and not part of the default onboarding path.
Reason:
- the source is unverified for the open-licensed pipeline
- the live payloads do not provide a reliable answer key
- importing it by default would mix legally unclear content into the question bank
The script remains in the repo only as a reference path and is blocked by default unless you explicitly opt in with GMATE_ALLOW_UNVERIFIED_SOURCES=true.
Useful checks after schema or importer changes:
npx prisma generate
npx tsx scripts/import-open.ts --source aqua-rat --split dev --dry-run --limit 200
npm run build