Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
63 changes: 15 additions & 48 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<p align="center">
<img src="./public/DSAVisualizer.png" alt="DSAVisualizer Banner"/>
<img src="./public/og.png" alt="DSAVisualizer Banner"/>
</p>

<h1 align="center">DSAVisualizer</h1>
Expand All @@ -12,32 +12,20 @@
Built with ❤️ by <a href="https://github.com/Sohan-Rout">Sohan Rout</a>
</p>

<p align="center">
<a href="https://www.dsavisualizer.in/">Live Demo</a> •
<a href="https://github.com/Sohan-Rout/DSAVisualizer/issues">Report Bug</a> •
<a href="https://github.com/Sohan-Rout/DSAVisualizer/issues">Request Feature</a>
</p>

---

<p align="center">
<img src="https://img.shields.io/badge/License-Apache%202.0-blue.svg" alt="License: Apache 2.0">
<img src="https://img.shields.io/badge/Next.js-%23000000.svg?style=flat&logo=next.js&logoColor=white" alt="Next.js">
<img src="https://img.shields.io/badge/TailwindCSS-38B2AC?style=flat&logo=tailwind-css&logoColor=white" alt="TailwindCSS">
<img src="https://img.shields.io/badge/Made%20With-Love-red" alt="Made With Love">
</p>
<p align="center">
<p align="left">Product Built Using:</p>
<a href="https://skillicons.dev">
<img src="https://skillicons.dev/icons?i=git,js,react,nextjs,tailwind,supabase,redis,npm,vercel,googlecloud" />
</a>
</p>

---

## Tech Stack 🚀

- Next.js
- TailwindCSS
- Vercel (Deployment)

---

## Features
## Features

- DSA Algorithm Visualizer
- Custom Array Input
Expand All @@ -49,47 +37,26 @@
- Blog Explanations via Medium (Upcoming)
- Queue Visualizer (Upcoming)

---

## Future Plans 🛠️

- Add Tree & Graph Visualizations
- Add Heap Sort
- Queue Implementation & Visualizer
- Write Detailed Blogs on Medium
- Collaborate with Colleges & Professors for Usage
## Future Plans
- Make the platform interactive
- Improve Mobile Responsiveness
- Social Media Promotion

---

## Blogs ✍️

