🏠 Ana Sayfa

🚀 Modern Portfolio Website Geliştirme Rehberi

Sıfırdan profesyonel portfolio website oluşturma kılavuzu

Bu rehber, Berat Efe Karabaş portfolio websitesinin geliştirilme sürecini adım adım anlatmaktadır.

📋 İçindekiler

1. 🎯 Giriş ve Proje Özeti

Bu rehber, modern web teknolojilerini kullanarak profesyonel bir portfolio website'inin nasıl oluşturulacağını adım adım anlatmaktadır. Proje süresince şu hedefleri gerçekleştirdik:

🎨 Modern Tasarım

Glassmorphism efektleri, dark/light mode desteği ve smooth animasyonlar

📱 Responsive

Tüm cihazlarda mükemmel görünüm ve kullanıcı deneyimi

⚡ Performanslı

Hızlı yüklenme, SEO optimizasyonu ve erişilebilirlik

🔧 İnteraktif

Typing animasyonları, hover efektleri ve kullanıcı etkileşimleri

💡 İpucu: Bu rehberi takip ederken, her adımda kodları test etmeyi unutmayın. Tarayıcınızın geliştirici araçlarını aktif olarak kullanın.

2. 🛠️ Kullanılan Teknolojiler

Frontend Teknolojileri

Araçlar ve Platformlar

Tasarım Prensipleri

3. 📋 Proje Planlama

Sayfa Yapısı Planlaması

Portfolio websitemizin ana bölümlerini planladık:

Portfolio Website Yapısı: ├── Ana Sayfa (index.html) │ ├── Header (Profil bilgileri) │ ├── Hakkımda bölümü │ ├── Yetenekler (Skills) │ ├── Projeler showcase │ ├── Blog yazıları preview │ ├── İletişim bilgileri │ └── Footer ├── Blog bölümü (/blog/) │ ├── Blog ana sayfa │ └── Tekil blog yazıları ├── CV dosyası (/assets/) └── Statik dosyalar (images, styles)

Tasarım Sistemi

Tutarlı bir tasarım sistemi oluşturduk:

Renk Paleti

Dark Theme: - Primary Background: #0f172a (Koyu lacivert) - Secondary Background: #1e293b (Orta lacivert) - Tertiary Background: #334155 (Açık gri) - Primary Text: #e2e8f0 (Açık gri) - Secondary Text: #cbd5e1 (Orta gri) - Accent Blue: #3b82f6 (Mavi) - Accent Purple: #8b5cf6 (Mor) - Accent Pink: #ec4899 (Pembe) Light Theme: - Primary Background: #f8fafc (Açık beyaz) - Secondary Background: #e2e8f0 (Açık gri) - Tertiary Background: #cbd5e1 (Orta gri) - Primary Text: #1e293b (Koyu gri) - Secondary Text: #475569 (Orta koyu gri)

Typography

Font Family: 'Inter', 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif Font Sizes: - h1: 3em (48px) - h2: 2em (32px) - h3: 1.5em (24px) - Body: 1em (16px) - Small: 0.9em (14px) Font Weights: - Light: 300 - Regular: 400 - Medium: 500 - Semibold: 600 - Bold: 700

4. ⚙️ Geliştirme Ortamı Kurulumu

1GitHub Repository Oluşturma

İlk adım olarak GitHub'da yeni bir repository oluşturduk:

1. GitHub.com'a giriş yapın 2. "New repository" butonuna tıklayın 3. Repository adını "username.github.io" şeklinde yazın Örnek: efekrbs.github.io 4. "Public" seçeneğini işaretleyin 5. "Initialize with README" seçeneğini işaretleyin 6. "Create repository" butonuna tıklayın
💡 Önemli: Repository adının "username.github.io" formatında olması, GitHub Pages'in otomatik olarak bu domain'de yayınlamasını sağlar.

2Local Geliştirme Ortamı

Repository'yi local bilgisayarınıza klonlayın:

