QuizQuest is a collaborative project developed as part of the Lighthouse Labs midterm project. It is a quiz app that allows users to create, share, and take quizzes, as well as view and share their results. The app demonstrates the technical and collaborative skills of the development team.
- Darshita (@Darshita-04)
- James (@ArcaneCipher)
- Javin (@h1tokiri)
- Kattt (@Kattt888)
The repo: https://github.com/ArcaneCipher/QuizQuest
- About the Project
- Features
- Tech Stack
- Database Design
- Getting Started
- Dependencies
- Future Enhancements
QuizQuest is a web application that allows users to:
- Create quizzes with custom questions and answers.
- Share quizzes via unique URLs.
- Attempt quizzes and view results.
- View a list of public quizzes.
- Share quiz attempt results with others.
This project was developed to simulate real-world team collaboration and software development processes, emphasizing communication, collaboration, and technical skills.
- Create quizzes with custom questions and answers.
- View a list of public quizzes.
- Share quizzes using unique URLs.
- Attempt quizzes and view results.
- Share a link to quiz attempt results.
- User authentication for managing quizzes and attempts.
- Analytics for quiz creators (e.g., number of attempts, average scores).
- Timer for quiz attempts.
- HTML/CSS: Basic structure and styling.
- SASS: A CSS preprocessor for enhanced styling.
- JavaScript & jQuery: Adds dynamic interactivity.
- AJAX: Asynchronous data fetching without page reloads.
- Bootstrap: Provides responsive UI components.
- Node.js: Server-side JavaScript runtime.
- Express.js: Web framework for routing and server logic.
- cookie-session: Manages user sessions securely.
- bcrypt: Hashes passwords for secure authentication.
- dotenv: Handles environment variables.
- morgan: Logs HTTP requests for debugging.
- PostgreSQL: Relational database to store user data, quizzes, and results.
- pg: PostgreSQL client for Node.js.
- EJS: Templating engine for rendering dynamic pages.
- d3.js: Visualizes data (e.g., quiz statistics).
- nodemon: Automatically restarts the server during development.
- chalk: Adds color to console logs for better readability.
- Users: Manages user data and authentication.
- Quizzes: Stores quiz details and settings.
- Questions: Stores quiz questions.
- Answers: Stores potential answers and correctness.
- Results: Tracks user attempts and scores.
- User Answers: Tracks answers selected by users.
The database design connects users, quizzes, questions, and results through a relational schema:
Ensure you have the following installed:
- Node.js (10.x or above)
- npm (5.x or above)
- PostgreSQL (6.x or above)
-
Clone the repository:
git clone [email protected]:ArcaneCipher/QuizQuest.git cd QuizQuest
-
Set up the
.env
file:cp .env.example .env
Update the
.env
file with your local configuration:DB_USER=labber DB_PASSWORD=labber DB_NAME=midterm
-
Install dependencies:
npm install
-
Rebuild SASS binaries (if necessary):
npm rebuild node-sass
-
Reset the database:
npm run db:reset
-
Start the server:
npm run local
-
Open the app in your browser:
The project relies on the following dependencies:
- bcrypt:
^5.1.1
- chalk:
^2.4.2
- cookie-session:
^2.1.0
- d3:
^7.9.0
- dotenv:
^2.0.0
- ejs:
^2.6.2
- express:
^4.17.1
- morgan:
^1.9.1
- pg:
^8.5.0
- sass:
^1.35.1
- nodemon:
^2.0.10
- Customizable Quiz Appearance:
- Allow users to add themes, colors, or multimedia to their quizzes.
- Real-Time Multiplayer Quizzes:
- Enable users to compete in quizzes simultaneously.
- Advanced Analytics:
- Provide creators with detailed insights, such as question difficulty or user performance trends.
- Gamification:
- Introduce badges, leaderboards, and achievements to enhance user engagement.
- Mobile Optimization:
- Optimize the app for mobile devices with touch-friendly interfaces.
For more details, visit the QuizQuest Repository.