Coming Soon on [Medium](https://medium.com/@sohan-rout)

---

## Connect With Me

- [LinkedIn](https://www.linkedin.com/in/sohan-rout)
- [Medium](https://medium.com/@sohan-rout)

---
<a href="https://www.linkedin.com/in/sohan-rout">
<img src="https://skillicons.dev/icons?i=linkedin" alt="LinkedIn" />
</a>

## License 📄
## License

Apache 2.0 License — See `LICENSE` for details.

---

# Contribution

See [CONTRIBUTING.md](./CONTRIBUTING.md)

Code of Conduct — [CODE_OF_CONDUCT.md](./CODE_OF_CONDUCT.md)

---

<p align="center">
Made with ❤️ by Sohan Rout
</p>
---
27 changes: 15 additions & 12 deletions next-sitemap.config.js
Original file line number Diff line number Diff line change
@@ -1,24 +1,27 @@
const fs = require('fs');
const path = require('path');

// Helper function to recursively get all routes from app/ folder
function getAllAppRoutes(dir = 'app', prefix = '') {
// Scan app/ folder recursively, include only folders with page.jsx
function getAllPages(dir = 'app', prefix = '') {
const routes = [];
const items = fs.readdirSync(dir);

items.forEach((item) => {
for (const item of items) {
const fullPath = path.join(dir, item);
const stat = fs.statSync(fullPath);

if (stat.isDirectory()) {
if (item === 'api') return; // skip API routes
routes.push(...getAllAppRoutes(fullPath, `${prefix}/${item}`));
} else if (item.endsWith('.js') || item.endsWith('.tsx')) {
let route = `${prefix}/${item.replace(/\.js|\.tsx$/, '')}`;
if (route.endsWith('/page')) route = route.replace('/page', '');
routes.push(route);
if (item === 'api' || item.startsWith('_')) continue; // skip API and special folders

const pageFile = fs.readdirSync(fullPath).find(f => f === 'page.jsx' || f === 'page.tsx');
if (pageFile) {
routes.push(`${prefix}/${item}`);
}

// Recurse into subfolders
routes.push(...getAllPages(fullPath, `${prefix}/${item}`));
}
});
}

return routes;
}
Expand All @@ -33,8 +36,8 @@ const config = {
lastmod: new Date().toISOString(),
}),
additionalPaths: async (config) => {
const appRoutes = getAllAppRoutes(); // auto-detect all pages
return appRoutes.map(route => ({
const allRoutes = getAllPages(); // recursively get all module pages
return allRoutes.map(route => ({
loc: route,
lastmod: new Date().toISOString(),
}));
Expand Down
46 changes: 45 additions & 1 deletion public/sitemap-0.xml
Original file line number Diff line number Diff line change
@@ -1,4 +1,48 @@
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:news="http://www.google.com/schemas/sitemap-news/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:mobile="http://www.google.com/schemas/sitemap-mobile/1.0" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" xmlns:video="http://www.google.com/schemas/sitemap-video/1.1">
<url><loc>https://dsavisualizer.in/contexts/AuthContext</loc><lastmod>2025-10-04T18:29:23.213Z</lastmod></url>
<url><loc>https://dsavisualizer.in/blogs</loc><lastmod>2025-10-04T18:49:05.527Z</lastmod></url>
<url><loc>https://dsavisualizer.in/blogs/Content/dsaDifferent</loc><lastmod>2025-10-04T18:49:05.530Z</lastmod></url>
<url><loc>https://dsavisualizer.in/blogs/Content/dsaWebDev</loc><lastmod>2025-10-04T18:49:05.530Z</lastmod></url>
<url><loc>https://dsavisualizer.in/blogs/Content/timeRequired</loc><lastmod>2025-10-04T18:49:05.530Z</lastmod></url>
<url><loc>https://dsavisualizer.in/blogs/Content/whatIsDS</loc><lastmod>2025-10-04T18:49:05.530Z</lastmod></url>
<url><loc>https://dsavisualizer.in/dashboard</loc><lastmod>2025-10-04T18:49:05.530Z</lastmod></url>
<url><loc>https://dsavisualizer.in/login</loc><lastmod>2025-10-04T18:49:05.530Z</lastmod></url>
<url><loc>https://dsavisualizer.in/visualizer</loc><lastmod>2025-10-04T18:49:05.530Z</lastmod></url>
<url><loc>https://dsavisualizer.in/visualizer/linkedList/operations/comparison</loc><lastmod>2025-10-04T18:49:05.530Z</lastmod></url>
<url><loc>https://dsavisualizer.in/visualizer/linkedList/operations/deletion</loc><lastmod>2025-10-04T18:49:05.530Z</lastmod></url>
<url><loc>https://dsavisualizer.in/visualizer/linkedList/operations/insertion</loc><lastmod>2025-10-04T18:49:05.530Z</lastmod></url>
<url><loc>https://dsavisualizer.in/visualizer/linkedList/operations/merge</loc><lastmod>2025-10-04T18:49:05.530Z</lastmod></url>
<url><loc>https://dsavisualizer.in/visualizer/linkedList/operations/reverse</loc><lastmod>2025-10-04T18:49:05.530Z</lastmod></url>
<url><loc>https://dsavisualizer.in/visualizer/linkedList/operations/traversal</loc><lastmod>2025-10-04T18:49:05.530Z</lastmod></url>
<url><loc>https://dsavisualizer.in/visualizer/linkedList/types/circular</loc><lastmod>2025-10-04T18:49:05.530Z</lastmod></url>
<url><loc>https://dsavisualizer.in/visualizer/linkedList/types/doubly</loc><lastmod>2025-10-04T18:49:05.530Z</lastmod></url>
<url><loc>https://dsavisualizer.in/visualizer/linkedList/types/singly</loc><lastmod>2025-10-04T18:49:05.530Z</lastmod></url>
<url><loc>https://dsavisualizer.in/visualizer/queue/implementation/array</loc><lastmod>2025-10-04T18:49:05.530Z</lastmod></url>
<url><loc>https://dsavisualizer.in/visualizer/queue/implementation/linkedList</loc><lastmod>2025-10-04T18:49:05.530Z</lastmod></url>
<url><loc>https://dsavisualizer.in/visualizer/queue/operations/enqueue-dequeue</loc><lastmod>2025-10-04T18:49:05.530Z</lastmod></url>
<url><loc>https://dsavisualizer.in/visualizer/queue/operations/isempty</loc><lastmod>2025-10-04T18:49:05.530Z</lastmod></url>
<url><loc>https://dsavisualizer.in/visualizer/queue/operations/isfull</loc><lastmod>2025-10-04T18:49:05.530Z</lastmod></url>
<url><loc>https://dsavisualizer.in/visualizer/queue/operations/peek-front</loc><lastmod>2025-10-04T18:49:05.530Z</lastmod></url>
<url><loc>https://dsavisualizer.in/visualizer/queue/types/circular</loc><lastmod>2025-10-04T18:49:05.530Z</lastmod></url>
<url><loc>https://dsavisualizer.in/visualizer/queue/types/deque</loc><lastmod>2025-10-04T18:49:05.530Z</lastmod></url>
<url><loc>https://dsavisualizer.in/visualizer/queue/types/multiple</loc><lastmod>2025-10-04T18:49:05.530Z</lastmod></url>
<url><loc>https://dsavisualizer.in/visualizer/queue/types/priority</loc><lastmod>2025-10-04T18:49:05.530Z</lastmod></url>
<url><loc>https://dsavisualizer.in/visualizer/queue/types/singleEnded</loc><lastmod>2025-10-04T18:49:05.530Z</lastmod></url>
<url><loc>https://dsavisualizer.in/visualizer/searching/binarysearch</loc><lastmod>2025-10-04T18:49:05.530Z</lastmod></url>
<url><loc>https://dsavisualizer.in/visualizer/searching/linearsearch</loc><lastmod>2025-10-04T18:49:05.530Z</lastmod></url>
<url><loc>https://dsavisualizer.in/visualizer/sorting/bubblesort</loc><lastmod>2025-10-04T18:49:05.530Z</lastmod></url>
<url><loc>https://dsavisualizer.in/visualizer/sorting/insertionsort</loc><lastmod>2025-10-04T18:49:05.530Z</lastmod></url>
<url><loc>https://dsavisualizer.in/visualizer/sorting/mergesort</loc><lastmod>2025-10-04T18:49:05.530Z</lastmod></url>
<url><loc>https://dsavisualizer.in/visualizer/sorting/quicksort</loc><lastmod>2025-10-04T18:49:05.530Z</lastmod></url>
<url><loc>https://dsavisualizer.in/visualizer/sorting/selectionsort</loc><lastmod>2025-10-04T18:49:05.530Z</lastmod></url>
<url><loc>https://dsavisualizer.in/visualizer/stack/implementation/usingArray</loc><lastmod>2025-10-04T18:49:05.530Z</lastmod></url>
<url><loc>https://dsavisualizer.in/visualizer/stack/implementation/usingLinkedList</loc><lastmod>2025-10-04T18:49:05.530Z</lastmod></url>
<url><loc>https://dsavisualizer.in/visualizer/stack/isempty</loc><lastmod>2025-10-04T18:49:05.530Z</lastmod></url>
<url><loc>https://dsavisualizer.in/visualizer/stack/isfull</loc><lastmod>2025-10-04T18:49:05.530Z</lastmod></url>
<url><loc>https://dsavisualizer.in/visualizer/stack/peek</loc><lastmod>2025-10-04T18:49:05.530Z</lastmod></url>
<url><loc>https://dsavisualizer.in/visualizer/stack/polish/postfix</loc><lastmod>2025-10-04T18:49:05.530Z</lastmod></url>
<url><loc>https://dsavisualizer.in/visualizer/stack/polish/prefix</loc><lastmod>2025-10-04T18:49:05.530Z</lastmod></url>
<url><loc>https://dsavisualizer.in/visualizer/stack/push-pop</loc><lastmod>2025-10-04T18:49:05.530Z</lastmod></url>
<url><loc>https://dsavisualizer.in/visualizer/trees/binaryTree/types</loc><lastmod>2025-10-04T18:49:05.530Z</lastmod></url>
<url><loc>https://dsavisualizer.in/visualizer/trees/traversing/in-order</loc><lastmod>2025-10-04T18:49:05.530Z</lastmod></url>
</urlset>
Loading