# Terminal veya Command Prompt'ta çalıştırın git clone https://github.com/username/username.github.io.git cd username.github.io # İlk dosyaları oluşturun touch index.html touch styles.css touch README.md # İlk commit'i yapın git add . git commit -m "🎉 İlk commit: Proje başlatıldı" git push origin main

3VS Code Kurulumu ve Extensions

Geliştirme sürecini kolaylaştıracak VS Code eklentileri:

Önerilen VS Code Extensions: ├── Live Server (Canlı preview için) ├── Prettier (Kod formatlama) ├── Auto Rename Tag (HTML tag editleme) ├── Bracket Pair Colorizer (Parantez renklendirme) ├── CSS Peek (CSS sınıf navigasyonu) ├── HTML CSS Support (IntelliSense desteği) └── GitLens (Git özellikleri)

5. 🏗️ HTML Yapısının Oluşturulması

Temel HTML Yapısı

Semantic HTML5 elementleri kullanarak sayfa yapısını oluşturduk:

<!DOCTYPE html> <html lang="tr"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Berat Efe Karabaş - Portfolio</title> <meta name="description" content="Bilgisayar Mühendisliği öğrencisi portfolio sitesi"> <link rel="stylesheet" href="styles.css"> </head> <body> <div class="container"> <header>...</header> <main> <section class="about">...</section> <section class="skills">...</section> <section class="projects">...</section> <section class="blog">...</section> <section class="contact">...</section> </main> <footer>...</footer> </div> </body> </html>

Header Bölümü Detayı

Profil bilgileri ve sosyal medya linkleri için header tasarladık:

<header> <!-- Theme Toggle Button --> <div class="theme-toggle"> <button class="theme-btn" onclick="toggleTheme()">🌙</button> </div> <!-- Profile Image --> <div class="profile-img"> <img src="images/pp.jpg" alt="Berat Efe Karabaş" class="profile-photo"> </div> <!-- Name and Title --> <h1>Berat Efe Karabaş</h1> <p class="subtitle"> <span id="typing-text"></span> <span class="cursor">|</span> </p> <!-- Social Links --> <div class="social-links"> <a href="https://github.com/efekrbs" class="social-link">📧</a> <a href="https://linkedin.com/in/efekrbs" class="social-link">💼</a> <a href="https://github.com/efekrbs" class="social-link">🐙</a> </div> </header>

Skills Bölümü

Yetenekleri görsel progress bar'lar ile gösterdik:

<section class="section"> <h2>🛠️ Yeteneklerim</h2> <div class="skills"> <div class="skill-item"> <span class="skill-icon">🐍</span> <h3>Python</h3> <div class="skill-bar"> <div class="skill-progress" data-width="85"></div> </div> <span class="skill-percent">85%</span> </div> <div class="skill-item"> <span class="skill-icon">☕</span> <h3>Java</h3> <div class="skill-bar"> <div class="skill-progress" data-width="75"></div> </div> <span class="skill-percent">75%</span> </div> <!-- Diğer skills... --> </div> </section>

6. 🎨 CSS ile Tasarım

CSS Custom Properties (Değişkenler)

Tutarlı tasarım için CSS değişkenleri kullandık:

:root { /* Colors */ --primary-bg: #0f172a; --secondary-bg: #1e293b; --tertiary-bg: #334155; --primary-text: #e2e8f0; --secondary-text: #cbd5e1; --accent-blue: #3b82f6; --accent-purple: #8b5cf6; --accent-pink: #ec4899; --border-color: rgba(59, 130, 246, 0.2); --card-bg: rgba(15, 23, 42, 0.6); } /* Light Theme Variables */ [data-theme="light"] { --primary-bg: #f8fafc; --secondary-bg: #e2e8f0; --tertiary-bg: #cbd5e1; --primary-text: #1e293b; --secondary-text: #475569; --card-bg: rgba(255, 255, 255, 0.8); --border-color: rgba(59, 130, 246, 0.3); }

Glassmorphism Efektleri

Modern cam efektli kartlar için backdrop-filter kullandık:

.section { background: var(--card-bg); backdrop-filter: blur(20px); border: 1px solid var(--border-color); border-radius: 20px; padding: 40px; margin-bottom: 30px; box-shadow: 0 20px 40px rgba(0, 0, 0, 0.2), inset 0 1px 0 rgba(255, 255, 255, 0.05); transition: all 0.4s ease; } .section:hover { transform: translateY(-5px); box-shadow: 0 30px 60px rgba(0, 0, 0, 0.3), 0 0 0 1px var(--border-color); border-color: var(--accent-blue); }

CSS Grid ve Flexbox

Modern layout teknikleri kullanarak responsive tasarım oluşturduk:

/* Skills Grid Layout */ .skills { display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 25px; margin-top: 30px; } /* Projects Grid Layout */ .projects-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(350px, 1fr)); gap: 30px; margin-top: 30px; } /* Flexbox for Social Links */ .social-links { display: flex; justify-content: center; gap: 20px; margin: 20px 0; }

Animasyonlar ve Transitions

Smooth geçişler ve hover efektleri ekledik:

/* Smooth Transitions */ .skill-item { transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); position: relative; overflow: hidden; } .skill-item:hover { transform: translateY(-5px) scale(1.03); border-color: rgba(59, 130, 246, 0.5); box-shadow: 0 12px 25px rgba(59, 130, 246, 0.2), 0 5px 10px rgba(0, 0, 0, 0.1); } /* Typing Animation */ @keyframes blink { 0%, 50% { opacity: 1; } 51%, 100% { opacity: 0; } } .cursor { animation: blink 1s infinite; color: var(--accent-blue); }

7. ⚡ JavaScript İnteraktifliği

Theme Toggle Functionality

Dark/Light mode geçişi için JavaScript fonksiyonu:

// Theme Toggle Function function toggleTheme() { const currentTheme = document.documentElement.getAttribute('data-theme'); const newTheme = currentTheme === 'light' ? 'dark' : 'light'; document.documentElement.setAttribute('data-theme', newTheme); localStorage.setItem('theme', newTheme); // Update button icon const themeBtn = document.querySelector('.theme-btn'); themeBtn.textContent = newTheme === 'light' ? '🌙' : '☀️'; } // Load saved theme on page load document.addEventListener('DOMContentLoaded', function() { const savedTheme = localStorage.getItem('theme') || 'dark'; document.documentElement.setAttribute('data-theme', savedTheme); const themeBtn = document.querySelector('.theme-btn'); themeBtn.textContent = savedTheme === 'light' ? '🌙' : '☀️'; });

Typing Animation

Dinamik meslek unvanları için typing efekti:

// Typing Animation const titles = [ "Bilgisayar Mühendisliği Öğrencisi", "Python Developer", "Algorithm Enthusiast", "Problem Solver" ]; let currentTitle = 0; let currentChar = 0; let isDeleting = false; function typeWriter() { const typingElement = document.getElementById('typing-text'); const currentText = titles[currentTitle]; if (isDeleting) { typingElement.textContent = currentText.substring(0, currentChar - 1); currentChar--; } else { typingElement.textContent = currentText.substring(0, currentChar + 1); currentChar++; } if (!isDeleting && currentChar === currentText.length) { setTimeout(() => isDeleting = true, 2000); } else if (isDeleting && currentChar === 0) { isDeleting = false; currentTitle = (currentTitle + 1) % titles.length; } const typingSpeed = isDeleting ? 50 : 100; setTimeout(typeWriter, typingSpeed); } // Start typing animation on page load document.addEventListener('DOMContentLoaded', typeWriter);

Skill Progress Animation

Scroll ile tetiklenen progress bar animasyonu:

// Skill Progress Animation function animateSkillBars() { const skillBars = document.querySelectorAll('.skill-progress'); const observer = new IntersectionObserver((entries) => { entries.forEach(entry => { if (entry.isIntersecting) { const progressBar = entry.target; const width = progressBar.getAttribute('data-width'); progressBar.style.width = width + '%'; } }); }, { threshold: 0.5 }); skillBars.forEach(bar => observer.observe(bar)); } // Initialize animations document.addEventListener('DOMContentLoaded', function() { animateSkillBars(); });

