GDG Samsun 2025 - Hotwire ile Modern Web'in Geleceği

webender 0 views 43 slides Oct 20, 2025
Slide 1
Slide 1 of 48
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21
Slide 22
22
Slide 23
23
Slide 24
24
Slide 25
25
Slide 26
26
Slide 27
27
Slide 28
28
Slide 29
29
Slide 30
30
Slide 31
31
Slide 32
32
Slide 33
33
Slide 34
34
Slide 35
35
Slide 36
36
Slide 37
37
Slide 38
38
Slide 39
39
Slide 40
40
Slide 41
41
Slide 42
42
Slide 43
43
Slide 44
44
Slide 45
45
Slide 46
46
Slide 47
47
Slide 48
48

About This Presentation

Hotwire ile Modern Web'in Geleceği


Slide Content

Ender Ahmet Yurt @ Samsun GDG 2025
Hotwire ile
Modern Web’in Geleceği

Ender Ahmet Yurt
Software Developer @ Teamtailor
enderahmetyurt.com

Modern Web Akımları

Kullanıcı Deneyimi
Teknolojik Gelişmeler
Geliştirme Pratikleri

Kullanıcı Deneyimi Odaklılık
Hızlı yükleme süreleri
Mobil-first tasarım
Responsive (duyarlı) arayüzler
Kesintisiz etkileşimler

Teknolojik Gelişmeler
Single Page Applications (SPA)
Progressive Web Apps (PWA)
Component-based mimariler
API-first yaklaşımlar
Cloud-native geliştirme

Geliştirme Pratikleri
Version control (Git)
Automated testing
Continuous Integration/Deployment (CI/CD)
Agile/DevOps metodolojileri
Mikroservis mimarileri

Geleneksel vs Modern
Web Geliştirme

SPA’in Yükü

Teknik Karmaşıklık
Geliştirici Deneyimi Sorunları
İş/Proje Etkisi
Kullanıcı Deneyimi

React/Vue/Angular vs.

Önümüzü Açtı
AMA
Karmaşıklığı da Getirdi

Karmaşık Build Süreçleri
Ağır Bundle’lar
Yüksek Öğrenme Eğrisi

2010 Development Flow:
Edit HTML/CSS/JS → F5 → Done ✅
2020 SPA Flow:
Edit → Webpack → Babel → TypeScript → PostCSS →
Minify → Source Maps → Hot Reload → Bundle Analysis
→ Deploy "
Karmaşık Build Süreçleri

Ağır Bundle’lar
2010: Ortalama website 100KB
2024: Ortalama ReactApp 2MB #
Node modules? $
Hello World yazmak için neler yüklüyoruz?

Yüksek Öğrenme Eğrisi
1 Developer = 1 Feature
HTML/CSS/JS
Backend
DB
Deploy
2024: Specialized Teams
Backends
Frontends
DevOps
QA:s
….

Alternatif: Ruby on Rails

Convention over Configuration

HTML over the wire = Server renders, browser displays

“SPA’sız SPA” fikri
HTML üzerinden etkileşim.

SPA: Smooth, Complex, JS Heavy
Hotwire: Smooth, Simple, HTML Heavy

SPA: HTML is Static, JS makes Dynamic
Hotwire: HTML CAN BE Static, JS just
orchestrates

JS fetch JSON -> JS builds HTML -> JS Updates DOM

Server builds HTML -> Browser swaps HTML -> Done

Turbo
Turbo Drive
Turbo Frames
Turbo Streams

Turbo Drive
Traditional Web:
Click link → Browser loads entire page → White flash
Turbo Drive Solution
Click link → AJAX in background → Replace <body> → Smooth!

Turbo Frames
User Clicks “Edit Profile”
Traditional Web:
User clicks "Edit Profile"
→ Entire page reloads
→ Sidebar reloads (unnecessary)
→ Header reloads (unnecessary)
→ Footer reloads (unnecessary)
→ Only profile section needed to change! Waste of bandwidth + Poor UX

Turbo Frames
User Clicks “Edit Profile”
Turbo solution:
User clicks "Edit"
2. Turbo fetches /users/123/edit
3. Server returns full HTML with matching frame:
<turbo-frame id="user_profile">
<form>...<form>
<turbo-frame>
4. Only that frame updates!
5. Rest of page untouched ✅

Turbo Streams
Multiple users on same page
Traditional Web:
Multiple users on same page
→ User A adds a comment
→ User B doesn't see it
→ User B must manually refresh page
→ Poor collaboration experience No real-time updates
without complex WebSocket code!

Turbo Streams
Multiple users on same page
Turbo Streams Solutions:
User A adds comment
→ Saves to DB Server
→ Broadcasts update User B's screen
→ [New comment appears automatically!] Real-time
collaboration! %

Key Difference
Turbo Drive: User navigates → Update
Turbo Frames: User clicks → Partial update
Turbo Streams: Server pushes → Real-time update
All three work together! &

StimulusJS

StimulusJS
React: "JavaScript controls everything"
Stimulus: "HTML is in charge, JavaScript helps"

✅ Lightweight
✅ HTML-first
✅ Progressive enhancement
✅ Easy to learn
✅ Framework agnostic
❌ Full framework
❌ State management solution
❌ Routing system
❌ Virtual DOM
❌ SPA builder
Turbo: Handles 90% of needs (navigation, updates)
Stimulus: Handles 10% (custom interactions)

Hotwire Native: Tek Backend - Çok Yüz
Web uygulamanı bir WebView içinde gösterirsin ama native gibi
hissettirirsin:
•Native navigation (geri butonu, tab bar, vs.)
•Native UI komponentleri (menüler, action sheets)
•Offline destek
•Push notification'lar
•Native özellikler (kamera, GPS, vs.)

Hotwire Native: Tek Backend - Çok Yüz
Web App (Rails/Hotwire)

Hotwire Native Bridge

Native Shell (iOS/Android)
Uygulamanın %95'i web teknolojileri (HTML/CSS/JS)
Sadece shell ve bazı özel özellikler native kod
Tek bir backend, üç platform (web, iOS, Android)

Hotwire Native: Tek Backend - Çok Yüz
Avantajları
•Tek kod tabanı paylaşıyorsun (backend + web)
•Native developer'a daha az ihtiyaç
•Güncellemeler instant (web'i güncelle, app otomatik güncellenir)
•Hızlı prototipleme
Dezavantajları
•Çok karmaşık animasyonlar/UI için uygun değil
•Oyun veya yoğun grafik uygulamalar için değil
•Performance native kadar iyi olmayabilir
•App Store review süreçleri yine var

Modern Web Development
→ Web app (React)
→ iOS app (Swift)
→ Android app (Kotlin)
→ 3 farklı codebase
→ 3 farklı team
→ 3x development cost
→ 3x maintenance
Small team: "We can't afford native apps" (

Traditional Approach
Web Team:
- Build web app with React
- API endpoints
iOS Team:
- Swift/SwiftUI
- Consume same API
- Rebuild all UI logic
Android Team:
- Kotlin/Jetpack Compose
- Consume same API
- Rebuild all UI logic again
Result: Same feature, 3 times work!

Hotwire Native Solution
Rails Backend

Serves HTML

→ Web Browser (shows HTML)
→ iOS App (shows same HTML)
→ Android App (shows same HTML)
Write once, deploy everywhere! %

Modern Web'in Geleceği
Basitliğe Dönüş Trendi )
Server-Side First Yaklaşımın Yaygınlaşması *
Hotwire Ekosistemine Adaptasyon +
Sürdürülebilir Web Geliştirme ,

Ender
Teşekkürler ❤