| <!DOCTYPE html> |
| <html lang="en"> |
| <head> |
| <meta charset="UTF-8"> |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| <title>CodeWave Workshop - Cenk's Digital Playground</title> |
| <link rel="icon" type="image/x-icon" href="/static/favicon.ico"> |
| <script src="https://cdn.tailwindcss.com"></script> |
| <script src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script> |
| <script src="https://unpkg.com/feather-icons"></script> |
| <script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r128/three.min.js"></script> |
| <script src="https://cdn.jsdelivr.net/npm/vanta@latest/dist/vanta.globe.min.js"></script> |
| <link href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;700&family=Inter:wght@300;400;600&display=swap" rel="stylesheet"> |
| <style> |
| :root { |
| --neon-blue: #00f0ff; |
| --neon-pink: #ff007a; |
| --dark-bg: #0a0a0f; |
| --darker-bg: #050508; |
| --terminal-green: #00ff88; |
| } |
| |
| body { |
| font-family: 'Inter', sans-serif; |
| background: var(--dark-bg); |
| color: white; |
| overflow-x: hidden; |
| } |
| |
| .code-font { |
| font-family: 'JetBrains Mono', monospace; |
| } |
| |
| .neon-glow { |
| box-shadow: 0 0 10px var(--neon-blue), 0 0 20px var(--neon-blue), 0 0 40px var(--neon-blue); |
| } |
| |
| .pink-glow { |
| box-shadow: 0 0 10px var(--neon-pink), 0 0 20px var(--neon-pink), 0 0 40px var(--neon-pink); |
| } |
| |
| .terminal-text { |
| color: var(--terminal-green); |
| text-shadow: 0 0 5px var(--terminal-green); |
| } |
| |
| .gradient-bg { |
| background: linear-gradient(135deg, var(--dark-bg) 0%, var(--darker-bg) 100%); |
| } |
| |
| .circuit-pattern { |
| background-image: |
| radial-gradient(circle at 25% 25%, rgba(0, 240, 255, 0.1) 2%, transparent 2%), |
| radial-gradient(circle at 75% 75%, rgba(255, 0, 122, 0.1) 2%, transparent 2%); |
| background-size: 50px 50px; |
| } |
| |
| @keyframes float { |
| 0%, 100% { transform: translateY(0px); } |
| 50% { transform: translateY(-10px); } |
| } |
| |
| .floating { |
| animation: float 6s ease-in-out infinite; |
| } |
| |
| .typing { |
| overflow: hidden; |
| border-right: 2px solid var(--neon-blue); |
| white-space: nowrap; |
| animation: typing 3.5s steps(40, end), blink-caret 0.75s step-end infinite; |
| } |
| |
| @keyframes typing { |
| from { width: 0 } |
| to { width: 100% } |
| } |
| |
| @keyframes blink-caret { |
| from, to { border-color: transparent } |
| 50% { border-color: var(--neon-blue) } |
| } |
| </style> |
| </head> |
| <body class="gradient-bg circuit-pattern"> |
| |
| <nav class="fixed w-full z-50 bg-black/80 backdrop-blur-lg border-b border-gray-800"> |
| <div class="container mx-auto px-6 py-4"> |
| <div class="flex justify-between items-center"> |
| <div class="flex items-center space-x-2"> |
| <div class="w-3 h-3 bg-red-500 rounded-full"></div> |
| <div class="w-3 h-3 bg-yellow-500 rounded-full"></div> |
| <div class="w-3 h-3 bg-green-500 rounded-full"></div> |
| <span class="code-font text-xl font-bold text-white ml-2">cenk@workshop:~</span> |
| </div> |
| <div class="hidden md:flex space-x-8"> |
| <a href="#home" class="text-white hover:text-neon-blue transition-colors duration-300 code-font">~/home</a> |
| <a href="#about" class="text-white hover:text-neon-pink transition-colors duration-300 code-font">~/about</a> |
| <a href="#projects" class="text-white hover:text-neon-blue transition-colors duration-300 code-font">~/projects</a> |
| <a href="#contact" class="text-white hover:text-neon-pink transition-colors duration-300 code-font">~/contact</a> |
| </div> |
| <button class="px-4 py-2 bg-neon-blue text-black rounded-lg hover:bg-neon-pink hover:text-white transition-all duration-300 code-font font-bold"> |
| $ theme-toggle |
| </button> |
| </div> |
| </div> |
| </nav> |
|
|
| |
| <section id="home" class="min-h-screen flex items-center justify-center relative overflow-hidden"> |
| <div id="vanta-bg" class="absolute inset-0"></div> |
| <div class="container mx-auto px-6 text-center relative z-10"> |
| <div class="max-w-4xl mx-auto"> |
| <div class="mb-8"> |
| <div class="text-6xl md:text-8xl font-bold code-font typing"> |
| > echo "Cenk Abi, Pratik Usta of Code" |
| </div> |
| </div> |
| <p class="text-xl md:text-2xl text-gray-300 mb-12"> |
| Building cool stuff with AI & coffee โ๏ธ |
| </p> |
| <div class="flex flex-col md:flex-row gap-6 justify-center items-center"> |
| <button class="px-8 py-4 bg-neon-blue text-black rounded-xl hover:scale-105 transition-transform duration-300 code-font font-bold text-lg neon-glow"> |
| $ cd projects |
| </button> |
| <button class="px-8 py-4 border-2 border-neon-pink text-neon-pink rounded-xl hover:bg-neon-pink hover:text-black transition-all duration-300 code-font font-bold text-lg pink-glow"> |
| $ brew coffee |
| </button> |
| </div> |
| </div> |
| </div> |
| |
| |
| <div class="absolute bottom-10 right-10 hidden lg:block"> |
| <div class="bg-black/80 backdrop-blur-lg rounded-2xl p-6 max-w-sm floating"> |
| <div class="flex space-x-2 mb-4"> |
| <div class="w-3 h-3 bg-red-500 rounded-full"></div> |
| <div class="w-3 h-3 bg-yellow-500 rounded-full"></div> |
| <div class="w-3 h-3 bg-green-500 rounded-full"></div> |
| </div> |
| <pre class="text-sm code-font terminal-text"> |
| <span class="text-gray-400"># Welcome to my workshop!</span> |
| def hello_world(): |
| print("Debugging life one line at a time") |
| return "Cenk Abi wuz here" |
|
|
| hello_world() |
| </pre> |
| </div> |
| </div> |
| </section> |
|
|
| |
| <section id="about" class="py-20 bg-black/50"> |
| <div class="container mx-auto px-6"> |
| <h2 class="text-4xl md:text-5xl font-bold text-center mb-16 code-font"> |
| <span class="terminal-text">$</span> cat about_me.txt |
| </h2> |
| |
| <div class="max-w-4xl mx-auto"> |
| |
| <div class="space-y-12"> |
| |
| <div class="flex flex-col md:flex-row items-start"> |
| <div class="md:w-1/3 mb-4 md:mb-0"> |
| <div class="bg-neon-blue/20 border border-neon-blue rounded-xl p-6"> |
| <div class="text-neon-blue code-font font-bold text-lg">2018</div> |
| <h3 class="text-white text-xl font-bold mt-2">First "Hello World"</h3> |
| </div> |
| </div> |
| <div class="md:w-2/3"> |
| <div class="bg-gray-900/50 backdrop-blur-lg rounded-2xl p-6 border border-gray-800"> |
| <p class="text-gray-300 mb-4"> |
| The journey begins! Wrote my first Python script and immediately broke everything. |
| Good times! |
| </p> |
| <div class="flex flex-wrap gap-2"> |
| <span class="px-3 py-1 bg-python-yellow/20 text-yellow-300 rounded-full code-font text-sm"> |
| Python |
| </span> |
| </div> |
| </div> |
| </div> |
|
|
| |
| <div class="flex flex-col md:flex-row items-start"> |
| <div class="md:w-1/3 mb-4 md:mb-0 md:order-2"> |
| <div class="bg-neon-pink/20 border border-neon-pink rounded-xl p-6"> |
| <div class="text-neon-pink code-font font-bold text-lg">2020</div> |
| <h3 class="text-white text-xl font-bold mt-2">React Revelation</h3> |
| </div> |
| </div> |
| <div class="md:w-2/3 md:order-1"> |
| <div class="bg-gray-900/50 backdrop-blur-lg rounded-2xl p-6 border border-gray-800"> |
| <p class="text-gray-300 mb-4"> |
| Discovered the magic of React and never looked back. |
| Started building things that don't just work, but actually look cool! |
| </p> |
| <div class="flex flex-wrap gap-2"> |
| <span class="px-3 py-1 bg-react-blue/20 text-blue-300 rounded-full code-font text-sm"> |
| React |
| </span> |
| <span class="px-3 py-1 bg-js-yellow/20 text-yellow-300 rounded-full code-font text-sm"> |
| JavaScript |
| </span> |
| </div> |
| </div> |
| </div> |
|
|
| |
| <div class="flex flex-col md:flex-row items-start"> |
| <div class="md:w-1/3 mb-4 md:mb-0"> |
| <div class="bg-neon-blue/20 border border-neon-blue rounded-xl p-6"> |
| <div class="text-neon-blue code-font font-bold text-lg">2023</div> |
| <h3 class="text-white text-xl font-bold mt-2">AI Awakening</h3> |
| </div> |
| </div> |
| <div class="md:w-2/3"> |
| <div class="bg-gray-900/50 backdrop-blur-lg rounded-2xl p-6 border border-gray-800"> |
| <p class="text-gray-300 mb-4"> |
| Fell down the AI rabbit hole and emerged with Pratik Usta! |
| Now teaching machines to be as cool as my code. |
| </p> |
| <div class="flex flex-wrap gap-2"> |
| <span class="px-3 py-1 bg-ai-purple/20 text-purple-300 rounded-full code-font text-sm"> |
| AI/ML |
| </span> |
| <span class="px-3 py-1 bg-python-yellow/20 text-yellow-300 rounded-full code-font text-sm"> |
| Gemini API |
| </span> |
| </div> |
| </div> |
| </div> |
| </div> |
| </div> |
| </div> |
| </section> |
| |
| <section class="py-12 bg-black/30"> |
| <div class="container mx-auto px-6"> |
| <div class="max-w-4xl mx-auto"> |
| <div class="grid grid-cols-1 md:grid-cols-3 gap-6"> |
| <div class="bg-gray-900/50 backdrop-blur-lg rounded-2xl p-6 border border-gray-800 text-center"> |
| <i data-feather="folder" class="w-12 h-12 text-neon-blue mx-auto mb-4"></i> |
| <div class="text-3xl font-bold code-font terminal-text" id="total-repos">0</div> |
| <p class="text-gray-400 code-font text-sm">Public Repositories</p> |
| </div> |
| <div class="bg-gray-900/50 backdrop-blur-lg rounded-2xl p-6 border border-gray-800 text-center"> |
| <i data-feather="star" class="w-12 h-12 text-neon-pink mx-auto mb-4"></i> |
| <div class="text-3xl font-bold code-font terminal-text" id="total-stars">0</div> |
| <p class="text-gray-400 code-font text-sm">Total Stars</p> |
| </div> |
| <div class="bg-gray-900/50 backdrop-blur-lg rounded-2xl p-6 border border-gray-800 text-center"> |
| <i data-feather="git-branch" class="w-12 h-12 text-terminal-green mx-auto mb-4"></i> |
| <div class="text-3xl font-bold code-font terminal-text" id="total-forks">0</div> |
| <p class="text-gray-400 code-font text-sm">Total Forks</p> |
| </div> |
| </div> |
| </div> |
| </section> |
|
|
| |
| <section id="projects" class="py-20"> |
| <div class="container mx-auto px-6"> |
| <h2 class="text-4xl md:text-5xl font-bold text-center mb-16 code-font"> |
| <span class="terminal-text">$</span> fetch --github cenktekin --live |
| </h2> |
| |
| <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8" id="projects-container"> |
| |
| <div class="col-span-3 text-center py-12"> |
| <div class="animate-spin rounded-full h-12 w-12 border-b-2 border-neon-blue mx-auto mb-4"></div> |
| <p class="text-gray-300 code-font">Loading GitHub projects...</p> |
| </div> |
| </div> |
| </section> |
| |
| <section class="py-20 bg-black/50"> |
| <div class="container mx-auto px-6"> |
| <h2 class="text-4xl md:text-5xl font-bold text-center mb-16 code-font"> |
| <span class="terminal-text">$</span> ./playground.sh |
| </h2> |
| |
| <div class="max-w-4xl mx-auto bg-gray-900/50 backdrop-blur-lg rounded-2xl p-6 border border-gray-800"> |
| <div class="grid grid-cols-1 lg:grid-cols-2 gap-8"> |
| <div> |
| <div class="bg-black rounded-xl p-4 mb-4"> |
| <pre class="text-sm code-font text-white"> |
| <span class="text-gray-400"># Try this in the playground!</span> |
| function greetCenk() { |
| const message = "Cenk Abi wuz here!"; |
| console.log(message); |
| return message; |
| } |
|
|
| greetCenk(); |
| </pre> |
| </div> |
| <button class="w-full px-4 py-3 bg-neon-blue text-black rounded-lg hover:scale-105 transition-transform duration-300 code-font font-bold text-lg neon-glow mb-4"> |
| $ node playground.js |
| </button> |
| </div> |
| <div> |
| <div class="bg-black rounded-xl p-4 h-32"> |
| <div class="text-sm code-font terminal-text" id="output"> |
| > Output will appear here... |
| </div> |
| </div> |
| </div> |
| </div> |
| </div> |
| </section> |
|
|
| |
| <section id="contact" class="py-20"> |
| <div class="container mx-auto px-6"> |
| <h2 class="text-4xl md:text-5xl font-bold text-center mb-16 code-font"> |
| <span class="terminal-text">$</span> contact --fun-mode |
| </h2> |
| |
| <div class="max-w-2xl mx-auto bg-gray-900/50 backdrop-blur-lg rounded-2xl p-8 border border-gray-800"> |
| <form class="space-y-6"> |
| <div> |
| <label class="block text-white code-font text-sm mb-2" for="name"> |
| $ export NAME= |
| </label> |
| <input type="text" id="name" class="w-full bg-black border border-gray-700 rounded-lg px-4 py-3 text-white code-font focus:border-neon-blue focus:outline-none transition-colors duration-300" placeholder="Your awesome name"> |
| </div> |
| |
| <div> |
| <label class="block text-white code-font text-sm mb-2" for="email"> |
| $ export EMAIL= |
| </label> |
| <input type="email" id="email" class="w-full bg-black border border-gray-700 rounded-lg px-4 py-3 text-white code-font focus:border-neon-pink focus:outline-none transition-colors duration-300" placeholder="your.email@domain.com"> |
| </div> |
| |
| <div> |
| <label class="block text-white code-font text-sm mb-2" for="message"> |
| $ cat message.txt |
| </label> |
| <textarea id="message" rows="4" class="w-full bg-black border border-gray-700 rounded-lg px-4 py-3 text-white code-font focus:border-neon-blue focus:outline-none transition-colors duration-300" placeholder="Type your message here..."> |
| </textarea> |
| </div> |
| |
| |
| <div class="bg-black/50 rounded-xl p-4 border border-gray-700"> |
| <label class="block text-white code-font text-sm mb-2"> |
| $ ./captcha.sh |
| </label> |
| <p class="text-gray-300 mb-3 code-font"> |
| What's the output of: <span class="terminal-text">print("Cenk" + "Abi")</span> |
| </p> |
| <input type="text" class="w-full bg-gray-800 border border-gray-600 rounded-lg px-4 py-2 text-white code-font" placeholder="Your answer"> |
| </div> |
| |
| <button type="submit" class="w-full px-4 py-3 bg-neon-pink text-white rounded-lg hover:bg-neon-blue hover:text-black transition-all duration-300 code-font font-bold text-lg pink-glow"> |
| $ ./send_message.sh |
| </button> |
| </form> |
| </div> |
| </div> |
| </section> |
|
|
| |
| <footer class="bg-black border-t border-gray-800 py-12 relative"> |
| <div class="container mx-auto px-6 text-center"> |
| <div class="mb-6"> |
| <div class="flex justify-center space-x-4 mb-4"> |
| <a href="#" class="text-gray-400 hover:text-neon-blue transition-colors duration-300"> |
| <i data-feather="github"></i> |
| </a> |
| <a href="#" class="text-gray-400 hover:text-neon-pink transition-colors duration-300"> |
| <i data-feather="twitter"></i> |
| </a> |
| <a href="#" class="text-gray-400 hover:text-neon-blue transition-colors duration-300"> |
| <i data-feather="linkedin"></i> |
| </a> |
| </div> |
| <p class="text-gray-500 code-font text-sm"> |
| // Debugging life one line at a time // |
| </p> |
| </div> |
| |
| |
| <div class="mt-8 text-center"> |
| <button id="easter-egg-btn" class="px-4 py-2 bg-transparent border border-gray-600 text-gray-400 rounded-lg hover:border-neon-pink hover:text-neon-pink transition-all duration-300 code-font text-xs"> |
| $ ./secret_game.sh |
| </button> |
| </div> |
| </div> |
| </footer> |
| <script> |
| |
| async function fetchGitHubProjects() { |
| try { |
| const response = await fetch('https://api.github.com/users/cenktekin/repos?sort=updated&per_page=100'); |
| const projects = await response.json(); |
| |
| const projectsContainer = document.getElementById('projects-container'); |
| projectsContainer.innerHTML = ''; |
| |
| |
| const filteredProjects = projects |
| .filter(repo => !repo.fork && repo.description) |
| .slice(0, 6); |
| |
| filteredProjects.forEach(repo => { |
| const projectCard = document.createElement('div'); |
| projectCard.className = 'bg-gray-900/50 backdrop-blur-lg rounded-2xl p-6 border border-gray-800 hover:border-neon-blue transition-all duration-300 group'; |
| |
| |
| let langColor = 'bg-gray-500/20 text-gray-300'; |
| if (repo.language) { |
| switch(repo.language.toLowerCase()) { |
| case 'javascript': |
| langColor = 'bg-js-yellow/20 text-yellow-300'; |
| break; |
| case 'python': |
| langColor = 'bg-python-yellow/20 text-yellow-300'; |
| break; |
| case 'react': |
| case 'typescript': |
| langColor = 'bg-react-blue/20 text-blue-300'; |
| break; |
| case 'java': |
| langColor = 'bg-java-red/20 text-red-300'; |
| break; |
| case 'html': |
| langColor = 'bg-html-orange/20 text-orange-300'; |
| break; |
| case 'css': |
| langColor = 'bg-css-blue/20 text-blue-300'; |
| break; |
| } |
| } |
| |
| projectCard.innerHTML = ` |
| <div class="mb-4 h-48 bg-gradient-to-br from-neon-blue/20 to-neon-pink/20 rounded-xl flex items-center justify-center"> |
| <div class="text-center"> |
| <i data-feather="github" class="w-16 h-16 text-neon-blue mx-auto"></i> |
| <h3 class="text-2xl font-bold text-white mt-4 code-font">${repo.name}</h3> |
| </div> |
| </div> |
| <p class="text-gray-300 mb-4"> |
| ${repo.description || 'No description available'} |
| </p> |
| <div class="flex flex-wrap gap-2 mb-4"> |
| ${repo.language ? `<span class="px-3 py-1 ${langColor} rounded-full code-font text-sm">${repo.language}</span>` : ''} |
| <span class="px-3 py-1 bg-gray-500/20 text-gray-300 rounded-full code-font text-sm"> |
| โญ ${repo.stargazers_count} |
| </span> |
| <span class="px-3 py-1 bg-gray-500/20 text-gray-300 rounded-full code-font text-sm"> |
| ๐ด ${repo.forks_count} |
| </span> |
| </div> |
| <button onclick="window.open('${repo.html_url}', '_blank')" class="w-full px-4 py-2 bg-neon-blue text-black rounded-lg hover:bg-neon-pink transition-all duration-300 code-font font-bold"> |
| $ git clone ${repo.name} |
| </button> |
| `; |
| |
| projectsContainer.appendChild(projectCard); |
| }); |
| |
| |
| const totalStars = projects.reduce((sum, repo) => sum + repo.stargazers_count, 0); |
| const totalForks = projects.reduce((sum, repo) => sum + repo.forks_count, 0); |
| const publicRepos = projects.filter(repo => !repo.fork).length; |
| |
| document.getElementById('total-repos').textContent = publicRepos; |
| document.getElementById('total-stars').textContent = totalStars; |
| document.getElementById('total-forks').textContent = totalForks; |
| |
| } catch (error) { |
| console.error('Error fetching GitHub projects:', error); |
| document.getElementById('projects-container').innerHTML = ` |
| <div class="col-span-3 text-center py-12"> |
| <i data-feather="alert-triangle" class="w-16 h-16 text-neon-pink mx-auto mb-4"></i> |
| <p class="text-gray-300 code-font">Unable to load GitHub projects. Check console for details.</p> |
| </div> |
| `; |
| } |
| } |
| |
| |
| VANTA.GLOBE({ |
| el: "#vanta-bg", |
| mouseControls: true, |
| touchControls: true, |
| gyroControls: false, |
| minHeight: 200.00, |
| minWidth: 200.00, |
| scale: 1.00, |
| scaleMobile: 1.00, |
| color: 0x00f0ff, |
| backgroundColor: 0x0a0a0f, |
| size: 1.00 |
| }); |
| |
| |
| document.addEventListener('DOMContentLoaded', function() { |
| const typingElement = document.querySelector('.typing'); |
| setTimeout(() => { |
| typingElement.style.animation = 'none'; |
| typingElement.style.borderRight = 'none'; |
| }, 3500); |
| |
| |
| fetchGitHubProjects(); |
| |
| |
| document.querySelector('.neon-glow').addEventListener('click', function() { |
| const output = document.getElementById('output'); |
| output.innerHTML = '> Cenk Abi wuz here!'; |
| setTimeout(() => { |
| output.innerHTML = '> Output will appear here...'; |
| }, 3000); |
| }); |
| |
| |
| document.getElementById('easter-egg-btn').addEventListener('click', function() { |
| alert('๐ฎ Secret game activated! Imagine catching bugs like a pro! ๐'); |
| }); |
| |
| |
| document.querySelectorAll('a[href^="#"]').forEach(anchor => { |
| anchor.addEventListener('click', function (e) { |
| e.preventDefault(); |
| const target = document.querySelector(this.getAttribute('href')); |
| if (target) { |
| target.scrollIntoView({ |
| behavior: 'smooth', |
| block: 'start' |
| }); |
| } |
| }); |
| }); |
| |
| |
| feather.replace(); |
| </script> |
| </body> |
| </html> |
|
|