- To get started, edit the page.tsx file. -
-- Looking for a starting point or more instructions? Head over to{" "} - - Templates - {" "} - or the{" "} - - Learning - {" "} - center. -
-
+ PLUGIN-BASED
+
+ VISUALIZER ENGINE
+
+
+ {/* Description */}
+ + Every algorithm is a self-contained plugin with its own visualization logic. + This makes OpenDSA extensible, maintainable, and community-friendly. +
+ + {/* Features list */} +-
+ {[
+ "Step-based animation system",
+ "Modular visualizer registry",
+ "Shared UI components",
+ "URL state sync",
+ ].map((item, index) => (
+
+
+ {codeTabs[activeTab].code.split("\n").map((line, i) => (
+
+ {line.includes("interface") || line.includes("type") || line.includes("const") || line.includes("export") ? (
+ {line.split(" ")[0]}
+ ) : null}
+ {line.includes("interface") || line.includes("type") ? (
+ {line.split(" ").slice(1).join(" ")}
+ ) : line.includes("const") || line.includes("export") || line.includes("function") ? (
+ {line.split(" ").slice(1).join(" ")}
+ ) : line.includes(":") && !line.includes("//") ? (
+ <>
+ {line.split(":")[0]}
+ :{line.split(":").slice(1).join(":")}
+ >
+ ) : line.includes('"') ? (
+ {line}
+ ) : (
+ {line}
+ )}
+
+ ))}
+
+
+
+ FREQ.
+
+ ASKED
+
+ QUEST.
+
+
+ {/* Description */}
+ + Common questions about licensing, architecture, and technical capabilities. +
+ + {/* Contact card */} ++ Still have questions? +
+ + JOIN DISCUSSIONS ++ github.com/soloshun/opendsa +
++ {title} +
+ + {/* Description */} ++ {description} +
+ + {/* Custom content */} + {children &&
+ EVERYTHING YOU NEED
+
+ 100% FREE
+
+ + Professional visualizations. Zero cost. No catch. +
++ VISUALIZE +
++ BEAUTIFULLY +
+
+ BUILT BY THE COMMUNITY
+
+ FOR THE COMMUNITY
+
+
+ + OpenDSA is 100% open source and always will be. Join us in building + the best algorithm visualization platform. +
+ + {/* Stats */} ++ THE PATH TO{" "} + V1.0 +
++ Building in public. Ship fast, iterate faster. +
++ {item.title} +
++ {item.quarter} +
+ + {/* Items list */} +-
+ {item.items.map((listItem, i) => (
+
- + + {listItem} + + ))} +
+ UNDER THE
+
+ HOOD
+
+
+ {/* Description */}
+ + Built on modern browser capabilities. No servers needed for visualizations. + Everything runs client-side for instant feedback. +
++ {tech.name} +
++ {tech.description} +
++ {title} +
++ {description} +
+ {children &&{title}
- + {/* Description */}{description} @@ -80,7 +139,7 @@ export function Features() { {/* Background with gradient */}
- + {/* Noise overlay */}- Made with love by the OpenDSA community + Made with love by the Solo Shun for the OpenDSA community
diff --git a/apps/docs/app/_meta.js b/apps/docs/app/_meta.js
index fb3c43b..fc947e9 100644
--- a/apps/docs/app/_meta.js
+++ b/apps/docs/app/_meta.js
@@ -1,8 +1,8 @@
export default {
- index: 'Home',
- architecture: 'Architecture',
- roadmap: 'Roadmap',
- migration: 'Migration',
- tech_stack: 'Tech Stack'
+ index: 'Overview',
+ project: 'Project Overview',
+ technical: 'Technical Docs',
+ code_of_conduct: 'Code of Conduct',
+ contributing: 'Contributing',
+ sponsors: 'Support Us☕'
}
-
diff --git a/apps/docs/app/architecture/page.mdx b/apps/docs/app/architecture/page.mdx
deleted file mode 100644
index c0c5551..0000000
--- a/apps/docs/app/architecture/page.mdx
+++ /dev/null
@@ -1,6 +0,0 @@
----
-title: Architecture
----
-
-This page will be migrated from `apps/docs/internal/OPENALGO_ARCHITECTURE.md`.
-
diff --git a/apps/docs/app/code_of_conduct/page.mdx b/apps/docs/app/code_of_conduct/page.mdx
new file mode 100644
index 0000000..c9908c8
--- /dev/null
+++ b/apps/docs/app/code_of_conduct/page.mdx
@@ -0,0 +1,134 @@
+---
+title: Code of Conduct
+description: Our pledge and standards for community participation.
+---
+
+# Contributor Covenant Code of Conduct
+
+## Our Pledge
+
+We as members, contributors, and leaders pledge to make participation in our
+community a harassment-free experience for everyone, regardless of age, body
+size, visible or invisible disability, ethnicity, sex characteristics, gender
+identity and expression, level of experience, education, socio-economic status,
+nationality, personal appearance, race, religion, or sexual identity
+and orientation.
+
+We pledge to act and interact in ways that contribute to an open, welcoming,
+diverse, inclusive, and healthy community.
+
+## Our Standards
+
+Examples of behavior that contributes to a positive environment for our
+community include:
+
+* Demonstrating empathy and kindness toward other people
+* Being respectful of differing opinions, viewpoints, and experiences
+* Giving and gracefully accepting constructive feedback
+* Accepting responsibility and apologizing to those affected by our mistakes,
+ and learning from the experience
+* Focusing on what is best not just for us as individuals, but for the
+ overall community
+
+Examples of unacceptable behavior include:
+
+* The use of sexualized language or imagery, and sexual attention or
+ advances of any kind
+* Trolling, insulting or derogatory comments, and personal or political attacks
+* Public or private harassment
+* Publishing others' private information, such as a physical or email
+ address, without their explicit permission
+* Other conduct which could reasonably be considered inappropriate in a
+ professional setting
+
+## Enforcement Responsibilities
+
+Community leaders are responsible for clarifying and enforcing our standards of
+acceptable behavior and will take appropriate and fair corrective action in
+response to any behavior that they deem inappropriate, threatening, offensive,
+or harmful.
+
+Community leaders have the right and responsibility to remove, edit, or reject
+comments, commits, code, wiki edits, issues, and other contributions that are
+not aligned to this Code of Conduct, and will communicate reasons for moderation
+decisions when appropriate.
+
+## Scope
+
+This Code of Conduct applies within all community spaces, and also applies when
+an individual is officially representing the community in public spaces.
+Examples of representing our community include using an official e-mail address,
+posting via an official social media account, or acting as an appointed
+representative at an online or offline event.
+
+## Enforcement
+
+Instances of abusive, harassing, or otherwise unacceptable behavior may be
+reported to the community leaders responsible for enforcement at
+**conduct@opendsa.dev**.
+
+All complaints will be reviewed and investigated promptly and fairly.
+
+All community leaders are obligated to respect the privacy and security of the
+reporter of any incident.
+
+## Enforcement Guidelines
+
+Community leaders will follow these Community Impact Guidelines in determining
+the consequences for any action they deem in violation of this Code of Conduct:
+
+### 1. Correction
+
+**Community Impact**: Use of inappropriate language or other behavior deemed
+unprofessional or unwelcome in the community.
+
+**Consequence**: A private, written warning from community leaders, providing
+clarity around the nature of the violation and an explanation of why the
+behavior was inappropriate. A public apology may be requested.
+
+### 2. Warning
+
+**Community Impact**: A violation through a single incident or series
+of actions.
+
+**Consequence**: A warning with consequences for continued behavior. No
+interaction with the people involved, including unsolicited interaction with
+those enforcing the Code of Conduct, for a specified period of time. This
+includes avoiding interactions in community spaces as well as external channels
+like social media. Violating these terms may lead to a temporary or
+permanent ban.
+
+### 3. Temporary Ban
+
+**Community Impact**: A serious violation of community standards, including
+sustained inappropriate behavior.
+
+**Consequence**: A temporary ban from any sort of interaction or public
+communication with the community for a specified period of time. No public or
+private interaction with the people involved, including unsolicited interaction
+with those enforcing the Code of Conduct, is allowed during this period.
+Violating these terms may lead to a permanent ban.
+
+### 4. Permanent Ban
+
+**Community Impact**: Demonstrating a pattern of violation of community
+standards, including sustained inappropriate behavior, harassment of an
+individual, or aggression toward or disparagement of classes of individuals.
+
+**Consequence**: A permanent ban from any sort of public interaction within
+the community.
+
+## Attribution
+
+This Code of Conduct is adapted from the [Contributor Covenant][homepage],
+version 2.0, available at
+https://www.contributor-covenant.org/version/2/0/code_of_conduct.html.
+
+Community Impact Guidelines were inspired by [Mozilla's code of conduct
+enforcement ladder](https://github.com/mozilla/diversity).
+
+[homepage]: https://www.contributor-covenant.org
+
+For answers to common questions about this code of conduct, see the FAQ at
+https://www.contributor-covenant.org/faq. Translations are available at
+https://www.contributor-covenant.org/translations.
diff --git a/apps/docs/app/contributing/page.mdx b/apps/docs/app/contributing/page.mdx
new file mode 100644
index 0000000..1985a28
--- /dev/null
+++ b/apps/docs/app/contributing/page.mdx
@@ -0,0 +1,1017 @@
+---
+title: Contributing
+description: Guidelines and instructions for contributing to the OpenDSA project.
+---
+
+# Contributing to OpenDSA
+
+Thank you for your interest in contributing to OpenDSA! This document provides guidelines and instructions for contributing to the project.
+
+## Table of Contents
+
+1. [Code of Conduct](#code-of-conduct)
+2. [Getting Started](#getting-started)
+3. [Development Setup](#development-setup)
+4. [Project Structure](#project-structure)
+5. [Making Contributions](#making-contributions)
+6. [Adding a New Visualizer](#adding-a-new-visualizer)
+7. [Code Style Guide](#code-style-guide)
+8. [Commit Guidelines](#commit-guidelines)
+9. [Pull Request Process](#pull-request-process)
+10. [Issue Guidelines](#issue-guidelines)
+11. [Community](#community)
+
+
+## Code of Conduct
+
+By participating in this project, you agree to abide by our [Code of Conduct](/code_of_conduct). Please read it before contributing.
+
+**Key Points**:
+- Be respectful and inclusive
+- Welcome newcomers
+- Accept constructive criticism
+- Focus on what's best for the community
+
+
+## Getting Started
+
+### Prerequisites
+
+Before you begin, ensure you have the following installed:
+
+- **Node.js**: v18.17 or higher ([Download](https://nodejs.org/))
+- **pnpm**: v8 or higher (`npm install -g pnpm`)
+- **Git**: Latest version ([Download](https://git-scm.com/))
+
+### Quick Start
+
+```bash
+# 1. Fork the repository on GitHub
+
+# 2. Clone your fork
+git clone https://github.com/soloshun/opendsa.git
+cd opendsa
+
+# 3. Add upstream remote
+git remote add upstream https://github.com/soloshun/opendsa.git
+
+# 4. Install dependencies
+pnpm install
+
+# 5. Start development server
+pnpm dev
+```
+
+
+## Development Setup
+
+### Installing Dependencies
+
+```bash
+# Install all dependencies for the monorepo
+pnpm install
+```
+
+### Running Development Servers
+
+```bash
+# Run all apps in development mode
+pnpm dev
+
+# Run specific app
+pnpm dev --filter=@opendsa/app
+pnpm dev --filter=@opendsa/web
+pnpm dev --filter=@opendsa/docs
+```
+
+### Building
+
+```bash
+# Build all packages and apps
+pnpm build
+
+# Build specific package
+pnpm build --filter=@opendsa/algorithms
+```
+
+### Testing
+
+```bash
+# Run all tests
+pnpm test
+
+# Run tests in watch mode
+pnpm test:watch
+
+# Run tests for specific package
+pnpm test --filter=@opendsa/algorithms
+
+# Run E2E tests
+pnpm test:e2e
+```
+
+### Linting and Formatting
+
+```bash
+# Run linter
+pnpm lint
+
+# Fix lint issues
+pnpm lint:fix
+
+# Format code
+pnpm format
+
+# Type check
+pnpm type-check
+```
+
+
+## Project Structure
+
+```
+opendsa/
+├── apps/
+│ ├── web/ # Marketing website
+│ ├── app/ # Main visualizer application
+│ └── docs/ # Documentation site
+│
+├── packages/
+│ ├── ui/ # Shared UI components
+│ ├── algorithms/ # Algorithm implementations
+│ ├── visualizers/ # Visualization components
+│ ├── types/ # Shared TypeScript types
+│ ├── utils/ # Shared utilities
+│ └── config/ # Shared configurations
+│
+├── .github/ # GitHub workflows and templates
+├── turbo.json # Turborepo configuration
+└── package.json # Root package.json
+```
+
+### Package Overview
+
+| Package | Description | Key Files |
+|---------|-------------|-----------|
+| `@opendsa/app` | Main visualizer app | `app/`, `components/` |
+| `@opendsa/web` | Marketing website | `app/`, `components/` |
+| `@opendsa/docs` | Documentation | `pages/` |
+| `@opendsa/ui` | UI components | `src/components/` |
+| `@opendsa/algorithms` | Pure algorithms | `src/sorting/`, `src/searching/` |
+| `@opendsa/visualizers` | Visualizer components | `src/engine/`, `src/sorting/` |
+| `@opendsa/types` | TypeScript types | `src/*.types.ts` |
+| `@opendsa/utils` | Utility functions | `src/` |
+
+
+## Making Contributions
+
+### Types of Contributions
+
+We welcome many types of contributions:
+
+- **Bug Fixes**: Fix issues in existing code
+- **New Features**: Add new functionality
+- **New Visualizers**: Add algorithm visualizations
+- **Documentation**: Improve or add documentation
+- **Tests**: Add or improve tests
+- **UI/UX**: Improve user interface and experience
+- **Performance**: Optimize existing code
+- **Accessibility**: Improve accessibility
+
+### Contribution Workflow
+
+```mermaid
+flowchart TB
+ A[Find or Create Issue] --> B[Fork Repository]
+ B --> C[Create Feature Branch]
+ C --> D[Make Changes]
+ D --> E[Write/Update Tests]
+ E --> F[Commit with Conventional Commits]
+ F --> G[Push to Your Fork]
+ G --> H[Create Pull Request]
+ H --> I{CI Passes?}
+ I -->|No| D
+ I -->|Yes| J[Code Review]
+ J --> K{Changes Requested?}
+ K -->|Yes| D
+ K -->|No| L[Merge]
+```
+
+### Branch Naming
+
+Use descriptive branch names:
+
+```
+feature/add-quicksort-visualizer
+fix/bubble-sort-animation-bug
+docs/improve-contributing-guide
+refactor/animation-engine
+test/add-merge-sort-tests
+```
+
+Format: ` Made with ❤️ by the Solo Shun for the OpenDSA community
+ {total}+ algorithms and data structures. This is what we're building together.
+ Pick one and contribute, or suggest new ones. ML/DL, algorithms from other fields, and visualizers are all welcome.
+
+ Click on any category to expand/collapse
+
+ Open to Contributions:{" "}
+ Machine Learning & Deep Learning Algorithm Visualizers etc...
+
+
+
+
+
+**Expected at Scale:** ~\$50-200/month (Pro hosting, domain, services)
+
+
+## FAQ
+
+### Will OpenDSA ever have paid features?
+No. OpenDSA will always be 100% free. Sponsorships help us maintain and improve the free platform.
+
+### Where does the money go?
+Hosting costs, domain registration, and development tools. Any surplus goes toward bounties for contributors.
+
+### Can I sponsor anonymously?
+Yes, most platforms support anonymous donations.
+
+### Is my donation tax-deductible?
+Depends on your country and the platform used. Open Collective offers fiscal hosting which may provide tax benefits in some jurisdictions.
+
+
+*Thank you for considering supporting OpenDSA. Every contribution, big or small, helps keep algorithm education free and accessible to everyone.*
diff --git a/apps/docs/app/tech_stack/page.mdx b/apps/docs/app/tech_stack/page.mdx
deleted file mode 100644
index a0c9fb5..0000000
--- a/apps/docs/app/tech_stack/page.mdx
+++ /dev/null
@@ -1,6 +0,0 @@
----
-title: Tech Stack
----
-
-This page will be migrated from `apps/docs/internal/OPENALGO_TECH_STACK.md`.
-
diff --git a/apps/docs/app/technical/_meta.js b/apps/docs/app/technical/_meta.js
new file mode 100644
index 0000000..47a289f
--- /dev/null
+++ b/apps/docs/app/technical/_meta.js
@@ -0,0 +1,7 @@
+export default {
+ "implementation-status": 'Implementation Status',
+ "big-o": 'Big O Notation',
+ "data-structures": 'Data Structures',
+ algorithms: 'Algorithms',
+ visualizers: 'Visualizers'
+}
diff --git a/apps/docs/app/technical/algorithms/_meta.js b/apps/docs/app/technical/algorithms/_meta.js
new file mode 100644
index 0000000..5eff340
--- /dev/null
+++ b/apps/docs/app/technical/algorithms/_meta.js
@@ -0,0 +1,4 @@
+export default {
+ "bubble-sort": "Bubble Sort",
+ "quick-sort": "Quick Sort"
+}
diff --git a/apps/docs/app/technical/algorithms/bubble-sort/page.mdx b/apps/docs/app/technical/algorithms/bubble-sort/page.mdx
new file mode 100644
index 0000000..0743a73
--- /dev/null
+++ b/apps/docs/app/technical/algorithms/bubble-sort/page.mdx
@@ -0,0 +1,28 @@
+# Bubble Sort
+
+Bubble Sort is the simplest sorting algorithm that works by repeatedly swapping the adjacent elements if they are in the wrong order.
+
+## Complexity
+
+| Type | Complexity |
+| :--- | :--- |
+| **Time (Worst)** | $O(n^2)$ |
+| **Time (Average)** | $O(n^2)$ |
+| **Time (Best)** | $O(n)$ |
+| **Space** | $O(1)$ |
+
+## Implementation
+
+```typescript
+function bubbleSort(arr: number[]): number[] {
+ const n = arr.length;
+ for (let i = 0; i < n; i++) {
+ for (let j = 0; j < n - i - 1; j++) {
+ if (arr[j] > arr[j + 1]) {
+ [arr[j], arr[j + 1]] = [arr[j + 1], arr[j]];
+ }
+ }
+ }
+ return arr;
+}
+```
diff --git a/apps/docs/app/technical/algorithms/page.mdx b/apps/docs/app/technical/algorithms/page.mdx
new file mode 100644
index 0000000..3f3af89
--- /dev/null
+++ b/apps/docs/app/technical/algorithms/page.mdx
@@ -0,0 +1,8 @@
+# Algorithms
+
+The current version of OpenDSA implements value-based algorithms to help users understand core computer science concepts.
+
+## Sorting Implementations
+
+- [Bubble Sort](/technical/algorithms/bubble-sort)
+- [Quick Sort](/technical/algorithms/quick-sort)
diff --git a/apps/docs/app/technical/algorithms/quick-sort/page.mdx b/apps/docs/app/technical/algorithms/quick-sort/page.mdx
new file mode 100644
index 0000000..e79c253
--- /dev/null
+++ b/apps/docs/app/technical/algorithms/quick-sort/page.mdx
@@ -0,0 +1,17 @@
+# Quick Sort
+
+Quick Sort is an efficient, divide-and-conquer sorting algorithm. It works by selecting a 'pivot' element and partitioning the other elements into two sub-arrays according to whether they are less than or greater than the pivot.
+
+## Complexity
+
+| Type | Complexity |
+| :--- | :--- |
+| **Time (Worst)** | $O(n^2)$ |
+| **Time (Average)** | $O(n \log n)$ |
+| **Time (Best)** | $O(n \log n)$ |
+| **Space** | $O(\log n)$ |
+
+## Concepts
+
+- **Pivot Selection**: Choosing the right pivot is crucial for performance.
+- **Partitioning**: Reordering the array so that elements < pivot come before elements > pivot.
diff --git a/apps/docs/app/technical/big-o/page.mdx b/apps/docs/app/technical/big-o/page.mdx
new file mode 100644
index 0000000..4c689f2
--- /dev/null
+++ b/apps/docs/app/technical/big-o/page.mdx
@@ -0,0 +1,51 @@
+# Big O Notation
+
+Big O notation is a mathematical notation that describes the limiting behavior of a function when the argument tends towards a particular value or infinity. In computer science, it is used to classify algorithms according to how their run time or space requirements grow as the input size grows.
+
+## Common Time Complexities
+
+| Notation | Name | Description | Example |
+| :--- | :--- | :--- | :--- |
+| **O(1)** | Constant | Execution time is independent of input size. | Accessing array index |
+| **O(log n)** | Logarithmic | Time grows logarithmically with input size. | Binary Search |
+| **O(n)** | Linear | Time grows linearly with input size. | Linear Search |
+| **O(n log n)** | Linearithmic | Faster than quadratic but slower than linear. | Merge Sort, Quick Sort |
+| **O(n²)** | Quadratic | Time grows with the square of the input size. | Bubble Sort |
+| **O(2ⁿ)** | Exponential | Time doubles with each addition to input. | Recursive Fibonacci |
+| **O(n!)** | Factorial | Growth is factorial based on input size. | Traveling Salesperson |
+
+## Why it Matters
+
+Understanding Big O helps developers:
+- Predict performance at scale.
+- Choose the right algorithm for the job.
+- Identify bottlenecks in code.
+
+### Visualizing Growth
+
+```mermaid
+graph LR
+ A["Input Size (n)"] --> B{Complexity}
+ B -->|O 1| C[Instant]
+ B -->|O log n| D[Fast]
+ B -->|O n| E[Manageable]
+ B -->|O n^2| F[Slow]
+ B -->|O 2^n| G["Unusable for large n"]
+```
+
+### Complexity Chart
+
+```mermaid
+xychart-beta
+ title "Time Complexity Growth"
+ x-axis "Input Size (n)" [1, 2, 4, 8, 16]
+ y-axis "Operations" 0 --> 300
+ line [1, 1, 1, 1, 1]
+ line [1, 2, 4, 8, 16]
+ line [1, 4, 16, 64, 256]
+```
+
+ THE AMBITIOUS LIST
+
+
+