An AI quiz generation web application powered by Google Gemini AI that creates customised quizzes on any topic. It also allows users to choose the number of questions and a specific difficulty. All quiz data is protected and persisted in the database for future visit, and is displayed in the Dashboard page. Built with modern web technologies for a seamless user experience.
└── 📁IntelliCheck
└── 📁.clerk
└── 📁.tmp
├── keyless.json
├── README.md
├── telemetry.json
└── 📁app
└── 📁about
├── page.tsx
└── 📁api
└── 📁generate-explanation
├── route.ts
└── 📁generate-questions
├── route.ts
└── 📁save-quiz
├── route.ts
└── 📁components
└── 📁dialogs
├── AsianAlertDialog.tsx
├── ResultPageDialog.tsx
├── TimeUpDialog.tsx
└── 📁quiz_related
├── QuizHistory.tsx
├── QuizQuestions.tsx
├── QuizSetup.tsx
├── AnimatedTransition.tsx
├── AppSideBar.tsx
├── CountDown.tsx
├── DashBoard.tsx
├── ModeToggle.tsx
├── NavBar.tsx
├── SideBar.tsx
├── ThemeProvider.tsx
└── 📁dashboard
├── error.tsx
├── loading.tsx
├── page.tsx
└── 📁quiz
├── page.tsx
└── 📁quiz-history
├── page.tsx
└── 📁results
├── page.tsx
└── 📁sign-in
└── 📁[[...sign-in]]
├── page.tsx
└── 📁sign-up
└── 📁[[...sign-up]]
├── page.tsx
└── 📁user-profile
└── 📁[[...user-profile]]
├── page.tsx
├── favicon.ico
├── globals.css
├── layout.tsx
├── page.tsx
└── 📁components
└── 📁ui
├── alert-dialog.tsx
├── button.tsx
├── card.tsx
├── collapsible.tsx
├── dropdown-menu.tsx
├── input.tsx
├── label.tsx
├── navigation-menu.tsx
├── progress.tsx
├── select.tsx
├── separator.tsx
├── sheet.tsx
├── sidebar.tsx
├── skeleton.tsx
├── sonner.tsx
├── spinner.tsx
├── tooltip.tsx
└── 📁hooks
├── use-mobile.ts
└── 📁lib
└── 📁db
├── dashboard_data.ts
├── quiz_history.ts
└── 📁generated
└── 📁prisma
└── 📁internal
├── class.ts
├── prismaNamespace.ts
├── prismaNamespaceBrowser.ts
└── 📁models
├── Question.ts
├── Quiz.ts
├── User.ts
├── browser.ts
├── client.ts
├── commonInputTypes.ts
├── enums.ts
├── models.ts
├── db.ts
├── quiz-action.ts
├── utils.ts
└── 📁prisma
└── 📁migrations
└── 📁20260325092431_intelli_check_database
├── migration.sql
├── migration_lock.toml
├── schema.prisma
└── 📁public
├── file.svg
├── globe.svg
├── next.svg
├── vercel.svg
├── window.svg
└── 📁type
├── answer.tsx
├── count_down.tsx
├── question.tsx
└── 📁utils
├── difficulty_rules.tsx
├── format_time.tsx
├── sample_questions.tsx
├── shuffle.tsx
├── validate_input.tsx
├── .env
├── .gitignore
├── components.json
├── eslint.config.mjs
├── LICENSE
├── next-env.d.ts
├── next.config.ts
├── package-lock.json
├── package.json
├── postcss.config.mjs
├── prisma.config.ts
├── proxy.ts
├── README.md
└── tsconfig.json
-
🤖 AI Generated Quizzes
Leveraged Google Gemini AI for instant quiz generation on any user-provided topic. -
🔐 Secure Authentication and User Account
Secure sign-in and user management powered by Clerk. -
📂 Quiz History and Persistence
All quizzes are saved and retrievable using Prisma ORM and Neon (PostgreSQL). -
🌟 Modern UI and Animation
Clean, responsive design built with Tailwind CSS and Framer Motion for optimal user interface and experience. -
⚡ Fast and Scalable
Built on Next.js App Router with TypeScript for maintainability and performance. -
💀 Asian difficulty
For those who wants to challenge themselves, Asian difficulty provides extremely hard question(s), all of which may look similar to the others, requiring exceptional logical thinking skills and well-rounded knowledge of the chosen topic. In addition, the given time for this mode is short (around 45 seconds), imitating "real Asian" learning style.
(Note: Please be advised that the Asian difficulty mode was initially made for fun, and for those who want to have some challenges. No offense to anyone if NO correct answers were made!!!)
- Next.js (App Router)
- Tailwind CSS
- TypeScript
- Framer Motion
- Shadcn
- Next.js API Routes
- Google Gemini AI**
- Prisma ORM
- Neon (PostgreSQL)
- Clerk
As a university student, I identified a common gap in exam preparation: course materials alone are often insufficient for effective revision, while general AI tools can produce overly broad or unfocused content.
To address this, I built an AI-powered quiz generation system that creates targeted, high-quality practice questions tailored to specific topics. The goal is to streamline revision by delivering relevant, concise, and exam-focused content—helping students study more efficiently and with greater confidence.
- User signs in securely.
- System redirects authenticated user to the dashboard.
- User clicks on the Create Quiz button on the dashboard.
- System redirects user to the quiz setup page.
- User enters the topic, selects the number of questions, and chooses the difficulty.
- System generates the question(s) based on the user-provided information.
- User goes through all the question(s).
- System calculates score based on the correct answer(s) and redirects the user to the result page.
- User sees the answers to the questions, with the wrong one(s) accompanied by an explanation.
- System persists the quiz data into the database so that the user can revisits the quiz history anytime.
To run this platform on your local host, please create an .env file with the following APIs:
GEMINI_API_KEY=
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=
CLERK_SECRET_KEY=
NEXT_PUBLIC_CLERK_SIGN_IN_URL=
NEXT_PUBLIC_CLERK_SIGN_UP_URL=
DATABASE_URL=# Clone the GitHub repository
git clone https://github.com/GabenNguyen/IntelliCheck.git
# Install the dependencies
npm install
or
yarn install
# Generate Prisma client
npx prisma generate
# Run database migration
npx prisma migrate dev
# Start the development server
npm run devAfter this project, here are the things that I have learnt:
- Real-world full-stack development process: This project is a great way for me to learn the complete process of a full-stack web development.
- Secure authentication: I learnt how to secure user sign-in and sign-up process using Clerk
- Database design with Prisma: This project taught me how to design the database and how to use Prisma ORM effectively.
- Practical AI Integration: Initially, I intended to make several question sets with specific topics like History, Art, Computer Science, etc. However, I found that it was static and boring so I decided to integrate Google Gemini AI into this project. This allows the website question setup process more dynamic as users can choose any topics they want, making it more engaging.
- Modern UI/UX design: The website pages at first were boring with simple design. Due to this issue, I started to learn some modern UI/UX design such as glassmorphism to make the pages more beautiful and attractive.
More features and functions for this project will be added in the future such as:
- Analytics & leaderboard dashboard pages.
- Quizzes generated from PDF file.
- PDF export
- Streak counter
Ba Hoa (Gaben) NGUYEN
Web developer | AI-Focused Projects | Hard-working | Fast-learner | Team Player
👨🏻💻 Social Media:
LinkedIn / GitHub / Facebook
📞 Contact via:
Email: nguyenbahoa04@gmail.com
Phone: (+61) 481 991 586
For more information, please visit this website.