8. 📱 Responsive Tasarım

Mobile-First Approach

Önce mobil tasarımı yapıp, sonra büyük ekranlar için uyarladık:

/* Base Mobile Styles */ .container { padding: 15px; } .skills { grid-template-columns: 1fr; } .projects-grid { grid-template-columns: 1fr; } /* Tablet Styles */ @media (min-width: 768px) { .container { padding: 20px; } .skills { grid-template-columns: repeat(2, 1fr); } } /* Desktop Styles */ @media (min-width: 1024px) { .container { max-width: 1200px; margin: 0 auto; padding: 20px; } .skills { grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); } .projects-grid { grid-template-columns: repeat(auto-fit, minmax(350px, 1fr)); } }

Mobile Navigation ve UX

Küçük ekranlarda kullanıcı deneyimini iyileştirdik:

@media (max-width: 768px) { /* Smaller profile image */ .profile-img { width: 150px; height: 150px; font-size: 60px; } /* Compact header */ header { padding: 30px 20px; } /* Stack social links */ .social-links { flex-wrap: wrap; } /* Adjusted section padding */ .section { padding: 25px 20px; } /* Responsive typography */ h1 { font-size: 2.2em; } /* Full-width theme toggle */ .theme-toggle { position: relative; top: auto; right: auto; text-align: center; margin-bottom: 20px; } }

9. ⚡ Performans Optimizasyonu

CSS Performance

CSS performansı için will-change ve GPU accelerated properties kullandık:

/* Performance Optimizations */ .skill-progress, .typing-animation, .profile-img { will-change: transform; } /* Use transform instead of changing layout properties */ .skill-item:hover { transform: translateY(-5px) scale(1.03); /* Instead of changing margin or padding */ } /* Use opacity for fade effects */ .loading-element { opacity: 0; transition: opacity 0.3s ease; } .loading-element.loaded { opacity: 1; }

Accessibility Improvements

Erişilebilirlik için semantic HTML ve ARIA attributes kullandık:

