Skip to content

fam007e/examquest

ExamQuest: Interactive O & A Level Paper Downloader

Build Status License: MIT Python 3.10+ React 19

ExamQuest is an asynchronous platform that simplifies retrieving past exam papers for Cambridge (CAIE) and Edexcel boards. It features context-aware filtering, parallelized scraping, automated merging, and an interactive web dashboard.


Tech Stack

ExamQuest is built using modern web and backend technologies:

  • Frontend: React 19, Vite 7 (Rolldown compiler), Tailwind CSS v4, Framer Motion, and Lucide React.
  • Backend: FastAPI (Python 3.10+), Uvicorn, BeautifulSoup4, and Brotli compression.
  • Scraper & CLI: Asynchronous HTTP client, User-Agent rotation, rate-limiting, and PyPDF2 / pdfmerger.sh for PDF utilities.

Features

Web Dashboard

  • Glassmorphism: Sleek dashboard styling with smooth transitions and animations.
  • Lucide Icons: Specialized visual markers for major subjects (Physics, Chemistry, Mathematics, etc.).
  • Context-Aware Search: Fast searching by subject name or code, plus direct search for papers, years, and mark schemes.
  • Favorites: Star frequently used subjects for quick access.
  • Mass Download & Merge: Download multiple papers simultaneously and merge them into a single PDF.

Command Line Interface (Legacy CLI)

  • A standalone command-line downloader for advanced users.
  • Clean terminal formatting and asynchronous scraping logic.

Prerequisites

Ensure the following are installed before running:

Requirement Version Download
Python 3.10+ python.org
Node.js 18+ nodejs.org

Tip

On Windows, check "Add Python to PATH" during installation.

Verify your setup:

python3 --version   # or `python --version` on Windows
node --version

Quick Start

The fastest way to run the application is with the integrated runner script:

  1. Clone the repository:

    git clone https://github.com/fam007e/examquest.git
    cd examquest
  2. Run the Interactive Dashboard:

    python run_app.py

    This script automatically creates a Virtual Environment (.venv), installs all frontend and backend dependencies, and launches the app.

  3. Run the Legacy CLI:

    python o_and_a_lv_qp_sdl.py

Project Structure

  • /backend: FastAPI service handling the scraper logic and PDF processing.
  • /frontend: React dashboard compiled with Vite 7 and Tailwind CSS v4.
  • o_and_a_lv_qp_sdl.py: The original standalone CLI script.
  • run_app.py: The unified automation runner.

Community Standards

We follow standard GitHub community guidelines:


License

This project is licensed under the MIT License - see the LICENSE file for details.


Note

Please use this tool responsibly. The backend uses asynchronous requests with rate-limiting, jitter, and User-Agent rotation to avoid overwhelming source websites. Respect Xtremepapers and PastPapers.co; this tool is for educational use only.

About

High-performance dashboard for CAIE & Edexcel past papers. Features real-time filtering, automated merging, and a premium UI.

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors