A web application to track your Data Structures and Algorithms (DSA) problem-solving progress. This application allows you to keep track of problems you've solved, need to review, or haven't started yet.
- Problem Tracking: Keep track of all your DSA problems in one place
- Status Updates: Mark problems as "Not Started", "Review", or "Completed"
- Notes: Add notes for each problem for future reference
- Filtering: Filter problems by category, status, or search for specific problems
- Import/Export: Import problems from CSV or export your progress to CSV
- Color Coding: Problems are color-coded based on difficulty
- Responsive Design: Works well on both desktop and mobile devices
- User Authentication: Sign in with Google to save your progress
- Admin Panel: Administrators can manage problem data
- Leaderboard: Compete with other users based on problem completion
- Frontend: React.js 19, React Router 7
- UI Framework: Bootstrap 5
- Icons: Font Awesome
- Authentication: Firebase Authentication
- Database: Firebase Firestore
- Analytics: Firebase Analytics
- CSV Parsing: PapaParse
- Node.js (v14 or higher)
- npm or yarn
- Firebase account (for authentication and database)
-
Clone the repository:
git clone https://github.com/yourusername/dsa-tracker.git cd dsa-tracker
-
Install dependencies:
npm install
-
Update the Firebase configuration in
src/utils/firebase.js
with your own Firebase project details. -
Start the development server:
npm start
-
Open your browser and go to
http://localhost:3000
- Click "Sign In" in the navbar
- Sign in with your Google account
- Your progress will be saved and synced across devices
- Sign in as an admin user
- Click on your profile in the navbar and select "Admin Panel"
- Use the import function to upload a CSV file with problems
- Use the dropdown in the "Status" column to update a problem's status
- Click "Edit Notes" to add or edit notes for a problem
- Your progress is automatically saved to your account
- Use the search box to find problems by name or category
- Use the category filter to show problems from a specific category
- Use the status filter to show problems with a specific status
- Administrators can access the admin panel through the navbar dropdown
- In the admin panel, problems can be added, edited, or deleted
- Changes are saved to the database for all users
- Click on your profile in the navbar and select "Leaderboard"
- View top users ranked by problem completion count
- The leaderboard updates every 5 minutes or when revisited
/src
- Source code/components
- React components/pages
- Page components/contexts
- React contexts for state management/utils
- Utility functions including Firebase and CSV handling/styles
- CSS styles
/public
- Static assets and HTML template/build
- Production build (generated)
The expected CSV format for importing problems is:
Problem Category,Problem Name,Problem Link,Status,Notes
Example:
Medium: Yellow,Program to find the average of two numbers,,Not Started,
Easy: Green,Check whether a given number is even or odd,,Completed,This was easy!
Problems are color-coded based on difficulty:
- Very Easy: Light Blue
- Easy: Green
- Medium: Yellow
- Hard: Light Red
To set up Firebase for this application:
- Create a Firebase project at https://console.firebase.google.com/
- Enable Google Authentication in the Authentication section
- Create a Firestore database with the following collections:
users
: Store user informationproblems
: Store problem data
To set up an admin user:
- A user must first sign in with Google
- In the Firebase console, navigate to the Firestore Database
- Find the user document in the 'users' collection
- Edit the document and change the 'role' field value to 'admin'
- The user will now have access to the admin panel
Contributions are welcome! Please feel free to submit a Pull Request.
This project is licensed under the MIT License.