EduClearance is a private school-to-school student transfer clearance network.
- Next.js App Router + TypeScript
- Tailwind CSS + shadcn/ui scaffold
- PostgreSQL + Drizzle ORM
- Paystack-ready env structure
- Install dependencies:
pnpm install
- Copy env placeholders:
cp .env.example .env.local
- Start local PostgreSQL at:
postgresql://postgres:password@localhost:54321/edu_clearance - Generate migrations if needed:
pnpm db:generate
- Run seed data:
pnpm db:seed
- Start the app:
pnpm dev
pnpm lintpnpm typecheckpnpm buildpnpm db:generatepnpm db:migratepnpm db:seed
pnpm db:seedis destructive local/demo setup only and refuses non-local databases unlessALLOW_DESTRUCTIVE_SEED=trueis explicitly set.- Private routes are configured with
noindex, nofollowmetadata andX-Robots-Tagheaders. - Wallet values are stored in kobo.
- Uploaded proof/evidence files are restricted to PDF, PNG, and JPEG and served as attachments with
nosniff.
- Keep production secrets only in Vercel environment variables;
.env.exampleis the only committed env template. - Use
pnpm db:migratefor production schema setup. Do not runpnpm db:seedagainst production. - Create the first production platform admin with
pnpm db:create-adminand thePLATFORM_ADMIN_*env vars listed in.env.example. - Vercel should use
pnpm vercel-build(codified invercel.json). SetRUN_DB_MIGRATIONS=trueonly for the Vercel Production environment. - Confirm production uses live Paystack keys,
NEXT_PUBLIC_APP_URL=https://educlearance.meloschool.com, and a production database before publishing.