A modern, open-source GATE exam practice and preparation app designed to help you ace your exams.
Report Bug
·
Request Feature
GATEQuest is a feature-rich, user-friendly application built to provide a comprehensive and engaging platform for GATE exam aspirants. It offers a clean, modern interface with a focus on usability and performance.
- Practice Questions: Access a vast library of GATE PYQ questions (currently only CS), neatly organized by subject, year, and difficulty.
- Bookmarking: Save challenging questions for later review and focused practice.
- Performance Tracking: Monitor your progress with detailed statistics on accuracy and study time.
- Smart Revision: Use Leitner System to effectively revise your topics.
- Topic Test: Use the topic test feature to attempt questions in a timed environemnt.
- Built-in Timer: Simulate exam conditions with an automatic timer for each question.
- Light & Dark Modes: Switch between themes for a comfortable viewing experience.
- Audio Feedback: Get instant sound cues for correct and incorrect answers.
- Secure Authentication: Sign in safely with your Google account, powered by Supabase.
- Cloud Sync: Your progress and profile are securely synced across devices.
- PWA Support: Install GATEQuest as a Progressive Web App to get the feel of a native app in your system.
- Collapsible Sidebar: Minimize distractions and focus on what matters most.
| Category | Technology |
|---|---|
| Frontend | |
| Backend | |
| State Mgmt | |
| Animations | |
| Icons | |
| IndexedDB |
GateQuest/
├── public/ # Static assets (logo, sounds, favicons)
├── src/
│ ├── components/ # Reusable React components
│ ├── context/ # React Context providers
│ ├── data/ # Static data (FAQs, subjects)
│ ├── hooks/ # Custom React hooks
│ ├── pages/ # Top-level page components
│ ├── routes/ # Route definitions
│ ├── types/ # TypeScript types and interfaces
│ ├── utils/ # Utility functions
│ ├── App.tsx # Main application component
│ ├── main.tsx # Application entry point
│ └── index.css # Global and Tailwind CSS styles
│ └── helper.ts # Helper functions which are used throughout app
├── supabase/ # Supabase local development configuration
├── .github/ # GitHub-specific files (workflows, templates)
├── .husky/ # Husky pre-commit hooks
├── eslint.config.ts # ESLint configuration
├── tsconfig.json # TypeScript configuration
├── vite.config.ts # Vite configuration
├── package.json # Project dependencies and scripts
└── README.md # This file
To get a local copy up and running, follow these simple steps.
- Node.js (v18.x or later)
- npm
- Supabase CLI
- Clone the repository:
git clone https://github.com/Razen04/GateQuest.git cd GateQuest - Install dependencies:
npm install
- Set up local Supabase instance:
- Start the Supabase services:
supabase start
- The CLI will output your local Supabase URL, anon key, and service role key.
- Read more about the Supabase Setup in SUPABASE_GUIDE
- Read more about the Supabase Documentation of the project in SUPABASE_DOCS
- Start the Supabase services:
- Set up environment variables:
- Create a
.envfile in the root directory. - Add your Supabase project URL and anon key:
VITE_SUPABASE_PROJECT_URL=your_supabase_url VITE_SUPABASE_ANON_PUBLIC_KEY=your_supabase_anon_key
- Create a
- Run the development server:
npm run dev
- Build for production:
npm run build
npm run dev: Starts the development server.npm run build: Builds the app for production.npm run lint: Lints the codebase using ESLint.npm run format: Formats the code using Prettier.npm test: Runs tests using Vitest.npm run supabase:start: Starts the local Supabase Docker container.npm run supabase:stop: Stops the local Supabase Docker container.
Contributions are what make the open-source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement".
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Added some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request
Please read our Contributing Guidelines and Code of Conduct for more information.
Distributed under the MIT License. See LICENSE for more information.






