| | <!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> |
| |
|