SnakklyB1 / B2
Norskprøven Muntlig · Simulator Backend

Backend control plane is active. This service powers the Snakkly Norwegian oral exam practice app (Expo Go & Web) via a deterministic exam state machine, OpenAI STT/LLM, ElevenLabs TTS, Drizzle ORM, and Neon PostgreSQL.

Web Admin Portal
Create and manage B1/B2 oral exams and question pools (Del 1, Del 2 & Del 3).
Open Admin Portal →

API Endpoints

  • GET /api/exam/topics Returns active B1/B2 exam topics and user audio quota.
  • POST /api/exam/start Verifies quota, picks a random (or specified) active exam & Del 3 question subset, creates a new exam session, and returns the examiner opening greeting for Del 1.
  • POST /api/exam/:sessionId/turn Accepts recorded candidate audio, transcribes speech, advances the deterministic exam state machine (Del 1 → Del 2 → Del 3), and generates examiner or AI co-candidate responses.
  • GET /api/exam/:sessionId/speech/:turnIndex Streams MP3 voice synthesis from ElevenLabs (with OpenAI TTS fallback).
  • POST /api/exam/:sessionId/finish Finalizes session usage and triggers post-exam B1/B2 rubric evaluation in the background.
  • GET /api/exam/:sessionId/results Polls session status, transcript, and CEFR B1/B2 rubric evaluation.
  • GET /api/quota & POST /api/quota User quota inquiry and top-up.
  • GET / POST / PATCH / DELETE /api/admin/exams Web Admin Portal endpoints for creating and managing exams and question pools.