diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md
index f9ba51c..2eb4523 100644
--- a/CODE_OF_CONDUCT.md
+++ b/CODE_OF_CONDUCT.md
@@ -60,7 +60,7 @@ representative at an online or offline event.
Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported to the community leaders responsible for enforcement at
-**conduct@opendsa.dev**.
+**solomoneshun373@gmai.com**.
All complaints will be reviewed and investigated promptly and fairly.
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 13c2c0c..4f104d4 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -999,7 +999,7 @@ Join our Discord server for:
- Showing off your contributions
- Connecting with other contributors
-[Join Discord⛓️💥❌](https://discord.gg/opendsa)
+[Join Discord](https://discord.gg/mfQvUa2y4r)
### Getting Help
diff --git a/README.md b/README.md
index d8ec94a..a5e57bb 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,5 @@
\ No newline at end of file
diff --git a/apps/docs/app/project/architecture/page.mdx b/apps/docs/app/project/architecture/page.mdx
index 35f4149..e181a40 100644
--- a/apps/docs/app/project/architecture/page.mdx
+++ b/apps/docs/app/project/architecture/page.mdx
@@ -1,5 +1,7 @@
+---
title: Architecture
description: Comprehensive architecture documentation for the OpenDSA algorithm visualization platform.
+---
# OpenDSA - System Architecture
diff --git a/apps/docs/app/technical/algorithms/bubble-sort/page.mdx b/apps/docs/app/technical/algorithms/bubble-sort/page.mdx
index 0743a73..0851c20 100644
--- a/apps/docs/app/technical/algorithms/bubble-sort/page.mdx
+++ b/apps/docs/app/technical/algorithms/bubble-sort/page.mdx
@@ -1,4 +1,4 @@
-# Bubble Sort
+# Bubble Sort (Coming Soon)
Bubble Sort is the simplest sorting algorithm that works by repeatedly swapping the adjacent elements if they are in the wrong order.
diff --git a/apps/docs/app/technical/algorithms/page.mdx b/apps/docs/app/technical/algorithms/page.mdx
index 3f3af89..98763b4 100644
--- a/apps/docs/app/technical/algorithms/page.mdx
+++ b/apps/docs/app/technical/algorithms/page.mdx
@@ -1,4 +1,4 @@
-# Algorithms
+# Algorithms (Coming Soon)
The current version of OpenDSA implements value-based algorithms to help users understand core computer science concepts.
diff --git a/apps/docs/app/technical/algorithms/quick-sort/page.mdx b/apps/docs/app/technical/algorithms/quick-sort/page.mdx
index e79c253..73df577 100644
--- a/apps/docs/app/technical/algorithms/quick-sort/page.mdx
+++ b/apps/docs/app/technical/algorithms/quick-sort/page.mdx
@@ -1,4 +1,4 @@
-# Quick Sort
+# Quick Sort (Coming Soon)
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.
diff --git a/apps/docs/app/technical/big-o/page.mdx b/apps/docs/app/technical/big-o/page.mdx
index 4c689f2..64188bd 100644
--- a/apps/docs/app/technical/big-o/page.mdx
+++ b/apps/docs/app/technical/big-o/page.mdx
@@ -1,4 +1,4 @@
-# Big O Notation
+# Big O Notation (Full Content Coming Soon)
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.
@@ -31,21 +31,4 @@ graph LR
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]
-```
-
-
O(1)
-
O(n)
-
O(n²)
-
+```
\ No newline at end of file
diff --git a/apps/docs/app/technical/data-structures/arrays/page.mdx b/apps/docs/app/technical/data-structures/arrays/page.mdx
index c6c9cb0..f65f5e0 100644
--- a/apps/docs/app/technical/data-structures/arrays/page.mdx
+++ b/apps/docs/app/technical/data-structures/arrays/page.mdx
@@ -1,4 +1,4 @@
-# Arrays
+# Arrays (Coming Soon)
An array is a collection of items stored at contiguous memory locations. It is one of the simplest and most widely used data structures.
diff --git a/apps/docs/app/technical/data-structures/page.mdx b/apps/docs/app/technical/data-structures/page.mdx
index 1f92f3a..d2eb548 100644
--- a/apps/docs/app/technical/data-structures/page.mdx
+++ b/apps/docs/app/technical/data-structures/page.mdx
@@ -1,4 +1,4 @@
-# Data Structures
+# Data Structures (Coming Soon)
Core data structures implemented in OpenDSA with interactive visualizations.
diff --git a/apps/docs/app/technical/data-structures/trees/page.mdx b/apps/docs/app/technical/data-structures/trees/page.mdx
index 7a1dc2a..41edc74 100644
--- a/apps/docs/app/technical/data-structures/trees/page.mdx
+++ b/apps/docs/app/technical/data-structures/trees/page.mdx
@@ -1,4 +1,4 @@
-# Trees
+# Trees (Coming Soon)
Trees are hierarchical data structures consisting of nodes connected by edges.
diff --git a/apps/docs/app/technical/page.mdx b/apps/docs/app/technical/page.mdx
index 2c43071..2288efb 100644
--- a/apps/docs/app/technical/page.mdx
+++ b/apps/docs/app/technical/page.mdx
@@ -1,4 +1,4 @@
-# Technical Documentation
+# Technical Documentation (Full Docs Coming Soon)
Detailed documentation of the internal implementation of OpenDSA.
diff --git a/apps/docs/app/technical/visualizers/architecture/page.mdx b/apps/docs/app/technical/visualizers/architecture/page.mdx
index ef9d349..bc9b792 100644
--- a/apps/docs/app/technical/visualizers/architecture/page.mdx
+++ b/apps/docs/app/technical/visualizers/architecture/page.mdx
@@ -1,4 +1,4 @@
-# Visualizer Architecture
+# Visualizer Architecture (Full Docs Coming Soon)
The core of OpenDSA is the extensible visualizer system.
diff --git a/apps/docs/app/technical/visualizers/page.mdx b/apps/docs/app/technical/visualizers/page.mdx
index 4528e55..9017b47 100644
--- a/apps/docs/app/technical/visualizers/page.mdx
+++ b/apps/docs/app/technical/visualizers/page.mdx
@@ -1,4 +1,4 @@
-# Visualizers
+# Visualizers (Full Docs Coming Soon)
The OpenDSA visualizer system powers all algorithm and data structure animations.
diff --git a/apps/docs/components/github-star-button.jsx b/apps/docs/components/github-star-button.jsx
new file mode 100644
index 0000000..3241403
--- /dev/null
+++ b/apps/docs/components/github-star-button.jsx
@@ -0,0 +1,74 @@
+'use client'
+
+import { useState, useEffect } from 'react'
+
+export function GitHubStarButton() {
+ const [stars, setStars] = useState(null)
+ const [loading, setLoading] = useState(true)
+
+ useEffect(() => {
+ async function fetchStars() {
+ try {
+ const res = await fetch('https://api.github.com/repos/soloshun/opendsa')
+ if (res.ok) {
+ const data = await res.json()
+ setStars(data.stargazers_count)
+ }
+ } catch (error) {
+ console.error('Failed to fetch stars:', error)
+ } finally {
+ setLoading(false)
+ }
+ }
+ fetchStars()
+ }, [])
+
+ const formatStars = (count) => {
+ if (count >= 1000) {
+ return (count / 1000).toFixed(1) + 'k'
+ }
+ return count?.toString() || '0'
+ }
+
+ return (
+
+ {/* star icon */}
+
+ Stars
+ {!loading && stars !== null && (
+
+ {formatStars(stars)}
+
+ )}
+
+ )
+}
diff --git a/apps/docs/public/og-docs.png b/apps/docs/public/og-docs.png
new file mode 100644
index 0000000..c2c696c
Binary files /dev/null and b/apps/docs/public/og-docs.png differ
diff --git a/apps/docs/public/opendsa.ico b/apps/docs/public/opendsa.ico
new file mode 100644
index 0000000..a640efd
Binary files /dev/null and b/apps/docs/public/opendsa.ico differ
diff --git a/apps/web/public/og-image.png b/apps/web/public/og-image.png
new file mode 100644
index 0000000..2fde696
Binary files /dev/null and b/apps/web/public/og-image.png differ
diff --git a/apps/web/public/opendsa.ico b/apps/web/public/opendsa.ico
new file mode 100644
index 0000000..a640efd
Binary files /dev/null and b/apps/web/public/opendsa.ico differ
diff --git a/apps/web/src/app/layout.tsx b/apps/web/src/app/layout.tsx
index 14c3663..5fa4618 100644
--- a/apps/web/src/app/layout.tsx
+++ b/apps/web/src/app/layout.tsx
@@ -16,36 +16,98 @@ const jetbrainsMono = JetBrains_Mono({
weight: ["400", "500", "600", "700"],
});
+const siteUrl = "https://opendsa.vercel.app"; // TODO: Change to https://opendsa.dev after domain purchase
+
export const metadata: Metadata = {
- title: "OpenDSA - Visualize Data Structures & Algorithms",
+ metadataBase: new URL(siteUrl),
+ title: {
+ default: "OpenDSA - Open Source Algorithm Visualization Platform",
+ template: "%s | OpenDSA",
+ },
description:
- "An open-source, interactive platform for visualizing data structures and algorithms. Learn through beautiful animations and step-by-step explanations.",
+ "OpenDSA is an open-source, interactive platform for visualizing data structures and algorithms. Learn sorting, searching, graphs, trees, and 70+ algorithms through beautiful animations and step-by-step explanations. Built with Next.js, TypeScript, and Framer Motion.",
keywords: [
- "algorithms",
+ "algorithm visualization",
"data structures",
- "visualization",
- "learning",
+ "sorting algorithms",
+ "searching algorithms",
+ "graph algorithms",
+ "tree traversal",
+ "binary search tree",
+ "heap",
+ "hash table",
+ "dynamic programming",
+ "greedy algorithms",
+ "divide and conquer",
+ "bubble sort",
+ "quick sort",
+ "merge sort",
+ "BFS",
+ "DFS",
+ "Dijkstra",
+ "A* algorithm",
+ "learn algorithms",
+ "interactive learning",
+ "computer science education",
"open source",
- "education",
- "sorting",
- "searching",
- "graphs",
- "trees",
+ "visualization tool",
+ "coding interview prep",
+ "DSA practice",
],
- authors: [{ name: "Solomon Eshun" }],
+ authors: [
+ { name: "Solomon Eshun", url: "https://github.com/soloshun" },
+ ],
+ creator: "Solomon Eshun",
+ publisher: "OpenDSA",
+ icons: {
+ icon: "/opendsa.ico",
+ shortcut: "/opendsa.ico",
+ apple: "/opendsa.ico",
+ },
+ manifest: "/manifest.json",
openGraph: {
- title: "OpenDSA - Visualize Data Structures & Algorithms",
- description:
- "An open-source, interactive platform for visualizing data structures and algorithms.",
type: "website",
locale: "en_US",
+ url: siteUrl,
+ siteName: "OpenDSA",
+ title: "OpenDSA - Open Source Algorithm Visualization Platform",
+ description:
+ "Visualize 70+ algorithms and data structures with beautiful animations. Free, open-source, and built for learners.",
+ images: [
+ {
+ url: "/og-image.png", // TODO: Add screenshot
+ width: 1200,
+ height: 630,
+ alt: "OpenDSA - Algorithm Visualization Platform",
+ type: "image/png",
+ },
+ ],
},
twitter: {
card: "summary_large_image",
- title: "OpenDSA - Visualize Data Structures & Algorithms",
+ site: "@opendsa",
+ creator: "@soloshun",
+ title: "OpenDSA - Open Source Algorithm Visualization Platform",
description:
- "An open-source, interactive platform for visualizing data structures and algorithms.",
+ "Visualize 70+ algorithms and data structures with beautiful animations. Free and open-source.",
+ images: ["/og-image.png"], // TODO: Add screenshot
+ },
+ robots: {
+ index: true,
+ follow: true,
+ googleBot: {
+ index: true,
+ follow: true,
+ "max-video-preview": -1,
+ "max-image-preview": "large",
+ "max-snippet": -1,
+ },
+ },
+ alternates: {
+ canonical: siteUrl,
},
+ category: "Education",
+ classification: "Algorithm Visualization Tool",
};
export default function RootLayout({
@@ -55,6 +117,12 @@ export default function RootLayout({
}>) {
return (
+
+
+
+
+
+
{children}
diff --git a/apps/web/src/app/not-found.tsx b/apps/web/src/app/not-found.tsx
index 9f45dd2..3fa8192 100644
--- a/apps/web/src/app/not-found.tsx
+++ b/apps/web/src/app/not-found.tsx
@@ -83,6 +83,8 @@ export default function NotFound() {
useEffect(() => {
setMounted(true);
setCurrentPath(window.location.pathname);
+ // Update document title for SEO
+ document.title = "404 - Page Not Found | OpenDSA";
}, []);
// Generate stable random delays for particles
@@ -190,8 +192,7 @@ export default function NotFound() {
- The algorithm you're searching for doesn't exist in our registry.
- Perhaps it's still being visualized somewhere in the void.
+ Looks like you've ventured into uncharted territory. The page you're looking for doesn't exist or has been moved.
) : (
/* Linear Flow */
@@ -263,15 +262,14 @@ export function Architecture() {
{activeFlowStep === index && (
)}
-
+
{step.label}
diff --git a/apps/web/src/components/sections/faq.tsx b/apps/web/src/components/sections/faq.tsx
index 3584e45..9e281c6 100644
--- a/apps/web/src/components/sections/faq.tsx
+++ b/apps/web/src/components/sections/faq.tsx
@@ -20,12 +20,12 @@ const faqItems: FAQItem[] = [
{
id: "0x02",
question: "WHAT ALGORITHMS ARE SUPPORTED?",
- answer: "We support sorting algorithms (bubble, quick, merge, heap, insertion, selection), searching (binary, linear), graph algorithms (BFS, DFS, Dijkstra's), and tree operations (BST, AVL). More are being added regularly.",
+ answer: "We support all forms of algorithms including sorting algorithms (bubble, quick, merge, heap, insertion, selection), searching (binary, linear), graph algorithms (BFS, DFS, Dijkstra's), tree operations (BST, AVL), ML & DL algorithms, Maths, Physics and more. More are being added regularly.",
},
{
id: "0x03",
question: "CAN I CONTRIBUTE NEW ALGORITHMS?",
- answer: "Absolutely! We welcome contributions. Check our CONTRIBUTING.md guide on GitHub to get started. Each visualizer is a modular plugin, making it easy to add new ones.",
+ answer: "Absolutely! We welcome contributions. Check our CONTRIBUTING.md guide on GitHub or documentation website at https://docs.opendsa.vercel.app/ to get started. Each visualizer is a modular plugin, making it easy to add new ones.",
},
{
id: "0x04",
@@ -100,16 +100,16 @@ export function FAQ() {
Still have questions?
- JOIN DISCUSSIONS
+ JOIN COMMUNITY