Created by: Kostyshyn Pavlo
Node.js Version: v18.20.7
A modern web platform for creating and taking knowledge tests with support for various question types and user management system.
- ✅ Registration and Authentication with "teacher" role
- ✅ Test Creation with flexible configuration
- ✅ Question Pool System - organizing questions by topics
- ✅ Multiple Question Types:
- Single correct answer (single_choice)
- Multiple correct answers (multiple_choice)
- Text-based answers (text)
- True/False (true_false)
- ✅ Question Weight Configuration for different pools
- ✅ Unique Test Code Generation for sharing
- ✅ Access Management to tests (activate/deactivate)
- ✅ Test Statistics View for each test
- ✅ Student Results Monitoring
- ✅ Registration and Authentication with "student" role
- ✅ Test Search by Code for taking tests
- ✅ Test Taking with all question types
- ✅ Automatic Score Calculation considering question weights
- ✅ Test History View with grades and results
- ✅ User Profile with personal statistics
- Next.js 15.2.0 - React framework with SSR
- React 19.0.0 - UI library
- Tailwind CSS 4.0.9 - styling
- Framer Motion 12.4.10 - animations
- Radix UI - interface components
- Lucide React - icons
- Next.js API Routes - server logic
- Sequelize 6.37.5 - ORM for database operations
- PostgreSQL - main database
- JWT - authentication
- bcryptjs - password hashing
- TypeScript 5 - type safety
- ESLint - code linting
- Sequelize CLI - database migrations
- ts-node - TypeScript execution
- Users - users (teachers and students)
- Tests - tests
- Questions - questions with different types
- TestConfigs - question pool configurations
- TestResults - test completion results
- Answers - student answers
- Teacher → Tests (1:many)
- Test → Questions (1:many)
- Test → Pool Configurations (1:many)
- Student → Test Results (1:many)
- Question → Answers (1:many)
- JWT Tokens with 10-hour expiration
- HttpOnly Cookies for security
- User Roles:
student|teacher - Authorization Middleware for endpoint protection
- Password Hashing with bcrypt
- Single Choice - selecting one correct answer
- Multiple Choice - selecting multiple correct answers
- Text - free text answer
- True/False - yes/no questions
- Question Weights - each question has its own weight
- Automatic Score Calculation
- Attempt Tracking - students can take tests multiple times
- Statistics for teachers on each test
- Node.js v18.20.7+
- PostgreSQL
- npm or yarn
- Clone Repository
git clone <repository-url>
cd testing-app- Install Dependencies
npm install- Database Setup
# Create .env.local file with database settings
DATABASE_URL=postgresql://username:password@localhost:5432/testing_app
JWT_SECRET=your_jwt_secret_key- Start Development Server
npm run dev- Open Browser
http://localhost:3000
npm run dev- start development server with Turbopacknpm run build- build for productionnpm run start- start production servernpm run lint- run ESLint code checknpm run migrate- run database migrationsnpm run migrate:undo- rollback migrationsnpm run seed- populate database with test data
- Dark Theme by default
- Responsive Design for all devices
- Video Background on homepage
- Modern UI with Tailwind CSS
- Smooth Animations with Framer Motion
- Number of question pools
- Number of questions per pool
- Question weights for different pools
- Test activity status
- HttpOnly cookies
- JWT tokens
- Authorization middleware
- Data validation
Kostyshyn Pavlo - developer and project architect