diff --git a/frontend/src/App.jsx b/frontend/src/App.jsx index 765a5a2..4e1b5ce 100644 --- a/frontend/src/App.jsx +++ b/frontend/src/App.jsx @@ -8,7 +8,7 @@ import DashboardPage from "./pages/DashboardPage"; import ExplorePage from "./pages/ExplorePage"; import CodeforcesPage from "./pages/CodeforcesPage"; import PracticePage from "./pages/PracticePage"; - +import AboutCodeLensPage from "./pages/AboutCodeLensPage"; import ApexAIPage from "./pages/ApexAIPage"; import ApexWorkspacePage from "./pages/ApexWorkspacePage"; import AlgoVersePage from "./pages/AlgoVersePage"; @@ -115,6 +115,7 @@ export default function App() { } /> } /> } /> + } /> } /> diff --git a/frontend/src/components/about/AboutCarousel.jsx b/frontend/src/components/about/AboutCarousel.jsx new file mode 100644 index 0000000..89cb4e0 --- /dev/null +++ b/frontend/src/components/about/AboutCarousel.jsx @@ -0,0 +1,119 @@ +import { useEffect, useState } from "react"; + +const slides = [ + { + title: "Competitive Programming", + description: + "Practice curated problems and strengthen problem-solving skills through structured learning.", + stat: "500+", + }, + { + title: "AlgoVerse", + description: + "Visualize algorithms and data structures with interactive learning experiences.", + stat: "DSA", + }, + { + title: "GitHub Intelligence", + description: + "Analyze repositories and gain deeper insights into development activity.", + stat: "GitHub", + }, + { + title: "APEX AI", + description: + "Leverage AI-powered tools to improve productivity and learning outcomes.", + stat: "AI", + }, + { + title: "Community Driven", + description: + "Built with community feedback and contributions to help learners grow together.", + stat: "Open", + }, +]; + +export default function AboutCarousel() { + const [current, setCurrent] = useState(0); + const [paused, setPaused] = useState(false); + + useEffect(() => { + if (paused) return; + + const timer = setInterval(() => { + setCurrent((prev) => (prev + 1) % slides.length); + }, 4500); + + return () => clearInterval(timer); + }, [paused]); + + return ( +
setPaused(true)} + onMouseLeave={() => setPaused(false)} + onFocus={() => setPaused(true)} + onBlur={() => setPaused(false)} + tabIndex={0} + aria-roledescription="carousel" + aria-label="Platform highlights" + onKeyDown={(e) => { + if (e.key === "ArrowRight") { + setCurrent((prev) => (prev + 1) % slides.length); + } + + if (e.key === "ArrowLeft") { + setCurrent( + (prev) => (prev - 1 + slides.length) % slides.length + ); + } + }} + > +
+ + + +
+

+ Platform Highlight +

+ +

+ {slides[current].title} +

+ +

+ {slides[current].description} +

+
+
+ +
+ {slides.map((slide, index) => ( +
+
+ ); +} \ No newline at end of file diff --git a/frontend/src/components/shared/Navbar.jsx b/frontend/src/components/shared/Navbar.jsx index 9ee9622..7237a20 100644 --- a/frontend/src/components/shared/Navbar.jsx +++ b/frontend/src/components/shared/Navbar.jsx @@ -402,6 +402,10 @@ export default function Navbar() { FAQ + + + About + {isAuthenticated && ( @@ -591,6 +595,9 @@ export default function Navbar() { FAQ + + About + Contact Us diff --git a/frontend/src/pages/AboutCodeLensPage.jsx b/frontend/src/pages/AboutCodeLensPage.jsx new file mode 100644 index 0000000..98d8fca --- /dev/null +++ b/frontend/src/pages/AboutCodeLensPage.jsx @@ -0,0 +1,378 @@ +import AboutCarousel from "../components/about/AboutCarousel"; +import { Link } from "react-router-dom"; + +const problems = [ + { + title: "Learning Inconsistency", + desc: "Learners often struggle to maintain a consistent learning routine.", + }, + { + title: "Lack of Structured Growth", + desc: "Without clear roadmaps, progress becomes difficult to measure.", + }, + { + title: "Progress Tracking", + desc: "Tracking growth across multiple platforms is challenging.", + }, + { + title: "Fragmented Resources", + desc: "Learning materials are scattered across countless websites.", + }, + ]; + + const values = [ + "Consistency", + "Growth", + "Simplicity", + "Accessibility", + "Community", + ]; + + + const features = [ + { + title: "Learning Analytics", + desc: "Track your learning journey, monitor progress, and gain meaningful insights into your growth. CodeLens helps learners understand their strengths and identify areas that need improvement.", + }, + { + title: "Structured Roadmaps", + desc: "Follow clear learning pathways designed to help you build skills step by step. Structured guidance makes it easier to stay focused and achieve long-term goals.", + }, + { + title: "GitHub Intelligence", + desc: "Analyze repositories, contribution activity, and development patterns. GitHub Intelligence helps users better understand their coding habits and project growth.", + }, + { + title: "Competitive Programming", + desc: "Track coding progress, participate in contests, and strengthen problem-solving skills through structured practice. CodeLens helps learners stay consistent while monitoring their competitive programming journey.", + }, + { + title: "AI Assistance", + desc: "Leverage intelligent tools that provide guidance, learning support, and productivity enhancements throughout your journey. APEX AI is designed to help learners overcome obstacles and accelerate skill development.", + }, + { + title: "Community Driven", + desc: "CodeLens evolves through collaboration, feedback, and contributions from learners and developers worldwide. By fostering an active community, the platform continuously improves and grows alongside its users.", + }, +]; +export default function AboutCodeLensPage() { + return ( +
+ + {/* HERO */} +
+
+ +
+

+ About CodeLens +

+ +

+ Empowering +
+ Consistent Learning +
+ & Growth +

+ +

+ CodeLens helps learners stay consistent, track progress, + build meaningful skills, and discover opportunities through + a structured ecosystem designed for long-term growth. +

+
+ +
+
+

{">"} Learn consistently

+

{">"} Build real skills

+

{">"} Measure growth

+

{">"} Discover opportunities

+

{">"} Join a thriving community

+
+
+ +
+
+ + {/* STATS */} +
+
+ +
+

All-in-One

+

Learning Platform

+
+ +
+

Growth

+

Focused Ecosystem

+
+ +
+

Community

+

Driven Development

+
+ +
+

Future

+

Ready Learning

+
+ +
+
+ + {/* STORY */} +
+
+

+ 01 / +

+

+ Our Story +

+ +
+ +
+ + 01 + + +

+ The Challenge +

+ +

+ Learning often feels fragmented. Resources are scattered, + progress is difficult to track, and consistency becomes + challenging. +

+
+ +
+ + 02 + + +

+ The Solution +

+ +

+ CodeLens brings learning, practice, analytics, and + opportunities into one unified experience. +

+
+ +
+ +
+
+ + {/* PROBLEMS */} +
+
+

+ 02 / +

+

+ Problems We Solve +

+ +
+ + {problems.map((item) => ( +
+

+ {item.title} +

+ +

+ {item.desc} +

+
+ ))} + +
+
+
+ + {/* MISSION VISION */} +
+
+ +

+ 03 / +

+ +
+ +
+

+ Our Mission +

+ +

+ To create an accessible, structured, and engaging learning + environment that enables learners to achieve consistent growth. +

+
+ +
+

+ Our Vision +

+ +

+ To build a global ecosystem where every learner can track + progress, unlock opportunities, and achieve their potential. +

+
+ +
+ +
+
+ + {/* FEATURES */} +
+
+

+ 04 / +

+ +

+ Platform Highlights +

+ +
+ + {features.map((feature) => ( +
+
+ +

+ {feature.title} +

+ +

+ {feature.desc} +

+
+ ))} + +
+ +
+
+ + {/* CAROUSEL */} +
+
+

+ 05 / +

+

+ Explore CodeLens +

+ + + +
+
+ + {/* VALUES */} +
+
+

+ 06 / +

+

+ Core Values +

+ +
+ + {values.map((value) => ( +
+ {value} +
+ ))} + +
+ +
+
+ + {/* COMMUNITY */} +
+ +
+

+ 07 / +

+

+ Community Driven Development +

+ +

+ CodeLens evolves through feedback, collaboration, and + contributions from learners and developers around the world. +

+ +
+ +
+ Open Source +
+ +
+ Collaboration +
+ +
+ Innovation +
+ +
+ +
+ +
+ + {/* CTA */} +
+

+ 08 / +

+

+ Start Your Learning Journey +

+ +

+ Explore CodeLens and unlock consistent growth. +

+ + + Explore Platform + + +
+ +
+ ); +} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..4eb3ea5 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,6 @@ +{ + "name": "CodeLens", + "lockfileVersion": 3, + "requires": true, + "packages": {} +}