We welcome contributions! Whether you want to add a new DSA sheet, a new export format, or improve the UI, here is how you can help.
The project is a monorepo-style structure:
apps/web: Next.js Frontendapps/api: Express Backend
The backend uses a plugin-based architecture for scalability:
- Parsers (
apps/api/src/parsers/): Logic to scrape/parse a specific DSA sheet site. - Exporters (
apps/api/src/exporters/): Logic to convert standardized data into files (Excel, MD, CSV).
- Create a new file
apps/api/src/parsers/your-sheet-name.js. - Implement a function that takes HTML string and returns an array of problems:
[{ name: "Two Sum", difficulty: "Easy", topic: "Arrays", links: { leetcode: "..." } }]
- Register your parser in
apps/api/src/parsers/index.js. - Add the sheet details to
apps/api/src/data/sheets.js.
- Create a new file
apps/api/src/exporters/your-format.js. - Implement a function that takes the standardized problem array and returns a buffer + content type.
- Register your exporter in
apps/api/src/exporters/index.js.
- Install dependencies:
cd apps/web && npm install cd apps/api && npm install
- Run backend:
cd apps/api && npm run dev
- Run frontend:
cd apps/web && npm run dev
- Please open an issue first to discuss your feature.
- Keep PRs focused on one thing (e.g., "Add Love Babbar Parser").