/* Focus improvements */ button:focus, a:focus, input:focus { outline: 2px solid var(--accent-blue); outline-offset: 2px; } /* Reduced motion support */ @media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; } } /* High contrast mode support */ @media (prefers-contrast: high) { :root { --border-color: #ffffff; --primary-text: #ffffff; } }

SEO Optimizasyonu

Arama motoru optimizasyonu için meta tags ve structured data:

<head> <!-- Basic SEO --> <title>Berat Efe Karabaş - Bilgisayar Mühendisliği Öğrencisi Portfolio</title> <meta name="description" content="Python, Java ve C programlama dilleri konusunda deneyimli bilgisayar mühendisliği öğrencisi. Algorithm geliştirme ve problem çözme odaklı projeler."> <meta name="keywords" content="bilgisayar mühendisliği, python, java, algoritma, portfolio"> <meta name="author" content="Berat Efe Karabaş"> <!-- Open Graph --> <meta property="og:title" content="Berat Efe Karabaş - Portfolio"> <meta property="og:description" content="Bilgisayar Mühendisliği öğrencisi portfolio sitesi"> <meta property="og:image" content="https://efekrbs.github.io/images/pp.jpg"> <meta property="og:url" content="https://efekrbs.github.io"> <!-- Favicon --> <link rel="icon" type="image/x-icon" href="/favicon.ico"> </head>

10. 🚀 GitHub Pages ile Yayınlama

Repository Ayarları

GitHub Pages'i aktifleştirmek için repository ayarlarını yapılandırdık:

GitHub Pages Kurulum Adımları: 1. GitHub repository'nizde "Settings" sekmesine gidin 2. Sol menüden "Pages" seçeneğini bulun 3. "Source" kısmında "Deploy from a branch" seçin 4. "Branch" kısmında "main" seçin 5. Folder olarak "/ (root)" seçin 6. "Save" butonuna tıklayın Otomatik deployment için: - Her push sonrası site otomatik güncellenir - Deployment süreci 1-2 dakika sürer - Actions sekmesinden deployment durumunu takip edebilirsiniz

Custom Domain (Opsiyonel)

Kendi domain'inizi bağlamak isterseniz:

Custom Domain Kurulumu: 1. Repository root'unda CNAME dosyası oluşturun: echo "yourdomain.com" > CNAME 2. Domain sağlayıcınızda DNS ayarları: - A Record: 185.199.108.153 - A Record: 185.199.109.153 - A Record: 185.199.110.153 - A Record: 185.199.111.153 VEYA - CNAME Record: username.github.io 3. GitHub Pages settings'de "Custom domain" kısmına domain'inizi yazın ve "Save" edin 4. "Enforce HTTPS" seçeneğini aktifleştirin

Git Workflow

Geliştirme sürecinde kullandığımız git komutları:

# Günlük development workflow git status # Değişiklikleri kontrol et git add . # Tüm değişiklikleri stage'e al git commit -m "🎨 Feature açıklaması" # Commit yap git push origin main # GitHub'a gönder # Faydalı git komutları git log --oneline # Commit geçmişini gör git diff # Değişiklikleri karşılaştır git checkout -- filename # Dosyayı eski haline getir git reset HEAD filename # Stage'den dosyayı çıkar # Branch ile çalışma (advanced) git checkout -b feature-name # Yeni branch oluştur git checkout main # Ana branch'e geç git merge feature-name # Branch'i merge et git branch -d feature-name # Branch'i sil

11. 🔧 Bakım ve Güncelleme

İçerik Güncelleme

Portfolio'nuzu güncel tutmak için düzenli bakım yapın:

📝 Blog Yazıları

Yeni projelerinizi ve öğrendiklerinizi blog yazıları olarak ekleyin

🛠️ Projeler

Yeni projelerinizi showcase bölümüne ekleyin

📄 CV Güncellemesi

CV'nizi düzenli olarak güncelleyin ve yeni versiyonu upload edin

🎯 Skills

Yeni öğrendiğiniz teknolojileri skills bölümüne ekleyin

Performance Monitoring

Site performansını düzenli olarak kontrol edin:

Performans Kontrol Araçları: 1. Google PageSpeed Insights - https://pagespeed.web.dev/ - Site hızını ve optimizasyon önerilerini sunar 2. GTmetrix - https://gtmetrix.com/ - Detaylı performans analizi 3. Google Lighthouse (Chrome DevTools) - F12 > Lighthouse sekmesi - Performance, Accessibility, SEO skorları 4. WebPageTest - https://www.webpagetest.org/ - Farklı lokasyonlardan test Hedef Metrikler: - First Contentful Paint: < 1.5s - Largest Contentful Paint: < 2.5s - Cumulative Layout Shift: < 0.1 - First Input Delay: < 100ms

Security Best Practices

Güvenlik açısından dikkat edilmesi gerekenler:

Güvenlik Kontrol Listesi: ✅ Kişisel bilgileri (telefon, adres) direkt paylaşmayın ✅ Email adresini spam'den korumak için obfuscation kullanın ✅ Social media linklerini güncel tutun ✅ GitHub repository'lerinde sensitive data olmadığından emin olun ✅ HTTPS kullanın (GitHub Pages otomatik sağlar) ✅ External linkler için rel="noopener" ekleyin ✅ Form validation'ları client-side ve server-side yapın ✅ Regular backup alın (Git zaten backup görevi görür) Örnek Email Obfuscation: // JavaScript ile const email = "berat" + "@" + "example.com"; // HTML entity ile &#98;&#101;&#114;&#97;&#116;&#64;&#101;&#120;&#97;&#109;&#112;&#108;&#101;&#46;&#99;&#111;&#109;

12. 🎯 Sonuç ve İpuçları

Proje Başarı Metrikleri

Bu proje sonunda elde ettiğimiz sonuçlar:

🚀 Performans

Google Lighthouse 90+ skor, hızlı yükleme süreleri

📱 Responsive

Tüm cihazlarda mükemmel görünüm ve kullanıcı deneyimi

🎨 Modern UI

2024 tasarım trendlerine uygun görsel tasarım

♿ Accessibility

WCAG 2.1 standartlarına uygun erişilebilirlik

Geliştiriciler İçin İpuçları

🎯 Frontend Development Tips:
  • Mobile-First: Her zaman küçük ekrandan başlayın
  • Progressive Enhancement: Temel işlevselliği önce sağlayın
  • Performance: Gereksiz animasyonlardan kaçının
  • Accessibility: Keyboard navigation'ı test edin
  • SEO: Semantic HTML kullanın
🔧 CSS Best Practices:
  • CSS Custom Properties: Değişkenler kullanarak maintainability arttırın
  • BEM Methodology: Sınıf isimlendirmede tutarlı olun
  • CSS Grid & Flexbox: Modern layout teknikleri kullanın
  • Will-Change: Animasyonlarda performans optimizasyonu
  • Critical CSS: Above-the-fold CSS'i inline yapın
⚡ JavaScript Optimizations:
  • Event Delegation: Event listener'ları optimize edin
  • Debouncing: Scroll ve resize event'lerini optimize edin
  • Intersection Observer: Scroll animasyonları için kullanın
  • LocalStorage: User preferences'ları saklayın
  • Error Handling: Try-catch blokları kullanın

Gelecek Geliştirmeler

Proje için planlanan gelecek özellikler:

Roadmap v3.0: 🔄 Backend Integration ├── Contact form ile email gönderimi ├── Blog CMS integration ├── Analytics ve visitor tracking └── Comment sistemi 🎨 Advanced Features ├── PWA (Progressive Web App) desteği ├── Dark/Light/Auto mode seçenekleri ├── Multi-language support (EN/TR) ├── Advanced animations (GSAP) └── Image lazy loading 🔧 Technical Improvements ├── TypeScript migration ├── CSS-in-JS (Styled Components) ├── Build process (Webpack/Vite) ├── Testing (Jest, Cypress) └── CI/CD pipeline

Kaynaklar ve Referanslar

Faydalı Kaynaklar: 📚 Documentation: ├── MDN Web Docs: https://developer.mozilla.org/ ├── CSS-Tricks: https://css-tricks.com/ ├── W3Schools: https://www.w3schools.com/ └── Can I Use: https://caniuse.com/ 🎨 Design Inspiration: ├── Dribbble: https://dribbble.com/ ├── Behance: https://www.behance.net/ ├── Awwwards: https://www.awwwards.com/ └── CodePen: https://codepen.io/ 🛠️ Tools: ├── VS Code: https://code.visualstudio.com/ ├── GitHub Desktop: https://desktop.github.com/ ├── Chrome DevTools: Built-in browser tool └── Figma: https://www.figma.com/ 🚀 Deployment: ├── GitHub Pages: https://pages.github.com/ ├── Netlify: https://www.netlify.com/ ├── Vercel: https://vercel.com/ └── Surge.sh: https://surge.sh/
⚠️ Önemli Notlar:
  • Bu rehber 2024 itibariyle güncel teknolojileri kapsamaktadır
  • Web teknolojileri hızla değişir, düzenli olarak güncellemeleri takip edin
  • Production'a geçmeden önce mutlaka test edin
  • Backup almayı unutmayın (Git ile automatic backup)
  • Community'den yardım almaktan çekinmeyin

Son Söz

Bu rehber, modern web development pratiklerini kullanarak profesyonel bir portfolio website'i oluşturma sürecini kapsamlı bir şekilde anlatmaktadır. Her adımda best practices ve modern teknolojiler kullanılarak, hem görsel hem de teknik açıdan kaliteli bir sonuç elde edilmiştir.

Unutmayın: Web development bir öğrenme süreci ve sürekli gelişim gerektirir. Bu rehberdeki teknikleri temel alarak kendi projelerinizi geliştirirken, yeni teknolojileri de öğrenmeye devam edin.

🎉 Tebrikler! Bu rehberi tamamladıysanız, artık modern bir portfolio website'ine sahipsiniz. Projenizi arkadaşlarınızla paylaşın, feedback alın ve sürekli geliştirmeye devam edin!