A lightweight quiz platform for departments to create, publish and run quizzes for students and teams.
Rextro is a focused web application to manage quizzes, teams and leaderboards for educational events. It provides a simple admin interface for creating quizzes and a responsive frontend for participants. This repository contains a Next.js frontend and a Node/Express backend (TypeScript).
- Team registration and management
- Timed quiz sessions with auto-submit
- Simple question bank (text / image support)
- Per-member scoring and team aggregation
- Basic anti-cheat measures (fullscreen, tab switch detection)
- Responsive Next.js frontend
Client (Next.js) ⇄ REST API (Express) ⇄ Database (MongoDB)
- Frontend: Next.js (App Router), React, TypeScript
- Backend: Node.js, Express, TypeScript
- Database: MongoDB (planned / recommended)
- Frontend: Next.js + TypeScript
- Backend: Node.js (Express) + TypeScript
- Database: MongoDB (recommended)
- Styling: Tailwind CSS (optional)
- Tooling: ESLint, Prettier, Git
- frontend/ — Next.js application (app router)
- app/layout.tsx — Layout component
- app/page.tsx — Landing / entry page
- backend/ — API server (Express)
- public/ — Static assets
- README.md — Project documentation
Prerequisites:
- Node.js (v18+ recommended)
- npm
- (Optional) MongoDB Atlas
- Install dependencies
# frontend
cd frontend
npm install
# backend
cd ../backend
npm install- Run development servers
# run frontend
cd frontend
npm run dev
# run backend
cd backend
npm run dev- Frontend: http://localhost:3000
- Backend (if used): http://localhost:5000 (default, if backend configured)
Environment variables: create .env or .env.local files in frontend/backend as needed. Keep secrets out of version control.
- Follow TypeScript types and run the typechecker regularly.
- Use ESLint and Prettier for style consistency.
- Add unit tests for new logic (Jest / React Testing Library recommended).
Common scripts (may vary by package.json):
- npm run dev — start dev server
- npm run build — build for production
- npm start — start production server
- npm test — run tests
- npm run lint — lint code
This repository follows a simple Git branching model inspired by Git Flow and trunk-based practices to keep releases predictable and development organized.
Branches
- main
- Production-ready code only. All releases are tagged from this branch.
- develop
- Integration branch for completed feature work. Stable for QA and staging.
- feature/*
- Short-lived feature branches created off
develop. - Naming: feature/ (e.g., feature/team-registration)
- Short-lived feature branches created off
- fix/*
- Bugfix branches created off
developormaindepending on severity. - Naming: fix/ (e.g., fix/login-timeout)
- Bugfix branches created off
- hotfix/*
- Emergency fixes created off
mainand merged back intomainanddevelop. - Naming: hotfix/
- Emergency fixes created off
- release/*
- Optional release branches for final stabilization before merging into
main. - Naming: release/vX.Y.Z
- Optional release branches for final stabilization before merging into
Workflow
- Create a feature branch from
developfor each new task. - Keep branches small and focused. Commit often with clear messages.
- Open a Pull Request (PR) from feature branch → develop.
- Include description, related issue/identifier, and tests.
- Use code review and automated checks (CI) before merging.
- Merge squash or merge commit according to team preference, but keep history readable.
- For production releases:
- Create a
release/*branch (optional) fromdevelop, finalize, then merge tomain. - Tag the merge commit on
main(e.g., v1.2.0). - Merge
mainback intodevelopto keep branches synced.
- Create a
- For hotfixes:
- Branch from
main, fix and merge intomain, tag the release, then merge intodevelop.
- Branch from
Branch naming examples
- feature/team-registration
- feature/quiz-timer
- fix/quiz-timezone
- hotfix/login-error
- release/v1.0.0
Pull Request checklist
- Branch targeted to correct base (develop or main)
- Descriptive title and summary
- Linked issue or task (if available)
- Tests added/updated
- CI passing
- Reviewer assigned
- Fork the repository and create a feature branch.
- Follow Conventional Commits for commit messages.
- Add tests for new functionality.
- Open a Pull Request to
develop(ormainif it's a hotfix). - Keep contributions small and focused.
MIT