samsai / projects.html
BruceBanners's picture
Create the most advanced public website for the domain samsai.no. Build a complete, production ready site that is both a design showcase and a functionality showcase. Choose all technical details yourself. Do not ask me to pick tools. Decide and implement everything end to end.
5bb4425 verified
<!DOCTYPE html>
<html lang="en" class="scroll-smooth">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Projects by Sami Said - Hardware and software ventures">
<title>Projects | Sami Said</title>
<link rel="icon" type="image/x-icon" href="/assets/favicon.ico">
<script src="https://cdn.tailwindcss.com"></script>
<link href="https://unpkg.com/aos@2.3.1/dist/aos.css" rel="stylesheet">
<script src="https://unpkg.com/aos@2.3.1/dist/aos.js"></script>
<script src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script>
<script src="https://unpkg.com/feather-icons"></script>
<style>
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap');
@import url('https://fonts.googleapis.com/css2?family=Fira+Code:wght@400;500&display=swap');
html {
scroll-behavior: smooth;
}
.gradient-text {
background-clip: text;
-webkit-background-clip: text;
color: transparent;
background-image: linear-gradient(90deg, #3B82F6, #1E40AF);
}
.nav-link {
position: relative;
}
.nav-link::after {
content: '';
position: absolute;
width: 0;
height: 2px;
bottom: -2px;
left: 0;
background-color: #3B82F6;
transition: width 0.3s ease;
}
.nav-link:hover::after {
width: 100%;
}
.project-card:hover {
transform: translateY(-5px);
box-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.1);
}
.filter-chip {
transition: all 0.2s ease;
}
.filter-chip:hover {
transform: translateY(-1px);
}
.filter-chip.active {
background-color: #1E40AF;
color: white;
}
</style>
</head>
<body class="bg-light font-sans text-dark antialiased">
<!-- Navigation -->
<nav class="bg-white shadow-sm sticky top-0 z-50">
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
<div class="flex justify-between h-16">
<div class="flex items-center">
<a href="/" class="flex-shrink-0 flex items-center">
<span class="text-xl font-bold gradient-text">samsai.no</span>
</a>
</div>
<div class="hidden md:ml-6 md:flex md:items-center md:space-x-8">
<a href="/" class="nav-link text-dark px-3 py-2 text-sm font-medium">Home</a>
<a href="/about" class="nav-link text-dark px-3 py-2 text-sm font-medium">About</a>
<a href="/projects" class="nav-link text-primary px-3 py-2 text-sm font-medium">Projects</a>
<a href="/contact" class="nav-link text-dark px-3 py-2 text-sm font-medium">Contact</a>
</div>
<div class="-mr-2 flex items-center md:hidden">
<button type="button" id="mobile-menu-button" class="inline-flex items-center justify-center p-2 rounded-md text-gray-400 hover:text-gray-500 hover:bg-gray-100 focus:outline-none focus:ring-2 focus:ring-inset focus:ring-accent">
<i data-feather="menu"></i>
</button>
</div>
</div>
</div>
<!-- Mobile menu -->
<div id="mobile-menu" class="hidden md:hidden bg-white border-t border-gray-200">
<div class="px-2 pt-2 pb-3 space-y-1">
<a href="/" class="block px-3 py-2 text-base font-medium text-dark hover:bg-gray-50">Home</a>
<a href="/about" class="block px-3 py-2 text-base font-medium text-dark hover:bg-gray-50">About</a>
<a href="/projects" class="block px-3 py-2 text-base font-medium text-primary hover:bg-gray-50">Projects</a>
<a href="/contact" class="block px-3 py-2 text-base font-medium text-dark hover:bg-gray-50">Contact</a>
</div>
</div>
</nav>
<!-- Hero Section -->
<header class="bg-white">
<div class="max-w-7xl mx-auto py-16 px-4 sm:py-24 sm:px-6 lg:px-8">
<div class="text-center">
<h1 class="text-4xl font-extrabold tracking-tight text-dark sm:text-5xl md:text-6xl">
<span class="block">Projects</span>
<span class="block text-primary">Ventures & Solutions</span>
</h1>
<p class="mt-3 max-w-md mx-auto text-base text-gray-500 sm:text-lg md:mt-5 md:text-xl md:max-w-3xl">
A selection of my active projects and ventures.
</p>
</div>
</div>
</header>
<!-- Projects Section -->
<section class="bg-gray-50 py-12">
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
<!-- Filters -->
<div class="mb-8">
<h3 class="text-sm font-medium text-gray-500 mb-4">Filter by:</h3>
<div class="flex flex-wrap gap-3">
<button class="filter-chip px-3 py-1 rounded-full text-xs font-medium bg-gray-200 text-gray-800" data-filter="all">
All Projects
</button>
<button class="filter-chip px-3 py-1 rounded-full text-xs font-medium bg-blue-100 text-blue-800" data-filter="iot">
IoT
</button>
<button class="filter-chip px-3 py-1 rounded-full text-xs font-medium bg-green-100 text-green-800" data-filter="active">
Active
</button>
<button class="filter-chip px-3 py-1 rounded-full text-xs font-medium bg-purple-100 text-purple-800" data-filter="hardware">
Hardware
</button>
<button class="filter-chip px-3 py-1 rounded-full text-xs font-medium bg-yellow-100 text-yellow-800" data-filter="community">
Community
</button>
<button class="filter-chip px-3 py-1 rounded-full text-xs font-medium bg-pink-100 text-pink-800" data-filter="creative">
Creative
</button>
</div>
</div>
<!-- Projects Grid -->
<div class="grid grid-cols-1 gap-8 sm:grid-cols-2 lg:grid-cols-3">
<!-- Nemesys Card -->
<div class="project-card bg-white overflow-hidden shadow rounded-lg transition-all duration-300 ease-in-out" data-categories="iot active hardware">
<div class="px-4 py-5 sm:p-6">
<div class="flex items-center">
<div class="flex-shrink-0 bg-primary rounded-md p-3">
<i data-feather="cpu" class="h-6 w-6 text-white"></i>
</div>
<div class="ml-5 w-0 flex-1">
<h3 class="text-lg font-medium text-dark">Nemesys</h3>
<p class="mt-1 text-sm text-gray-500">IoT solutions for smart spaces</p>
</div>
</div>
<div class="mt-4">
<p class="text-sm text-gray-600">
Out-of-the-box IoT bundles for specific use cases with open standards.
</p>
</div>
<div class="mt-4 flex flex-wrap gap-2">
<span class="inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-blue-100 text-blue-800">IoT</span>
<span class="inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-green-100 text-green-800">Active</span>
<span class="inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-purple-100 text-purple-800">Hardware</span>
</div>
<div class="mt-5 flex justify-between items-center">
<a href="/projects/nemesys" class="text-sm font-medium text-primary hover:text-secondary">
Learn more <span aria-hidden="true">&rarr;</span>
</a>
<a href="https://www.nemesys.no" target="_blank" class="text-sm font-medium text-gray-500 hover:text-gray-700 flex items-center">
Visit site <i data-feather="external-link" class="ml-1 h-4 w-4"></i>
</a>
</div>
</div>
</div>
<!-- Klokkeriet Card -->
<div class="project-card bg-white overflow-hidden shadow rounded-lg transition-all duration-300 ease-in-out" data-categories="community active">
<div class="px-4 py-5 sm:p-6">
<div class="flex items-center">
<div class="flex-shrink-0 bg-primary rounded-md p-3">
<i data-feather="watch" class="h-6 w-6 text-white"></i>
</div>
<div class="ml-5 w-0 flex-1">
<h3 class="text-lg font-medium text-dark">Klokkeriet</h3>
<p class="mt-1 text-sm text-gray-500">Watch community venture</p>
</div>
</div>
<div class="mt-4">
<p class="text-sm text-gray-600">
A community for watch enthusiasts and collectors.
</p>
</div>
<div class="mt-4 flex flex-wrap gap-2">
<span class="inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-yellow-100 text-yellow-800">Community</span>
<span class="inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-green-100 text-green-800">Active</span>
</div>
<div class="mt-5 flex justify-between items-center">
<a href="/projects/klokkeriet" class="text-sm font-medium text-primary hover:text-secondary">
Learn more <span aria-hidden="true">&rarr;</span>
</a>
<a href="https://www.klokkeriet.no" target="_blank" class="text-sm font-medium text-gray-500 hover:text-gray-700 flex items-center">
Visit site <i data-feather="external-link" class="ml-1 h-4 w-4"></i>
</a>
</div>
</div>
</div>
<!-- Kenza Card -->
<div class="project-card bg-white overflow-hidden shadow rounded-lg transition-all duration-300 ease-in-out" data-categories="creative active">
<div class="px-4 py-5 sm:p-6">
<div class="flex items-center">
<div class="flex-shrink-0 bg-primary rounded-md p-3">
<i data-feather="shopping-bag" class="h-6 w-6 text-white"></i>
</div>
<div class="ml-5 w-0 flex-1">
<h3 class="text-lg font-medium text-dark">Kenza</h3>
<p class="mt-1 text-sm text-gray-500">Creative webshop</p>
</div>
</div>
<div class="mt-4">
<p class="text-sm text-gray-600">
Handmade items and creative projects focused on learning and creativity.
</p>
</div>
<div class="mt-4 flex flex-wrap gap-2">
<span class="inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-pink-100 text-pink-800">Creative</span>
<span class="inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-green-100 text-green-800">Active</span>
<span class="inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-red-100 text-red-800">E-commerce</span>
</div>
<div class="mt-5 flex justify-between items-center">
<a href="/projects/kenza" class="text-sm font-medium text-primary hover:text-secondary">
Learn more <span aria-hidden="true">&rarr;</span>
</a>
<a href="https://www.kenza.no" target="_blank" class="text-sm font-medium text-gray-500 hover:text-gray-700 flex items-center">
Visit site <i data-feather="external-link" class="ml-1 h-4 w-4"></i>
</a>
</div>
</div>
</div>
</div>
</div>
</section>
<!-- CTA Section -->
<section class="bg-primary">
<div class="max-w-7xl mx-auto py-12 px-4 sm:px-6 lg:py-16 lg:px-8 lg:flex lg:items-center lg:justify-between">
<h2 class="text-3xl font-extrabold tracking-tight text-white sm:text-4xl">
<span class="block">Have a project in mind?</span>
<span class="block text-accent">Let's discuss how I can help.</span>
</h2>
<div class="mt-8 flex lg:mt-0 lg:flex-shrink-0">
<div class="inline-flex rounded-md shadow">
<a href="/contact" class="inline-flex items-center justify-center px-5 py-3 border border-transparent text-base font-medium rounded-md text-primary bg-white hover:bg-gray-50">
Contact Me
</a>
</div>
</div>
</div>
</section>
<!-- Footer -->
<footer class="bg-dark">
<div class="max-w-7xl mx-auto py-12 px-4 sm:px-6 lg:px-8">
<div class="grid grid-cols-2 md:grid-cols-4 gap-8">
<div class="col-span-2">
<h3 class="text-white text-lg font-semibold">Sami Said</h3>
<p class="mt-4 text-gray-300 text-sm">
Custom hardware and software solutions from prototype to production.
</p>
<div class="mt-4 flex space-x-6">
<a href="#" class="text-gray-400 hover:text-white">
<i data-feather="github"></i>
</a>
<a href="#" class="text-gray-400 hover:text-white">
<i data-feather="twitter"></i>
</a>
<a href="#" class="text-gray-400 hover:text-white">
<i data-feather="linkedin"></i>
</a>
</div>
</div>
<div>
<h3 class="text-white text-sm font-semibold tracking-wider uppercase">Navigation</h3>
<ul class="mt-4 space-y-4">
<li><a href="/" class="text-gray-300 hover:text-white text-sm">Home</a></li>
<li><a href="/about" class="text-gray-300 hover:text-white text-sm">About</a></li>
<li><a href="/projects" class="text-gray-300 hover:text-white text-sm">Projects</a></li>
<li><a href="/contact" class="text-gray-300 hover:text-white text-sm">Contact</a></li>
</ul>
</div>
<div>
<h3 class="text-white text-sm font-semibold tracking-wider uppercase">Legal</h3>
<ul class="mt-4 space-y-4">
<li><a href="/privacy" class="text-gray-300 hover:text-white text-sm">Privacy Policy</a></li>
<li><a href="/terms" class="text-gray-300 hover:text-white text-sm">Terms of Service</a></li>
<li><a href="/imprint" class="text-gray-300 hover:text-white text-sm">Imprint</a></li>
</ul>
</div>
</div>
<div class="mt-8 border-t border-gray-700 pt-8 md:flex md:items-center md:justify-between">
<div class="flex space-x-6 md:order-2">
<a href="#" class="text-gray-400 hover:text-gray-300 text-sm">Cookie Settings</a>
</div>
<p class="mt-8 text-base text-gray-400 md:mt-0 md:order-1">
&copy; 2023 What Sami Said. All rights reserved.
</p>
</div>
</div>
</footer>
<script>
// Initialize AOS
AOS.init({
duration: 800,
easing: 'ease-in-out',
once: true
});
// Initialize Feather Icons
feather.replace();
// Mobile menu toggle
const mobileMenuButton = document.getElementById('mobile-menu-button');
const mobileMenu = document.getElementById('mobile-menu');
mobileMenuButton.addEventListener('click', () => {
const expanded = mobileMenuButton.getAttribute('aria-expanded') === 'true';
mobileMenuButton.setAttribute('aria-expanded', !expanded);
mobileMenu.classList.toggle('hidden');
// Change icon
const icon = mobileMenuButton.querySelector('svg');
if (expanded) {
feather.replace();
} else {
icon.setAttribute('data-feather', 'x');
feather.replace();
}
});
// Project filtering
const filterChips = document.querySelectorAll('.filter-chip');
const projectCards = document.querySelectorAll('.project-card');
filterChips.forEach(chip => {
chip.addEventListener('click', () => {
// Toggle active state
filterChips.forEach(c => c.classList.remove('active'));
chip.classList.add('active');
const filter = chip.dataset.filter;
if (filter === 'all') {
// Show all projects
projectCards.forEach(card => {
card.style.display = 'block';
});
} else {
// Filter projects
projectCards.forEach(card => {
const categories = card.dataset.categories.split(' ');
if (categories.includes(filter)) {
card.style.display = 'block';
} else {
card.style.display = 'none';
}
});
}
});
});
</script>
</body>
</html>