Kod Tekrarını Azaltma ve Refactoring Planı

Bu doküman, projedeki kod tekrarını azaltmak ve daha sürdürülebilir bir yapı kurmak için izlenecek adımları içerir.

Bölüm 1: HTML Yapısını İyileştirme (Layout & Includes)

` çağrısını içermeli. - [ ] `<header> <div class="sign-logo-wrapper js-scene"> <p class="sign-logo layer" data-depth="0.4">

    </p>
</div>
<!-- <div class="language-switch">
     
    <a href="/blog/" class=" enl"></a> 
    <a href="/works/bugunneyesek/" class=" enl"></a> 
    <a href="/.htaccess" class=" enl"></a> 
    <a href="/works/hypadia-web/" class=" enl"></a> 
    <a href="/works/hypadiapp/" class=" enl"></a> 
    <a href="/" class=" enl"></a> 
    <a href="/works/mindturtle/" class=" enl"></a> 
    <a href="/process/" class=" enl"></a> 
    <a href="/sitemap.xml" class=" enl"></a> 
    <a href="/works/tdk/" class=" enl"></a> 
    <a href="/works/myuniqex/" class=" enl"></a> 
    <a href="/works/vampr/" class=" enl"></a> 
    <a href="/works/yooppi/" class=" enl"></a> 
    <a href="/assets/main.css" class=" enl"></a> 
    <a href="/docs/refactoring_plan/" class=" enl"></a> 
    <a href="/feed.xml" class=" enl"></a> 
    <a href="/about/" class="TR enl">TR</a> 
    <a href="/service/" class="TR enl">TR</a> 
    <a href="/works/" class="TR enl">TR</a> 
</div> -->
<div id="nav-container">
    <div class="toggle-icon">
        <span class="bar"></span>
        <span class="bar"></span>
        <span class="bar"></span>
    </div>
    <!-- /toggle-icon -->
</div>
<!-- /nav-container -->
<nav class="menu-wrapper">

    <ul>
        <li>
            <a href="javascript:void(0);" id="headerToHome"><span class="menu-title">Anasayfa</span>
                <span class="menu-subTitle">Anasayfaya dönmek isteyebilirsiniz.</span></a>
        </li>
        <li>
            <a href="javascript:void(0);" id="headerToAbout"><span class="menu-title">Hakkımda</span>
                <span class="menu-subTitle">Ben kimim? Ne yaparım?</span></a>
        </li>
        <li>
            <a href="javascript:void(0);" id="headerToBlog"><span class="menu-title">Blog</span>
                <span class="menu-subTitle">Yazdıklarımı okumak ister misiniz?</span></a>
        </li>
        <li>
            <a href="mailto:[email protected]" id="headerToContact"><span class="menu-title">İletişim</span>
                <span class="menu-subTitle">Mail göndermek için tıklayın!</span></a>
        </li>
    </ul>
</nav>

</header> ` çağrısını içermeli (Anasayfa hariç). - [ ] Sayfa içeriği için `BACK

ux için rakip analizi, competititor analysis for ux

DESIGN PROCESS

Kullanıcı araştırması & Personalar

Böyle bir e-ticaret sitesi için kullanıcı araştırmasının zorluklarını ve yapacağımız araştırmanın buna değip değmeyeceğini tartıştıktan sonra, internet ortamında yapılmış e-ticaret kullanıcı anketlerini incelemeye ve onlardan elde edeceğimiz bilgileri kullanmaya karar verdik.
E-ticaret müşterilerinin sıkıntılarını, beklentilerini, problemlerini nasıl çözdüklerini anladığımızda uygun personalarımızı oluşturmaya başladık.

ux research, kullanıcı deneyimi araştırması, persona oluşturma
persona nedir?, Kullanıcı deneyiminde persona ne demektir?
Persona nasıl oluşturulur? Kullanıcı Deneyimi

Affinity Mapping

Bulduğumuz tüm bilgileri toplayarak mantıksal bir şekilde analiz edebilmek için bağıntı şeması yöntemini kullandık. Toplanan tüm verileri birbirleri ile ilişkilerine dayanan gruplara ve temalara ayırdık.

Tasarım odaklı düşünme metodolojisinde fikir toplama, analiz ve üretme aşamaları

AFFINITY MAP

Kullanıcı Akışları & Site Haritası

Eksiklerimizin olmaması ve tüm potansiyel durumları gözden kaçırmamak için sayfaları çıkartırken tek bir şablonda kullanıcı akışlarını da çıkartmış olduk.

Site haritası nasıl oluştururlur? Bilgi mimarisinde site haritasının önemi nedir?

USER FLOW & SITEMAP

Wireframe

yooppi ortakları ile birlikte bir moodboard oluşturup nasıl bir tasarım trend’ine sahip olmak istediklerinden emin olmaya çalıştık. Kullanıcı akışları, site haritası ve tüm bulgular eşliğinde sitenin wireframe çalışmasına başladık.

Wireframe nedir? wireframe nasıl oluşturulur?

WIREFRAME

Stil Şablonu

Tasarımda tutarlılık sağlamak adına, oluşturduğumuz wireframe çalışmalar üzerinden bir stil şablonu (Style Guide) yarattık.

Stil şablonu (style guide) nedir? komponent yapısı nasıl oluşturulur.

STYLE GUIDE

Tasarım & Prototip

