← Kursa Dön
📄 Text · 30 min

GitHub Portfolio

Giriş — Dijital CV'niz

Bir mağazanın vitrini ne kadar önemliyse, bir geliştiricinin GitHub profili de o kadar önemlidir. Recruiter'lar, teknik müdürler ve potansiyel iş arkadaşları sizi tanımak için ilk baktıkları yer çoğu zaman GitHub profilinizdir. Vitrine ne koyduğunuz, nasıl düzenlediğiniz ve nasıl sunduğunuz — bunların hepsi bir izlenim bırakır.

Bu derste, GitHub profilinizi "sadece kod deposu" olmaktan çıkarıp "profesyonel vitrin"e dönüştürmeyi öğreneceğiz.

GitHub Profil README — Kişisel Tanıtım

Nasıl Oluşturulur?

GitHub, kullanıcı adınızla aynı isimde bir repository oluşturduğunuzda, o repo'daki README.md dosyasını profilinizin üst kısmında gösterir. Bu, "gizli özellik" değildir ama çoğu geliştirici bilmez.

# 1. Kullanıcı adınızla aynı isimde repo oluşturun
# Kullanıcı adınız: ahmetyilmaz ise
gh repo create ahmetyilmaz --public

# 2. README.md oluşturun
cd ahmetyilmaz

Etkili Profil README Yapısı

<!-- README.md -->

# Merhaba, ben Ahmet 👋

Full-stack developer olarak 3 yıldır web uygulamaları geliştiriyorum.
Şu an [Şirket Adı]'nda çalışıyorum.

## 🔧 Teknolojiler

**Frontend:** React, Next.js, TypeScript, Tailwind CSS
**Backend:** Node.js, Express, PostgreSQL, Redis
**DevOps:** Docker, GitHub Actions, AWS, Vercel
**Araçlar:** Git, VS Code, Figma

## 🚀 Öne Çıkan Projeler

