Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 37 additions & 10 deletions src/components/LearnerDashboard.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,10 @@ import { Helmet } from 'react-helmet';
import Footer from './Footer';
import useDarkMode from './useDarkMode';
import BackToTopButton from './BackToTopButton';
import categorizedMLContent from '../../categorizedMLContent';
import categorizedDLContent from '../../categorizedDLContent';
import categorizedGenAIContent from '../../categorizedGenAIContent';
import categorizedPrerequisiteContent from '../../categorizedPrerequisiteContent';

// Animation variants
const cardVariants = {
Expand Down Expand Up @@ -41,35 +45,39 @@ const LearnerDashboard = () => {
setTimeout(() => setIsTransitioning(false), 300);
};

// Roadmaps configuration with localStorage keys
// Roadmaps configuration with localStorage keys and content
const roadmaps = [
{
id: 'prerequisiteRoadmapProgress',
title: 'Prerequisites',
path: '/prerequisites',
color: 'from-emerald-500 to-teal-500',
icon: <BookOpen className="w-5 h-5" />
icon: <BookOpen className="w-5 h-5" />,
content: categorizedPrerequisiteContent
},
{
id: 'mlRoadmapProgress',
title: 'Machine Learning',
path: '/machinelearning',
color: 'from-blue-500 to-indigo-500',
icon: <Target className="w-5 h-5" />
icon: <Target className="w-5 h-5" />,
content: categorizedMLContent
},
{
id: 'dlRoadmapProgress',
title: 'Deep Learning',
path: '/deeplearning',
color: 'from-purple-500 to-pink-500',
icon: <TrendingUp className="w-5 h-5" />
icon: <TrendingUp className="w-5 h-5" />,
content: categorizedDLContent
},
{
id: 'genaiRoadmapProgress',
title: 'Generative AI',
path: '/genai',
color: 'from-amber-500 to-orange-500',
icon: <Award className="w-5 h-5" />
icon: <Award className="w-5 h-5" />,
content: categorizedGenAIContent
}
];

Expand All @@ -81,16 +89,25 @@ const LearnerDashboard = () => {
let completedVideos = 0;

roadmaps.forEach(roadmap => {
// Calculate total resources from content
const roadmapContent = roadmap.content;
if (roadmapContent) {
Object.keys(roadmapContent).forEach(topicName => {
const videos = roadmapContent[topicName];
totalVideos += videos.length;
});
}

// Load progress from localStorage
const roadmapProgress = localStorage.getItem(roadmap.id);
if (roadmapProgress) {
try {
const parsed = JSON.parse(roadmapProgress);
savedProgress[roadmap.id] = parsed;

// Calculate stats - the progress object has keys like "TopicName_videoUrl"
// Calculate completed count - the progress object has keys like "TopicName_videoUrl"
// and values are boolean (true for completed)
Object.keys(parsed).forEach(key => {
totalVideos++;
if (parsed[key] === true) {
completedVideos++;
}
Expand All @@ -115,10 +132,20 @@ const LearnerDashboard = () => {

// Calculate progress for each roadmap
const getRoadmapProgress = (roadmapId) => {
const roadmap = roadmaps.find(r => r.id === roadmapId);
const roadmapData = progress[roadmapId] || {};
const videos = Object.keys(roadmapData);
const completed = videos.filter(v => roadmapData[v] === true).length;
const total = videos.length;

// Calculate total resources from content
let total = 0;
if (roadmap && roadmap.content) {
Object.keys(roadmap.content).forEach(topicName => {
const videos = roadmap.content[topicName];
total += videos.length;
});
}

// Count completed videos
const completed = Object.keys(roadmapData).filter(v => roadmapData[v] === true).length;
const percent = total > 0 ? Math.round((completed / total) * 100) : 0;

return { completed, inProgress: 0, total, percent };
Expand Down
100 changes: 98 additions & 2 deletions src/components/PrivacyPolicy.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,104 @@ const PrivacyPolicy = () => {
Privacy Policy
</h1>
<div className={`prose dark:prose-invert lg:prose-xl mx-auto mt-8 ${darkMode ? 'text-gray-300' : 'text-gray-700'}`}>
<p>This is a placeholder for the Privacy Policy page. Content will be added here soon.</p>
<p>We are committed to protecting your privacy. This policy will outline how we collect, use, and safeguard your information.</p>
<p className="text-sm mb-8">Last Updated: November 2025</p>

<h2 className="text-2xl font-bold mt-8 mb-4">Introduction</h2>
<p>
Welcome to mldl.study. We respect your privacy and are committed to protecting your personal information.
This Privacy Policy explains how we collect, use, and safeguard information when you use our website.
</p>

<h2 className="text-2xl font-bold mt-8 mb-4">Information We Collect</h2>
<h3 className="text-xl font-semibold mt-6 mb-3">Local Storage Data</h3>
<p>
Our website uses browser local storage to save your learning progress, preferences, and settings.
This data is stored locally on your device and is not transmitted to our servers. The information includes:
</p>
<ul className="list-disc ml-6 mb-4">
<li>Your progress on various learning roadmaps and topics</li>
<li>Dark mode preference</li>
<li>Bookmarked questions and resources</li>
<li>Modal dismissal preferences</li>
</ul>

<h3 className="text-xl font-semibold mt-6 mb-3">Analytics Data</h3>
<p>
We use Google Analytics 4 to understand how visitors use our website. This helps us improve the user experience.
Google Analytics may collect:
</p>
<ul className="list-disc ml-6 mb-4">
<li>Pages visited and time spent on pages</li>
<li>Browser type and device information</li>
<li>Geographic location (country/city level)</li>
<li>Referral sources</li>
</ul>

<h2 className="text-2xl font-bold mt-8 mb-4">How We Use Your Information</h2>
<p>We use the collected information to:</p>
<ul className="list-disc ml-6 mb-4">
<li>Provide and maintain the learning platform functionality</li>
<li>Track your personal learning progress across sessions</li>
<li>Understand usage patterns to improve our content and features</li>
<li>Analyze website performance and user engagement</li>
</ul>

<h2 className="text-2xl font-bold mt-8 mb-4">Data Storage and Security</h2>
<p>
All user-specific data (progress, preferences) is stored locally in your browser&apos;s local storage.
We do not collect, store, or transmit this personal data to our servers. You have full control over this
data and can clear it at any time through your browser settings.
</p>

<h2 className="text-2xl font-bold mt-8 mb-4">Third-Party Services</h2>
<h3 className="text-xl font-semibold mt-6 mb-3">Google Analytics</h3>
<p>
We use Google Analytics 4, which may use cookies to collect anonymous usage data. You can opt-out of
Google Analytics tracking by installing the Google Analytics Opt-out Browser Add-on.
</p>

<h3 className="text-xl font-semibold mt-6 mb-3">External Links</h3>
<p>
Our website contains links to external resources, including YouTube videos and other educational content.
These third-party websites have their own privacy policies, and we are not responsible for their practices.
</p>

<h2 className="text-2xl font-bold mt-8 mb-4">Your Rights</h2>
<p>You have the right to:</p>
<ul className="list-disc ml-6 mb-4">
<li>Access and review your locally stored data through browser developer tools</li>
<li>Delete your local data by clearing your browser&apos;s local storage</li>
<li>Opt-out of analytics tracking through browser settings or extensions</li>
<li>Use the website without accepting analytics cookies</li>
</ul>

<h2 className="text-2xl font-bold mt-8 mb-4">Children&apos;s Privacy</h2>
<p>
Our website does not specifically target children under 13. We do not knowingly collect personal
information from children. If you believe a child has provided information to us, please contact us
so we can take appropriate action.
</p>

<h2 className="text-2xl font-bold mt-8 mb-4">Changes to This Policy</h2>
<p>
We may update this Privacy Policy from time to time. We will notify users of any material changes by
updating the &quot;Last Updated&quot; date at the top of this policy. Your continued use of the website after
such changes constitutes acceptance of the updated policy.
</p>

<h2 className="text-2xl font-bold mt-8 mb-4">Contact Us</h2>
<p>
If you have any questions or concerns about this Privacy Policy, please contact us through our
GitHub repository at{' '}
<a
href="https://github.com/anshaneja5/mldl.study"
target="_blank"
rel="noopener noreferrer"
className={darkMode ? 'text-blue-400 hover:text-blue-300' : 'text-blue-600 hover:text-blue-700'}
>
github.com/anshaneja5/mldl.study
</a>
</p>
</div>
</div>
</div>
Expand Down
168 changes: 166 additions & 2 deletions src/components/TermsOfUse.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,172 @@ const TermsOfUse = () => {
Terms of Use
</h1>
<div className={`prose dark:prose-invert lg:prose-xl mx-auto mt-8 ${darkMode ? 'text-gray-300' : 'text-gray-700'}`}>
<p>This is a placeholder for the Terms of Use page. Content will be added here soon.</p>
<p>By using this website, you will be agreeing to the terms and conditions outlined in this document.</p>
<p className="text-sm mb-8">Last Updated: November 2025</p>

<h2 className="text-2xl font-bold mt-8 mb-4">1. Acceptance of Terms</h2>
<p>
By accessing and using mldl.study (&quot;the Website&quot;), you accept and agree to be bound by these Terms of Use.
If you do not agree to these terms, please do not use the Website.
</p>

<h2 className="text-2xl font-bold mt-8 mb-4">2. Description of Service</h2>
<p>
mldl.study is a free educational platform that provides curated learning resources, roadmaps, and materials
for Machine Learning, Deep Learning, and Artificial Intelligence. The service includes:
</p>
<ul className="list-disc ml-6 mb-4">
<li>Interactive learning roadmaps for ML/DL topics</li>
<li>Curated video content and educational resources</li>
<li>Progress tracking features stored locally in your browser</li>
<li>Question banks and practice materials</li>
<li>Research paper recommendations</li>
</ul>

<h2 className="text-2xl font-bold mt-8 mb-4">3. Use License</h2>
<p>
Permission is granted to access and use the Website for personal, non-commercial educational purposes.
This license does not include:
</p>
<ul className="list-disc ml-6 mb-4">
<li>Modifying or copying the Website&apos;s materials without permission</li>
<li>Using the materials for commercial purposes</li>
<li>Attempting to decompile or reverse engineer any software on the Website</li>
<li>Removing any copyright or proprietary notations from the materials</li>
<li>Transferring the materials to another person or mirroring on another server</li>
</ul>

<h2 className="text-2xl font-bold mt-8 mb-4">4. Educational Purpose</h2>
<p>
All content on this Website is provided for educational purposes only. The roadmaps, resources, and
materials are curated to help learners navigate their journey in ML/DL, but we make no guarantees about:
</p>
<ul className="list-disc ml-6 mb-4">
<li>The completeness or accuracy of the content</li>
<li>Career outcomes or employment opportunities</li>
<li>Certification or academic credit</li>
<li>The availability of linked external resources</li>
</ul>

<h2 className="text-2xl font-bold mt-8 mb-4">5. External Links and Resources</h2>
<p>
The Website contains links to external resources, including YouTube videos, articles, and other educational
platforms. These links are provided for convenience, and we do not:
</p>
<ul className="list-disc ml-6 mb-4">
<li>Control or endorse the content of external websites</li>
<li>Take responsibility for the availability or accuracy of external resources</li>
<li>Guarantee that external links will remain functional</li>
<li>Assume liability for any harm or damages from using external resources</li>
</ul>

<h2 className="text-2xl font-bold mt-8 mb-4">6. User Conduct</h2>
<p>You agree not to use the Website to:</p>
<ul className="list-disc ml-6 mb-4">
<li>Violate any applicable laws or regulations</li>
<li>Transmit any harmful, offensive, or inappropriate content</li>
<li>Attempt to gain unauthorized access to the Website or its systems</li>
<li>Interfere with or disrupt the Website&apos;s functionality</li>
<li>Collect or harvest information about other users</li>
<li>Use automated systems (bots, scrapers) without permission</li>
</ul>

<h2 className="text-2xl font-bold mt-8 mb-4">7. Intellectual Property</h2>
<p>
The Website&apos;s design, structure, and organization are protected by intellectual property rights.
The curated content, roadmaps, and original materials are either:
</p>
<ul className="list-disc ml-6 mb-4">
<li>Owned by mldl.study</li>
<li>Licensed from third parties</li>
<li>Linked from publicly available educational resources</li>
</ul>
<p>
All linked content (videos, articles, papers) remains the property of their respective owners and
is subject to their own terms of use.
</p>

<h2 className="text-2xl font-bold mt-8 mb-4">8. Disclaimer of Warranties</h2>
<p>
The Website and its content are provided &quot;as is&quot; without warranties of any kind, either express or implied.
We do not warrant that:
</p>
<ul className="list-disc ml-6 mb-4">
<li>The Website will be error-free or uninterrupted</li>
<li>Defects will be corrected</li>
<li>The Website is free of viruses or harmful components</li>
<li>The results from using the Website will meet your expectations</li>
<li>The information provided is complete, accurate, or current</li>
</ul>

<h2 className="text-2xl font-bold mt-8 mb-4">9. Limitation of Liability</h2>
<p>
To the fullest extent permitted by law, mldl.study shall not be liable for any direct, indirect,
incidental, consequential, or special damages arising from:
</p>
<ul className="list-disc ml-6 mb-4">
<li>Use or inability to use the Website</li>
<li>Loss of data or progress stored in local storage</li>
<li>Reliance on information provided on the Website</li>
<li>Errors, omissions, or inaccuracies in the content</li>
<li>Third-party content or external links</li>
</ul>

<h2 className="text-2xl font-bold mt-8 mb-4">10. User-Generated Content</h2>
<p>
If the Website allows user contributions or feedback in the future, you grant mldl.study a non-exclusive,
royalty-free, perpetual license to use, modify, and display such content for educational purposes.
</p>

<h2 className="text-2xl font-bold mt-8 mb-4">11. Modifications to Service</h2>
<p>
We reserve the right to modify, suspend, or discontinue any part of the Website at any time without
notice. We may also update these Terms of Use periodically. Your continued use of the Website after
changes constitutes acceptance of the new terms.
</p>

<h2 className="text-2xl font-bold mt-8 mb-4">12. Privacy</h2>
<p>
Your use of the Website is also governed by our Privacy Policy. Please review our Privacy Policy to
understand how we handle information.
</p>

<h2 className="text-2xl font-bold mt-8 mb-4">13. Governing Law</h2>
<p>
These Terms of Use shall be governed by and construed in accordance with applicable laws, without
regard to conflict of law provisions.
</p>

<h2 className="text-2xl font-bold mt-8 mb-4">14. Open Source</h2>
<p>
This project is open source and welcomes contributions. By contributing to the project, you agree
that your contributions will be licensed under the same license as the project.
</p>

<h2 className="text-2xl font-bold mt-8 mb-4">15. Contact Information</h2>
<p>
If you have questions about these Terms of Use, please contact us through our GitHub repository at{' '}
<a
href="https://github.com/anshaneja5/mldl.study"
target="_blank"
rel="noopener noreferrer"
className={darkMode ? 'text-blue-400 hover:text-blue-300' : 'text-blue-600 hover:text-blue-700'}
>
github.com/anshaneja5/mldl.study
</a>
</p>

<h2 className="text-2xl font-bold mt-8 mb-4">16. Severability</h2>
<p>
If any provision of these Terms of Use is found to be unenforceable or invalid, that provision shall
be limited or eliminated to the minimum extent necessary, and the remaining provisions shall remain
in full force and effect.
</p>

<h2 className="text-2xl font-bold mt-8 mb-4">Acknowledgment</h2>
<p>
By using mldl.study, you acknowledge that you have read, understood, and agree to be bound by these
Terms of Use.
</p>
</div>
</div>
</div>
Expand Down