This project is a comprehensive solution for practicing certification exams. It includes a scraper to download exam questions and a web application (Exam Trainer) to practice them.
The solution consists of two main parts:
- Exam Scraper: A tool to download exam questions from ExamTopics.
- Exam Trainer: A local web application to practice the downloaded exams.
The easiest way to get started is using GitHub Codespaces:
- Click the green Code button on the repository page
- Select Codespaces → Create codespace on main
- Once the codespace is ready, open a terminal and run:
cd exam-trainer ./start.sh - When prompted, click Open in Browser for port 5173
- Start practicing your exams!
Note: The frontend uses a Vite proxy to communicate with the backend, so you only need to access the frontend URL (port 5173).
- Node.js (Latest LTS version recommended)
-
Clone the repository:
git clone <repository_url> cd examtopics-engine
-
Install dependencies for the backend:
cd exam-trainer/backend npm install -
Install dependencies for the frontend:
cd ../frontend npm install
To download exams in Markdown format, we recommend using the examtopics-downloader tool.
Repository: https://github.com/thatonecodes/examtopics-downloader.git
Follow the instructions in that repository to download the exams you need. Once downloaded, place the Markdown files in the exams directory of this project.
You can start both the backend and frontend services using the provided start script.
-
Navigate to the
exam-trainerdirectory:cd exam-trainer -
Run the start script:
./start.sh
This will:
- Install all dependencies automatically
- Launch the backend server on port 3001
- Launch the frontend application on http://localhost:5173
Open your browser and navigate to the frontend URL to start practicing!
exams/: Directory to store downloaded exam Markdown files.exam-trainer/: Contains the source code for the unified application.backend/: Node.js/Express backend.frontend/: React/Vite frontend.start.sh: Script to run both services simultaneously.
Make sure the backend is running. The frontend proxies API requests through Vite, so both services must be running.
Kill existing processes:
pkill -f "node server.js"
pkill -f "vite"Then run ./start.sh again.