Asia/Kolkata
Projects

MAKAUT PYQs

MAKAUT PYQs – project image by Supratim Mondal
February 23, 2026
Finding previous year question papers (PYQs) for Maulana Abul Kalam Azad University of Technology (MAKAUT) was always a challenge for students. The papers were scattered across outdated drive links, forum threads, or expensive physical booklets. To solve this, I built MAKAUT PYQs, a centralized portal containing over 4,000 question papers organized by course (B.Tech, BCA, BBA, M.Tech), department, and semester. The application provides high-speed search, secure PDF previewing, and a community contributions system. To manage a catalog of 4,000+ files efficiently, I chose Supabase:
  • PostgreSQL Database: Stores metadata for each question paper (subject name, subject code, course, semester, year, and storage path).
  • Supabase Storage: Hosts the PDF files in a secure bucket. Instead of exposing direct public URLs to the PDF files...which makes them easy to scrape or hotlink...the application generates temporary, signed URLs that expire after 15 minutes.
Because students often search using abbreviations or typos (e.g., searching "math 3" instead of "Mathematics-III"), the backend uses PostgreSQL Full-Text Search (FTS) combined with a custom synonym dictionary mapping common subject codes and abbreviations. This ensures relevant papers are returned instantly. To protect the bandwidth of the storage bucket, the application uses a custom React-based PDF viewer wrapper. It disables print/download buttons for non-registered users and blocks basic right-click behaviors to encourage users to register and contribute to the library.
  • Centralized Catalog: 4,000+ question papers covering dozens of subjects.
  • Fast Search: Find papers by subject name, subject code, or department.
  • Mobile-First Layout: The UI is responsive, optimized for students checking papers on their mobile devices during study breaks.
  • Community Contribution: A portal allowing students to upload scanned question papers, which are reviewed before insertion into the database.
  • Scraping and Bandwidth Abuse: Exposing raw PDFs directly to users quickly drained the monthly bandwidth limits. I resolved this by streaming the PDF data through a serverless API route that caches the file chunks, preventing direct access to the storage bucket.
  • Metadata Tagging: Tagging 4,000 files manually was impossible. I wrote a Node.js utility script that parsed the filenames using regular expressions to extract subject codes, years, and departments, automatically populating the Postgres database.