diff --git a/LocalMind-Frontend/src/app/pages/Contributors.tsx b/LocalMind-Frontend/src/app/pages/Contributors.tsx
new file mode 100644
index 0000000..c6cd16f
--- /dev/null
+++ b/LocalMind-Frontend/src/app/pages/Contributors.tsx
@@ -0,0 +1,218 @@
+import React, { useMemo, useState } from "react";
+import { CONTRIBUTORS, type Contributor } from "../../data/contributors";
+import s from "./contributors.module.css";
+
+const REPO_ISSUE_NEW_URL = "https://github.com/NexGenStudioDev/LocalMind/issues/new";
+
+function enc(x: string) {
+ return encodeURIComponent(x);
+}
+
+function buildNewIssueUrl(c: Contributor) {
+ const title = `Add contributor: ${c.name}`;
+
+ const body = `Hi maintainers,
+Please add me to the Contributors page.
+
+Name: ${c.name}
+Email: ${c.email}
+GitHub: ${c.github}
+LinkedIn: ${c.linkedin}
+Bio: ${c.bio}
+Area of contribution (optional): ${c.area ?? ""}
+Tags (optional): ${(c.tags ?? []).join(", ")}
+
+Notes:
+- Beginners are welcome.
+- No contribution is too small.
+`;
+
+ return `${REPO_ISSUE_NEW_URL}?title=${enc(title)}&body=${enc(body)}`;
+}
+
+export default function ContributorsPage() {
+ const [name, setName] = useState("");
+ const [email, setEmail] = useState("");
+ const [github, setGithub] = useState("");
+ const [linkedin, setLinkedin] = useState("");
+ const [bio, setBio] = useState("");
+ const [area, setArea] = useState("");
+ const [tags, setTags] = useState("");
+
+ const list = CONTRIBUTORS;
+
+ const issueUrl = useMemo(() => {
+ const c: Contributor = {
+ name: name.trim(),
+ email: email.trim(),
+ github: github.trim(),
+ linkedin: linkedin.trim(),
+ bio: bio.trim(),
+ area: area.trim() || undefined,
+ tags: tags
+ .split(",")
+ .map((t) => t.trim())
+ .filter(Boolean),
+ };
+
+ return c.name && c.email && c.github && c.linkedin && c.bio
+ ? buildNewIssueUrl(c)
+ : "";
+ }, [name, email, github, linkedin, bio, area, tags]);
+
+ return (
+
+
+
+
+ People who contributed
+
+
+ {list.map((c) => (
+
+
+
{c.name}
+ {c.area ? {c.area} : null}
+
+
+ {c.bio}
+
+
+
+ {c.tags && c.tags.length ? (
+
+ {c.tags.map((t) => (
+
+ {t}
+
+ ))}
+
+ ) : null}
+
+ ))}
+
+
+
+
+ How to become a contributor
+
+ - Pick an issue labeled “good first issue” (or any small task).
+ - Fork the repo, create a new branch, and make a focused change.
+ - Open a pull request and describe what you changed and why.
+ - Ask questions—collaboration helps everyone grow.
+
+
+
+
+ Add your details
+
+
+ Fill the fields below and click “Create request”. It will open a
+ GitHub issue with your details prefilled.
+
+
+
+
+
+ );
+}
diff --git a/LocalMind-Frontend/src/app/pages/contributors.module.css b/LocalMind-Frontend/src/app/pages/contributors.module.css
new file mode 100644
index 0000000..835a672
--- /dev/null
+++ b/LocalMind-Frontend/src/app/pages/contributors.module.css
@@ -0,0 +1,46 @@
+.cwrap { max-width: 1050px; margin: 0 auto; padding: 24px 16px 60px; }
+.chead h1 { margin: 0 0 8px; font-size: 34px; }
+.csub { margin: 0; opacity: 0.85; line-height: 1.5; }
+.csec { margin-top: 28px; }
+.csec h2 { margin: 0 0 12px; font-size: 20px; }
+
+.cgrid { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 14px; }
+.ccard { border: 1px solid rgba(0,0,0,0.12); border-radius: 12px; padding: 14px; background: #fff; }
+.ctop { display: flex; gap: 10px; align-items: center; justify-content: space-between; }
+.cname { margin: 0; font-size: 16px; }
+.cpill { font-size: 12px; padding: 4px 8px; border-radius: 999px; background: rgba(0,0,0,0.06); }
+.cbio { margin: 10px 0; line-height: 1.45; opacity: 0.9; }
+
+.clinks { display: flex; gap: 12px; flex-wrap: wrap; }
+.clinks a { text-decoration: none; color: #2563eb; }
+.clinks a:hover { text-decoration: underline; }
+
+.ctags { margin-top: 10px; display: flex; flex-wrap: wrap; gap: 8px; }
+.ctag { font-size: 12px; padding: 4px 8px; border-radius: 999px; border: 1px solid rgba(0,0,0,0.12); }
+
+.clist { margin: 10px 0 0; padding-left: 18px; line-height: 1.6; }
+
+.cform { display: grid; gap: 10px; max-width: 650px; }
+.cform label { display: grid; gap: 6px; font-size: 13px; opacity: 0.95; }
+.cform input, .cform textarea {
+ width: 100%;
+ border: 1px solid rgba(0,0,0,0.16);
+ border-radius: 10px;
+ padding: 10px 12px;
+ font-size: 14px;
+ outline: none;
+}
+.cform textarea { min-height: 90px; resize: vertical; }
+
+.cactions { display: flex; gap: 12px; align-items: center; flex-wrap: wrap; margin-top: 6px; }
+.cbtn {
+ border: none;
+ border-radius: 10px;
+ padding: 10px 14px;
+ background: #111827;
+ color: white;
+ cursor: pointer;
+}
+.cbtn:disabled { opacity: 0.5; cursor: not-allowed; }
+.clink { color: #2563eb; text-decoration: none; }
+.clink:hover { text-decoration: underline; }
diff --git a/LocalMind-Frontend/src/app/routes/AppRoutes.tsx b/LocalMind-Frontend/src/app/routes/AppRoutes.tsx
index af480f1..dfc4333 100644
--- a/LocalMind-Frontend/src/app/routes/AppRoutes.tsx
+++ b/LocalMind-Frontend/src/app/routes/AppRoutes.tsx
@@ -2,6 +2,7 @@ import React from 'react'
import { Route, Routes } from 'react-router-dom'
import HomePage from '../../features/Dashboard/V1/Component/Pages/HomePage'
import LoginPage from '../../shared/component/v1/LoginPage'
+import ContributorsPage from "../pages/Contributors";
const AppRoutes: React.FC = () => {
return (
@@ -19,6 +20,9 @@ const AppRoutes: React.FC = () => {
} />
{/* Chat Page */}
+
+ {/* Contributors page*/}
+ } />
)
}
diff --git a/LocalMind-Frontend/src/data/contributors.ts b/LocalMind-Frontend/src/data/contributors.ts
new file mode 100644
index 0000000..5d51c4a
--- /dev/null
+++ b/LocalMind-Frontend/src/data/contributors.ts
@@ -0,0 +1,21 @@
+export type Contributor = {
+ name: string;
+ email: string;
+ github: string;
+ linkedin: string;
+ bio: string;
+ area?: string; // optional
+ tags?: string[]; // optional
+};
+
+export const CONTRIBUTORS: Contributor[] = [
+ {
+ name: "Abhishek Kumar",
+ email: "example@email.com",
+ github: "https://github.com/abhishek-nexgen-dev",
+ linkedin: "https://www.linkedin.com/in/your-link/",
+ bio: "Aspiring software engineer. Interested in building friendly open-source tools.",
+ area: "Core development",
+ tags: ["frontend", "typescript"],
+ },
+];
diff --git a/LocalMind-Frontend/src/shared/component/v1/Navbar.tsx b/LocalMind-Frontend/src/shared/component/v1/Navbar.tsx
index bfe080a..06520c5 100644
--- a/LocalMind-Frontend/src/shared/component/v1/Navbar.tsx
+++ b/LocalMind-Frontend/src/shared/component/v1/Navbar.tsx
@@ -2,6 +2,7 @@ import React from 'react'
import Artificialintelligence from '../../../assets/Artificial intelligence.png'
import { NavLink } from 'react-router-dom'
+
const Navbar: React.FC = () => {
const navLinkClass = ({ isActive }: { isActive: boolean }) =>
isActive ? 'text-white line-through opacity-80' : 'text-white'
@@ -26,6 +27,10 @@ const Navbar: React.FC = () => {
PlayGround
+
+ Contributors
+
+