From c61cd5d4bc06aa0483505ce7047b18dc14834d56 Mon Sep 17 00:00:00 2001 From: Soumya-Badiger Date: Thu, 8 Jan 2026 13:15:05 +0530 Subject: [PATCH 1/2] Add contributors page with onboarding and encouragement --- LocalMind-Frontend/package-lock.json | 15 ++- .../contributors/ContributorsPage.tsx | 93 +++++++++++++++++++ 2 files changed, 107 insertions(+), 1 deletion(-) create mode 100644 LocalMind-Frontend/src/features/Dashboard/contributors/ContributorsPage.tsx diff --git a/LocalMind-Frontend/package-lock.json b/LocalMind-Frontend/package-lock.json index 8ed7bd2..796c87c 100644 --- a/LocalMind-Frontend/package-lock.json +++ b/LocalMind-Frontend/package-lock.json @@ -62,6 +62,7 @@ "integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.5", @@ -1205,6 +1206,7 @@ "integrity": "sha512-vnDVpYPMzs4wunl27jHrfmwojOGKya0xyM3sH+UE5iv5uPS6vX7UIoh6m+vQc5LGBq52HBKPIn/zcSZVzeDEZg==", "devOptional": true, "license": "MIT", + "peer": true, "dependencies": { "undici-types": "~7.16.0" } @@ -1215,6 +1217,7 @@ "integrity": "sha512-MWtvHrGZLFttgeEj28VXHxpmwYbor/ATPYbBfSFZEIRK0ecCFLl2Qo55z52Hss+UV9CRN7trSeq1zbgx7YDWWg==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "csstype": "^3.2.2" } @@ -1274,6 +1277,7 @@ "integrity": "sha512-3xP4XzzDNQOIqBMWogftkwxhg5oMKApqY0BAflmLZiFYHqyhSOxv/cd/zPQLTcCXr4AkaKb25joocY0BD1WC6A==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "8.51.0", "@typescript-eslint/types": "8.51.0", @@ -1525,6 +1529,7 @@ "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "dev": true, "license": "MIT", + "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -1639,6 +1644,7 @@ } ], "license": "MIT", + "peer": true, "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", @@ -1853,6 +1859,7 @@ "integrity": "sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", @@ -2173,7 +2180,8 @@ "version": "3.14.2", "resolved": "https://registry.npmjs.org/gsap/-/gsap-3.14.2.tgz", "integrity": "sha512-P8/mMxVLU7o4+55+1TCnQrPmgjPKnwkzkXOK1asnR9Jg2lna4tEY5qBJjMmAaOBDDZWtlRjBXjLa0w53G/uBLA==", - "license": "Standard 'no charge' license: https://gsap.com/standard-license." + "license": "Standard 'no charge' license: https://gsap.com/standard-license.", + "peer": true }, "node_modules/has-flag": { "version": "4.0.0", @@ -2789,6 +2797,7 @@ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "license": "MIT", + "peer": true, "engines": { "node": ">=12" }, @@ -2849,6 +2858,7 @@ "resolved": "https://registry.npmjs.org/react/-/react-19.2.3.tgz", "integrity": "sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA==", "license": "MIT", + "peer": true, "engines": { "node": ">=0.10.0" } @@ -2858,6 +2868,7 @@ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.3.tgz", "integrity": "sha512-yELu4WmLPw5Mr/lmeEpox5rw3RETacE++JgHqQzd2dg+YbJuat3jH4ingc+WPZhxaoFzdv9y33G+F7Nl5O0GBg==", "license": "MIT", + "peer": true, "dependencies": { "scheduler": "^0.27.0" }, @@ -3116,6 +3127,7 @@ "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "dev": true, "license": "Apache-2.0", + "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -3202,6 +3214,7 @@ "resolved": "https://registry.npmjs.org/rolldown-vite/-/rolldown-vite-7.1.14.tgz", "integrity": "sha512-eSiiRJmovt8qDJkGyZuLnbxAOAdie6NCmmd0NkTC0RJI9duiSBTfr8X2mBYJOUFzxQa2USaHmL99J9uMxkjCyw==", "license": "MIT", + "peer": true, "dependencies": { "@oxc-project/runtime": "0.92.0", "fdir": "^6.5.0", diff --git a/LocalMind-Frontend/src/features/Dashboard/contributors/ContributorsPage.tsx b/LocalMind-Frontend/src/features/Dashboard/contributors/ContributorsPage.tsx new file mode 100644 index 0000000..b6e0a46 --- /dev/null +++ b/LocalMind-Frontend/src/features/Dashboard/contributors/ContributorsPage.tsx @@ -0,0 +1,93 @@ +const ContributorsPage = () => { + return ( +
+ {/* Page Title */} +

Contributors

+ + {/* Introduction */} +

+ This project is built by people like you. + Every contribution — big or small — helps this community grow. +

+ +

+ Whether you are a beginner or an experienced developer, you are welcome + here. Collaboration makes us stronger +

+ +
+ + {/* Contributors List */} +

Our Contributors

+ +
+
+

Your Name

+

Email: your.email@example.com

+

+ GitHub:{" "} + + https://github.com/your-username + +

+

+ LinkedIn:{" "} + + https://linkedin.com/in/your-profile + +

+

+ Bio: Passionate developer who loves learning and contributing to + open-source. +

+

Area of Contribution: Frontend / Documentation / Bug Fixes

+
+
+ +
+ + {/* How to Become a Contributor */} +

How to Become a Contributor

+ +
    +
  1. Fork the repository
  2. +
  3. Pick an issue or improve existing features
  4. +
  5. Create a new branch
  6. +
  7. Make your changes
  8. +
  9. Submit a Pull Request
  10. +
+ +

+ No contribution is too small — even fixing a typo helps +

+ +
+ + {/* Call to Action */} +

New Here? You’re Welcome

+ +

+ Beginners are encouraged to contribute. + This project is a safe space to learn, grow, and collaborate. +

+ +

+ If you’re unsure where to start, check the issues labeled{" "} + “good first issue”. +

+ +

+ Let’s build something amazing together +

+
+ ); +}; + +export default ContributorsPage; From a3e6a4681d7d71b9228701f4ddfc3aec5497356d Mon Sep 17 00:00:00 2001 From: Soumya-Badiger Date: Thu, 8 Jan 2026 14:53:17 +0530 Subject: [PATCH 2/2] Add contributors page with onboarding, cards, and submission form --- .../src/app/routes/AppRoutes.tsx | 19 +- .../contributors/ContributorsPage.tsx | 249 +++++++++++++----- 2 files changed, 187 insertions(+), 81 deletions(-) diff --git a/LocalMind-Frontend/src/app/routes/AppRoutes.tsx b/LocalMind-Frontend/src/app/routes/AppRoutes.tsx index af480f1..ac51dbd 100644 --- a/LocalMind-Frontend/src/app/routes/AppRoutes.tsx +++ b/LocalMind-Frontend/src/app/routes/AppRoutes.tsx @@ -1,26 +1,29 @@ 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 LoginPage from '../../shared/component/V1/LoginPage' +import ContributorsPage from '../../features/Dashboard/contributors/ContributorsPage' const AppRoutes: React.FC = () => { return ( - {/* Homepage */} + {/* Home Page */} } /> - {/* Sign Up / Login Page */} + {/* Contributors Page */} + } /> + + {/* Login Page */} } /> - {/* Register Page - TODO: Create dedicated RegisterPage component */} + {/* Register Page (temporary using LoginPage) */} } /> - {/* Forgot Password Page - TODO: Create ForgotPasswordPage component */} + {/* Forgot Password Page (temporary using LoginPage) */} } /> - - {/* Chat Page */} ) } -export default AppRoutes +export default AppRoutes \ No newline at end of file diff --git a/LocalMind-Frontend/src/features/Dashboard/contributors/ContributorsPage.tsx b/LocalMind-Frontend/src/features/Dashboard/contributors/ContributorsPage.tsx index b6e0a46..7d59d46 100644 --- a/LocalMind-Frontend/src/features/Dashboard/contributors/ContributorsPage.tsx +++ b/LocalMind-Frontend/src/features/Dashboard/contributors/ContributorsPage.tsx @@ -1,93 +1,196 @@ -const ContributorsPage = () => { - return ( -
- {/* Page Title */} -

Contributors

+import React, { useState } from "react"; - {/* Introduction */} -

- This project is built by people like you. - Every contribution — big or small — helps this community grow. -

+type Contributor = { + name: string; + github: string; + linkedin: string; + role: string; +}; -

- Whether you are a beginner or an experienced developer, you are welcome - here. Collaboration makes us stronger -

+const ContributorsPage = () => { + const [contributors, setContributors] = useState([]); + const [form, setForm] = useState({ + name: "", + github: "", + linkedin: "", + role: "", + }); -
+ const handleChange = (e: React.ChangeEvent) => { + setForm({ ...form, [e.target.name]: e.target.value }); + }; - {/* Contributors List */} -

Our Contributors

+ const addContributor = () => { + if (!form.name || !form.github) { + alert("Name and GitHub are required"); + return; + } + setContributors([...contributors, form]); + setForm({ name: "", github: "", linkedin: "", role: "" }); + }; -
-
-

Your Name

-

Email: your.email@example.com

-

- GitHub:{" "} - - https://github.com/your-username - -

-

- LinkedIn:{" "} - - https://linkedin.com/in/your-profile - -

-

- Bio: Passionate developer who loves learning and contributing to - open-source. -

-

Area of Contribution: Frontend / Documentation / Bug Fixes

-
+ return ( +
+ {/* HERO */} +
+

Contributors 💙

+

+ Built by people like you. Every contribution — big or small — matters. +

-
+ {/* ADD CONTRIBUTOR FORM */} +
+

Add Yourself

- {/* How to Become a Contributor */} -

How to Become a Contributor

+ -
    -
  1. Fork the repository
  2. -
  3. Pick an issue or improve existing features
  4. -
  5. Create a new branch
  6. -
  7. Make your changes
  8. -
  9. Submit a Pull Request
  10. -
+ -

- No contribution is too small — even fixing a typo helps -

+ -
+ - {/* Call to Action */} -

New Here? You’re Welcome

+ +
+ + {/* CONTRIBUTORS LIST */} +

Our Contributors

-

- Beginners are encouraged to contribute. - This project is a safe space to learn, grow, and collaborate. -

+
+ {contributors.map((c, index) => ( +
+

{c.name}

-

- If you’re unsure where to start, check the issues labeled{" "} - “good first issue”. -

+
+ + GitHub + + {c.linkedin && ( + + LinkedIn + + )} +
-

- Let’s build something amazing together -

+ {c.role && {c.role}} +
+ ))} +
+ + {/* HOW TO CONTRIBUTE */} +
+

How to Become a Contributor

+
    +
  1. Fork the repository
  2. +
  3. Pick an issue or improve a feature
  4. +
  5. Create a new branch
  6. +
  7. Make your changes
  8. +
  9. Submit a Pull Request 🎉
  10. +
+
); }; +/* ---------- STYLES ---------- */ + +const inputStyle: React.CSSProperties = { + display: "block", + width: "100%", + padding: "0.6rem", + marginTop: "0.75rem", + borderRadius: "8px", + border: "1px solid #d1d5db", +}; + +const buttonStyle: React.CSSProperties = { + marginTop: "1.2rem", + background: "#2563eb", + color: "#fff", + padding: "0.6rem 1.4rem", + border: "none", + borderRadius: "10px", + cursor: "pointer", + fontWeight: 600, +}; + +const cardStyle: React.CSSProperties = { + background: "#fff", + padding: "1.5rem", + borderRadius: "14px", + boxShadow: "0 10px 25px rgba(0,0,0,0.08)", +}; + +const link: React.CSSProperties = { + marginRight: "12px", + color: "#2563eb", + textDecoration: "none", + fontWeight: 500, +}; + +const tag: React.CSSProperties = { + display: "inline-block", + marginTop: "0.8rem", + background: "#eef2ff", + color: "#4338ca", + padding: "0.25rem 0.7rem", + borderRadius: "999px", + fontSize: "0.75rem", +}; + export default ContributorsPage;