|
|
<!DOCTYPE html> |
|
|
<html lang="en"> |
|
|
<head> |
|
|
<meta charset="UTF-8"> |
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0"> |
|
|
<title>UBC AI Projects Showcase</title> |
|
|
<script src="https://cdn.tailwindcss.com"></script> |
|
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css"> |
|
|
<script> |
|
|
tailwind.config = { |
|
|
theme: { |
|
|
extend: { |
|
|
colors: { |
|
|
ubcBlue: '#002145', |
|
|
ubcYellow: '#FFD700', |
|
|
ubcGray: '#F5F5F5', |
|
|
}, |
|
|
fontFamily: { |
|
|
sans: ['Inter', 'sans-serif'], |
|
|
}, |
|
|
} |
|
|
} |
|
|
} |
|
|
</script> |
|
|
<style> |
|
|
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap'); |
|
|
|
|
|
body { |
|
|
font-family: 'Inter', sans-serif; |
|
|
} |
|
|
|
|
|
.project-card { |
|
|
transition: all 0.3s ease; |
|
|
box-shadow: 0 4px 6px rgba(0, 33, 69, 0.1); |
|
|
} |
|
|
|
|
|
.project-card:hover { |
|
|
transform: translateY(-5px); |
|
|
box-shadow: 0 10px 15px rgba(0, 33, 69, 0.2); |
|
|
} |
|
|
|
|
|
.tag { |
|
|
transition: all 0.2s ease; |
|
|
} |
|
|
|
|
|
.tag:hover { |
|
|
transform: scale(1.05); |
|
|
} |
|
|
|
|
|
.search-input:focus { |
|
|
outline: none; |
|
|
box-shadow: 0 0 0 3px rgba(0, 33, 69, 0.2); |
|
|
} |
|
|
|
|
|
.modal { |
|
|
transition: opacity 0.3s ease, visibility 0.3s ease; |
|
|
} |
|
|
|
|
|
.gradient-bg { |
|
|
background: linear-gradient(135deg, #002145 0%, #004d7a 100%); |
|
|
} |
|
|
</style> |
|
|
</head> |
|
|
<body class="bg-ubcGray min-h-screen"> |
|
|
|
|
|
<header class="gradient-bg text-white"> |
|
|
<div class="container mx-auto px-4 py-6"> |
|
|
<div class="flex justify-between items-center"> |
|
|
<div class="flex items-center space-x-4"> |
|
|
<img src="https://upload.wikimedia.org/wikipedia/en/thumb/6/6f/University_of_British_Columbia_Logo.svg/1200px-University_of_British_Columbia_Logo.svg.png" alt="UBC Logo" class="h-12"> |
|
|
<div> |
|
|
<h1 class="text-2xl font-bold">UBC AI Projects Showcase</h1> |
|
|
<p class="text-sm opacity-80">Connecting students and alumni through AI innovation</p> |
|
|
</div> |
|
|
</div> |
|
|
<nav class="hidden md:flex space-x-6"> |
|
|
<a href="#" class="hover:text-ubcYellow transition">Home</a> |
|
|
<a href="#" class="hover:text-ubcYellow transition">Projects</a> |
|
|
<a href="#" class="hover:text-ubcYellow transition">Resources</a> |
|
|
<a href="#" class="hover:text-ubcYellow transition">About</a> |
|
|
</nav> |
|
|
<button class="md:hidden text-2xl" id="mobile-menu-button"> |
|
|
<i class="fas fa-bars"></i> |
|
|
</button> |
|
|
</div> |
|
|
</div> |
|
|
</header> |
|
|
|
|
|
|
|
|
<div class="hidden bg-ubcBlue text-white py-4 px-4" id="mobile-menu"> |
|
|
<nav class="flex flex-col space-y-3"> |
|
|
<a href="#" class="hover:text-ubcYellow transition">Home</a> |
|
|
<a href="#" class="hover:text-ubcYellow transition">Projects</a> |
|
|
<a href="#" class="hover:text-ubcYellow transition">Resources</a> |
|
|
<a href="#" class="hover:text-ubcYellow transition">About</a> |
|
|
</nav> |
|
|
</div> |
|
|
|
|
|
|
|
|
<section class="gradient-bg text-white py-16"> |
|
|
<div class="container mx-auto px-4 text-center"> |
|
|
<h2 class="text-4xl font-bold mb-4">Showcasing UBC's AI Innovation</h2> |
|
|
<p class="text-xl mb-8 max-w-3xl mx-auto">Discover, share, and collaborate on AI projects created by UBC students and alumni. From research to applications, explore the cutting edge of artificial intelligence.</p> |
|
|
<div class="flex flex-col md:flex-row justify-center gap-4"> |
|
|
<button class="bg-ubcYellow text-ubcBlue font-bold py-3 px-6 rounded-lg hover:bg-yellow-600 transition" id="add-project-btn"> |
|
|
<i class="fas fa-plus mr-2"></i> Add Your Project |
|
|
</button> |
|
|
<button class="bg-white text-ubcBlue font-bold py-3 px-6 rounded-lg hover:bg-gray-100 transition"> |
|
|
<i class="fas fa-search mr-2"></i> Explore Projects |
|
|
</button> |
|
|
</div> |
|
|
</div> |
|
|
</section> |
|
|
|
|
|
|
|
|
<main class="container mx-auto px-4 py-12"> |
|
|
|
|
|
<div class="mb-12"> |
|
|
<div class="bg-white rounded-xl shadow-md p-6 mb-6"> |
|
|
<div class="flex flex-col md:flex-row md:items-center md:justify-between gap-4"> |
|
|
<div class="relative flex-grow"> |
|
|
<input type="text" placeholder="Search projects..." class="search-input w-full py-3 px-4 border border-gray-300 rounded-lg pl-10 focus:border-ubcBlue"> |
|
|
<i class="fas fa-search absolute left-3 top-1/2 transform -translate-y-1/2 text-gray-400"></i> |
|
|
</div> |
|
|
<div class="flex flex-wrap gap-2"> |
|
|
<select class="py-3 px-4 border border-gray-300 rounded-lg focus:border-ubcBlue focus:outline-none"> |
|
|
<option>All Departments</option> |
|
|
<option>Computer Science</option> |
|
|
<option>Engineering</option> |
|
|
<option>Data Science</option> |
|
|
<option>Business</option> |
|
|
</select> |
|
|
<select class="py-3 px-4 border border-gray-300 rounded-lg focus:border-ubcBlue focus:outline-none"> |
|
|
<option>All Years</option> |
|
|
<option>2023</option> |
|
|
<option>2022</option> |
|
|
<option>2021</option> |
|
|
<option>2020</option> |
|
|
</select> |
|
|
<select class="py-3 px-4 border border-gray-300 rounded-lg focus:border-ubcBlue focus:outline-none"> |
|
|
<option>All Types</option> |
|
|
<option>Research</option> |
|
|
<option>Application</option> |
|
|
<option>Startup</option> |
|
|
<option>Open Source</option> |
|
|
</select> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
<div class="flex flex-wrap gap-2 mb-6"> |
|
|
<span class="tag bg-ubcBlue text-white py-1 px-3 rounded-full text-sm cursor-pointer hover:bg-blue-900">Machine Learning</span> |
|
|
<span class="tag bg-ubcBlue text-white py-1 px-3 rounded-full text-sm cursor-pointer hover:bg-blue-900">Computer Vision</span> |
|
|
<span class="tag bg-ubcBlue text-white py-1 px-3 rounded-full text-sm cursor-pointer hover:bg-blue-900">NLP</span> |
|
|
<span class="tag bg-ubcBlue text-white py-1 px-3 rounded-full text-sm cursor-pointer hover:bg-blue-900">Robotics</span> |
|
|
<span class="tag bg-ubcBlue text-white py-1 px-3 rounded-full text-sm cursor-pointer hover:bg-blue-900">Healthcare</span> |
|
|
<span class="tag bg-ubcBlue text-white py-1 px-3 rounded-full text-sm cursor-pointer hover:bg-blue-900">Sustainability</span> |
|
|
<span class="tag bg-ubcBlue text-white py-1 px-3 rounded-full text-sm cursor-pointer hover:bg-blue-900">Finance</span> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
|
|
|
<div class="mb-12"> |
|
|
<h3 class="text-2xl font-bold mb-6 text-ubcBlue">Featured Projects</h3> |
|
|
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8" id="projects-container"> |
|
|
|
|
|
</div> |
|
|
</div> |
|
|
|
|
|
|
|
|
<div class="bg-white rounded-xl shadow-md p-8 mb-12"> |
|
|
<h3 class="text-2xl font-bold mb-6 text-ubcBlue text-center">UBC AI Community by the Numbers</h3> |
|
|
<div class="grid grid-cols-1 md:grid-cols-3 gap-8 text-center"> |
|
|
<div> |
|
|
<div class="text-5xl font-bold text-ubcBlue mb-2">127</div> |
|
|
<p class="text-gray-600">Projects Shared</p> |
|
|
</div> |
|
|
<div> |
|
|
<div class="text-5xl font-bold text-ubcBlue mb-2">89</div> |
|
|
<p class="text-gray-600">Active Contributors</p> |
|
|
</div> |
|
|
<div> |
|
|
<div class="text-5xl font-bold text-ubcBlue mb-2">23</div> |
|
|
<p class="text-gray-600">Departments Represented</p> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
|
|
|
<div class="mb-12"> |
|
|
<h3 class="text-2xl font-bold mb-6 text-ubcBlue">What Our Community Says</h3> |
|
|
<div class="grid grid-cols-1 md:grid-cols-2 gap-8"> |
|
|
<div class="bg-white rounded-xl shadow-md p-6"> |
|
|
<div class="flex items-center mb-4"> |
|
|
<img src="https://randomuser.me/api/portraits/women/44.jpg" alt="Profile" class="w-12 h-12 rounded-full mr-4"> |
|
|
<div> |
|
|
<h4 class="font-bold">Sarah Chen</h4> |
|
|
<p class="text-sm text-gray-600">Computer Science, Class of 2021</p> |
|
|
</div> |
|
|
</div> |
|
|
<p class="text-gray-700">"The UBC AI Showcase helped me connect with alumni working in my field of interest. I found a mentor who guided me through my capstone project and even referred me to my current job!"</p> |
|
|
<div class="mt-4 flex space-x-1"> |
|
|
<i class="fas fa-star text-yellow-400"></i> |
|
|
<i class="fas fa-star text-yellow-400"></i> |
|
|
<i class="fas fa-star text-yellow-400"></i> |
|
|
<i class="fas fa-star text-yellow-400"></i> |
|
|
<i class="fas fa-star text-yellow-400"></i> |
|
|
</div> |
|
|
</div> |
|
|
<div class="bg-white rounded-xl shadow-md p-6"> |
|
|
<div class="flex items-center mb-4"> |
|
|
<img src="https://randomuser.me/api/portraits/men/32.jpg" alt="Profile" class="w-12 h-12 rounded-full mr-4"> |
|
|
<div> |
|
|
<h4 class="font-bold">David Park</h4> |
|
|
<p class="text-sm text-gray-600">Engineering Physics, Class of 2019</p> |
|
|
</div> |
|
|
</div> |
|
|
<p class="text-gray-700">"As an alumni, I love seeing what current students are working on. I've hired two interns from projects I discovered here, and it's been amazing to give back to the UBC community."</p> |
|
|
<div class="mt-4 flex space-x-1"> |
|
|
<i class="fas fa-star text-yellow-400"></i> |
|
|
<i class="fas fa-star text-yellow-400"></i> |
|
|
<i class="fas fa-star text-yellow-400"></i> |
|
|
<i class="fas fa-star text-yellow-400"></i> |
|
|
<i class="fas fa-star text-yellow-400"></i> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</main> |
|
|
|
|
|
|
|
|
<div class="fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center z-50 hidden" id="project-modal"> |
|
|
<div class="bg-white rounded-xl shadow-xl w-full max-w-2xl max-h-[90vh] overflow-y-auto"> |
|
|
<div class="p-6"> |
|
|
<div class="flex justify-between items-center mb-6"> |
|
|
<h3 class="text-2xl font-bold text-ubcBlue">Add Your Project</h3> |
|
|
<button class="text-gray-500 hover:text-gray-700" id="close-modal"> |
|
|
<i class="fas fa-times text-2xl"></i> |
|
|
</button> |
|
|
</div> |
|
|
|
|
|
<form id="project-form" class="space-y-6"> |
|
|
<div> |
|
|
<label class="block text-gray-700 mb-2">Project Title</label> |
|
|
<input type="text" class="w-full p-3 border border-gray-300 rounded-lg focus:border-ubcBlue focus:outline-none" required> |
|
|
</div> |
|
|
|
|
|
<div> |
|
|
<label class="block text-gray-700 mb-2">Description</label> |
|
|
<textarea class="w-full p-3 border border-gray-300 rounded-lg focus:border-ubcBlue focus:outline-none h-32" required></textarea> |
|
|
</div> |
|
|
|
|
|
<div class="grid grid-cols-1 md:grid-cols-2 gap-6"> |
|
|
<div> |
|
|
<label class="block text-gray-700 mb-2">Your Name</label> |
|
|
<input type="text" class="w-full p-3 border border-gray-300 rounded-lg focus:border-ubcBlue focus:outline-none" required> |
|
|
</div> |
|
|
<div> |
|
|
<label class="block text-gray-700 mb-2">UBC Affiliation</label> |
|
|
<select class="w-full p-3 border border-gray-300 rounded-lg focus:border-ubcBlue focus:outline-none" required> |
|
|
<option value="">Select...</option> |
|
|
<option>Current Student</option> |
|
|
<option>Alumni</option> |
|
|
<option>Faculty</option> |
|
|
<option>Researcher</option> |
|
|
</select> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
<div class="grid grid-cols-1 md:grid-cols-2 gap-6"> |
|
|
<div> |
|
|
<label class="block text-gray-700 mb-2">Department</label> |
|
|
<select class="w-full p-3 border border-gray-300 rounded-lg focus:border-ubcBlue focus:outline-none" required> |
|
|
<option value="">Select...</option> |
|
|
<option>Computer Science</option> |
|
|
<option>Engineering</option> |
|
|
<option>Data Science</option> |
|
|
<option>Business</option> |
|
|
<option>Medicine</option> |
|
|
<option>Other</option> |
|
|
</select> |
|
|
</div> |
|
|
<div> |
|
|
<label class="block text-gray-700 mb-2">Graduation Year</label> |
|
|
<input type="number" min="1900" max="2099" class="w-full p-3 border border-gray-300 rounded-lg focus:border-ubcBlue focus:outline-none"> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
<div> |
|
|
<label class="block text-gray-700 mb-2">Project Type</label> |
|
|
<div class="flex flex-wrap gap-3"> |
|
|
<label class="inline-flex items-center"> |
|
|
<input type="checkbox" class="form-checkbox text-ubcBlue rounded"> |
|
|
<span class="ml-2">Research</span> |
|
|
</label> |
|
|
<label class="inline-flex items-center"> |
|
|
<input type="checkbox" class="form-checkbox text-ubcBlue rounded"> |
|
|
<span class="ml-2">Application</span> |
|
|
</label> |
|
|
<label class="inline-flex items-center"> |
|
|
<input type="checkbox" class="form-checkbox text-ubcBlue rounded"> |
|
|
<span class="ml-2">Startup</span> |
|
|
</label> |
|
|
<label class="inline-flex items-center"> |
|
|
<input type="checkbox" class="form-checkbox text-ubcBlue rounded"> |
|
|
<span class="ml-2">Open Source</span> |
|
|
</label> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
<div> |
|
|
<label class="block text-gray-700 mb-2">Technologies Used</label> |
|
|
<div class="flex flex-wrap gap-2 mb-2" id="tech-tags-container"> |
|
|
|
|
|
</div> |
|
|
<div class="flex"> |
|
|
<input type="text" id="tech-input" placeholder="Add technology (e.g. Python, TensorFlow)" class="flex-grow p-3 border border-gray-300 rounded-l-lg focus:border-ubcBlue focus:outline-none"> |
|
|
<button type="button" id="add-tech-btn" class="bg-ubcBlue text-white px-4 rounded-r-lg hover:bg-blue-900 transition"> |
|
|
<i class="fas fa-plus"></i> |
|
|
</button> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
<div> |
|
|
<label class="block text-gray-700 mb-2">Project Link (optional)</label> |
|
|
<input type="url" class="w-full p-3 border border-gray-300 rounded-lg focus:border-ubcBlue focus:outline-none"> |
|
|
</div> |
|
|
|
|
|
<div> |
|
|
<label class="block text-gray-700 mb-2">Project Image (optional)</label> |
|
|
<div class="border-2 border-dashed border-gray-300 rounded-lg p-6 text-center"> |
|
|
<i class="fas fa-cloud-upload-alt text-4xl text-gray-400 mb-2"></i> |
|
|
<p class="text-gray-500">Drag & drop your image here or click to browse</p> |
|
|
<input type="file" class="hidden"> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
<div class="pt-4"> |
|
|
<button type="submit" class="w-full bg-ubcBlue text-white py-3 px-6 rounded-lg hover:bg-blue-900 transition font-bold"> |
|
|
Submit Project |
|
|
</button> |
|
|
</div> |
|
|
</form> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
|
|
|
<div class="fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center z-50 hidden" id="detail-modal"> |
|
|
<div class="bg-white rounded-xl shadow-xl w-full max-w-4xl max-h-[90vh] overflow-y-auto"> |
|
|
<div class="p-6"> |
|
|
<div class="flex justify-between items-center mb-6"> |
|
|
<h3 class="text-2xl font-bold text-ubcBlue" id="detail-title">Project Title</h3> |
|
|
<button class="text-gray-500 hover:text-gray-700" id="close-detail"> |
|
|
<i class="fas fa-times text-2xl"></i> |
|
|
</button> |
|
|
</div> |
|
|
|
|
|
<div class="grid grid-cols-1 lg:grid-cols-3 gap-6 mb-6"> |
|
|
<div class="lg:col-span-2"> |
|
|
<div class="bg-gray-200 rounded-lg h-64 flex items-center justify-center"> |
|
|
<i class="fas fa-image text-5xl text-gray-400"></i> |
|
|
</div> |
|
|
</div> |
|
|
<div> |
|
|
<div class="bg-ubcBlue text-white p-4 rounded-lg"> |
|
|
<h4 class="font-bold mb-2">Project Details</h4> |
|
|
<div class="space-y-3"> |
|
|
<div> |
|
|
<p class="text-sm opacity-80">Creator</p> |
|
|
<p class="font-medium" id="detail-creator">John Doe</p> |
|
|
</div> |
|
|
<div> |
|
|
<p class="text-sm opacity-80">Department</p> |
|
|
<p class="font-medium" id="detail-department">Computer Science</p> |
|
|
</div> |
|
|
<div> |
|
|
<p class="text-sm opacity-80">Year</p> |
|
|
<p class="font-medium" id="detail-year">2023</p> |
|
|
</div> |
|
|
<div> |
|
|
<p class="text-sm opacity-80">Type</p> |
|
|
<p class="font-medium" id="detail-type">Research</p> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
<div class="mb-6"> |
|
|
<h4 class="font-bold text-lg mb-2 text-ubcBlue">Description</h4> |
|
|
<p class="text-gray-700" id="detail-description">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam in dui mauris. Vivamus hendrerit arcu sed erat molestie vehicula. Sed auctor neque eu tellus rhoncus ut eleifend nibh porttitor.</p> |
|
|
</div> |
|
|
|
|
|
<div class="mb-6"> |
|
|
<h4 class="font-bold text-lg mb-2 text-ubcBlue">Technologies Used</h4> |
|
|
<div class="flex flex-wrap gap-2" id="detail-tech"> |
|
|
|
|
|
</div> |
|
|
</div> |
|
|
|
|
|
<div class="mb-6"> |
|
|
<h4 class="font-bold text-lg mb-2 text-ubcBlue">Project Links</h4> |
|
|
<div class="flex flex-wrap gap-3"> |
|
|
<a href="#" class="bg-gray-100 hover:bg-gray-200 px-4 py-2 rounded-lg flex items-center"> |
|
|
<i class="fab fa-github mr-2"></i> GitHub |
|
|
</a> |
|
|
<a href="#" class="bg-gray-100 hover:bg-gray-200 px-4 py-2 rounded-lg flex items-center"> |
|
|
<i class="fas fa-globe mr-2"></i> Live Demo |
|
|
</a> |
|
|
<a href="#" class="bg-gray-100 hover:bg-gray-200 px-4 py-2 rounded-lg flex items-center"> |
|
|
<i class="fas fa-file-pdf mr-2"></i> Research Paper |
|
|
</a> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
<div class="pt-4 border-t border-gray-200"> |
|
|
<div class="flex justify-between items-center"> |
|
|
<button class="bg-ubcBlue text-white py-2 px-6 rounded-lg hover:bg-blue-900 transition font-bold"> |
|
|
<i class="fas fa-envelope mr-2"></i> Contact Creator |
|
|
</button> |
|
|
<div class="flex space-x-2"> |
|
|
<button class="bg-gray-200 hover:bg-gray-300 p-2 rounded-full"> |
|
|
<i class="fas fa-share-alt"></i> |
|
|
</button> |
|
|
<button class="bg-gray-200 hover:bg-gray-300 p-2 rounded-full"> |
|
|
<i class="fas fa-bookmark"></i> |
|
|
</button> |
|
|
<button class="bg-gray-200 hover:bg-gray-300 p-2 rounded-full"> |
|
|
<i class="fas fa-heart"></i> |
|
|
</button> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
|
|
|
<footer class="bg-ubcBlue text-white py-12"> |
|
|
<div class="container mx-auto px-4"> |
|
|
<div class="grid grid-cols-1 md:grid-cols-4 gap-8"> |
|
|
<div> |
|
|
<h4 class="text-lg font-bold mb-4">UBC AI Showcase</h4> |
|
|
<p class="text-sm opacity-80">Connecting students and alumni through artificial intelligence innovation at the University of British Columbia.</p> |
|
|
</div> |
|
|
<div> |
|
|
<h4 class="text-lg font-bold mb-4">Quick Links</h4> |
|
|
<ul class="space-y-2"> |
|
|
<li><a href="#" class="text-sm opacity-80 hover:opacity-100 transition">Browse Projects</a></li> |
|
|
<li><a href="#" class="text-sm opacity-80 hover:opacity-100 transition">Submit a Project</a></li> |
|
|
<li><a href="#" class="text-sm opacity-80 hover:opacity-100 transition">Resources</a></li> |
|
|
<li><a href="#" class="text-sm opacity-80 hover:opacity-100 transition">FAQ</a></li> |
|
|
</ul> |
|
|
</div> |
|
|
<div> |
|
|
<h4 class="text-lg font-bold mb-4">Connect</h4> |
|
|
<ul class="space-y-2"> |
|
|
<li><a href="#" class="text-sm opacity-80 hover:opacity-100 transition">AI Club at UBC</a></li> |
|
|
<li><a href="#" class="text-sm opacity-80 hover:opacity-100 transition">Computer Science Dept</a></li> |
|
|
<li><a href="#" class="text-sm opacity-80 hover:opacity-100 transition">Engineering Dept</a></li> |
|
|
<li><a href="#" class="text-sm opacity-80 hover:opacity-100 transition">Data Science Institute</a></li> |
|
|
</ul> |
|
|
</div> |
|
|
<div> |
|
|
<h4 class="text-lg font-bold mb-4">Stay Updated</h4> |
|
|
<p class="text-sm opacity-80 mb-4">Subscribe to our newsletter for the latest projects and events.</p> |
|
|
<div class="flex"> |
|
|
<input type="email" placeholder="Your email" class="flex-grow p-2 rounded-l-lg text-gray-800"> |
|
|
<button class="bg-ubcYellow text-ubcBlue px-4 rounded-r-lg font-bold"> |
|
|
<i class="fas fa-paper-plane"></i> |
|
|
</button> |
|
|
</div> |
|
|
<div class="flex space-x-4 mt-4"> |
|
|
<a href="#" class="text-xl hover:text-ubcYellow transition"><i class="fab fa-twitter"></i></a> |
|
|
<a href="#" class="text-xl hover:text-ubcYellow transition"><i class="fab fa-linkedin"></i></a> |
|
|
<a href="#" class="text-xl hover:text-ubcYellow transition"><i class="fab fa-instagram"></i></a> |
|
|
<a href="#" class="text-xl hover:text-ubcYellow transition"><i class="fab fa-github"></i></a> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
<div class="border-t border-gray-700 mt-8 pt-8 text-sm opacity-80 text-center"> |
|
|
<p>© 2023 UBC AI Projects Showcase. All rights reserved.</p> |
|
|
</div> |
|
|
</div> |
|
|
</footer> |
|
|
|
|
|
<script> |
|
|
|
|
|
const projects = [ |
|
|
{ |
|
|
id: 1, |
|
|
title: "AI-Powered Campus Navigation", |
|
|
description: "A computer vision system that helps visually impaired students navigate UBC campus using real-time object detection and pathfinding algorithms.", |
|
|
creator: "Emily Zhang", |
|
|
department: "Computer Science", |
|
|
year: "2023", |
|
|
type: "Application", |
|
|
technologies: ["Python", "TensorFlow", "OpenCV", "React"], |
|
|
image: null, |
|
|
likes: 24, |
|
|
saved: false |
|
|
}, |
|
|
{ |
|
|
id: 2, |
|
|
title: "Predicting Student Success", |
|
|
description: "Machine learning model that analyzes academic patterns to predict student success and recommend intervention strategies for at-risk students.", |
|
|
creator: "Raj Patel", |
|
|
department: "Data Science", |
|
|
year: "2022", |
|
|
type: "Research", |
|
|
technologies: ["Python", "Scikit-learn", "Pandas", "Flask"], |
|
|
image: null, |
|
|
likes: 18, |
|
|
saved: true |
|
|
}, |
|
|
{ |
|
|
id: 3, |
|
|
title: "Sustainable Energy Optimization", |
|
|
description: "AI system that optimizes energy usage across UBC buildings using reinforcement learning and IoT sensor data.", |
|
|
creator: "Sophia Chen", |
|
|
department: "Engineering", |
|
|
year: "2021", |
|
|
type: "Research", |
|
|
technologies: ["PyTorch", "Node.js", "MongoDB", "D3.js"], |
|
|
image: null, |
|
|
likes: 32, |
|
|
saved: false |
|
|
}, |
|
|
{ |
|
|
id: 4, |
|
|
title: "Automated Lecture Summarizer", |
|
|
description: "NLP application that processes lecture recordings to generate concise summaries and key concept flashcards for students.", |
|
|
creator: "Michael Johnson", |
|
|
department: "Computer Science", |
|
|
year: "2023", |
|
|
type: "Application", |
|
|
technologies: ["Python", "Hugging Face", "FastAPI", "Next.js"], |
|
|
image: null, |
|
|
likes: 15, |
|
|
saved: false |
|
|
}, |
|
|
{ |
|
|
id: 5, |
|
|
title: "Campus Safety AI", |
|
|
description: "Real-time monitoring system that uses computer vision to detect safety hazards and alert campus security.", |
|
|
creator: "Aisha Mohammed", |
|
|
department: "Engineering", |
|
|
year: "2022", |
|
|
type: "Startup", |
|
|
technologies: ["TensorFlow", "React Native", "Firebase", "AWS"], |
|
|
image: null, |
|
|
likes: 29, |
|
|
saved: true |
|
|
}, |
|
|
{ |
|
|
id: 6, |
|
|
title: "AI Research Paper Recommender", |
|
|
description: "Personalized recommendation system that suggests relevant research papers to UBC students based on their academic interests.", |
|
|
creator: "David Kim", |
|
|
department: "Computer Science", |
|
|
year: "2021", |
|
|
type: "Open Source", |
|
|
technologies: ["Python", "BERT", "Elasticsearch", "Vue.js"], |
|
|
image: null, |
|
|
likes: 21, |
|
|
saved: false |
|
|
} |
|
|
]; |
|
|
|
|
|
|
|
|
const projectsContainer = document.getElementById('projects-container'); |
|
|
const projectModal = document.getElementById('project-modal'); |
|
|
const addProjectBtn = document.getElementById('add-project-btn'); |
|
|
const closeModalBtn = document.getElementById('close-modal'); |
|
|
const projectForm = document.getElementById('project-form'); |
|
|
const techInput = document.getElementById('tech-input'); |
|
|
const addTechBtn = document.getElementById('add-tech-btn'); |
|
|
const techTagsContainer = document.getElementById('tech-tags-container'); |
|
|
const detailModal = document.getElementById('detail-modal'); |
|
|
const closeDetailBtn = document.getElementById('close-detail'); |
|
|
const mobileMenuButton = document.getElementById('mobile-menu-button'); |
|
|
const mobileMenu = document.getElementById('mobile-menu'); |
|
|
|
|
|
|
|
|
const sampleTechs = ["Python", "TensorFlow", "PyTorch", "Scikit-learn", "OpenCV", "NLTK", "React", "Node.js", "Flask", "Django", "AWS", "Azure", "Docker", "Kubernetes"]; |
|
|
|
|
|
|
|
|
function renderProjects() { |
|
|
projectsContainer.innerHTML = ''; |
|
|
|
|
|
projects.forEach(project => { |
|
|
const projectCard = document.createElement('div'); |
|
|
projectCard.className = 'project-card bg-white rounded-xl overflow-hidden shadow-md hover:shadow-lg transition'; |
|
|
projectCard.innerHTML = ` |
|
|
<div class="h-48 bg-gray-200 flex items-center justify-center"> |
|
|
${project.image ? |
|
|
`<img src="${project.image}" alt="${project.title}" class="w-full h-full object-cover">` : |
|
|
`<i class="fas fa-project-diagram text-5xl text-gray-400"></i>`} |
|
|
</div> |
|
|
<div class="p-6"> |
|
|
<div class="flex justify-between items-start mb-2"> |
|
|
<h3 class="text-xl font-bold text-ubcBlue">${project.title}</h3> |
|
|
<button class="text-gray-400 hover:text-ubcBlue transition ${project.saved ? 'text-ubcYellow' : ''}"> |
|
|
<i class="fas fa-bookmark"></i> |
|
|
</button> |
|
|
</div> |
|
|
<p class="text-gray-600 text-sm mb-4 line-clamp-2">${project.description}</p> |
|
|
<div class="flex flex-wrap gap-2 mb-4"> |
|
|
${project.technologies.map(tech => |
|
|
`<span class="tag bg-gray-100 text-gray-800 py-1 px-2 rounded-full text-xs">${tech}</span>` |
|
|
).join('')} |
|
|
</div> |
|
|
<div class="flex justify-between items-center text-sm"> |
|
|
<div class="flex items-center"> |
|
|
<i class="fas fa-user-graduate mr-1 text-ubcBlue"></i> |
|
|
<span>${project.creator}</span> |
|
|
</div> |
|
|
<div class="flex items-center space-x-2"> |
|
|
<span class="flex items-center"> |
|
|
<i class="fas fa-heart mr-1 text-red-500"></i> |
|
|
<span>${project.likes}</span> |
|
|
</span> |
|
|
<button class="text-ubcBlue hover:text-blue-900 transition view-detail" data-id="${project.id}"> |
|
|
View <i class="fas fa-chevron-right ml-1"></i> |
|
|
</button> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
`; |
|
|
projectsContainer.appendChild(projectCard); |
|
|
}); |
|
|
|
|
|
|
|
|
document.querySelectorAll('.view-detail').forEach(button => { |
|
|
button.addEventListener('click', (e) => { |
|
|
const projectId = parseInt(e.currentTarget.getAttribute('data-id')); |
|
|
showProjectDetail(projectId); |
|
|
}); |
|
|
}); |
|
|
} |
|
|
|
|
|
|
|
|
function showProjectDetail(projectId) { |
|
|
const project = projects.find(p => p.id === projectId); |
|
|
if (!project) return; |
|
|
|
|
|
|
|
|
document.getElementById('detail-title').textContent = project.title; |
|
|
document.getElementById('detail-creator').textContent = project.creator; |
|
|
document.getElementById('detail-department').textContent = project.department; |
|
|
document.getElementById('detail-year').textContent = project.year; |
|
|
document.getElementById('detail-type').textContent = project.type; |
|
|
document.getElementById('detail-description').textContent = project.description; |
|
|
|
|
|
|
|
|
const techContainer = document.getElementById('detail-tech'); |
|
|
techContainer.innerHTML = ''; |
|
|
project.technologies.forEach(tech => { |
|
|
const tag = document.createElement('span'); |
|
|
tag.className = 'tag bg-gray-100 text-gray-800 py-1 px-3 rounded-full text-sm'; |
|
|
tag.textContent = tech; |
|
|
techContainer.appendChild(tag); |
|
|
}); |
|
|
|
|
|
|
|
|
detailModal.classList.remove('hidden'); |
|
|
} |
|
|
|
|
|
|
|
|
function addTechTag() { |
|
|
const tech = techInput.value.trim(); |
|
|
if (tech && !techTagsContainer.querySelector(`[data-tech="${tech}"]`)) { |
|
|
const tag = document.createElement('div'); |
|
|
tag.className = 'tag bg-gray-100 text-gray-800 py-1 px-3 rounded-full text-sm flex items-center'; |
|
|
tag.setAttribute('data-tech', tech); |
|
|
tag.innerHTML = ` |
|
|
${tech} |
|
|
<button type="button" class="ml-2 text-gray-500 hover:text-gray-700 remove-tech"> |
|
|
<i class="fas fa-times text-xs"></i> |
|
|
</button> |
|
|
`; |
|
|
techTagsContainer.appendChild(tag); |
|
|
techInput.value = ''; |
|
|
|
|
|
|
|
|
tag.querySelector('.remove-tech').addEventListener('click', () => { |
|
|
tag.remove(); |
|
|
}); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
addProjectBtn.addEventListener('click', () => { |
|
|
projectModal.classList.remove('hidden'); |
|
|
}); |
|
|
|
|
|
closeModalBtn.addEventListener('click', () => { |
|
|
projectModal.classList.add('hidden'); |
|
|
}); |
|
|
|
|
|
closeDetailBtn.addEventListener('click', () => { |
|
|
detailModal.classList.add('hidden'); |
|
|
}); |
|
|
|
|
|
addTechBtn.addEventListener('click', addTechTag); |
|
|
|
|
|
techInput.addEventListener('keypress', (e) => { |
|
|
if (e.key === 'Enter') { |
|
|
e.preventDefault(); |
|
|
addTechTag(); |
|
|
} |
|
|
}); |
|
|
|
|
|
projectForm.addEventListener('submit', (e) => { |
|
|
e.preventDefault(); |
|
|
|
|
|
alert('Project submitted successfully!'); |
|
|
projectModal.classList.add('hidden'); |
|
|
projectForm.reset(); |
|
|
techTagsContainer.innerHTML = ''; |
|
|
}); |
|
|
|
|
|
mobileMenuButton.addEventListener('click', () => { |
|
|
mobileMenu.classList.toggle('hidden'); |
|
|
}); |
|
|
|
|
|
|
|
|
window.addEventListener('click', (e) => { |
|
|
if (e.target === projectModal) { |
|
|
projectModal.classList.add('hidden'); |
|
|
} |
|
|
if (e.target === detailModal) { |
|
|
detailModal.classList.add('hidden'); |
|
|
} |
|
|
}); |
|
|
|
|
|
|
|
|
renderProjects(); |
|
|
|
|
|
|
|
|
sampleTechs.slice(0, 5).forEach(tech => { |
|
|
techInput.value = tech; |
|
|
addTechTag(); |
|
|
}); |
|
|
</script> |
|
|
<p style="border-radius: 8px; text-align: center; font-size: 12px; color: #fff; margin-top: 16px;position: fixed; left: 8px; bottom: 8px; z-index: 10; background: rgba(0, 0, 0, 0.8); padding: 4px 8px;">Made with <img src="https://enzostvs-deepsite.hf.space/logo.svg" alt="DeepSite Logo" style="width: 16px; height: 16px; vertical-align: middle;display:inline-block;margin-right:3px;filter:brightness(0) invert(1);"><a href="https://enzostvs-deepsite.hf.space" style="color: #fff;text-decoration: underline;" target="_blank" >DeepSite</a> - 🧬 <a href="https://enzostvs-deepsite.hf.space?remix=QWAw/ubc-space" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body> |
|
|
</html> |