| Proje | Açıklama | Teknoloji |
|-------|----------|-----------|
| [TaskFlow](https://github.com/ahmet/taskflow) | Kanban proje yönetimi | React, Firebase |
| [WeatherApp](https://github.com/ahmet/weather) | Hava durumu uygulaması | Next.js, API |
| [BlogEngine](https://github.com/ahmet/blog) | Markdown blog motoru | Node.js, MDX |

## 📊 GitHub İstatistikleri

![GitHub Stats](https://github-readme-stats.vercel.app/api?username=ahmetyilmaz&show_icons=true&theme=dark)

## 📫 İletişim

- 💼 [LinkedIn](https://linkedin.com/in/ahmetyilmaz)
- 🌐 [Website](https://ahmetyilmaz.dev)
- 📧 ahmet@email.com

Dinamik İçerik Ekleme

GitHub Actions ile profil README'nizi otomatik güncelleyebilirsiniz:

# .github/workflows/update-readme.yml
name: Update README

on:
  schedule:
    - cron: '0 0 * * *'  # Her gün gece yarısı
  workflow_dispatch:

jobs:
  update:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      # Son blog yazılarını çek
      - uses: gautamkrishnar/blog-post-workflow@v1
        with:
          feed_list: "https://ahmetyilmaz.dev/rss.xml"
          max_post_count: 5
<!-- README.md'de blog bölümü -->
## 📝 Son Blog Yazıları
<!-- BLOG-POST-LIST:START -->
- [Git ile Verimli Çalışma İpuçları](https://ahmetyilmaz.dev/git-tips)
- [React Server Components Rehberi](https://ahmetyilmaz.dev/rsc)
- [TypeScript 5.0 Yenilikleri](https://ahmetyilmaz.dev/ts5)
<!-- BLOG-POST-LIST:END -->

GitHub Readme Stats

Profil istatistiklerinizi görselleştiren popüler açık kaynak araç:

<!-- Genel istatistikler -->
![Stats](https://github-readme-stats.vercel.app/api?username=ahmetyilmaz&show_icons=true&theme=radical)

<!-- En çok kullanılan diller -->
![Top Langs](https://github-readme-stats.vercel.app/api/top-langs/?username=ahmetyilmaz&layout=compact&theme=radical)

<!-- Streak istatistikleri -->
![Streak](https://github-readme-streak-stats.herokuapp.com/?user=ahmetyilmaz&theme=radical)

<!-- Proje kartı -->
![Repo Card](https://github-readme-stats.vercel.app/api/pin/?username=ahmetyilmaz&repo=taskflow&theme=radical)

💡 İpucu: İstatistik badge'leri güzel görünür ama recruiter'lar bunlara bakarak karar vermez. Önemli olan projelerinizin kalitesi ve README'lerin açıklayıcılığıdır. Badge'ler süslemedir, içerik esastır.

Pinned Repositories — Vitrinde Ne Olsun?

GitHub profilinizde 6 adet "pinned repo" seçebilirsiniz. Bu, profilinize gelen herkesin ilk gördüğü projelerdir.

Pin Stratejisi

Pining Stratejisi (6 slot):

Slot 1: 🏆 En iyi projeniz (canlı demo var)
Slot 2: 🛠️ Teknik beceriyi gösteren proje
Slot 3: 📦 Açık kaynak katkınız veya kütüphaneniz
Slot 4: 📚 Öğrenme projesi / kurs çalışması
Slot 5: 🤝 Ekip projesi (collaborator olarak)
Slot 6: 📝 Blog / portföy sitesi

❌ Pin'lemeyin:
- Fork edip hiç değişiklik yapmadığınız projeler
- Yarım kalmış projeler (README'si bile olmayan)
- Tutorial kopyaları (TodoMVC, calculator)
- Çok eski, bakımsız projeler

Pin Ayarlama

GitHub Profil sayfanız → "Customize your pins" →
6 repo seçin → Save

Proje README'si — Her Proje İçin

Pinned repo'larınızın her birinin güçlü bir README'si olmalı:

<!-- Örnek proje README.md -->

# 🚀 TaskFlow — Kanban Proje Yönetimi

> Sürükle-bırak Kanban board ile görevlerinizi organize edin.

![TaskFlow Demo](./docs/demo.gif)

[![Live Demo](https://img.shields.io/badge/demo-live-green)](https://taskflow.vercel.app)
[![License](https://img.shields.io/badge/license-MIT-blue)](LICENSE)
[![CI](https://github.com/ahmet/taskflow/actions/workflows/ci.yml/badge.svg)](https://github.com/ahmet/taskflow/actions)

## ✨ Özellikler

- 📋 Sürükle-bırak Kanban board
- 👥 Gerçek zamanlı çoklu kullanıcı
- 🏷️ Etiketler ve filtreler
- 📊 İlerleme dashboard'u
- 🌙 Dark mode
- 📱 Responsive tasarım

## 🛠️ Teknolojiler

| Kategori | Teknoloji |
|----------|-----------|
| Frontend | React 18, TypeScript, Tailwind CSS |
| Backend  | Node.js, Express, Socket.io |
| Database | PostgreSQL, Prisma ORM |
| Auth     | NextAuth.js, OAuth 2.0 |
| Deploy   | Vercel (frontend), Railway (backend) |
| CI/CD    | GitHub Actions |

## 🚀 Kurulum

```bash
# Repo'yu klonlayın
git clone https://github.com/ahmet/taskflow.git
cd taskflow

# Bağımlılıkları yükleyin
npm install

# Environment değişkenlerini ayarlayın
cp .env.example .env
# .env dosyasını düzenleyin

# Veritabanını hazırlayın
npx prisma migrate dev

# Geliştirme sunucusunu başlatın
npm run dev

📁 Proje Yapısı

taskflow/
├── src/
│   ├── app/           # Next.js App Router
│   ├── components/    # React bileşenleri
│   ├── hooks/         # Custom hooks
│   ├── lib/           # Utility fonksiyonlar
│   ├── server/        # API routes
│   └── types/         # TypeScript tipleri
├── prisma/            # Database schema
├── public/            # Static assets
└── tests/             # Test dosyaları

📸 Ekran Görüntüleri

Board GörünümüDashboard
![Board](./docs/board.png)![Dashboard](./docs/dashboard.png)

🤝 Katkıda Bulunma

Katkılarınız memnuniyetle karşılanır! [CONTRIBUTING.md](CONTRIBUTING.md) dosyasını okuyun.

📄 Lisans

Bu proje [MIT Lisansı](LICENSE) altında lisanslanmıştır.


### README Olmazsa Olmazları

Her proje README'sinde olması gerekenler: ────────────────────────────────────────── ✅ Proje adı ve kısa açıklama (1-2 cümle) ✅ Demo linki veya ekran görüntüsü/GIF ✅ Teknoloji listesi ✅ Kurulum adımları (çalıştırılabilir talimatlar) ✅ Kullanım örnekleri ✅ Lisans

Bonus: ⭐ Badge'ler (CI durumu, lisans, demo) ⭐ Proje yapısı (klasör ağacı) ⭐ Katkı rehberi (CONTRIBUTING.md) ⭐ Ekran görüntüleri (özellikle UI projeleri) ⭐ Mimari kararlar (neden bu teknoloji?)


## Contribution Graph — Yeşil Kareler

### Contribution Graph Nasıl Çalışır?

GitHub profilinizdeki yeşil kareler, her gün ne kadar katkıda bulunduğunuzu gösterir:

Contribution sayılan aktiviteler: ✅ Commit (varsayılan branch'e veya gh-pages'e) ✅ Issue açma ✅ PR açma ✅ PR review ✅ Commit'in fork'ta değil, birleştirilmiş PR ile olması

Contribution SAYILMAYAN aktiviteler: ❌ Fork'ta yapılan commit (merge edilmediyse) ❌ Gist oluşturma ❌ Başkasının repo'sunda issue yorumlama ❌ Private repo (ayar ile açılabilir)


### Contribution Graph Ayarları

Profile → Settings → Public profile ☑ Include private contributions on my profile (Private repo'daki katkıları da göster — detay gizli kalır)


### Yanılgılar

❌ YANLIŞ: "Her gün commit atmalıyım ki yeşil kaleler olsun" ✅ DOĞRU: Kalite > Miktar. Her gün 1 anlamsız commit yerine, haftada 3-4 anlamlı commit çok daha değerli.

❌ YANLIŞ: "Boş bir dosya commit'leyerek streak tutabilirim" ✅ DOĞRU: Recruiter'lar bunu görür ve negatif izlenim bırakır. Otantik katkı > sahte streak.

❌ YANLIŞ: "Contribution graph yoğun olmalı" ✅ DOĞRU: Graph, tutarlılığı gösterir. Yoğunluk değil, düzenlilik önemlidir.


> ⚠️ **Dikkat:** Contribution graph'ı "oyun" olarak görmeyin. Gerçek anlamda faydalı şeyler yapın: proje geliştirin, dökümantasyon yazın, bug düzeltin, test ekleyin. Sahte commit'ler profilinizi zenginleştirmez, aksine güvenilirliğinizi düşürür.

## İyi GitHub Profili Checklist'i

```markdown
## 🎯 GitHub Profil Optimization Checklist

### Profil Bilgileri
- [ ] Profil fotoğrafı (profesyonel veya logo)
- [ ] Bio (1-2 cümle, ne yaptığınız)
- [ ] Lokasyon
- [ ] Website/portfolio linki
- [ ] LinkedIn linki (social accounts)
- [ ] Twitter/X linki (opsiyonel)
- [ ] Pronouns (opsiyonel, inklüzif)

### Profil README
- [ ] Kısa, etkili tanıtım
- [ ] Teknoloji/beceri listesi
- [ ] Öne çıkan projeler
- [ ] İletişim bilgileri
- [ ] Blog/makale linkleri (varsa)

### Pinned Repos (6 adet)
- [ ] Her biri güçlü README'ye sahip
- [ ] En az 1 projenin canlı demo'su var
- [ ] Farklı beceri alanlarını gösteriyor
- [ ] Son 1 yıl içinde güncellenmiş
- [ ] Star/fork varsa bonus

### Repo Kalitesi
- [ ] README.md (kurulum + kullanım + ekran görüntüsü)
- [ ] Anlamlı commit mesajları
- [ ] .gitignore düzgün
- [ ] LICENSE dosyası var
- [ ] CI/CD yapılandırılmış (badge var)
- [ ] Temiz kod, yorum satırları
- [ ] Test var

### Aktivite
- [ ] Düzenli commit'ler (haftada 3-5 gün)
- [ ] Open source katkıları
- [ ] Issue'lara yanıt verme
- [ ] PR review yapma

Recruiter'ların Baktığı Şeyler

Recruiter GitHub profili nasıl inceler?

1. İlk İzlenim (5 saniye)
   → Profil fotoğrafı, bio, pinned repos

2. Projeler (30 saniye)
   → README var mı? Demo var mı? Ne kadar karmaşık?

3. Kod Kalitesi (2 dakika)
   → En popüler projenin koduna göz atma
   → Temiz mi? Test var mı? Best practice'ler uygulanmış mı?

4. Aktivite (10 saniye)
   → Contribution graph tutarlı mı?
   → Son commit ne zaman?

5. Ekip Çalışması (30 saniye)
   → PR'lar açmış mı? Review yapmış mı?
   → Open source katkıları var mı?

Ne İzlenim Bırakır?

✅ Güçlü profil sinyalleri:
- Canlı demolu projeler
- Temiz, anlamlı commit geçmişi
- Açık kaynak katkılar
- İyi dökümantasyon
- Tutarlı aktivite

❌ Zayıf profil sinyalleri:
- Boş profil (README yok, bio yok)
- Fork koleksiyonu (sadece fork etmiş, katkı yok)
- "Hello World" projeleri
- README'siz projeler
- Anlamsız commit mesajları ("fix", "update", "asdf")
- 1 yıldır inaktif

Portföy Sitesi vs GitHub Profili

İdeal olarak ikisini de kullanın:

GitHub Profili:                      Portföy Sitesi:
┌────────────────────────┐          ┌────────────────────────┐
│ • Kod kalitesini gösterir│          │ • Hikaye anlatır        │
│ • Teknik derinlik       │          │ • Tasarım becerisi      │
│ • Topluluk katılımı     │          │ • Case study'ler        │
│ • Gerçek commit geçmişi │          │ • Blog yazıları         │
│ • Ekip çalışması kanıtı │          │ • Kişisel marka         │
└────────────────────────┘          └────────────────────────┘

GitHub → Teknik yetkinliğin kanıtı (kod ile)
Portföy → Kişisel markanın vitrini (hikaye ile)

GitHub Activity — Nasıl Daha Aktif Görünürsünüz?

Tutarlı Katkı Stratejisi

Recruiter'lar yoğunluk değil tutarlılık arar. Haftada 3-4 gün düzenli aktivite, ayda bir kez 50 commit'ten daha etkilidir:

Etkili aktivite planı:
────────────────────────
Pazartesi:  Yan proje üzerinde çalış (1-2 commit)
Salı:       Open source issue/PR incele
Çarşamba:   Blog yazısı + repo'ya commit
Perşembe:   Ana projede çalışma
Cuma:       Haftanın review'u, README güncelleme
Hafta sonu: Opsiyonel — yeni teknoloji denemeleri

Katkı Türleri

GitHub contribution graph'ı doldurmanın gerçek yolları:

# 1. Kendi projelerinde commit
git commit -m "feat: Add dark mode toggle"

# 2. Open source PR
gh pr create --repo popular-lib --title "fix: handle edge case"

# 3. Issue açma ve yorum
gh issue create --repo tool-repo --title "Bug: crash on empty input"

# 4. Dökümantasyon güncellemesi
# (En kolay ve en değerli katkılardan biri)

# 5. Code review
# PR'ları incele, yapıcı yorum bırak

# 6. GitHub Discussions'a katılım
# Soru sor, cevapla, tartış

GitHub Profile Achievements

GitHub son dönemde profil başarımları (achievements) ekledi:

🏅 Arctic Code Vault Contributor
🦈 Pull Shark (PR merge ettiren)
🌟 Starstruck (repo'ya star alan)
🧠 Galaxy Brain (Discussions'da yardımcı)
👀 YOLO (review olmadan merge)
📦 Package Publisher (paket yayınlayan)

Bu badge'ler profilinize ek görünürlük sağlar.


Proje Kalitesi — Vitrine Ne Koymalı?

Proje Olgunluk Seviyeleri

Pin'leyeceğiniz projeler belirli bir olgunluk seviyesinde olmalı:

Olgunluk Seviyeleri:

❌ Seviye 0: Yarım kalan, README'siz proje
   → Pin'lemeyin

⚠️ Seviye 1: Çalışan ama dökümantasyonsuz
   → README ekleyip seviye 2'ye çıkarın

✅ Seviye 2: README + çalışan kod + kurulum adımları
   → Pin'lenebilir

⭐ Seviye 3: + Test, CI/CD, demo linki
   → İdeal pin projesi

🏆 Seviye 4: + Contributing guide, issue template, badge'ler
   → Açık kaynak hazır, profesyonel seviye

Proje Demo Stratejileri

Demo hosting seçenekleri:
─────────────────────────
Vercel        → Next.js, React (ücretsiz)
Netlify       → Static site, SPA (ücretsiz)
GitHub Pages  → Jekyll, static HTML (ücretsiz)
Railway       → Backend API (ücretsiz tier)
Render        → Full-stack (ücretsiz tier)
Supabase      → Database + auth (ücretsiz tier)

Demo her zaman aktif olsun!
Canlı demo linki, 1000 satır koddan daha etkili.

Gerçek Dünya: Profil İyileştirme Öncesi/Sonrası

ÖNCESİ:
┌─────────────────────────────────────────┐
│ 👤 ahmetyilmaz                          │
│ (Bio yok)                               │
│ (README yok)                            │
│                                         │
│ Pinned:                                 │
│ • hello-world (1 commit)                │
│ • react-tutorial (fork)                 │
│ • test-project (3 commit)               │
│                                         │
│ Contribution: ░░░░░░░░░░░░░░░░ (boş)   │
└─────────────────────────────────────────┘

SONRASI:
┌─────────────────────────────────────────┐
│ 👤 Ahmet Yılmaz                         │
│ Full-Stack Developer | React & Node.js  │
│ 📍 Istanbul | 🌐 ahmetyilmaz.dev       │
│                                         │
│ README:                                 │
│ "Merhaba! 3 yıldır web uygulamaları    │
│  geliştiriyorum. React, TypeScript..."  │
│                                         │
│ Pinned:                                 │
│ ⭐ taskflow (React, Firebase) — Demo ✅  │
│ ⭐ weather-app (Next.js, API) — Demo ✅  │
│ ⭐ npm-package (Node.js) — npm'de ✅     │
│ ⭐ blog (MDX, Tailwind) — Live ✅        │
│ ⭐ open-source-contrib (fork + PR merged)│
│ ⭐ dotfiles (kişisel config)             │
│                                         │
│ Contribution: ▓▓▓▓░▓▓▓▓░▓▓▓▓░▓▓▓ tutarlı│
└─────────────────────────────────────────┘

Özet

Bu derste GitHub profilinizi profesyonel bir portföye dönüştürmeyi öğrendik:

  • 📄 Profil README — kullanıcı adınızla aynı repo, kişisel tanıtım

  • 📌 Pinned repos — 6 slot, en iyi projelerinizi vitrine koyun

  • 📊 Contribution graph — tutarlılık > yoğunluk, sahte commit yapmayın

  • 📝 Proje README — demo, kurulum, ekran görüntüsü, teknoloji listesi

  • 🎯 Recruiter perspektifi — 5 saniye ilk izlenim, kod kalitesi, aktivite

  • 🌐 Portföy sitesi — GitHub + kişisel site birlikte güçlü

  • Checklist — profil bilgileri, README, pinned repos, aktivite


💡 Son İpucu: GitHub profilinizi bir kere düzenleyip unutmayın. Ayda bir gözden geçirin: yeni projeler pin'leyin, eski olanları çıkarın, README'yi güncelleyin. Canlı ve güncel bir profil, terk edilmiş bir profilden çok daha güçlü izlenim bırakır.

Bir sonraki derste farklı Git workflow'larını karşılaştıracağız: Git Flow, GitHub Flow ve Trunk-Based Development.