Tasarımı son haline getirdikten sonra sistemi test edebilmemiz için canlıdan ayırt edilmeyecek bir prototipe ihtiyacımız vardı. Bildiğimiz hiçbir prototip tool’u bunu karşılayamadığı için sistemi html’e dökmeye karar verdik. Sadece masaüstü görünümde çalışır hale getirdikten sonra testlerimize başlayabilirdik.

Yooppi tasarımını ve prototipini görmek için aşağıdaki butona tıklayın!

</section> </main> ` değişkenini eklemeli. - [ ] `` çağrısını içermeli (Anasayfa hariç). - [ ] `_includes/page-transitions.html` çağrısını içermeli. - [ ] `_includes/scripts.html` (Global script'ler için) çağrısını içermeli. - [ ] `_layouts/service.html` içindeki GTM `noscript` etiketi kaldırılacak. - [ ] **Yeni `_includes/page-transitions.html` dosyası oluştur:** Tüm sayfalarda tekrar eden `.page-transition-*` div'lerini bu dosyaya taşı. - [ ] **Yeni `_includes/scripts.html` dosyası oluştur:** Tüm sayfalarda ortak olan script etiketlerini (`TweenMax.js` vb.) bu dosyaya taşı. - [ ] **Mevcut şablonları (`home.html`, `about.html` vb.) güncelle:** - [ ] Tüm şablon dosyalarına `layout: default` YAML parametresini ekle. - [ ] Şablonlardan tekrarlanan HTML iskeletini, global script'leri ve geçiş div'lerini temizle. - [ ] Sayfaya özel script'ler (`parallax.js`, `fullpage.js` vb.) ilgili layout dosyasında bırakılacak. Bu, gereksiz script yüklemelerini önleyerek performansı artırır. ## Bölüm 2: JavaScript Kod Tekrarını Ortadan Kaldırma - [ ] **Yeni `js/global.js` dosyası oluştur:** - [ ] Tüm sayfalarda ortak olan `pageTransition` fonksiyonunu bu dosyaya taşı ve merkezileştir. Bu fonksiyon, farklı animasyon sürelerini yönetebilmek için parametrik bir yapıda (`pageTransition(url, timeout, transitionType)`) olmalıdır. `transitionType` parametresi, sayfanın arka plan rengine göre doğru geçiş animasyonunu (siyah veya beyaz) tetiklemelidir. Beyaz arka planlı sayfalardan geçiş yaparken 'white' tipinde animasyonun, siyah arka planlı sayfalardan geçiş yaparken ise 'black' tipinde animasyonun kullanılmasına dikkat edilmelidir. - [ ] Header, logo ve menü gibi ortak elemanların event listener'larını bu dosyaya taşı. - [ ] **`_includes/scripts.html` dosyasını güncelle:** Oluşturulan `js/global.js` dosyasını diğer ortak script'lerle birlikte bu dosyadan çağır. Script'lerin doğru sırada yüklenmesi (`TweenMax` gibi kütüphanelerin, onları kullanan script'lerden önce gelmesi) için `_layouts/default.html` dosyasında `scripts.html` include'u `` etiketinin hemen sonrasına yerleştirilmelidir. - [ ] **Sayfaya özel JS dosyalarını (`main.js`, `about.js` vb.) temizle:** - [ ] `global.js`'e taşınan tüm ortak fonksiyonları ve event listener'ları bu dosyalardan sil. - [ ] Bu dosyalarda sadece o sayfaya özgü işlevleri bırak. --- ## Etkilenecek Dosyaların Listesi Bu refactoring sürecinde aşağıdaki dosyalarda değişiklik yapılacak, bazıları silinecek ve yenileri oluşturulacaktır. ### Silinecek Dosyalar - `_layouts/deafult.html` ### Oluşturulacak Yeni Dosyalar - `_layouts/default.html` - `_includes/page-transitions.html` - `_includes/scripts.html` - `js/global.js` ### Değiştirilecek Dosyalar - `_layouts/about.html` - `_layouts/blog.html` - `_layouts/home.html` - `_layouts/portfolio-detail.html` - `_layouts/post.html` - `_layouts/process.html` - `_layouts/service.html` - `_layouts/works.html` - `js/about.js` - `js/blog.js` - `js/detail-page.js` - `js/main.js` - `js/process.js` - `js/services.js` - `js/work.js` --- ## Önemli Not: Markdown Dosyaları ve Front Matter Bu refactoring süreci, `.md` uzantılı içerik dosyalarının (`hakkimda.md`, `blog.md` vb.) içeriğini veya front matter (--- ile başlayan bölüm) kısımlarını **değiştirmeyecektir**. Bu dosyalar olduğu gibi korunacaktır. Yapılan değişiklikler, bu dosyaların hangi HTML şablonu (layout) içinde render edileceğini düzenlemeye yöneliktir ve dolaylı olarak tüm siteyi etkileyecektir. ### Eklenecek Front Matter Değişkeni Sayfaya özel CSS ve JS hedeflemesini korumak için, her `.md` dosyasına `page_id` adında bir front matter değişkeni eklenecektir. Örneğin, `hakkimda.md` dosyasına `page_id: about` eklenecektir. Bu `page_id`, ana şablondaki `` etiketine ID olarak atanacaktır (``). ### Değiştirilecek Dosyalar (Markdown) - `index.md` - `hakkimda.md` - `blog.md` - `works.md` - `service.md` - `process.md`