Proje: Okul Platform · Hub: Okul Platform — Architecture
Frontend modernizasyon stratejisi: mevcut frontend/ (jQuery+Bootstrap desktop) ve mobile/ (Framework7) iskeletlerine dokunmadan, yeni feature’lar için izole responsive/ parent klasörü altında Tailwind v4 + Alpine.js tek layout. Parça parça geçiş yapıyoruz.
Dizin yapısı
resources/views/responsive/
├── layouts/
│ └── master.blade.php # Tek layout (~47 satır — partial'ları dahil eder)
├── partials/ # Layout parçaları (her sayfa aynı)
│ ├── tracking-head/body/footer.blade.php
│ ├── seo-head.blade.php # JSON-LD + OG + Twitter Cards
│ ├── inline-overrides.blade.php # CSS overrides (focus, checkbox, reduced-motion)
│ ├── form-helpers.blade.php # Phone mask, email validator JS (build-agnostik)
│ ├── global-js-vars.blade.php
│ ├── header/footer/login-modal.blade.php # university branch'tan kopya
├── components/ # Yeniden kullanılabilir UI blokları
│ ├── README.md # Component sözleşmeleri + örnekler
│ ├── breadcrumb / trust-strip
│ ├── wizard-progress / wizard-nav / resume-notice
│ ├── filter-bar / loading-skeleton / school-card
│ └── sticky-lead-bar / lead-form-modal
└── profiling/ # Feature sub-modülü (test + finder)
├── test/index.blade.php
├── finder/index.blade.php
├── result/index.blade.php
└── finder/result.blade.php
Build artifact’leri
resources/assets/styles/responsive.css→public/assets/styles/responsive.css(Tailwind v4 postcss)resources/assets/scripts/profiling/*→public/assets/scripts/profiling/profiling.js(Alpine bundle)resources/assets/scripts/gaEvents.js→public/assets/scripts/profiling/ga-events.js(standalone GA helper)
Stratejik kararlar
| Karar | Neden |
|---|---|
responsive/ parent, profiling/ sub | Feature izolasyonu + yeni modüller (lead, landing) aynı altyapıyı kullanabilir |
| Tek master.blade.php | Her sayfa aynı tracking + SEO + layout — tekrar yok |
Component’ler components/ altında, feature-agnostic | Profiling dışı sayfalar (ileride lead magnet, landing) aynı bloklari kullanacak |
tw: prefix | main.min.css ile çakışma yok; sadece responsive sayfalarda aktif |
| gaEvents.js standalone bundle | main.min.js (jQuery+Bootstrap 130KB) yüklemeden GA helper erişimi |
Yeni sayfa eklerken
@extends('responsive.layouts.master')- Alpine root:
<section x-data="yeniComponent()" x-cloak> - Alpine component:
resources/assets/scripts/profiling/components/yeni.js+alpine-app.js’te register - Gerekli component’leri
@include('responsive.components.X', [...])ile çek - Route + Controller:
ProfilingControllerpattern’ı örnek alınır
Related
- 2026-04-15-responsive-component-contract — component sözleşme kuralları
- 2026-04-15-banner-config-pattern — DB-driven feature toggle pattern’ı
- 2026-04-15-profiling-event-taxonomy — profiling GA event haritası