Skip to content

Repository files navigation

Mock Interview Admin Panel

Read-only admin dashboard for browsing interview sessions and reports stored in Supabase.

Features

  • OTP magic-link sign in
  • Allowlist-based access gate (admin_allowlist table)
  • Sessions list with filters (status, type, user_id, email, title, date range)
  • Session details panel (questions, summaries, reports)
  • CSV export for filtered sessions

Prerequisites

  • Node.js 22+
  • npm
  • Supabase project used by webcam-interview-analyzer-js

Environment

Copy .env.example to .env and set values:

VITE_SUPABASE_URL=https://<project-ref>.supabase.co
VITE_SUPABASE_ANON_KEY=<anon-key>

Local development

npm ci
npm run dev

Quality checks

npm run lint
npm run test
npm run build

Supabase access control setup

Apply migration in the main repo:

  • webcam-interview-analyzer-js/supabase/migrations/20260821_000001_admin_allowlist.sql

Then seed allowlisted admins, for example:

insert into public.admin_allowlist (user_id, email, is_active)
values
	('<auth-user-uuid>', 'admin@company.com', true);

Only users present and active in admin_allowlist can read cross-user interview data.

GitHub Pages deployment

Workflows are in:

  • .github/workflows/deploy-pages.yml

Deployment behavior:

  • Deploys on every push to main
  • Uses actions/upload-pages-artifact + actions/deploy-pages

Required repo secrets:

  • VITE_SUPABASE_URL
  • VITE_SUPABASE_ANON_KEY

Required repo setting:

  • GitHub Pages source set to GitHub Actions

Release checklist

Before releasing a new version:

  1. Update package.json version.
  2. Update src/version.js values (APP_VERSION, RELEASE_DATE).
  3. Add a new entry at the top of CHANGELOG.md using the existing template.
  4. Run local checks:
npm run lint
npm run test
npm run build
  1. Merge/push to main to trigger GitHub Pages deployment.

Releases

Packages

Contributors

Languages