Files
RIT-nexus/src/pages/Notes/Notes.tsx

2128 lines
120 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import { useState, useRef, useEffect } from 'react';
import { useSearchParams } from 'react-router-dom';
import { motion } from 'framer-motion';
import { Search, Download, Filter, BookOpen, FileText, ScrollText, BookMarked, ChevronRight, ArrowLeft, ExternalLink, Code, Globe, GitBranch, Cloud, Palette, Shield, DollarSign, BarChart3, Users, Megaphone, TrendingUp, UserCheck, ClipboardList, ShoppingCart, Cpu, Activity, LayoutGrid, Layers, Zap, Settings, Gauge, Radio, Wifi, Bot, Sun, Wrench, Binary, BatteryCharging, CircuitBoard, ShieldCheck, BrainCircuit, FlaskConical, Lock, Terminal, Dna, Microscope, Sparkles, Smartphone, Monitor, Server, CheckCircle2, Database, Briefcase } from 'lucide-react';
import SectionTitle from '@/components/SectionTitle/SectionTitle';
import { StaggerContainer, StaggerItem } from '@/components/AnimatedContainer/AnimatedContainer';
import { TOOLKIT_ITEMS, DEPARTMENTS } from '@/constants';
const SEMESTERS = ['All', '1st Sem', '2nd Sem', '3rd Sem', '4th Sem', '5th Sem', '6th Sem', '7th Sem', '8th Sem'];
const SUBJECTS_BY_SEM: Record<number, string[]> = {
1: [
"Communicative English",
"Matrices and Calculus",
"Physics for Information Science",
"Problem Solving and C Programming",
"Basic Electrical and Electronics Engineering",
"Heritage of Tamils",
"Physics Laboratory",
"Problem Solving and C Programming Laboratory",
"Engineering Practices Laboratory"
],
2: [
"Professional English",
"Engineering Chemistry",
"Statistics and Numerical Methods",
"Python for Data Science",
"Tamils and Technology",
"Engineering Graphics",
"Data Structures Design",
"Chemistry Laboratory",
"Python for Data Science Laboratory",
"Communication Laboratory"
]
};
const TYPE_COLORS: Record<string, { bg: string; text: string; icon: React.ComponentType<any> }> = {
notes: { bg: '#EFF6FF', text: '#3B82F6', icon: BookOpen },
pyq: { bg: '#FFF7ED', text: '#F97316', icon: FileText },
syllabus: { bg: '#ECFDF5', text: '#10B981', icon: ScrollText },
assignment: { bg: '#FDF2F8', text: '#EC4899', icon: BookMarked },
};
const NOTES_DATA = [
{ id: '1', title: 'Engineering Mathematics Unit 1-5', subject: 'Mathematics', department: 'Computer Science & Engineering', semester: 1, type: 'notes', downloads: 348, fileSize: '4.2 MB', uploadedAt: '2025-06-01' },
{ id: '2', title: 'Physics PYQ 2020-2024', subject: 'Physics', department: 'Computer Science & Engineering', semester: 1, type: 'pyq', downloads: 512, fileSize: '8.1 MB', uploadedAt: '2025-06-10' },
{ id: '3', title: 'C Programming Complete Notes', subject: 'Programming', department: 'Computer Science & Engineering', semester: 1, type: 'notes', downloads: 734, fileSize: '6.3 MB', uploadedAt: '2025-06-15' },
{ id: '4', title: 'Data Structures PYQ 2019-2024', subject: 'Data Structures', department: 'Computer Science & Engineering', semester: 3, type: 'pyq', downloads: 621, fileSize: '10.2 MB', uploadedAt: '2025-07-01' },
{ id: '5', title: 'Circuit Theory Full Notes', subject: 'Circuit Theory', department: 'Electronics & Communication', semester: 2, type: 'notes', downloads: 289, fileSize: '5.7 MB', uploadedAt: '2025-06-20' },
{ id: '6', title: 'Anna University Syllabus 2021', subject: 'Syllabus', department: 'All Departments', semester: 1, type: 'syllabus', downloads: 890, fileSize: '2.1 MB', uploadedAt: '2025-05-01' },
{ id: '7', title: 'Thermodynamics Notes', subject: 'Thermodynamics', department: 'Mechanical Engineering', semester: 3, type: 'notes', downloads: 201, fileSize: '3.9 MB', uploadedAt: '2025-06-25' },
{ id: '8', title: 'Digital Electronics PYQ', subject: 'Digital Electronics', department: 'Electronics & Communication', semester: 4, type: 'pyq', downloads: 445, fileSize: '7.3 MB', uploadedAt: '2025-07-05' },
];
const PROGRAMMING_LANGUAGES_GUIDES = [
{
name: 'Python',
tagline: 'Simple, Readable & Beginner-Friendly',
color: '#3776AB',
bg: '#EFF6FF',
whatItIs: 'Python is known for its clean, English-like syntax. It lets you write code quickly without worrying about complex computer memory setups, making it the top choice for beginners.',
keyConcepts: [
'Writing your first line of code using print("Hello World!")',
'Storing numbers, text, and lists in smart variables',
'Making decisions in code using simple if and else conditions',
'Automating repetitive tasks effortlessly using loops',
'Reusing code blocks with custom functions (def)',
'Using pre-built libraries to build web apps, AI bots, or scrape web data'
],
useCases: ['Web Development (Django, FastAPI)', 'Data Science & Analytics', 'Artificial Intelligence & Machine Learning', 'Automation & Web Scraping'],
links: [
{ label: 'Official Python Documentation', url: 'https://docs.python.org/3/' },
{ label: 'Python for Beginners Guide', url: 'https://www.python.org/about/gettingstarted/' },
{ label: 'FreeCodeCamp Python Course', url: 'https://www.freecodecamp.org/news/learn-python-free-python-courses-for-beginners/' }
]
},
{
name: 'Java',
tagline: 'Build Once, Run Anywhere',
color: '#007396',
bg: '#E0F2FE',
whatItIs: 'Java powers enterprise apps, banking systems, and Android smartphones. Code written in Java can run on any operating system without modification!',
keyConcepts: [
'Understanding Classes & Objects — modeling real-world items in code',
'Learning how the main() method serves as the starting trigger',
'Organizing data cleanly using static types like int, String, and boolean',
'Reusing existing code seamlessly with Inheritance & Interfaces',
'Handling errors gracefully so applications never crash unexpectedly',
'Building robust backend services with Spring Boot'
],
useCases: ['Enterprise Backend Systems', 'Android Application Development', 'Financial & Banking Systems', 'Large-Scale Web Services'],
links: [
{ label: 'Official Oracle Java Docs', url: 'https://docs.oracle.com/en/java/' },
{ label: 'W3Schools Java Tutorial', url: 'https://www.w3schools.com/java/' },
{ label: 'Spring Boot Getting Started', url: 'https://spring.io/guides' }
]
},
{
name: 'C++',
tagline: 'Blazing Speed & Hardware Control',
color: '#00599C',
bg: '#EFF6FF',
whatItIs: 'C++ provides ultimate control over memory and hardware. It is the core language powering high-end video games, operating systems, and flight controllers.',
keyConcepts: [
'Compiling human-readable code into ultra-fast machine instructions',
'Exploring Pointers (*) & Memory Addresses (&) for direct hardware control',
'Using the Standard Template Library (STL) for instant stacks, queues, and vectors',
'Structuring programs cleanly with Classes, Structs, and Objects',
'Solving complex algorithmic puzzles in competitive programming',
'Building 3D game engines like Unreal Engine'
],
useCases: ['Game Engines (Unreal Engine)', 'Operating Systems & Browsers', 'Competitive Programming & DSA', 'Embedded Systems & Robotics'],
links: [
{ label: 'cppreference.com Reference', url: 'https://en.cppreference.com/' },
{ label: 'LearnCpp Free Tutorials', url: 'https://www.learncpp.com/' },
{ label: 'GeeksforGeeks C++ Programming', url: 'https://www.geeksforgeeks.org/c-plus-plus/' }
]
},
{
name: 'JavaScript',
tagline: 'The Heartbeat of the Web',
color: '#D97706',
bg: '#FEFCE8',
whatItIs: 'JavaScript brings websites to life! Every button click, popup animation, dynamic page update, and live chat on the web is powered by JavaScript.',
keyConcepts: [
'Making web pages interactive by responding to user clicks and keypresses',
'Changing text, colors, and layouts dynamically on the screen (DOM)',
'Fetching live data from servers without refreshing the browser (fetch API)',
'Writing clean code using modern Arrow Functions (() => {})',
'Handling background actions smoothly using async / await',
'Building backend web servers using Node.js'
],
useCases: ['Interactive Web Interfaces (React, Vue)', 'Backend Web Servers (Node.js)', 'Full-Stack Web Applications', 'Mobile Apps (React Native)'],
links: [
{ label: 'MDN JavaScript Documentation', url: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript' },
{ label: 'JavaScript.info Modern Tutorial', url: 'https://javascript.info/' },
{ label: 'W3Schools JavaScript Guide', url: 'https://www.w3schools.com/js/' }
]
},
{
name: 'TypeScript',
tagline: 'JavaScript with Smart Safety Nets',
color: '#3178C6',
bg: '#EFF6FF',
whatItIs: 'TypeScript is JavaScript with built-in type checking! It acts like an intelligent spell-checker for code, preventing bugs and typos before your app even launches.',
keyConcepts: [
'Adding clear types (string, number) to catch bugs as you type',
'Creating Interfaces to define exact data structures for your app',
'Enjoying supercharged code suggestions & autocomplete in VS Code',
'Building scalable React and Next.js web applications',
'Catching errors during development instead of in production'
],
useCases: ['Enterprise Web Applications', 'Modern React & Next.js Apps', 'Scalable Microservices', 'Large-Scale Team Projects'],
links: [
{ label: 'Official TypeScript Handbook', url: 'https://www.typescriptlang.org/docs/handbook/intro.html' },
{ label: 'TypeScript in 5 Minutes', url: 'https://www.typescriptlang.org/docs/handbook/typescript-in-5-minutes.html' }
]
},
{
name: 'Go (Golang)',
tagline: 'Built by Google for Cloud Speed',
color: '#00ADD8',
bg: '#ECFEFF',
whatItIs: 'Created at Google for simplicity and lightning speed. Go is famous for powering modern cloud infrastructure like Docker and Kubernetes.',
keyConcepts: [
'Writing simple, ultra-clean code without unnecessary syntax clutter',
'Running thousands of background tasks at once using Goroutines',
'Passing data safely between parallel tasks using Channels',
'Building super-fast Web APIs in just a few lines of code',
'Compiling your entire project into a single fast binary executable'
],
useCases: ['Cloud Platforms (Docker, Kubernetes)', 'High-Speed Microservices', 'DevOps Tools', 'Network Infrastructure'],
links: [
{ label: 'A Tour of Go (Interactive)', url: 'https://go.dev/tour/' },
{ label: 'Official Go Documentation', url: 'https://go.dev/doc/' }
]
},
{
name: 'Rust',
tagline: 'Maximum Speed Without System Crashes',
color: '#CE412B',
bg: '#FFF7ED',
whatItIs: 'Rust gives you the speed of C++ with memory safety. It guarantees that software will not crash due to memory leaks or unexpected buffer glitches.',
keyConcepts: [
'Understanding Ownership — how Rust automatically manages memory',
'Sharing data safely across code using Borrowing (&)',
'Handling all possible conditions cleanly with pattern matching (match)',
'Managing packages, builds, and tests using the Cargo tool',
'Building high-security web servers, crypto engines, and WebAssembly apps'
],
useCases: ['Systems & Kernel Development', 'WebAssembly (Wasm) Applications', 'High-Performance Networking', 'Blockchain & Security Engines'],
links: [
{ label: 'The Rust Programming Language Book', url: 'https://doc.rust-lang.org/book/' },
{ label: 'Rust by Example', url: 'https://doc.rust-lang.org/rust-by-example/' }
]
},
{
name: 'C# (.NET)',
tagline: 'Modern, Versatile & Game-Ready',
color: '#239120',
bg: '#ECFDF5',
whatItIs: 'Created by Microsoft, C# is an elegant language widely used for building 3D/2D games in Unity, Windows desktop applications, and web services.',
keyConcepts: [
'Writing clean Object-Oriented code with concise Properties',
'Filtering, searching, and sorting data in 1 line using LINQ',
'Building immersive video games with the Unity Game Engine',
'Creating high-speed web APIs using ASP.NET Core',
'Building cross-platform desktop & mobile apps with .NET MAUI'
],
useCases: ['Unity 3D/2D Game Development', 'Enterprise Web Backends (ASP.NET Core)', 'Windows Desktop Applications', 'Cross-Platform Apps (.NET MAUI)'],
links: [
{ label: 'Official Microsoft C# Documentation', url: 'https://learn.microsoft.com/en-us/dotnet/csharp/' },
{ label: 'W3Schools C# Guide', url: 'https://www.w3schools.com/cs/' }
]
}
];
const CS_TOOLS_CATEGORIES = [
{
title: 'Programming Languages',
icon: Code,
color: '#3B82F6',
bg: '#EFF6FF',
tools: [
{ name: 'Python', desc: 'High-level, beginner-friendly language for AI, Web, & Scripts.', url: '#' },
{ name: 'Java', desc: 'Object-oriented enterprise language running on the JVM.', url: '#' },
{ name: 'C++', desc: 'High-performance systems programming and game development.', url: '#' },
{ name: 'JavaScript', desc: 'Core language of the web for frontend and backend.', url: '#' },
{ name: 'TypeScript', desc: 'Strongly typed superset of JavaScript at scale.', url: '#' },
{ name: 'Go (Golang)', desc: 'Fast, concurrent language for cloud & microservices.', url: '#' },
{ name: 'Rust', desc: 'Ultra-fast memory-safe systems programming language.', url: '#' },
{ name: 'C# (.NET)', desc: 'Versatile OOP language for games, desktop, & web backends.', url: '#' }
]
},
{
title: 'Version Control',
icon: GitBranch,
color: '#F97316',
bg: '#FFF7ED',
tools: [
{ name: 'Source Code Management', desc: 'Git CLI distributed version control system.', url: 'https://git-scm.com/' },
{ name: 'Repository Hosting', desc: 'GitHub, GitLab, Bitbucket, and Gitea platforms.', url: 'https://github.com/' },
{ name: 'Git Clients', desc: 'GitHub Desktop, GitKraken, Sourcetree, and Lazygit.', url: 'https://desktop.github.com/' },
{ name: 'Code Review', desc: 'GitHub Pull Requests, Crucible, and Gerrit review workflows.', url: 'https://github.com/features/code-review' }
]
},
{
title: 'Web Development',
icon: Globe,
color: '#10B981',
bg: '#ECFDF5',
tools: [
{ name: 'Frontend Development', desc: 'React, Vue.js, Angular, Svelte, Tailwind CSS, HTML5/CSS3.', url: 'https://react.dev/' },
{ name: 'Backend Development', desc: 'Spring Boot, Express.js, Django, FastAPI, NestJS.', url: 'https://spring.io/projects/spring-boot' },
{ name: 'Full-Stack Development', desc: 'Next.js, Remix, Nuxt.js, and Astro full-stack frameworks.', url: 'https://nextjs.org/' },
{ name: 'Static Site Generators', desc: 'Gatsby, Hugo, Jekyll, and Eleventy.', url: 'https://www.gatsbyjs.com/' },
{ name: 'CMS', desc: 'WordPress, Strapi, Sanity, and Ghost Content Management Systems.', url: 'https://strapi.io/' },
{ name: 'Web Performance', desc: 'Lighthouse, PageSpeed Insights, and Web Vitals analytics.', url: 'https://pagespeed.web.dev/' }
]
},
{
title: 'Mobile Development',
icon: Smartphone,
color: '#8B5CF6',
bg: '#F5F3FF',
tools: [
{ name: 'Android Development', desc: 'Android Studio, Kotlin, Jetpack Compose, and Java.', url: 'https://developer.android.com/studio' },
{ name: 'iOS Development', desc: 'Xcode, Swift, SwiftUI, and CocoaPods.', url: 'https://developer.apple.com/xcode/' },
{ name: 'Cross-Platform Development', desc: 'Flutter, React Native, and Expo framework.', url: 'https://flutter.dev/' },
{ name: 'Mobile Testing', desc: 'Appium, Espresso, and XCUITest automation.', url: 'https://appium.io/' },
{ name: 'App Deployment', desc: 'Google Play Console, Apple App Store Connect, Fastlane.', url: 'https://play.google.com/console' }
]
},
{
title: 'Databases',
icon: Database,
color: '#06B6D4',
bg: '#ECFEFF',
tools: [
{ name: 'Relational Databases (SQL)', desc: 'PostgreSQL, MySQL, SQLite, and Microsoft SQL Server.', url: 'https://www.postgresql.org/' },
{ name: 'NoSQL Databases', desc: 'MongoDB, Cassandra, CouchDB, and DynamoDB.', url: 'https://www.mongodb.com/' },
{ name: 'Graph Databases', desc: 'Neo4j, Amazon Neptune, and ArangoDB.', url: 'https://neo4j.com/' },
{ name: 'Time-Series Databases', desc: 'InfluxDB, TimescaleDB, and Prometheus.', url: 'https://www.influxdata.com/' },
{ name: 'In-Memory Databases', desc: 'Redis, Memcached, and Dragonfly.', url: 'https://redis.io/' },
{ name: 'Database Administration', desc: 'pgAdmin, DBeaver, DataGrip, and phpMyAdmin.', url: 'https://www.dbeaver.io/' },
{ name: 'Database Modeling', desc: 'dbdiagram.io, Erwin, and MySQL Workbench.', url: 'https://dbdiagram.io/' }
]
},
{
title: 'UI / UX Design',
icon: Palette,
color: '#EC4899',
bg: '#FDF2F8',
tools: [
{ name: 'Wireframing', desc: 'Balsamiq, Figma, and Whimsical wireframing.', url: 'https://balsamiq.com/' },
{ name: 'Prototyping', desc: 'Figma, Adobe XD, Proto.io, and Framer.', url: 'https://www.figma.com/' },
{ name: 'Design Systems', desc: 'Storybook, Material Design, and Tailwind UI.', url: 'https://storybook.js.org/' },
{ name: 'User Research', desc: 'Maze, UserTesting, and Hotjar analytics.', url: 'https://maze.co/' },
{ name: 'Accessibility Testing', desc: 'axe DevTools, WAVE, and Lighthouse A11y audit.', url: 'https://www.deque.com/axe/' }
]
},
{
title: 'Collaboration',
icon: Users,
color: '#EAB308',
bg: '#FEFCE8',
tools: [
{ name: 'Documentation', desc: 'Confluence, Notion, MkDocs, and Docusaurus.', url: 'https://docusaurus.io/' },
{ name: 'Team Communication', desc: 'Slack, Microsoft Teams, Discord, and Mattermost.', url: 'https://slack.com/' },
{ name: 'Project Management', desc: 'Jira, Trello, Asana, and Linear ticket tracking.', url: 'https://linear.app/' },
{ name: 'Whiteboarding', desc: 'Miro, FigJam, Excalidraw, and Lucidchart.', url: 'https://excalidraw.com/' },
{ name: 'Knowledge Management', desc: 'Obsidian, Notion, and Slite workspace wiki.', url: 'https://obsidian.md/' }
]
},
{
title: 'Software Engineering',
icon: Layers,
color: '#D97706',
bg: '#FEF3C7',
tools: [
{ name: 'UML & System Design', desc: 'Draw.io, PlantUML, Mermaid.js, and StarUML.', url: 'https://mermaid.js.org/' },
{ name: 'Architecture Design', desc: 'C4 Model, ArchiMate, and System Architecture patterns.', url: 'https://c4model.com/' },
{ name: 'Design Patterns', desc: 'Gang of Four (GoF) Creational, Structural, Behavioral patterns.', url: 'https://refactoring.guru/design-patterns' },
{ name: 'Code Analysis', desc: 'SonarQube, ESLint, Pylint, and SpotBugs linters.', url: 'https://eslint.org/' },
{ name: 'Debugging', desc: 'GDB, Chrome DevTools, Visual Studio Debugger, and Charles Proxy.', url: 'https://developer.chrome.com/docs/devtools/' },
{ name: 'Performance Profiling', desc: 'Perf, JProfiler, Py-Spy, and Chrome Memory Profiler.', url: 'https://github.com/benfred/py-spy' }
]
},
{
title: 'Networking',
icon: Wifi,
color: '#2563EB',
bg: '#EFF6FF',
tools: [
{ name: 'Network Analysis', desc: 'Wireshark packet capture and traffic protocol analyzer.', url: 'https://www.wireshark.org/' },
{ name: 'Packet Simulation', desc: 'Cisco Packet Tracer and GNS3 network topology simulation.', url: 'https://www.netacad.com/courses/packet-tracer' },
{ name: 'Port Scanning & Recon', desc: 'Nmap and Masscan network discovery tools.', url: 'https://nmap.org/' },
{ name: 'API & HTTP Debugging', desc: 'Postman, Fiddler, and Charles Proxy HTTP inspection.', url: 'https://www.postman.com/' },
{ name: 'Remote Terminal & SSH', desc: 'PuTTY, OpenSSH, and Termius terminal clients.', url: 'https://www.putty.org/' }
]
}
];
const BUSINESS_TOOLS_CATEGORIES = [
{
title: 'Accounting & Finance',
icon: DollarSign,
color: '#10B981',
bg: '#ECFDF5',
tools: [
{ name: 'QuickBooks', desc: 'Cloud accounting software for small and mid-sized businesses.', url: 'https://quickbooks.intuit.com/' },
{ name: 'Tally Prime', desc: 'India\'s leading accounting and inventory management solution.', url: 'https://tallysolutions.com/' },
{ name: 'Zoho Books', desc: 'Online accounting software for growing businesses.', url: 'https://www.zoho.com/books/' }
]
},
{
title: 'Business Intelligence',
icon: BarChart3,
color: '#3B82F6',
bg: '#EFF6FF',
tools: [
{ name: 'Power BI', desc: 'Microsoft\'s interactive data visualization and BI tool.', url: 'https://powerbi.microsoft.com/' },
{ name: 'Tableau', desc: 'Visual analytics platform for data-driven decisions.', url: 'https://www.tableau.com/' },
{ name: 'Google Looker', desc: 'Business intelligence and data analytics by Google Cloud.', url: 'https://cloud.google.com/looker' }
]
},
{
title: 'CRM',
icon: Users,
color: '#8B5CF6',
bg: '#F5F3FF',
tools: [
{ name: 'Salesforce', desc: 'World\'s leading CRM platform for sales and support.', url: 'https://www.salesforce.com/' },
{ name: 'HubSpot CRM', desc: 'Free CRM with marketing, sales, and service tools.', url: 'https://www.hubspot.com/products/crm' },
{ name: 'Zoho CRM', desc: 'AI-powered CRM for customer lifecycle management.', url: 'https://www.zoho.com/crm/' }
]
},
{
title: 'Marketing',
icon: Megaphone,
color: '#EC4899',
bg: '#FDF2F8',
tools: [
{ name: 'Google Ads', desc: 'Online advertising platform for paid search and display.', url: 'https://ads.google.com/' },
{ name: 'Mailchimp', desc: 'Email marketing and automation platform.', url: 'https://mailchimp.com/' },
{ name: 'Canva', desc: 'Design tool for social media graphics and presentations.', url: 'https://www.canva.com/' }
]
},
{
title: 'Sales',
icon: TrendingUp,
color: '#F97316',
bg: '#FFF7ED',
tools: [
{ name: 'LinkedIn Sales Navigator', desc: 'Advanced lead generation and prospecting tool.', url: 'https://business.linkedin.com/sales-solutions' },
{ name: 'Pipedrive', desc: 'Sales CRM and pipeline management tool.', url: 'https://www.pipedrive.com/' },
{ name: 'Freshsales', desc: 'AI-powered sales CRM for high-velocity teams.', url: 'https://www.freshworks.com/crm/sales/' }
]
},
{
title: 'HR',
icon: UserCheck,
color: '#06B6D4',
bg: '#ECFEFF',
tools: [
{ name: 'BambooHR', desc: 'HR software for onboarding, payroll, and performance.', url: 'https://www.bamboohr.com/' },
{ name: 'Workday', desc: 'Enterprise cloud for finance and human capital management.', url: 'https://www.workday.com/' },
{ name: 'Zoho People', desc: 'HR management system for attendance and leave tracking.', url: 'https://www.zoho.com/people/' }
]
},
{
title: 'Project Management',
icon: ClipboardList,
color: '#EAB308',
bg: '#FEFCE8',
tools: [
{ name: 'Jira', desc: 'Agile project management for software teams.', url: 'https://www.atlassian.com/software/jira' },
{ name: 'Trello', desc: 'Visual boards for organizing tasks and workflows.', url: 'https://trello.com/' },
{ name: 'Asana', desc: 'Work management platform for teams and enterprises.', url: 'https://asana.com/' }
]
},
{
title: 'E-commerce',
icon: ShoppingCart,
color: '#14B8A6',
bg: '#F0FDFA',
tools: [
{ name: 'Shopify', desc: 'All-in-one e-commerce platform for online stores.', url: 'https://www.shopify.com/' },
{ name: 'WooCommerce', desc: 'Open-source e-commerce plugin for WordPress.', url: 'https://woocommerce.com/' },
{ name: 'Razorpay', desc: 'Payment gateway and financial solutions for India.', url: 'https://razorpay.com/' }
]
}
];
const EE_TOOLS_CATEGORIES = [
{
title: 'Circuit Design',
icon: CircuitBoard,
color: '#3B82F6',
bg: '#EFF6FF',
tools: [
{ name: 'Analog Circuit Design', desc: 'Design and analysis of analog electronic circuits.', url: 'https://www.analog.com/en/education.html' },
{ name: 'Digital Circuit Design', desc: 'Logic gates, flip-flops, and combinational circuits.', url: 'https://www.nandland.com/' },
{ name: 'Schematic Capture', desc: 'Create circuit schematics for documentation and simulation.', url: 'https://www.kicad.org/' },
{ name: 'Logic Design', desc: 'Boolean algebra, truth tables, and K-map minimization.', url: 'https://www.allaboutcircuits.com/textbook/digital/' }
]
},
{
title: 'Circuit Simulation',
icon: Activity,
color: '#10B981',
bg: '#ECFDF5',
tools: [
{ name: 'SPICE Simulation', desc: 'Industry-standard analog circuit simulator.', url: 'https://www.analog.com/en/design-center/design-tools-and-calculators/ltspice-simulator.html' },
{ name: 'Mixed-Signal Simulation', desc: 'Simulate both analog and digital signals together.', url: 'https://www.cadence.com/en_US/home.html' },
{ name: 'Power Circuit Simulation', desc: 'Simulate power electronics converters and drives.', url: 'https://www.plexim.com/plecs' },
{ name: 'Signal Analysis', desc: 'Waveform analysis, FFT, and frequency-domain tools.', url: 'https://www.mathworks.com/products/signal.html' }
]
},
{
title: 'PCB Design',
icon: LayoutGrid,
color: '#F97316',
bg: '#FFF7ED',
tools: [
{ name: 'PCB Layout', desc: 'Component placement and board layout design.', url: 'https://www.kicad.org/' },
{ name: 'PCB Routing', desc: 'Signal trace routing and impedance matching.', url: 'https://www.altium.com/' },
{ name: 'Design Rule Checking (DRC)', desc: 'Validate PCB designs against manufacturing rules.', url: 'https://www.orcad.com/' },
{ name: 'PCB Manufacturing', desc: 'Gerber file generation and fabrication services.', url: 'https://jlcpcb.com/' }
]
},
{
title: 'Embedded Systems',
icon: Cpu,
color: '#8B5CF6',
bg: '#F5F3FF',
tools: [
{ name: 'Firmware Development', desc: 'Low-level C/C++ programming for microcontrollers.', url: 'https://www.embedded.com/' },
{ name: 'RTOS', desc: 'Real-Time Operating Systems like FreeRTOS and Zephyr.', url: 'https://www.freertos.org/' },
{ name: 'ARM Development', desc: 'ARM Cortex-M/A development with Keil and STM32CubeIDE.', url: 'https://developer.arm.com/' },
{ name: 'Embedded Linux', desc: 'Linux kernel and Yocto Project for embedded platforms.', url: 'https://www.yoctoproject.org/' }
]
},
{
title: 'Microcontrollers & Processors',
icon: Settings,
color: '#EC4899',
bg: '#FDF2F8',
tools: [
{ name: 'Arduino', desc: 'Open-source electronics platform for prototyping.', url: 'https://www.arduino.cc/' },
{ name: 'STM32', desc: 'ARM Cortex-M based 32-bit microcontroller family.', url: 'https://www.st.com/en/microcontrollers-microprocessors/stm32-32-bit-arm-cortex-mcus.html' },
{ name: 'PIC', desc: 'Microchip PIC microcontrollers for embedded applications.', url: 'https://www.microchip.com/en-us/products/microcontrollers-and-microprocessors' },
{ name: 'ESP32', desc: 'Wi-Fi and Bluetooth SoC for IoT applications.', url: 'https://www.espressif.com/en/products/socs/esp32' },
{ name: 'Raspberry Pi', desc: 'Single-board computer for education and IoT projects.', url: 'https://www.raspberrypi.com/' }
]
},
{
title: 'FPGA & HDL',
icon: Binary,
color: '#06B6D4',
bg: '#ECFEFF',
tools: [
{ name: 'Verilog', desc: 'Hardware description language for digital design.', url: 'https://www.chipverify.com/verilog/verilog-tutorial' },
{ name: 'VHDL', desc: 'VHSIC Hardware Description Language for modeling.', url: 'https://www.nandland.com/vhdl/tutorials/index.html' },
{ name: 'FPGA Programming', desc: 'Xilinx Vivado and Intel Quartus Prime tools.', url: 'https://www.xilinx.com/products/design-tools/vivado.html' },
{ name: 'Logic Synthesis', desc: 'RTL to gate-level netlist conversion tools.', url: 'https://www.synopsys.com/implementation-and-signoff/rtl-synthesis.html' }
]
},
{
title: 'VLSI & Semiconductor',
icon: Layers,
color: '#EAB308',
bg: '#FEFCE8',
tools: [
{ name: 'Digital IC Design', desc: 'Standard cell design and synthesis flow.', url: 'https://www.synopsys.com/' },
{ name: 'Analog IC Design', desc: 'Transistor-level design using Cadence Virtuoso.', url: 'https://www.cadence.com/' },
{ name: 'Physical Design', desc: 'Floor planning, placement, CTS, and routing.', url: 'https://www.synopsys.com/implementation-and-signoff.html' },
{ name: 'Verification', desc: 'SystemVerilog, UVM, and formal verification.', url: 'https://verificationacademy.com/' },
{ name: 'DFT', desc: 'Design for Testability — scan chains and BIST.', url: 'https://www.synopsys.com/implementation-and-signoff/test-automation.html' },
{ name: 'Semiconductor Process', desc: 'Fabrication process design and TCAD simulation.', url: 'https://www.silvaco.com/' }
]
},
{
title: 'Power Systems',
icon: Zap,
color: '#DC2626',
bg: '#FEF2F2',
tools: [
{ name: 'Power Generation', desc: 'Thermal, hydro, and nuclear generation systems.', url: 'https://www.energy.gov/' },
{ name: 'Transmission', desc: 'High-voltage AC/DC transmission line analysis.', url: 'https://www.etap.com/' },
{ name: 'Distribution', desc: 'Medium and low-voltage distribution networks.', url: 'https://www.schneider-electric.com/' },
{ name: 'Load Flow Analysis', desc: 'Power flow studies using Newton-Raphson method.', url: 'https://www.digsilent.de/' },
{ name: 'Protection Systems', desc: 'Relay coordination and fault analysis.', url: 'https://www.selinc.com/' }
]
},
{
title: 'Power Electronics',
icon: BatteryCharging,
color: '#7C3AED',
bg: '#EDE9FE',
tools: [
{ name: 'Converters', desc: 'DC-DC buck, boost, and flyback converter design.', url: 'https://www.ti.com/power-management/overview.html' },
{ name: 'Inverters', desc: 'DC-AC inverter topologies and PWM control.', url: 'https://www.infineon.com/' },
{ name: 'Motor Drives', desc: 'Variable frequency drives and motor control.', url: 'https://www.mathworks.com/solutions/power-electronics-control.html' },
{ name: 'Battery Management', desc: 'BMS design, SoC estimation, and cell balancing.', url: 'https://www.ti.com/battery-management/overview.html' }
]
},
{
title: 'Industrial Automation',
icon: Settings,
color: '#059669',
bg: '#ECFDF5',
tools: [
{ name: 'PLC', desc: 'Programmable Logic Controllers — Siemens, Allen-Bradley.', url: 'https://new.siemens.com/global/en/products/automation.html' },
{ name: 'SCADA', desc: 'Supervisory Control and Data Acquisition systems.', url: 'https://www.inductiveautomation.com/' },
{ name: 'HMI', desc: 'Human-Machine Interface panel design.', url: 'https://www.weintek.com/' },
{ name: 'Industrial Networking', desc: 'Modbus, PROFINET, and EtherNet/IP protocols.', url: 'https://www.moxa.com/' }
]
},
{
title: 'Instrumentation & Measurement',
icon: Gauge,
color: '#0891B2',
bg: '#ECFEFF',
tools: [
{ name: 'Data Acquisition', desc: 'DAQ systems using NI and Keysight hardware.', url: 'https://www.ni.com/en/shop/data-acquisition.html' },
{ name: 'Sensors', desc: 'Temperature, pressure, and proximity sensor systems.', url: 'https://www.te.com/en/industries/sensor-solutions.html' },
{ name: 'Calibration', desc: 'Instrument calibration standards and procedures.', url: 'https://www.fluke.com/en/learn/blog/calibration' },
{ name: 'Signal Conditioning', desc: 'Amplification, filtering, and ADC conversion.', url: 'https://www.analog.com/en/applications/technology/signal-conditioning.html' }
]
},
{
title: 'Signal Processing',
icon: Radio,
color: '#2563EB',
bg: '#EFF6FF',
tools: [
{ name: 'DSP', desc: 'Digital Signal Processing algorithms and filters.', url: 'https://www.mathworks.com/products/dsp-system.html' },
{ name: 'Audio Processing', desc: 'Audio codec design and real-time processing.', url: 'https://www.audacityteam.org/' },
{ name: 'Image Processing', desc: 'Computer vision and image filtering techniques.', url: 'https://opencv.org/' },
{ name: 'Communication Signals', desc: 'Modulation, demodulation, and baseband processing.', url: 'https://www.gnuradio.org/' }
]
},
{
title: 'Communication Systems',
icon: Wifi,
color: '#7C3AED',
bg: '#F5F3FF',
tools: [
{ name: 'Wireless Communication', desc: '4G/5G, Wi-Fi, and Bluetooth protocol stacks.', url: 'https://www.3gpp.org/' },
{ name: 'RF Design', desc: 'RF amplifier, mixer, and filter circuit design.', url: 'https://www.keysight.com/us/en/solutions/rf-microwave.html' },
{ name: 'Antenna Design', desc: 'Patch, dipole, and phased-array antenna simulation.', url: 'https://www.ansys.com/products/electronics/ansys-hfss' },
{ name: 'Optical Communication', desc: 'Fiber optic systems, WDM, and photonic devices.', url: 'https://www.corning.com/optical-communications' }
]
},
{
title: 'IoT & Edge Computing',
icon: Globe,
color: '#14B8A6',
bg: '#F0FDFA',
tools: [
{ name: 'Sensor Integration', desc: 'Connect sensors to IoT gateways and cloud.', url: 'https://www.balena.io/' },
{ name: 'IoT Platforms', desc: 'AWS IoT, Azure IoT Hub, and ThingsBoard.', url: 'https://aws.amazon.com/iot/' },
{ name: 'Edge Devices', desc: 'NVIDIA Jetson and Intel NUC for edge AI.', url: 'https://developer.nvidia.com/embedded-computing' },
{ name: 'Cloud Connectivity', desc: 'MQTT, CoAP, and HTTP for device-to-cloud.', url: 'https://mosquitto.org/' }
]
},
{
title: 'Robotics & Control Systems',
icon: Bot,
color: '#F97316',
bg: '#FFF7ED',
tools: [
{ name: 'Motion Control', desc: 'Servo motors, stepper motors, and trajectory planning.', url: 'https://www.mathworks.com/solutions/robotics.html' },
{ name: 'PID Control', desc: 'Proportional-Integral-Derivative controller tuning.', url: 'https://www.mathworks.com/discovery/pid-control.html' },
{ name: 'Robotics Programming', desc: 'ROS (Robot Operating System) and Gazebo simulation.', url: 'https://www.ros.org/' },
{ name: 'Autonomous Systems', desc: 'Navigation, SLAM, and path-planning algorithms.', url: 'https://www.theconstructsim.com/' }
]
},
{
title: 'Renewable Energy',
icon: Sun,
color: '#EAB308',
bg: '#FEFCE8',
tools: [
{ name: 'Solar Systems', desc: 'PV panel sizing, MPPT, and inverter design.', url: 'https://pvpmc.sandia.gov/' },
{ name: 'Wind Energy', desc: 'Wind turbine aerodynamics and generator control.', url: 'https://www.nrel.gov/wind/' },
{ name: 'Energy Storage', desc: 'Battery tech, supercapacitors, and fuel cells.', url: 'https://www.energy.gov/eere/vehicles/batteries' },
{ name: 'Smart Grid', desc: 'Demand response, AMI, and grid-tied systems.', url: 'https://www.smartgrid.gov/' }
]
},
{
title: 'Hardware Testing & Debugging',
icon: Wrench,
color: '#64748B',
bg: '#F1F5F9',
tools: [
{ name: 'Oscilloscopes', desc: 'Waveform capture and time-domain analysis.', url: 'https://www.keysight.com/us/en/products/oscilloscopes.html' },
{ name: 'Logic Analyzers', desc: 'Digital signal capture for protocol debugging.', url: 'https://www.saleae.com/' },
{ name: 'Multimeters', desc: 'Voltage, current, and resistance measurement.', url: 'https://www.fluke.com/en/products/digital-multimeters' },
{ name: 'Signal Generators', desc: 'Function generators and arbitrary waveform sources.', url: 'https://www.keysight.com/us/en/products/signal-generators.html' },
{ name: 'Hardware Debugging', desc: 'JTAG, SWD, and boundary-scan debugging tools.', url: 'https://www.segger.com/products/debug-probes/j-link/' }
]
}
];
const CYBERSECURITY_TOOLS_CATEGORIES = [
{
title: 'Network Security',
icon: ShieldCheck,
color: '#EF4444',
bg: '#FEF2F2',
tools: [
{ name: 'Firewalls', desc: 'pfSense, OPNsense, and Palo Alto Next-Gen Firewalls.', url: 'https://www.pfsense.org/' },
{ name: 'Intrusion Detection Systems (IDS)', desc: 'Snort and Suricata network IDS monitoring.', url: 'https://www.snort.org/' },
{ name: 'Intrusion Prevention Systems (IPS)', desc: 'Real-time threat blocking and inline prevention.', url: 'https://suricata.io/' },
{ name: 'VPN', desc: 'OpenVPN and WireGuard secure encrypted tunnels.', url: 'https://openvpn.net/' },
{ name: 'Network Monitoring', desc: 'Nagios, Zabbix, and PRTG network health tracking.', url: 'https://www.zabbix.com/' },
{ name: 'Network Traffic Analysis', desc: 'Wireshark and Zeek deep packet inspection.', url: 'https://www.wireshark.org/' }
]
},
{
title: 'Penetration Testing',
icon: Terminal,
color: '#F97316',
bg: '#FFF7ED',
tools: [
{ name: 'Web Application Testing', desc: 'Burp Suite and OWASP ZAP for web auditing.', url: 'https://portswigger.net/burp' },
{ name: 'Network Penetration Testing', desc: 'Nmap and Masscan port discovery and auditing.', url: 'https://nmap.org/' },
{ name: 'Wireless Security Testing', desc: 'Aircrack-ng suite for Wi-Fi security assessment.', url: 'https://www.aircrack-ng.org/' },
{ name: 'Exploitation Frameworks', desc: 'Metasploit Framework and Cobalt Strike.', url: 'https://www.metasploit.com/' },
{ name: 'Vulnerability Assessment', desc: 'Nessus and OpenVAS automated security scans.', url: 'https://www.tenable.com/products/nessus' }
]
},
{
title: 'Web Security',
icon: Globe,
color: '#3B82F6',
bg: '#EFF6FF',
tools: [
{ name: 'API Security Testing', desc: 'Postman and Akto API vulnerability testing.', url: 'https://www.akto.io/' },
{ name: 'Web Vulnerability Scanning', desc: 'Acunetix and Nikto web server scanners.', url: 'https://cirt.net/Nikto2' },
{ name: 'OWASP Testing', desc: 'OWASP Top 10 guidelines and ZAP testing tools.', url: 'https://owasp.org/' },
{ name: 'Secure Development', desc: 'Security-first architecture and input validation.', url: 'https://cheatsheetseries.owasp.org/' }
]
},
{
title: 'Digital Forensics',
icon: Search,
color: '#8B5CF6',
bg: '#F5F3FF',
tools: [
{ name: 'Disk Forensics', desc: 'Autopsy and Sleuth Kit for disk image investigation.', url: 'https://www.autopsy.com/' },
{ name: 'Memory Forensics', desc: 'Volatility Framework memory dump extraction.', url: 'https://www.volatilityfoundation.org/' },
{ name: 'Mobile Forensics', desc: 'ANDRAGUARD and Cellebrite mobile analysis.', url: 'https://github.com/androguard/androguard' },
{ name: 'Email Forensics', desc: 'Header analysis, SPF/DKIM/DMARC verification.', url: 'https://mha.azurewebsites.net/' },
{ name: 'Malware Forensics', desc: 'FTK Imager and EnCase artifact extraction.', url: 'https://www.exterro.com/ftk-imager' }
]
},
{
title: 'Malware Analysis',
icon: ShieldCheck,
color: '#DC2626',
bg: '#FEF2F2',
tools: [
{ name: 'Static Analysis', desc: 'PEStudio, Cutter, and Ghidra binary disassembly.', url: 'https://ghidra-sre.org/' },
{ name: 'Dynamic Analysis', desc: 'Process Monitor, Wireshark, and RegShot runtime audit.', url: 'https://learn.microsoft.com/en-us/sysinternals/downloads/procmon' },
{ name: 'Reverse Engineering', desc: 'IDA Pro, x64dbg, and Radare2 debugging.', url: 'https://x64dbg.com/' },
{ name: 'Sandbox Analysis', desc: 'Cuckoo Sandbox and ANY.RUN automated analysis.', url: 'https://any.run/' }
]
},
{
title: 'Incident Response',
icon: Shield,
color: '#EA580C',
bg: '#FFEDD5',
tools: [
{ name: 'Threat Hunting', desc: 'YARA rules and Sigma detection rule writing.', url: 'https://virustotal.github.io/yara/' },
{ name: 'Log Analysis', desc: 'ELK Stack (Elasticsearch, Logstash, Kibana).', url: 'https://www.elastic.co/' },
{ name: 'SIEM', desc: 'Splunk and Microsoft Sentinel security monitoring.', url: 'https://www.splunk.com/' },
{ name: 'SOAR', desc: 'Shuffle and Cortex XSOAR automated response.', url: 'https://shuffler.io/' },
{ name: 'Incident Management', desc: 'TheHive and FIR incident tracking platforms.', url: 'https://thehive-project.org/' }
]
},
{
title: 'Vulnerability Management',
icon: FileText,
color: '#0284C7',
bg: '#E0F2FE',
tools: [
{ name: 'Vulnerability Scanning', desc: 'Nessus, Qualys, and OpenVAS scanners.', url: 'https://www.greenbone.net/' },
{ name: 'Patch Management', desc: 'WSUS, Automox, and Ivanti system updates.', url: 'https://www.automox.com/' },
{ name: 'Risk Assessment', desc: 'CVSS scoring and FAIR risk calculation.', url: 'https://www.first.org/cvss/' },
{ name: 'Compliance Checking', desc: 'OpenSCAP and CIS Benchmarks validation.', url: 'https://www.open-scap.org/' }
]
},
{
title: 'Identity & Access Management (IAM)',
icon: Users,
color: '#10B981',
bg: '#ECFDF5',
tools: [
{ name: 'Authentication', desc: 'OAuth 2.0, OpenID Connect, and SAML 2.0 protocols.', url: 'https://oauth.net/2/' },
{ name: 'Multi-Factor Authentication (MFA)', desc: 'TOTP, YubiKey, and Duo Security 2FA.', url: 'https://www.yubico.com/' },
{ name: 'Single Sign-On (SSO)', desc: 'Okta, Keycloak, and Azure AD SSO integration.', url: 'https://www.keycloak.org/' },
{ name: 'Privileged Access Management (PAM)', desc: 'CyberArk and HashiCorp Boundary PAM.', url: 'https://www.hashicorp.com/products/boundary' },
{ name: 'Directory Services', desc: 'Active Directory, OpenLDAP, and FreeIPA.', url: 'https://www.freeipa.org/' }
]
},
{
title: 'Cloud Security',
icon: Cloud,
color: '#7C3AED',
bg: '#F5F3FF',
tools: [
{ name: 'Cloud Security Monitoring', desc: 'AWS GuardDuty, CloudTrail, and Defender for Cloud.', url: 'https://aws.amazon.com/guardduty/' },
{ name: 'Cloud Configuration', desc: 'Prowler, Scout Suite, and Checkov CSPM tools.', url: 'https://github.com/prowler-cloud/prowler' },
{ name: 'Container Security', desc: 'Trivy, Clair, and Anchore image scanning.', url: 'https://trivy.dev/' },
{ name: 'Kubernetes Security', desc: 'Falco runtime security and Kube-bench hardening.', url: 'https://falco.org/' },
{ name: 'Cloud Compliance', desc: 'SOC 2, ISO 27001, and HIPAA automated audits.', url: 'https://www.cisecurity.org/cis-benchmarks/' }
]
},
{
title: 'Endpoint Security',
icon: Cpu,
color: '#059669',
bg: '#ECFDF5',
tools: [
{ name: 'Antivirus', desc: 'ClamAV, Windows Defender, and Malwarebytes.', url: 'https://www.clamav.net/' },
{ name: 'Endpoint Detection & Response (EDR)', desc: 'Wazuh EDR, CrowdStrike Falcon, and LimaCharlie.', url: 'https://wazuh.com/' },
{ name: 'XDR', desc: 'Extended Detection and Response across network & endpoints.', url: 'https://www.trendmicro.com/' },
{ name: 'Device Management', desc: 'Microsoft Intune and Jamf Pro endpoint control.', url: 'https://www.jamf.com/' },
{ name: 'Endpoint Monitoring', desc: 'Sysmon (System Monitor) telemetry logging.', url: 'https://learn.microsoft.com/en-us/sysinternals/downloads/sysmon' }
]
},
{
title: 'Cryptography',
icon: Lock,
color: '#4F46E5',
bg: '#EEF2FF',
tools: [
{ name: 'Encryption', desc: 'AES-256, RSA-4096, and ECC public-key ciphers.', url: 'https://www.veracrypt.fr/' },
{ name: 'PKI', desc: 'Public Key Infrastructure using HashiCorp Vault / Smallstep.', url: 'https://smallstep.com/' },
{ name: 'Certificate Management', desc: 'Let\'s Encrypt and Certbot automated SSL/TLS.', url: 'https://certbot.eff.org/' },
{ name: 'Key Management', desc: 'HashiCorp Vault and AWS KMS key management.', url: 'https://www.vaultproject.io/' }
]
},
{
title: 'Wireless Security',
icon: Wifi,
color: '#06B6D4',
bg: '#ECFEFF',
tools: [
{ name: 'Wi-Fi Security Testing', desc: 'Aircrack-ng, Wifite, and Kismet auditing.', url: 'https://www.kismetwireless.net/' },
{ name: 'Bluetooth Security', desc: 'Ubertooth One and Bluetooth LE sniffing.', url: 'https://greatscottgadgets.com/ubertoothone/' },
{ name: 'RFID/NFC Security', desc: 'Proxmark3 and ChameleonUltra RFID emulation.', url: 'https://proxmark.com/' },
{ name: 'Wireless Packet Analysis', desc: 'Wireshark wireless monitor mode frame capture.', url: 'https://www.wireshark.org/' }
]
},
{
title: 'Security Monitoring',
icon: Activity,
color: '#D97706',
bg: '#FEF3C7',
tools: [
{ name: 'Log Management', desc: 'Logstash, Fluentd, and Rsyslog central collection.', url: 'https://www.fluentd.org/' },
{ name: 'Threat Intelligence', desc: 'MISP, AlienVault OTX, and VirusTotal API.', url: 'https://www.misp-project.org/' },
{ name: 'Security Dashboards', desc: 'Grafana, Kibana, and OpenSearch visualization.', url: 'https://grafana.com/' },
{ name: 'Alert Management', desc: 'Alertmanager and PagerDuty routing.', url: 'https://prometheus.io/docs/alerting/latest/alertmanager/' }
]
},
{
title: 'Secure Coding',
icon: Code,
color: '#2563EB',
bg: '#EFF6FF',
tools: [
{ name: 'Static Code Analysis', desc: 'SonarQube, Semgrep, and Bandit SAST scanners.', url: 'https://semgrep.dev/' },
{ name: 'Dynamic Code Analysis', desc: 'OWASP ZAP and DAST automated security testing.', url: 'https://www.zaproxy.org/' },
{ name: 'Dependency Scanning', desc: 'Snyk, Dependabot, and OWASP Dependency-Check.', url: 'https://snyk.io/' },
{ name: 'Secret Detection', desc: 'Gitleaks, Trufflehog, and SecretScanner.', url: 'https://github.com/gitleaks/gitleaks' }
]
},
{
title: 'Password Security',
icon: Lock,
color: '#059669',
bg: '#ECFDF5',
tools: [
{ name: 'Password Managers', desc: 'Bitwarden, 1Password, and KeePassXC.', url: 'https://keepassxc.org/' },
{ name: 'Password Auditing', desc: 'John the Ripper and Hashcat password cracking.', url: 'https://www.openwall.com/john/' },
{ name: 'Hash Analysis', desc: 'CyberChef and Hash-Identifier analysis utilities.', url: 'https://gchq.github.io/CyberChef/' },
{ name: 'Credential Testing', desc: 'HaveIBeenPwned API and breach database checking.', url: 'https://haveibeenpwned.com/' }
]
},
{
title: 'Training & Practice',
icon: Shield,
color: '#7C3AED',
bg: '#F5F3FF',
tools: [
{ name: 'Capture The Flag (CTF)', desc: 'picoCTF, Hack The Box, and TryHackMe labs.', url: 'https://tryhackme.com/' },
{ name: 'Cyber Labs', desc: 'Hack The Box and PortSwigger Web Security Academy.', url: 'https://portswigger.net/web-security' },
{ name: 'Virtual Machines', desc: 'Metasploitable, DVWA (Damn Vulnerable Web App), and VulnHub.', url: 'https://www.vulnhub.com/' },
{ name: 'Attack Simulation', desc: 'Caldera and Atomic Red Team threat simulation.', url: 'https://atomicredteam.io/' },
{ name: 'Security Awareness', desc: 'KnowBe4 and PhishInsight phishing simulations.', url: 'https://www.knowbe4.com/' }
]
},
{
title: 'Operating Systems',
icon: Terminal,
color: '#0284C7',
bg: '#E0F2FE',
tools: [
{ name: 'Kali Linux', desc: 'Debian-derived Linux distribution designed for digital forensics & penetration testing.', url: 'https://www.kali.org/' },
{ name: 'Parrot Security OS', desc: 'Security-oriented operating system for cyber research, forensics, and privacy.', url: 'https://www.parrotsec.org/' },
{ name: 'Tails OS', desc: 'Portable operating system protecting against surveillance and censorship via Tor.', url: 'https://tails.net/' },
{ name: 'Qubes OS', desc: 'Security-oriented OS using Xen virtualization to compartmentalize applications.', url: 'https://www.qubes-os.org/' },
{ name: 'Windows Subsystem for Linux (WSL)', desc: 'Run Linux environments natively inside Windows for security development.', url: 'https://learn.microsoft.com/en-us/windows/wsl/' }
]
}
];
const AI_TOOLS_CATEGORIES = [
{
title: 'Machine Learning',
icon: BrainCircuit,
color: '#3B82F6',
bg: '#EFF6FF',
tools: [
{ name: 'Scikit-Learn', desc: 'Predictive data analysis and classic ML algorithms in Python.', url: 'https://scikit-learn.org/' },
{ name: 'TensorFlow', desc: 'End-to-end open-source machine learning platform by Google.', url: 'https://www.tensorflow.org/' },
{ name: 'PyTorch', desc: 'Deep learning framework tailored for research and production.', url: 'https://pytorch.org/' },
{ name: 'XGBoost', desc: 'Optimized distributed gradient boosting library.', url: 'https://xgboost.readthedocs.io/' }
]
},
{
title: 'Computer Vision & Deep Learning',
icon: Activity,
color: '#10B981',
bg: '#ECFDF5',
tools: [
{ name: 'OpenCV', desc: 'Open-source computer vision and machine learning library.', url: 'https://opencv.org/' },
{ name: 'YOLO', desc: 'Real-time object detection neural network architecture.', url: 'https://pjreddie.com/darknet/yolo/' },
{ name: 'MediaPipe', desc: 'Cross-platform ML solutions for live and streaming media.', url: 'https://mediapipe.dev/' },
{ name: 'Keras', desc: 'High-level deep learning API running on top of TensorFlow.', url: 'https://keras.io/' }
]
},
{
title: 'Natural Language Processing (NLP)',
icon: Code,
color: '#8B5CF6',
bg: '#F5F3FF',
tools: [
{ name: 'Hugging Face', desc: 'Hub for pre-trained AI models, datasets, and Transformers.', url: 'https://huggingface.co/' },
{ name: 'LangChain', desc: 'Framework for developing applications powered by LLMs.', url: 'https://www.langchain.com/' },
{ name: 'spaCy', desc: 'Industrial-strength Natural Language Processing in Python.', url: 'https://spacy.io/' },
{ name: 'NLTK', desc: 'Natural Language Toolkit for symbolic and statistical NLP.', url: 'https://www.nltk.org/' }
]
},
{
title: 'Generative AI & LLMs',
icon: Sparkles,
color: '#EC4899',
bg: '#FDF2F8',
tools: [
{ name: 'OpenAI API', desc: 'Access GPT-4 and DALL-E state-of-the-art AI models.', url: 'https://openai.com/' },
{ name: 'Ollama', desc: 'Run Llama 3, Mistral, and local LLMs on your machine.', url: 'https://ollama.com/' },
{ name: 'Anthropic Claude', desc: 'Advanced AI assistant API built for safety and accuracy.', url: 'https://www.anthropic.com/' }
]
},
{
title: 'Data Science & Analytics',
icon: BarChart3,
color: '#F97316',
bg: '#FFF7ED',
tools: [
{ name: 'Pandas', desc: 'Fast, flexible data structures for data analysis in Python.', url: 'https://pandas.pydata.org/' },
{ name: 'NumPy', desc: 'Fundamental package for scientific computing in Python.', url: 'https://numpy.org/' },
{ name: 'Jupyter Notebooks', desc: 'Web-based interactive computing environment.', url: 'https://jupyter.org/' },
{ name: 'Google Colab', desc: 'Cloud Jupyter notebook environment with free GPU access.', url: 'https://colab.research.google.com/' }
]
}
];
const BIOTECH_TOOLS_CATEGORIES = [
{
title: 'Bioinformatics',
icon: Dna,
color: '#10B981',
bg: '#ECFDF5',
tools: [
{ name: 'Sequence Analysis', desc: 'NCBI BLAST, EMBOSS, and Clustal Omega sequence alignment.', url: 'https://blast.ncbi.nlm.nih.gov/' },
{ name: 'Genome Assembly', desc: 'SPAdes, Velvet, and Canu genome assemblers.', url: 'https://github.com/ablab/spades' },
{ name: 'Protein Analysis', desc: 'ExPASy, InterPro, and PROSITE protein characterization.', url: 'https://www.expasy.org/' },
{ name: 'Structural Biology', desc: 'PDB (Protein Data Bank) and PyMOL 3D structure analysis.', url: 'https://www.rcsb.org/' },
{ name: 'Phylogenetic Analysis', desc: 'MEGA, PHYLIP, and IQ-TREE evolutionary tree building.', url: 'https://www.megasoftware.net/' },
{ name: 'Biological Databases', desc: 'UniProt, GenBank, and Ensembl biological repositories.', url: 'https://www.uniprot.org/' }
]
},
{
title: 'Genomics',
icon: FlaskConical,
color: '#3B82F6',
bg: '#EFF6FF',
tools: [
{ name: 'DNA Sequencing', desc: 'Illumina BaseSpace, Oxford Nanopore, and PacBio tools.', url: 'https://www.illumina.com/' },
{ name: 'Genome Annotation', desc: 'Prokka, MAKER, and Augustus gene prediction pipelines.', url: 'https://github.com/tseemann/prokka' },
{ name: 'Variant Analysis', desc: 'GATK, SAMtools, and FreeBayes variant discovery.', url: 'https://gatk.broadinstitute.org/' },
{ name: 'Comparative Genomics', desc: 'MUMmer, Mauve, and OrthoFinder genome comparison.', url: 'https://mummer4.github.io/' },
{ name: 'Gene Expression', desc: 'DESeq2, edgeR, and Kallisto RNA-Seq quantification.', url: 'https://bioconductor.org/packages/release/bioc/html/DESeq2.html' }
]
},
{
title: 'Proteomics',
icon: Layers,
color: '#8B5CF6',
bg: '#F5F3FF',
tools: [
{ name: 'Protein Identification', desc: 'MaxQuant and Mascot mass spectrometry identification.', url: 'https://www.maxquant.org/' },
{ name: 'Protein Structure Prediction', desc: 'AlphaFold2, RoseTTAFold, and SWISS-MODEL.', url: 'https://alphafold.ebi.ac.uk/' },
{ name: 'Protein Interaction Analysis', desc: 'STRING database, BioGRID, and Cytoscape network mapping.', url: 'https://string-db.org/' },
{ name: 'Mass Spectrometry Analysis', desc: 'Proteome Discoverer and Skyline targeted proteomics.', url: 'https://skyline.ms/' },
{ name: 'Functional Proteomics', desc: 'Gene Ontology (GO) enrichment and KEGG pathway analysis.', url: 'https://geneontology.org/' }
]
},
{
title: 'Molecular Biology',
icon: Activity,
color: '#EC4899',
bg: '#FDF2F8',
tools: [
{ name: 'PCR Analysis', desc: 'Real-time qPCR curve fitting and Ct calculation software.', url: 'https://www.thermofisher.com/us/en/home/life-science/pcr.html' },
{ name: 'DNA/RNA Analysis', desc: 'SnapGene and Serial Cloner sequence manipulation.', url: 'https://www.snapgene.com/' },
{ name: 'Cloning', desc: 'NEB Builder, Gibson Assembly, and Restriction Cloning calculators.', url: 'https://nebuilder.neb.com/' },
{ name: 'Primer Design', desc: 'Primer3, NCBI Primer-BLAST, and OligoAnalyzer.', url: 'https://primer3.ut.ee/' },
{ name: 'Gel Electrophoresis Analysis', desc: 'ImageJ and GelAnalyzer band intensity quantification.', url: 'https://imagej.net/' }
]
},
{
title: 'Genetic Engineering',
icon: Code,
color: '#F97316',
bg: '#FFF7ED',
tools: [
{ name: 'CRISPR Design', desc: 'CRISPOR, CHOPCHOP, and Synthego gRNA design tools.', url: 'http://crispor.tefor.net/' },
{ name: 'Gene Editing', desc: 'Benchling gRNA and repair template modeling.', url: 'https://www.benchling.com/' },
{ name: 'Vector Design', desc: 'Addgene plasmid repository and SnapGene vector mapping.', url: 'https://www.addgene.org/' },
{ name: 'Synthetic Biology', desc: 'SBOL Designer and Genome Compiler synthetic DNA CAD.', url: 'https://sbolstandard.org/' },
{ name: 'Gene Delivery', desc: 'Transfection efficiency calculators and lentiviral tools.', url: 'https://www.addgene.org/viral-vectors/' }
]
},
{
title: 'Drug Discovery',
icon: Search,
color: '#06B6D4',
bg: '#ECFEFF',
tools: [
{ name: 'Molecular Docking', desc: 'AutoDock Vina, SwissDock, and PyRx ligand binding.', url: 'https://vina.scripps.edu/' },
{ name: 'Virtual Screening', desc: 'ZINC20 database and GOLD high-throughput screening.', url: 'https://zinc20.docking.org/' },
{ name: 'Drug Design', desc: 'Schrödinger Suite, ChemDraw, and MarvinView chemical CAD.', url: 'https://www.schrodinger.com/' },
{ name: 'Pharmacokinetics', desc: 'SwissADME and PK-Sim absorption/distribution modeling.', url: 'http://www.swissadme.ch/' },
{ name: 'Drug Target Identification', desc: 'Open Targets Platform and ChEMBL target binding.', url: 'https://platform.opentargets.org/' }
]
},
{
title: 'Clinical Research',
icon: FileText,
color: '#0284C7',
bg: '#E0F2FE',
tools: [
{ name: 'Clinical Data Management', desc: 'REDCap, OpenClinica, and Medidata Rave eCRF.', url: 'https://www.project-redcap.org/' },
{ name: 'Trial Management', desc: 'CTMS platforms for protocol and site monitoring.', url: 'https://www.clinicaltrials.gov/' },
{ name: 'Regulatory Documentation', desc: 'eCTD submission and FDA/EMA compliance tools.', url: 'https://www.fda.gov/' },
{ name: 'Statistical Analysis', desc: 'SAS, R, and SPSS clinical trial biostatistics.', url: 'https://www.r-project.org/' },
{ name: 'Pharmacovigilance', desc: 'VigiBase and Argus Safety adverse event tracking.', url: 'https://www.who-umc.org/' }
]
},
{
title: 'Laboratory Management',
icon: ClipboardList,
color: '#EAB308',
bg: '#FEFCE8',
tools: [
{ name: 'Laboratory Information Management (LIMS)', desc: 'LabWare, LabVantage, and Quartzy lab LIMS.', url: 'https://www.quartzy.com/' },
{ name: 'Sample Tracking', desc: 'Freezerworks and BarTender specimen tracking.', url: 'https://www.freezerworks.com/' },
{ name: 'Inventory Management', desc: 'Chemical Safety, Labcup, and Quartzy reagent logs.', url: 'https://www.quartzy.com/' },
{ name: 'Lab Automation', desc: 'OpenTrons liquid handler and Tecan automation.', url: 'https://opentrons.com/' },
{ name: 'Quality Control', desc: 'ISO 17025 compliance and calibration tracking.', url: 'https://www.iso.org/' }
]
},
{
title: 'Microscopy & Imaging',
icon: Microscope,
color: '#059669',
bg: '#ECFDF5',
tools: [
{ name: 'Image Acquisition', desc: 'ZEN (Zeiss), NIS-Elements (Nikon), and CellSens.', url: 'https://www.zeiss.com/microscopy/' },
{ name: 'Image Processing', desc: 'ImageJ, Fiji, and CellProfiler image segmentation.', url: 'https://imagej.net/software/fiji/' },
{ name: 'Cell Imaging', desc: 'Fiji 3D cell tracking and live-cell imaging plugins.', url: 'https://cellprofiler.org/' },
{ name: 'Fluorescence Analysis', desc: 'FRAP, FRET, and colocalization analysis tools.', url: 'https://imagej.net/imaging/fret' },
{ name: 'Microscopy Automation', desc: 'Micro-Manager open-source automated microscopy.', url: 'https://micro-manager.org/' }
]
},
{
title: 'Data Analysis',
icon: BarChart3,
color: '#2563EB',
bg: '#EFF6FF',
tools: [
{ name: 'Statistical Analysis', desc: 'GraphPad Prism, R, and Python SciPy statistics.', url: 'https://www.graphpad.com/' },
{ name: 'Data Visualization', desc: 'ggplot2, Seaborn, and Plotly interactive charts.', url: 'https://ggplot2.tidyverse.org/' },
{ name: 'Machine Learning for Biology', desc: 'Scikit-learn, PyTorch, and Bio-BERT models.', url: 'https://scikit-learn.org/' },
{ name: 'Omics Data Analysis', desc: 'Bioconductor suite for high-throughput genomic data.', url: 'https://www.bioconductor.org/' },
{ name: 'Scientific Computing', desc: 'MATLAB, Julia, and NumPy scientific computation.', url: 'https://www.mathworks.com/products/matlab.html' }
]
},
{
title: 'Bioprocess Engineering',
icon: Settings,
color: '#DC2626',
bg: '#FEF2F2',
tools: [
{ name: 'Fermentation Monitoring', desc: 'Sartorius BioPAT and BioNET bioprocess logging.', url: 'https://www.sartorius.com/' },
{ name: 'Process Simulation', desc: 'SuperPro Designer and Aspen Plus bioprocess simulation.', url: 'https://www.intelligen.com/superpro.html' },
{ name: 'Bioreactor Control', desc: 'Applikon myControl and Emerson DeltaV Automation.', url: 'https://www.emerson.com/en-us/automation/deltav' },
{ name: 'Process Optimization', desc: 'DoE (Design of Experiments) in MODDE and JMP.', url: 'https://www.jmp.com/' },
{ name: 'Scale-up Analysis', desc: 'CFD (Computational Fluid Dynamics) mixing simulation.', url: 'https://www.ansys.com/' }
]
},
{
title: 'Systems Biology',
icon: Users,
color: '#7C3AED',
bg: '#F5F3FF',
tools: [
{ name: 'Pathway Analysis', desc: 'KEGG, Reactome, and WikiPathways biological maps.', url: 'https://www.reactome.org/' },
{ name: 'Network Biology', desc: 'Cytoscape network visualization and analysis.', url: 'https://cytoscape.org/' },
{ name: 'Metabolic Modeling', desc: 'COBRA Toolbox and SBML (Systems Biology Markup Language).', url: 'https://opencobra.github.io/' },
{ name: 'Multi-omics Integration', desc: 'MixOmics and MOFA2 multi-view integration.', url: 'http://mixomics.org/' },
{ name: 'Computational Biology', desc: 'CellDesigner and COPASI biochemical simulation.', url: 'http://copasi.org/' }
]
},
{
title: 'Biomedical Engineering',
icon: Cpu,
color: '#D97706',
bg: '#FEF3C7',
tools: [
{ name: 'Medical Image Analysis', desc: '3D Slicer, ITK-SNAP, and OsiriX DICOM viewers.', url: 'https://www.slicer.org/' },
{ name: 'Biosignal Processing', desc: 'EEGLAB, PhysioNet, and BioSig ECG/EEG processing.', url: 'https://sccn.ucsd.edu/eeglab/' },
{ name: 'Medical Device Design', desc: 'SolidWorks, COMSOL Multiphysics, and FEA tools.', url: 'https://www.comsol.com/' },
{ name: 'Tissue Engineering', desc: 'Bioprinting G-code generators and scaffold CAD.', url: 'https://www.cellink.com/' },
{ name: 'Biomaterials Analysis', desc: 'Degradation kinetics and mechanical testing analysis.', url: 'https://www.instron.com/' }
]
},
{
title: 'Scientific Productivity',
icon: BookOpen,
color: '#64748B',
bg: '#F1F5F9',
tools: [
{ name: 'Reference Management', desc: 'Mendeley, Zotero, and EndNote reference tools.', url: 'https://www.zotero.org/' },
{ name: 'Scientific Writing', desc: 'Overleaf LaTeX, BioRender, and Grammarly.', url: 'https://www.biorender.com/' },
{ name: 'Research Collaboration', desc: 'ResearchGate, ORCID, and Open Science Framework (OSF).', url: 'https://osf.io/' },
{ name: 'Data Sharing', desc: 'Figshare, Zenodo, and Dryad research data repositories.', url: 'https://zenodo.org/' },
{ name: 'Laboratory Documentation', desc: 'LabArchives, Notion, and Benchling notebook templates.', url: 'https://www.labarchives.com/' }
]
}
];
function getToolGuideConcepts(name: string, desc: string): string[] {
const n = name.toLowerCase();
// Cybersecurity
if (n.includes('penetration') || n.includes('metasploit') || n.includes('burp') || n.includes('kali') || n.includes('ethical') || n.includes('zap')) {
return [
'Scanning target hosts and discovering open network services',
'Auditing web applications for OWASP Top 10 security vulnerabilities',
'Using exploitation frameworks to simulate real-world cyber attacks safely',
'Intercepting and modifying HTTP traffic using web proxy tools',
'Writing penetration testing reports with risk remediation steps'
];
}
if (n.includes('forensics') || n.includes('autopsy') || n.includes('volatility') || n.includes('malware') || n.includes('digital')) {
return [
'Acquiring bit-stream forensic images of hard drives and memory sticks',
'Extracting volatile RAM artifacts and running process memory dumps',
'Analyzing file system journal logs and recovering deleted files',
'Investigating email headers, SPF/DKIM records, and phishing indicators',
'Decompiling suspicious malware binaries in isolated sandbox environments'
];
}
if (n.includes('identity') || n.includes('iam') || n.includes('okta') || n.includes('keycloak') || n.includes('password') || n.includes('auth')) {
return [
'Setting up Single Sign-On (SSO) and OAuth 2.0 / OpenID authentication',
'Enforcing Multi-Factor Authentication (MFA) with TOTP and security keys',
'Managing Role-Based Access Control (RBAC) across organization users',
'Auditing password strength and checking credential breach databases',
'Securing API tokens and secrets in centralized key vaults'
];
}
// Artificial Intelligence & Machine Learning
if (n.includes('machine learning') || n.includes('pytorch') || n.includes('tensorflow') || n.includes('scikit') || n.includes('deep learning')) {
return [
'Preparing datasets: feature scaling, one-hot encoding, and train/test splits',
'Training supervised classification and regression models',
'Building deep neural network architectures with layers and activation functions',
'Evaluating model performance using accuracy, precision, recall, and F1-score',
'Exporting trained models for real-time web API inference deployment'
];
}
if (n.includes('generative') || n.includes('llm') || n.includes('openai') || n.includes('claude') || n.includes('ollama') || n.includes('nlp')) {
return [
'Prompt engineering techniques: system prompts, few-shot prompting, and chain-of-thought',
'Running local open-source LLMs on your computer using Ollama',
'Integrating OpenAI and Claude APIs into custom web and mobile apps',
'Building RAG (Retrieval-Augmented Generation) applications with vector databases',
'Creating autonomous AI agents using frameworks like CrewAI and LangChain'
];
}
// Electrical & Electronics
if (n.includes('microcontroller') || n.includes('arduino') || n.includes('stm32') || n.includes('esp32') || n.includes('raspberry pi') || n.includes('embedded')) {
return [
'Writing setup and main execution loops for hardware control',
'Reading digital and analog sensors (temperature, light, ultrasonic)',
'Generating PWM signals to control motor speeds and LED brightness',
'Communicating over serial protocols: UART, SPI, and I2C',
'Connecting microcontrollers to Wi-Fi and cloud IoT dashboards'
];
}
if (n.includes('circuit') || n.includes('spice') || n.includes('pcb') || n.includes('fpga') || n.includes('verilog') || n.includes('analog')) {
return [
'Drawing schematic diagrams with electronic component symbols',
'Simulating AC/DC voltage, current, and transient signal waveforms',
'Routing Printed Circuit Board (PCB) traces and copper ground planes',
'Writing Verilog/VHDL code for digital hardware logic synthesis',
'Testing hardware prototypes using oscilloscopes and logic analyzers'
];
}
// Business & Management
if (n.includes('accounting') || n.includes('finance') || n.includes('tally') || n.includes('quickbooks') || n.includes('crm') || n.includes('salesforce') || n.includes('zoho')) {
return [
'Posting double-entry journal records and tracking general ledgers',
'Managing customer leads, sales pipelines, and automated follow-ups',
'Generating automated Profit & Loss statements and balance sheets',
'Tracking accounts receivable, vendor invoices, and tax compliance',
'Creating interactive executive dashboards for business analytics'
];
}
if (n.includes('project') || n.includes('jira') || n.includes('trello') || n.includes('asana') || n.includes('marketing') || n.includes('bi')) {
return [
'Creating Agile Scrum boards, sprints, and user story backlogs',
'Tracking team tasks, deadlines, and project milestones',
'Analyzing website traffic, conversion rates, and user analytics',
'Automating email marketing campaigns and lead generation workflows',
'Managing collaborative team documentation and project wikis'
];
}
// Biotech & Life Sciences
if (n.includes('bioinformatics') || n.includes('blast') || n.includes('genomics') || n.includes('pymol') || n.includes('benchling') || n.includes('dna')) {
return [
'Aligning DNA and protein sequences against global NCBI databases',
'Predicting 3D macromolecular structures of proteins and enzymes',
'Simulating molecular docking and drug-target binding interactions',
'Analyzing Next-Generation Sequencing (NGS) quality control data',
'Documenting experiments in cloud-based Electronic Lab Notebooks (ELN)'
];
}
// Standard Software / CS Fallback
if (n.includes('git') || n.includes('version')) {
return [
'Creating local repositories and initializing project tracking',
'Making atomic commits to record project history milestone checkpoints',
'Creating feature branches for isolated experiments and safe updates',
'Merging branches, resolving code conflicts, and pushing to remote repos',
'Collaborating with teammates using Pull Requests and peer reviews'
];
}
if (n.includes('react') || n.includes('frontend')) {
return [
'Building modern user interfaces using modular React components',
'Managing component state dynamically with hooks like useState and useEffect',
'Passing properties (props) cleanly between parent and child elements',
'Connecting frontend interfaces to live REST API backend endpoints',
'Optimizing rendering speed for responsive single-page web applications'
];
}
return [
`Understanding the fundamental role of ${name} in modern engineering workflows`,
`Exploring initial installation, configuration, and environment setup`,
`Learning key features: ${desc}`,
`Integrating ${name} into student projects and practical lab experiments`,
`Following industry best practices for efficiency and productivity`
];
}
function getToolGuideUseCases(name: string, category: string): string[] {
const c = category.toLowerCase();
if (c.includes('computer') || c.includes('software')) {
return ['Software Development', 'Student Projects', 'Open Source', 'Production Apps'];
}
if (c.includes('business')) {
return ['Corporate Operations', 'Financial Planning', 'Team Management', 'Business Analytics'];
}
if (c.includes('electrical')) {
return ['Hardware Engineering', 'Embedded Systems', 'Lab Experiments', 'Circuit Design'];
}
if (c.includes('cybersecurity')) {
return ['Security Auditing', 'Threat Defense', 'Penetration Labs', 'Network Diagnostics'];
}
if (c.includes('ai') || c.includes('intelligence')) {
return ['Machine Learning', 'Data Analysis', 'Automation', 'Predictive Modeling'];
}
if (c.includes('biotech')) {
return ['Bioinformatics Research', 'Genomic Studies', 'Lab Automation', 'Drug Discovery'];
}
return ['Academic Learning', 'Student Projects', 'Industry Practice', 'Lab Work'];
}
function getToolGuideLinks(name: string, primaryUrl: string): { label: string; url: string }[] {
const links: { label: string; url: string }[] = [];
if (primaryUrl && primaryUrl !== '#') {
links.push({ label: `Official ${name} Website & Documentation`, url: primaryUrl });
} else {
links.push({ label: `Official ${name} Documentation Portal`, url: `https://www.google.com/search?q=${encodeURIComponent(name)}+official+documentation` });
}
const n = name.toLowerCase();
if (n.includes('git') || n.includes('github')) {
links.push({ label: 'Git - Atlassian Complete Beginner Guide', url: 'https://www.atlassian.com/git/tutorials' });
links.push({ label: 'Learn Git Branching (Interactive Visualizer)', url: 'https://learngitbranching.js.org/' });
} else if (n.includes('react')) {
links.push({ label: 'React Official Interactive Tutorial', url: 'https://react.dev/learn' });
links.push({ label: 'FreeCodeCamp React Beginner Course', url: 'https://www.freecodecamp.org/news/tag/react/' });
} else if (n.includes('tally') || n.includes('quickbooks') || n.includes('accounting') || n.includes('finance')) {
links.push({ label: 'Accounting Fundamentals for Beginners (AccountingTools)', url: 'https://www.accountingtools.com/' });
links.push({ label: `${name} Video Tutorials & Case Studies`, url: `https://www.youtube.com/results?search_query=${encodeURIComponent(name)}+beginner+guide` });
} else if (n.includes('wireshark') || n.includes('nmap') || n.includes('metasploit') || n.includes('security')) {
links.push({ label: 'TryHackMe Hands-on Security Labs', url: 'https://tryhackme.com/' });
links.push({ label: 'OverTheWire Security Wargames', url: 'https://overthewire.org/' });
} else if (n.includes('docker') || n.includes('kubernetes') || n.includes('container')) {
links.push({ label: 'Docker Curriculum & Beginner Tutorial', url: 'https://docker-curriculum.com/' });
links.push({ label: 'Play with Docker (Free Browser Sandbox)', url: 'https://labs.play-with-docker.com/' });
} else if (n.includes('arduino') || n.includes('esp32') || n.includes('raspberry pi') || n.includes('stm32')) {
links.push({ label: 'Arduino & Microcontroller Hardware Tutorials', url: 'https://docs.arduino.cc/tutorials/' });
links.push({ label: 'Random Nerd Tutorials (ESP32 / Pi Guides)', url: 'https://randomnerdtutorials.com/' });
} else if (n.includes('blast') || n.includes('pymol') || n.includes('biotech') || n.includes('dna')) {
links.push({ label: 'NCBI Bioinformatics Training & Manuals', url: 'https://www.ncbi.nlm.nih.gov/guide/all/' });
links.push({ label: 'BioRender Scientific Illustration Guides', url: 'https://biorender.com/learn/' });
} else if (n.includes('openai') || n.includes('pytorch') || n.includes('tensorflow') || n.includes('ai') || n.includes('machine learning')) {
links.push({ label: 'Fast.ai Practical Deep Learning for Coders', url: 'https://www.fast.ai/' });
links.push({ label: 'Kaggle Machine Learning Courses & Datasets', url: 'https://www.kaggle.com/learn' });
} else {
links.push({ label: `Learn ${name} on W3Schools / FreeCodeCamp`, url: `https://www.google.com/search?q=learn+${encodeURIComponent(name)}+for+beginners` });
links.push({ label: `${name} Video Tutorials & Step-by-Step Guides`, url: `https://www.youtube.com/results?search_query=${encodeURIComponent(name)}+beginner+tutorial` });
}
return links;
}
const TOOLKIT_ICONS: Record<string, { icon: React.ComponentType<{ className?: string }>; bg: string; color: string }> = {
'CS tools': { icon: Code, bg: '#EFF6FF', color: '#3B82F6' },
'Business tools': { icon: Briefcase, bg: '#ECFDF5', color: '#10B981' },
'Cybersecurity tools': { icon: ShieldCheck, bg: '#F5F3FF', color: '#8B5CF6' },
'AI tools': { icon: BrainCircuit, bg: '#FDF2F8', color: '#EC4899' },
'Electrical and Electronic tools': { icon: Zap, bg: '#FEF3C7', color: '#D97706' },
'Biotech tools': { icon: Dna, bg: '#ECFEFF', color: '#06B6D4' },
};
export default function Notes() {
const [searchQuery, setSearchQuery] = useState('');
const [selectedSem, setSelectedSem] = useState('All');
const [selectedDept, setSelectedDept] = useState('All Departments');
const [selectedType, setSelectedType] = useState('all');
const [selectedSubject, setSelectedSubject] = useState('All Subjects');
const [searchParams, setSearchParams] = useSearchParams();
const selectedToolkit = searchParams.get('toolkit');
const [selectedCategory, setSelectedCategory] = useState<number | null>(null);
const [selectedLanguage, setSelectedLanguage] = useState<number | null>(null);
const [selectedTool, setSelectedTool] = useState<{ name: string; desc: string; url: string; category: string; bg: string; color: string } | null>(null);
const [notes, setNotes] = useState<any[]>([]);
useEffect(() => {
const fetchNotes = async () => {
try {
const response = await fetch('http://localhost:8080/api/notes');
if (response.ok) {
const data = await response.json();
const mappedData = data.map((n: any) => ({
id: String(n.id),
title: n.title,
subject: n.subject,
department: n.department,
semester: n.semester,
type: n.fileType,
downloads: n.downloadsCount || 0,
fileSize: n.fileSize,
uploadedAt: n.uploadedAt ? n.uploadedAt.split('T')[0] : '',
downloadUrl: n.downloadUrl
}));
setNotes(mappedData);
} else {
setNotes(NOTES_DATA);
}
} catch (err) {
console.error('Error fetching notes:', err);
setNotes(NOTES_DATA);
}
};
fetchNotes();
}, []);
const handleDownload = async (noteId: string, downloadUrl: string) => {
try {
await fetch(`http://localhost:8080/api/notes/${noteId}/download`, { method: 'POST' });
setNotes(prev => prev.map(n => n.id === noteId ? { ...n, downloads: n.downloads + 1 } : n));
} catch (err) {
console.error('Error incrementing download count:', err);
}
if (downloadUrl) {
window.open(downloadUrl, '_blank');
}
};
const setSelectedToolkit = (value: string | null) => {
if (value) {
setSearchParams({ toolkit: value });
setSelectedCategory(null);
setSelectedLanguage(null);
setSelectedTool(null);
} else {
setSearchParams({});
setSelectedCategory(null);
setSelectedLanguage(null);
setSelectedTool(null);
}
};
const toolkitRef = useRef<HTMLDivElement>(null);
const filtered = notes.filter((note) => {
const matchSearch = note.title.toLowerCase().includes(searchQuery.toLowerCase()) ||
note.subject.toLowerCase().includes(searchQuery.toLowerCase());
const matchSem = selectedSem === 'All' || note.semester === parseInt(selectedSem);
const matchDept = selectedDept === 'All Departments' || note.department === selectedDept || note.department === 'All Departments';
const matchType = selectedType === 'all' || note.type === selectedType;
const matchSubject = selectedSubject === 'All Subjects' || note.subject === selectedSubject;
return matchSearch && matchSem && matchDept && matchType && matchSubject;
});
return (
<div className="min-h-screen" style={{ backgroundColor: '#FAFAFA' }}>
{/* Header */}
{!selectedToolkit && (
<div className="bg-white border-b border-[#E5E7EB] py-10">
<div className="container-custom">
<motion.div initial={{ opacity: 0, y: 20 }} animate={{ opacity: 1, y: 0 }} transition={{ duration: 0.5 }}>
<div className="flex items-center gap-2 text-xs text-[#94A3B8] mb-3" style={{ fontFamily: 'Inter, sans-serif' }}>
<span>Home</span>
<ChevronRight className="w-3 h-3" />
<span className="text-[#F97316]">Notes & PYQs</span>
</div>
<h1 className="text-3xl md:text-4xl font-bold text-[#1E293B] mb-2" style={{ fontFamily: 'Playfair Display, serif' }}>
Notes &{' '}
<span style={{ background: 'linear-gradient(135deg, #F97316, #FB923C)', WebkitBackgroundClip: 'text', WebkitTextFillColor: 'transparent', backgroundClip: 'text' }}>
PYQs
</span>
</h1>
<p className="text-[#475569]" style={{ fontFamily: 'Inter, sans-serif' }}>
Access semester-wise notes, previous year question papers, and study materials.
</p>
</motion.div>
</div>
</div>
)}
<div className="container-custom py-10">
{selectedToolkit ? (
(() => {
const TOOLKIT_MAP: Record<string, { categories: typeof CS_TOOLS_CATEGORIES; label: string }> = {
cs: { categories: CS_TOOLS_CATEGORIES, label: 'Computer Science' },
business: { categories: BUSINESS_TOOLS_CATEGORIES, label: 'Business' },
electrical: { categories: EE_TOOLS_CATEGORIES, label: 'Electrical & Electronics' },
cybersecurity: { categories: CYBERSECURITY_TOOLS_CATEGORIES, label: 'Cybersecurity' },
ai: { categories: AI_TOOLS_CATEGORIES, label: 'Artificial Intelligence' },
biotech: { categories: BIOTECH_TOOLS_CATEGORIES, label: 'Biotechnology' },
};
const current = TOOLKIT_MAP[selectedToolkit];
if (!current) return null;
const { categories, label } = current;
return (
<div>
{/* Back Button and Title */}
<motion.div
initial={{ opacity: 0, y: 10 }}
animate={{ opacity: 1, y: 0 }}
transition={{ duration: 0.4 }}
className="mb-8"
>
<button
onClick={() => {
if (selectedTool !== null) {
setSelectedTool(null);
} else if (selectedLanguage !== null) {
setSelectedLanguage(null);
} else if (selectedCategory !== null) {
setSelectedCategory(null);
} else {
setSelectedToolkit(null);
setTimeout(() => {
toolkitRef.current?.scrollIntoView({ behavior: 'smooth', block: 'start' });
}, 100);
}
}}
className="flex items-center gap-2 text-sm font-semibold text-[#64748B] hover:text-[#F97316] transition-colors mb-6 group"
style={{ fontFamily: 'Poppins, sans-serif' }}
>
<ArrowLeft className="w-4 h-4 group-hover:-translate-x-1 transition-transform" />
{selectedTool !== null
? `Back to ${categories[selectedCategory!].title}`
: selectedLanguage !== null
? 'Back to Programming Languages'
: selectedCategory !== null
? `Back to ${label} Tools`
: 'Back to Toolkit'}
</button>
<h2 className="text-3xl font-bold text-[#1E293B] mb-2" style={{ fontFamily: 'Playfair Display, serif' }}>
{selectedTool !== null ? (
<>
{selectedTool.name}{' '}
<span style={{ background: 'linear-gradient(135deg, #F97316, #FB923C)', WebkitBackgroundClip: 'text', WebkitTextFillColor: 'transparent', backgroundClip: 'text' }}>
Guide
</span>
</>
) : selectedLanguage !== null ? (
<>
{PROGRAMMING_LANGUAGES_GUIDES[selectedLanguage].name}{' '}
<span style={{ background: 'linear-gradient(135deg, #F97316, #FB923C)', WebkitBackgroundClip: 'text', WebkitTextFillColor: 'transparent', backgroundClip: 'text' }}>
Guide
</span>
</>
) : selectedCategory !== null ? (
<>
{categories[selectedCategory].title}{' '}
<span style={{ background: 'linear-gradient(135deg, #F97316, #FB923C)', WebkitBackgroundClip: 'text', WebkitTextFillColor: 'transparent', backgroundClip: 'text' }}>
Tools
</span>
</>
) : (
<>
{label}{' '}
<span style={{ background: 'linear-gradient(135deg, #F97316, #FB923C)', WebkitBackgroundClip: 'text', WebkitTextFillColor: 'transparent', backgroundClip: 'text' }}>
Tools
</span>
</>
)}
</h2>
<p className="text-[#64748B] text-sm" style={{ fontFamily: 'Inter, sans-serif' }}>
{selectedTool !== null
? `Beginner overview, key concepts, and official resources for ${selectedTool.name}.`
: selectedLanguage !== null
? `Beginner explanation, essential concepts, and curated learning links for ${PROGRAMMING_LANGUAGES_GUIDES[selectedLanguage].name}.`
: selectedCategory !== null
? `Explore the ${categories[selectedCategory].title.toLowerCase()} tools.`
: `Select a category to explore curated ${label.toLowerCase()} tools.`}
</p>
</motion.div>
{selectedTool !== null ? (
/* ── Universal Tool Beginner Guide View ── */
<motion.div
key={`tool-guide-${selectedTool.name}`}
initial={{ opacity: 0, y: 15 }}
animate={{ opacity: 1, y: 0 }}
transition={{ duration: 0.4 }}
className="bg-white rounded-3xl border border-[#E5E7EB] p-6 md:p-10 shadow-sm mb-20"
>
{/* Top Header of Tool Guide */}
<div className="flex flex-wrap items-center justify-between gap-4 border-b border-[#F1F5F9] pb-6 mb-8">
<div className="flex items-center gap-4">
<div
className="w-14 h-14 rounded-2xl flex items-center justify-center font-bold text-xl shadow-inner shrink-0"
style={{ backgroundColor: selectedTool.bg, color: selectedTool.color }}
>
<Wrench className="w-7 h-7" />
</div>
<div>
<div className="flex items-center gap-3">
<h3 className="text-2xl md:text-3xl font-bold text-[#1E293B]" style={{ fontFamily: 'Playfair Display, serif' }}>
{selectedTool.name}
</h3>
<span
className="text-xs font-semibold px-3 py-1 rounded-full border"
style={{
backgroundColor: selectedTool.bg,
color: selectedTool.color,
borderColor: selectedTool.color + '40'
}}
>
{selectedTool.category} Tool
</span>
</div>
<p className="text-xs md:text-sm text-[#64748B] font-medium mt-0.5">
Curated Beginner Overview & Essential Learning Resources
</p>
</div>
</div>
<button
onClick={() => setSelectedTool(null)}
className="flex items-center gap-1.5 text-xs font-semibold text-[#64748B] hover:text-[#F97316] transition-colors px-4 py-2 rounded-xl bg-[#F8FAFC] hover:bg-[#FFF7ED] border border-[#E2E8F0]"
>
<ArrowLeft className="w-3.5 h-3.5" />
<span>Back to {selectedTool.category}</span>
</button>
</div>
{/* Guide Content Sections */}
<div className="grid grid-cols-1 lg:grid-cols-3 gap-8">
{/* Left 2 Cols: What It Is & Key Concepts */}
<div className="lg:col-span-2 space-y-8">
{/* Section 1: What It Is */}
<div>
<h4 className="text-base font-semibold text-[#1E293B] mb-2 flex items-center gap-2" style={{ fontFamily: 'Poppins, sans-serif' }}>
<span className="w-2.5 h-2.5 rounded-full bg-[#F97316]" />
What is {selectedTool.name}?
</h4>
<p className="text-sm text-[#475569] leading-relaxed bg-[#F8FAFC] p-4 rounded-2xl border border-[#E2E8F0]">
{selectedTool.desc} It is widely used in student engineering projects and industry applications to streamline development workflows and automate routine processes.
</p>
</div>
{/* Section 2: Key Concepts You'll Discover */}
<div>
<h4 className="text-base font-semibold text-[#1E293B] mb-3 flex items-center gap-2" style={{ fontFamily: 'Poppins, sans-serif' }}>
<span className="w-2.5 h-2.5 rounded-full bg-[#3B82F6]" />
Key Concepts You'll Discover
</h4>
<div className="bg-white border border-[#E5E7EB] rounded-2xl p-4 divide-y divide-[#F1F5F9]">
{getToolGuideConcepts(selectedTool.name, selectedTool.desc).map((item, idx) => (
<div key={idx} className="py-2.5 first:pt-0 last:pb-0 flex items-start gap-3 text-xs md:text-sm text-[#334155]">
<span className="w-5 h-5 rounded-full bg-[#EFF6FF] text-[#3B82F6] font-bold text-xs flex items-center justify-center shrink-0 mt-0.5">
{idx + 1}
</span>
<span className="leading-snug">{item}</span>
</div>
))}
</div>
</div>
</div>
{/* Right Col: Applications & Links */}
<div className="space-y-8">
{/* Section 3: Primary Use Cases */}
<div className="bg-[#F8FAFC] p-5 rounded-2xl border border-[#E2E8F0]">
<h4 className="text-sm font-semibold text-[#1E293B] mb-3 flex items-center gap-2" style={{ fontFamily: 'Poppins, sans-serif' }}>
<span className="w-2.5 h-2.5 rounded-full bg-[#10B981]" />
Key Use Cases
</h4>
<div className="flex flex-wrap gap-2">
{getToolGuideUseCases(selectedTool.name, selectedTool.category).map((uc, i) => (
<span key={i} className="text-xs font-medium text-[#475569] bg-white border border-[#CBD5E1] px-3 py-1.5 rounded-xl shadow-2xs">
{uc}
</span>
))}
</div>
</div>
{/* Section 4: Recommended Learning Links */}
<div>
<h4 className="text-sm font-semibold text-[#1E293B] mb-3 flex items-center gap-2" style={{ fontFamily: 'Poppins, sans-serif' }}>
<span className="w-2.5 h-2.5 rounded-full bg-[#8B5CF6]" />
Recommended Learning Links
</h4>
<div className="space-y-2.5">
{getToolGuideLinks(selectedTool.name, selectedTool.url).map((link, lIdx) => (
<a
key={lIdx}
href={link.url}
target="_blank"
rel="noopener noreferrer"
className="flex items-center justify-between p-3 bg-white hover:bg-[#FFF7ED] border border-[#E2E8F0] hover:border-[#FED7AA] rounded-xl text-xs font-semibold text-[#1E293B] hover:text-[#F97316] transition-all group shadow-2xs"
>
<span>{link.label}</span>
<ExternalLink className="w-3.5 h-3.5 text-[#94A3B8] group-hover:text-[#F97316] transition-colors" />
</a>
))}
</div>
</div>
</div>
</div>
</motion.div>
) : selectedCategory !== null ? (
/* If CS tools & Programming Languages category (index 0) */
selectedToolkit === 'cs' && selectedCategory === 0 ? (
selectedLanguage !== null ? (
/* ── Beginner Guide View for Selected Language ── */
<motion.div
key={`guide-${selectedLanguage}`}
initial={{ opacity: 0, y: 15 }}
animate={{ opacity: 1, y: 0 }}
transition={{ duration: 0.4 }}
className="bg-white rounded-3xl border border-[#E5E7EB] p-6 md:p-10 shadow-sm mb-20"
>
{/* Top Header of Guide */}
<div className="flex flex-wrap items-center justify-between gap-4 border-b border-[#F1F5F9] pb-6 mb-8">
<div className="flex items-center gap-4">
<div
className="w-14 h-14 rounded-2xl flex items-center justify-center font-bold text-xl shadow-inner shrink-0"
style={{ backgroundColor: PROGRAMMING_LANGUAGES_GUIDES[selectedLanguage].bg, color: PROGRAMMING_LANGUAGES_GUIDES[selectedLanguage].color }}
>
<Code className="w-7 h-7" />
</div>
<div>
<div className="flex items-center gap-3">
<h3 className="text-2xl md:text-3xl font-bold text-[#1E293B]" style={{ fontFamily: 'Playfair Display, serif' }}>
{PROGRAMMING_LANGUAGES_GUIDES[selectedLanguage].name}
</h3>
<span
className="text-xs font-semibold px-3 py-1 rounded-full border"
style={{
backgroundColor: PROGRAMMING_LANGUAGES_GUIDES[selectedLanguage].bg,
color: PROGRAMMING_LANGUAGES_GUIDES[selectedLanguage].color,
borderColor: PROGRAMMING_LANGUAGES_GUIDES[selectedLanguage].color + '40'
}}
>
Beginner Guide
</span>
</div>
<p className="text-xs md:text-sm text-[#64748B] font-medium mt-0.5">
{PROGRAMMING_LANGUAGES_GUIDES[selectedLanguage].tagline}
</p>
</div>
</div>
<button
onClick={() => setSelectedLanguage(null)}
className="flex items-center gap-1.5 text-xs font-semibold text-[#64748B] hover:text-[#F97316] transition-colors px-4 py-2 rounded-xl bg-[#F8FAFC] hover:bg-[#FFF7ED] border border-[#E2E8F0]"
>
<ArrowLeft className="w-3.5 h-3.5" />
<span>Back to Languages</span>
</button>
</div>
{/* Guide Content Sections */}
<div className="grid grid-cols-1 lg:grid-cols-3 gap-8">
{/* Left 2 Cols: What It Is & Must-Know Essentials */}
<div className="lg:col-span-2 space-y-8">
{/* Section 1: What It Is */}
<div>
<h4 className="text-base font-semibold text-[#1E293B] mb-2 flex items-center gap-2" style={{ fontFamily: 'Poppins, sans-serif' }}>
<span className="w-2.5 h-2.5 rounded-full bg-[#F97316]" />
What is {PROGRAMMING_LANGUAGES_GUIDES[selectedLanguage].name}?
</h4>
<p className="text-sm text-[#475569] leading-relaxed bg-[#F8FAFC] p-4 rounded-2xl border border-[#E2E8F0]">
{PROGRAMMING_LANGUAGES_GUIDES[selectedLanguage].whatItIs}
</p>
</div>
{/* Section 2: Key Concepts You'll Discover */}
<div>
<h4 className="text-base font-semibold text-[#1E293B] mb-3 flex items-center gap-2" style={{ fontFamily: 'Poppins, sans-serif' }}>
<span className="w-2.5 h-2.5 rounded-full bg-[#3B82F6]" />
Key Concepts You'll Discover
</h4>
<div className="bg-white border border-[#E5E7EB] rounded-2xl p-4 divide-y divide-[#F1F5F9]">
{PROGRAMMING_LANGUAGES_GUIDES[selectedLanguage].keyConcepts.map((item, idx) => (
<div key={idx} className="py-2.5 first:pt-0 last:pb-0 flex items-start gap-3 text-xs md:text-sm text-[#334155]">
<span className="w-5 h-5 rounded-full bg-[#EFF6FF] text-[#3B82F6] font-bold text-xs flex items-center justify-center shrink-0 mt-0.5">
{idx + 1}
</span>
<span className="leading-snug">{item}</span>
</div>
))}
</div>
</div>
</div>
{/* Right Col: Applications & Links */}
<div className="space-y-8">
{/* Section 3: Applications */}
<div className="bg-[#F8FAFC] p-5 rounded-2xl border border-[#E2E8F0]">
<h4 className="text-sm font-semibold text-[#1E293B] mb-3 flex items-center gap-2" style={{ fontFamily: 'Poppins, sans-serif' }}>
<span className="w-2.5 h-2.5 rounded-full bg-[#10B981]" />
Key Use Cases
</h4>
<div className="flex flex-wrap gap-2">
{PROGRAMMING_LANGUAGES_GUIDES[selectedLanguage].useCases.map((uc, i) => (
<span key={i} className="text-xs font-medium text-[#475569] bg-white border border-[#CBD5E1] px-3 py-1.5 rounded-xl shadow-2xs">
{uc}
</span>
))}
</div>
</div>
{/* Section 4: Explore Links */}
<div>
<h4 className="text-sm font-semibold text-[#1E293B] mb-3 flex items-center gap-2" style={{ fontFamily: 'Poppins, sans-serif' }}>
<span className="w-2.5 h-2.5 rounded-full bg-[#8B5CF6]" />
Recommended Learning Links
</h4>
<div className="space-y-2.5">
{PROGRAMMING_LANGUAGES_GUIDES[selectedLanguage].links.map((link, lIdx) => (
<a
key={lIdx}
href={link.url}
target="_blank"
rel="noopener noreferrer"
className="flex items-center justify-between p-3 bg-white hover:bg-[#FFF7ED] border border-[#E2E8F0] hover:border-[#FED7AA] rounded-xl text-xs font-semibold text-[#1E293B] hover:text-[#F97316] transition-all group shadow-2xs"
>
<span>{link.label}</span>
<ExternalLink className="w-3.5 h-3.5 text-[#94A3B8] group-hover:text-[#F97316] transition-colors" />
</a>
))}
</div>
</div>
</div>
</div>
</motion.div>
) : (
/* ── List of Languages to Explore ── */
<motion.div
key="programming-languages-grid"
initial="hidden"
animate="visible"
variants={{ hidden: {}, visible: { transition: { staggerChildren: 0.08 } } }}
className="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-5 mb-20"
>
{PROGRAMMING_LANGUAGES_GUIDES.map((lang, langIndex) => (
<motion.div
key={lang.name}
variants={{ hidden: { opacity: 0, y: 24 }, visible: { opacity: 1, y: 0, transition: { duration: 0.45, ease: 'easeOut' } } }}
onClick={() => setSelectedLanguage(langIndex)}
whileHover={{ y: -4 }}
className="flex flex-col justify-between p-5 bg-white hover:bg-[#FFF7ED] border border-[#E5E7EB] hover:border-[#FED7AA] rounded-2xl cursor-pointer group transition-all shadow-xs hover:shadow-md w-full min-h-[170px]"
>
<div>
<div className="flex items-center justify-between mb-3">
<div
className="w-10 h-10 rounded-xl flex items-center justify-center shrink-0 font-bold text-sm"
style={{ backgroundColor: lang.bg, color: lang.color }}
>
<Code className="w-5 h-5" />
</div>
<span className="text-[11px] font-semibold text-[#F97316] bg-[#FFF7ED] px-2.5 py-0.5 rounded-full border border-[#FED7AA]">
Beginner Guide
</span>
</div>
<h4 className="text-base font-bold text-[#1E293B] group-hover:text-[#F97316] transition-colors mb-1" style={{ fontFamily: 'Poppins, sans-serif' }}>
{lang.name}
</h4>
<p className="text-xs text-[#64748B] leading-relaxed mb-4 line-clamp-2" style={{ fontFamily: 'Inter, sans-serif' }}>
{lang.tagline}
</p>
</div>
<div className="flex items-center justify-between text-xs font-semibold text-[#F97316] pt-3 border-t border-[#F1F5F9]">
<span>Explore Guide</span>
<ChevronRight className="w-4 h-4 group-hover:translate-x-1 transition-transform" />
</div>
</motion.div>
))}
</motion.div>
)
) : (
/* ── Standard Tools Grid for other categories ── */
<motion.div
key={`cat-tools-${selectedToolkit}-${selectedCategory}`}
initial="hidden"
animate="visible"
variants={{ hidden: {}, visible: { transition: { staggerChildren: 0.08 } } }}
className="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-5 mb-20"
>
{categories[selectedCategory].tools.map((tool) => (
<motion.div
key={tool.name}
variants={{ hidden: { opacity: 0, y: 24 }, visible: { opacity: 1, y: 0, transition: { duration: 0.45, ease: 'easeOut' } } }}
onClick={() =>
setSelectedTool({
name: tool.name,
desc: tool.desc,
url: tool.url,
category: categories[selectedCategory].title,
bg: categories[selectedCategory].bg,
color: categories[selectedCategory].color
})
}
whileHover={{ y: -3 }}
className="flex flex-col justify-between p-5 bg-white hover:bg-[#FFF7ED] border border-[#E5E7EB] hover:border-[#FED7AA] rounded-2xl cursor-pointer group transition-all shadow-sm hover:shadow-md w-full min-h-[160px]"
>
<div>
<div className="flex items-center gap-3 mb-3">
<div
className="w-9 h-9 rounded-xl flex items-center justify-center shrink-0"
style={{ backgroundColor: categories[selectedCategory].bg, color: categories[selectedCategory].color }}
>
{(() => { const Icon = categories[selectedCategory].icon; return <Icon className="w-4 h-4" />; })()}
</div>
<span className="text-sm font-semibold text-[#1E293B] group-hover:text-[#F97316] transition-colors" style={{ fontFamily: 'Poppins, sans-serif' }}>
{tool.name}
</span>
</div>
<p className="text-xs text-[#64748B] leading-relaxed mb-4" style={{ fontFamily: 'Inter, sans-serif' }}>
{tool.desc}
</p>
</div>
<div className="flex items-center justify-between text-xs font-semibold text-[#F97316] group-hover:text-orange-600 transition-colors mt-auto pt-3 border-t border-[#F1F5F9]">
<span>Explore Guide</span>
<ChevronRight className="w-4 h-4 group-hover:translate-x-1 transition-transform" />
</div>
</motion.div>
))}
</motion.div>
)
) : (
/* ── Category Buttons: styled like toolkit cards ── */
<motion.div
key={`${selectedToolkit}-categories`}
initial="hidden"
animate="visible"
variants={{ hidden: {}, visible: { transition: { staggerChildren: 0.08 } } }}
className="flex flex-wrap justify-center gap-4 mb-20"
>
{categories.map((category, index) => {
const CategoryIcon = category.icon;
return (
<motion.div
key={category.title}
variants={{ hidden: { opacity: 0, y: 24 }, visible: { opacity: 1, y: 0, transition: { duration: 0.45, ease: 'easeOut' } } }}
onClick={() => setSelectedCategory(index)}
whileHover={{ y: -3 }}
className="w-full sm:w-[calc(50%-8px)] lg:w-[calc(33.333%-11px)] flex items-center gap-4 p-5 bg-white rounded-2xl border border-[#E5E7EB] cursor-pointer group transition-all hover:border-[#FED7AA] hover:shadow-md"
style={{ boxShadow: '0 2px 15px -3px rgba(0,0,0,0.07)' }}
>
<div
className="w-11 h-11 rounded-xl flex items-center justify-center shrink-0"
style={{ backgroundColor: category.bg, color: category.color }}
>
<CategoryIcon className="w-5 h-5" />
</div>
<div className="flex-1 min-w-0">
<div className="text-sm font-semibold text-[#1E293B] group-hover:text-[#F97316] transition-colors" style={{ fontFamily: 'Poppins, sans-serif' }}>
{category.title}
</div>
<div className="text-xs text-[#94A3B8]" style={{ fontFamily: 'Inter, sans-serif' }}>
{category.tools.length} tool{category.tools.length > 1 ? 's' : ''}
</div>
</div>
<ChevronRight className="w-4 h-4 text-[#94A3B8] group-hover:text-[#F97316] group-hover:translate-x-1 transition-all shrink-0" />
</motion.div>
);
})}
</motion.div>
)}
</div>
);
})()
) : (
<div>
{/* Search + Filters */}
<motion.div
initial={{ opacity: 0, y: 16 }}
animate={{ opacity: 1, y: 0 }}
transition={{ duration: 0.4, delay: 0.1 }}
className="bg-white rounded-2xl border border-[#E5E7EB] p-5 mb-8"
style={{ boxShadow: '0 2px 15px -3px rgba(0,0,0,0.07)' }}
>
{/* Search */}
<div className="relative mb-4">
<Search className="absolute left-4 top-1/2 -translate-y-1/2 w-4.5 h-4.5 text-[#94A3B8]" />
<input
type="text"
placeholder="Search notes, subjects..."
value={searchQuery}
onChange={(e) => setSearchQuery(e.target.value)}
className="w-full pl-11 pr-4 py-3 rounded-xl border border-[#E5E7EB] text-sm text-[#1E293B] placeholder-[#94A3B8] focus:outline-none focus:border-[#F97316] transition-colors"
style={{ fontFamily: 'Inter, sans-serif' }}
/>
</div>
<div className="flex flex-wrap gap-3">
{/* Type Filter */}
<div className="flex items-center gap-2 flex-wrap">
<Filter className="w-4 h-4 text-[#94A3B8]" />
{['all', 'notes', 'pyq', 'syllabus'].map((type) => (
<button
key={type}
onClick={() => setSelectedType(type)}
className="px-3 py-1.5 rounded-lg text-xs font-medium capitalize transition-all"
style={{
fontFamily: 'Poppins, sans-serif',
backgroundColor: selectedType === type ? '#F97316' : '#F8FAFC',
color: selectedType === type ? 'white' : '#475569',
border: `1px solid ${selectedType === type ? '#F97316' : '#E5E7EB'}`,
}}
>
{type === 'all' ? 'All Types' : type.toUpperCase()}
</button>
))}
</div>
{/* Semester Filter */}
<div className="flex gap-2 flex-wrap items-center">
{SEMESTERS.slice(0, 5).map((sem) => (
<button
key={sem}
onClick={() => { setSelectedSem(sem); setSelectedSubject('All Subjects'); }}
className="px-3 py-1.5 rounded-lg text-xs font-medium transition-all cursor-pointer"
style={{
fontFamily: 'Poppins, sans-serif',
backgroundColor: selectedSem === sem ? '#1E293B' : '#F8FAFC',
color: selectedSem === sem ? 'white' : '#475569',
border: `1px solid ${selectedSem === sem ? '#1E293B' : '#E5E7EB'}`,
}}
>
{sem}
</button>
))}
</div>
{/* Subject Dropdown */}
{selectedSem !== 'All' && (
<div className="flex items-center gap-2">
<span className="text-xs font-semibold text-[#64748B]" style={{ fontFamily: 'Poppins, sans-serif' }}>Subject:</span>
<select
value={selectedSubject}
onChange={(e) => setSelectedSubject(e.target.value)}
className="px-3 py-1.5 rounded-lg text-xs font-medium bg-[#F8FAFC] border border-[#E5E7EB] text-[#475569] focus:outline-none focus:border-[#F97316] transition-all cursor-pointer"
style={{ fontFamily: 'Poppins, sans-serif' }}
>
<option value="All Subjects">All Subjects</option>
{(SUBJECTS_BY_SEM[parseInt(selectedSem)] || []).map((sub) => (
<option key={sub} value={sub}>
{sub}
</option>
))}
</select>
</div>
)}
</div>
</motion.div>
{/* Results */}
<StaggerContainer key={`${filtered.length}-${selectedSubject}`} className="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-4 mb-12">
{filtered.map((note) => {
const typeConfig = TYPE_COLORS[note.type] || { bg: '#F1F5F9', text: '#475569', icon: BookOpen };
const TypeIcon = typeConfig.icon;
return (
<StaggerItem key={note.id}>
<motion.div
whileHover={{ y: -4 }}
className="bg-white rounded-2xl border border-[#E5E7EB] p-5 flex flex-col justify-between gap-4 h-full"
style={{
borderLeft: `4px solid ${typeConfig.text}`,
boxShadow: '0 2px 15px -3px rgba(0,0,0,0.07)'
}}
>
<div className="flex gap-4">
{/* Visual PDF Preview Icon */}
<div className="w-14 h-20 border border-slate-200 rounded-xl p-2 flex flex-col justify-between bg-[#F8FAFC] shrink-0 shadow-sm">
<div className="bg-[#EF4444] text-[8px] font-extrabold text-white px-1 py-0.5 rounded w-fit uppercase tracking-wider" style={{ fontFamily: 'Poppins, sans-serif' }}>
PDF
</div>
<div className="flex flex-col gap-1.5">
<div className="w-full h-1 bg-slate-200 rounded" />
<div className="w-5/6 h-1 bg-slate-200 rounded" />
<div className="w-2/3 h-1 bg-slate-200 rounded" />
</div>
</div>
{/* Text Details */}
<div className="flex flex-col justify-between flex-1 min-w-0">
<div>
<div className="flex items-center justify-between mb-1.5">
<div className="w-6 h-6 rounded-lg flex items-center justify-center shrink-0" style={{ backgroundColor: typeConfig.bg }}>
<TypeIcon className="w-3.5 h-3.5" style={{ color: typeConfig.text }} />
</div>
<span
className="px-2 py-0.5 rounded-full text-[9px] font-bold uppercase tracking-wider"
style={{ backgroundColor: typeConfig.bg, color: typeConfig.text, fontFamily: 'Poppins, sans-serif' }}
>
{note.type}
</span>
</div>
<h3 className="text-sm font-bold text-[#1E293B] line-clamp-2 leading-tight mb-1" style={{ fontFamily: 'Poppins, sans-serif' }}>
{note.title}
</h3>
<p className="text-[11px] text-[#64748B] font-medium truncate" style={{ fontFamily: 'Inter, sans-serif' }}>
{note.subject} • Sem {note.semester}
</p>
</div>
</div>
</div>
{/* Metadata Line */}
<div className="flex items-center justify-between border-t border-[#F1F5F9] pt-3 text-[11px] text-[#64748B]" style={{ fontFamily: 'Inter, sans-serif' }}>
<div className="flex items-center gap-1.5">
<span className="font-semibold text-slate-800">{note.downloads} downloads · {note.fileSize}</span>
<span className="px-1 py-0.2 bg-[#F1F5F9] rounded text-[9px] font-bold text-slate-600">PDF</span>
</div>
<span>{note.uploadedAt ? `Updated ${note.uploadedAt}` : 'Recently'}</span>
</div>
{/* Download Button */}
<motion.button
whileHover={{ scale: 1.02 }}
whileTap={{ scale: 0.97 }}
onClick={() => handleDownload(note.id, note.downloadUrl)}
className="w-full flex items-center justify-center gap-2 py-2.5 rounded-xl text-sm font-semibold text-white cursor-pointer"
style={{
fontFamily: 'Poppins, sans-serif',
background: 'linear-gradient(135deg, #F97316, #FB923C)',
}}
>
<Download className="w-4 h-4" />
Download
</motion.button>
</motion.div>
</StaggerItem>
);
})}
</StaggerContainer>
{/* Toolkit Section */}
<div ref={toolkitRef} />
<SectionTitle tag="Useful Downloads" title="Student" highlight="Toolkit" align="left" />
<StaggerContainer className="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4 mb-20">
{TOOLKIT_ITEMS.map((item) => {
const iconConfig = TOOLKIT_ICONS[item.title] || { icon: Code, bg: '#FFF7ED', color: '#F97316' };
const IconComponent = iconConfig.icon;
return (
<StaggerItem key={item.id} className="flex">
<motion.div
onClick={() => {
if (item.title === 'CS tools') {
setSelectedToolkit('cs');
} else if (item.title === 'Business tools') {
setSelectedToolkit('business');
} else if (item.title === 'Electrical and Electronic tools') {
setSelectedToolkit('electrical');
} else if (item.title === 'Cybersecurity tools') {
setSelectedToolkit('cybersecurity');
} else if (item.title === 'AI tools') {
setSelectedToolkit('ai');
} else if (item.title === 'Biotech tools') {
setSelectedToolkit('biotech');
} else if (item.url && item.url !== '#') {
window.open(item.url, '_blank');
}
}}
whileHover={{ y: -3 }}
className="flex items-center gap-4 p-5 bg-white hover:bg-[#FFF7ED] rounded-2xl border border-[#E5E7EB] hover:border-[#FED7AA] cursor-pointer group w-full transition-all shadow-xs hover:shadow-md"
>
<div
className="w-11 h-11 rounded-xl flex items-center justify-center shrink-0 font-bold text-sm transition-transform group-hover:scale-105"
style={{ backgroundColor: iconConfig.bg, color: iconConfig.color }}
>
<IconComponent className="w-5.5 h-5.5" />
</div>
<div className="flex-1 min-w-0">
<div className="text-sm font-bold text-[#1E293B] group-hover:text-[#F97316] transition-colors mb-0.5" style={{ fontFamily: 'Poppins, sans-serif' }}>
{item.title}
</div>
<div className="text-xs text-[#64748B] line-clamp-1" style={{ fontFamily: 'Inter, sans-serif' }}>
{item.description}
</div>
</div>
<ChevronRight className="w-4 h-4 text-[#94A3B8] group-hover:text-[#F97316] group-hover:translate-x-1 transition-all shrink-0" />
</motion.div>
</StaggerItem>
);
})}
</StaggerContainer>
</div>
)}
</div>
</div>
);
}