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 and ISRO PYQ questions across multiple branches (CS, DA, EC, EE), neatly organized by subject, year, and difficulty.
- Multi-Branch Support: Seamlessly switch between target branches, with universal subjects (like General Aptitude and Engineering Math) dynamically syncing your progress and mistakes across your profiles.
- Bookmarking: Save challenging questions for later review and focused practice.
- Performance Tracking: Monitor your progress with detailed statistics on accuracy and overall progress count.
- Smart Revision: Use the Leitner System to effectively revise your weak topics with auto-generated weekly recovery sets.
- Topic Test: Use the topic test feature to attempt questions in a timed environment.
- 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.
| Category | Technology |
|---|---|
| Frontend | |
| Backend | |
| State Mgmt | |
| Animations | |
| Icons | |
| IndexedDB |
GateQuest/
.
├── public/ # Static assets
│ ├── ai_providers/ # AI provider logos
│ ├── audio/ # App sound effects
│ ├── icons/ # PWA icons & branding
│ └── screenshots/ # app screenshots
│
├── src/
│ ├── app/ # App entry, layout, routing, providers
│ │ ├── layout/ # Navbar, sidebar, responsive layout
│ │ ├── providers/ # Global React context providers
│ │ └── routes/ # Route definitions
│ │
│ ├── features/ # Feature-based architecture
│ │ ├── dashboard/ # Stats, streaks, study plan
│ │ ├── practice/ # Practice question flow
│ │ ├── questions/ # Question engine & renderers
│ │ ├── smart-revision/ # Weekly smart revision system
│ │ ├── topic-test/ # Topic-wise test engine
│ │ ├── auth/ # Authentication
│ │ ├── settings/ # User/app settings
│ │ ├── donations/ # Donation system
│ │ ├── landing/ # Landing page
│ │ └── about/ # About page
│ │
│ ├── shared/ # Shared reusable code
│ │ ├── api/ # Shared API utilities
│ │ ├── components/ # Reusable UI components
│ │ │ └── ui/ # Base UI primitives
│ │ ├── hooks/ # Global reusable hooks
│ │ ├── data/ # Static configs/data/constants
│ │ ├── types/ # Global TypeScript types
│ │ └── utils/ # Shared utility functions
│ │
│ └── storage/ # Local storage/repository layer
│
├── supabase/ # Backend & database layer
│ ├── migrations/ # SQL migrations & RPC functions
│ ├── snippets/ # SQL experimentation snippets
│ ├── config.toml # Supabase config
│ └── seed.sql # Seed data
│
├── .github/ # GitHub templates/config
├── .husky/ # Git hooks
│
├── README.md # Project documentation
├── CONTRIBUTING.md # Contribution guide
├── CODE_OF_CONDUCT.md # Community guidelines
├── CHANGELOG.md # Release history
│
├── package.json # Dependencies & scripts
├── vite.config.ts # Vite configuration
├── vitest.config.ts # Vitest configuration
├── eslint.config.ts # ESLint configuration
└── tsconfig.json # TypeScript configuration
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](https://github.com/Razen04/GateQuest.git) cd GateQuest - Install dependencies:
npm install
- Set up local Supabase instance:
- Start the Supabase services (need Docker installed, read more about it in the guide):
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 (need Docker installed, read more about it in the guide):
- 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.






