DSAQuest is a web application designed for programmers to practice Top Data Structures and Algorithms (DSA) Sheet's Questions, Track their progress, and Mark questions for later revision.
DSAQuest provides a structured approach to mastering DSA by offering categorized questions with user-friendly features like progress tracking and bookmarking for easy revision.
- Question Categories: Organized DSA questions by topic (e.g., Arrays, Trees, Graphs, etc.).
- Progress Tracking: Track your progress for each question you solve.
- Bookmarks: Mark questions for later revision or focus.
- User Authentication: Secure login and signup functionality.
- Responsive Design: Works seamlessly across desktop and mobile devices.
- Data Persistence: User data is stored and managed efficiently, allowing users to resume from where they left off.
-
Frontend:
- React.js
- Tailwind CSS
-
Backend:
- Node.js
- Express.js
- MongoDB (for storing user data and questions)
-
Authentication:
- Clerk (for user signup and login)
-
Additional Libraries:
- react-hook-form (for handling form inputs)
- axios (for API requests)
- react-icons (for iconography)
Ensure you have the following installed:
- Node.js
- MongoDB
- Clerk API Key (for authentication)
-
Clone the repository:
git clone https://github.com/your-username/DSAQuest.git cd DSAQuest
-
Install the dependencies for the frontend:
cd client npm install
-
Install the dependencies for the backend:
cd ../server npm install
-
Set up the environment variables:
- Create a
.env
file in theserver
directory and add the following:MONGO_URI=<your-mongodb-uri> CLERK_API_KEY=<your-clerk-api-key> PORT=5000
- Create a
-
Start the development server:
cd server npm run dev
-
Start the React app:
cd client npm start
-
client: Contains the React.js frontend.
src/
: Main source code for the React app.components/
: React components used across the app.pages/
: Pages like home, login, signup, etc.
-
server: Contains the Node.js backend.
routes/
: API routes for handling requests.models/
: MongoDB models for user data and DSA questions.
- Leaderboard: Show user rankings based on the number of solved questions.
- Difficulty Levels: Add difficulty filters (easy, medium, hard) for each question.
- Discussion Forum: Allow users to discuss solutions and approaches for each question.
- Custom Tests: Allow users to create custom test sets based on selected topics.
If you'd like to contribute to the project, feel free to create a pull request or open an issue for discussion.
This project is licensed under the MIT License.