Quiz Quest is a gamified quiz website where teachers create quests and students play timed quiz runs with health, powerups, and stats tracking.
- Frontend: React + TypeScript + Vite
- Backend: Node.js + Express + TypeScript
- Database: PostgreSQL
- ORM: Prisma
- Authentication: JWT
- Local database: Docker Desktop
- Teacher and student registration and login
- Teacher quest create, edit, and delete
- Student dashboard with available quests
- Timed quest runs with health
- Powerups: Shield, 50/50, Freeze
- Final quest summary
- Student stats page
Install these first:
- Node.js 20.19+ or 22.12+
- npm
- Docker Desktop
If the container does not already exist, run:
docker run --name quizquest-postgres -e POSTGRES_USER=postgres -e POSTGRES_PASSWORD=postgres -e POSTGRES_DB=quizquest -p 5432:5432 -d postgresIf the container already exists, run:
docker start quizquest-postgresInside the backend folder, create a file named .env.
You can copy the values from backend/.env.example.
Example:
DATABASE_URL="postgresql://postgres:postgres@localhost:5432/quizquest"
JWT_SECRET="quizquest_local_secret"Open a terminal in backend and run:
npm ci
npx prisma generate
npx prisma migrate deploy
npm run devThe backend runs on:
http://localhost:3000
Open another terminal in frontend and run:
npm ci
npm run devThe frontend runs on:
http://localhost:5173
On a fresh database, use the built-in registration pages to create these accounts.
- Username:
gandalf - Password:
wizard101
- Username:
frodo - Password:
hobbit
- Register the teacher account
- Log in as teacher
- Create at least one quest
- Register the student account
- Log in as student
- Start a quest run
- Finish the run
- Open the stats page
The only local configuration values are:
DATABASE_URLJWT_SECRET
- Keep the backend on port
3000 - Keep the frontend on port
5173 - Use
backend/.env.exampleas the template