Skip to content

Rust programlama dili kullanılarak web uygulaması geliştirme sürecinin tecrübe edildiği repodur.

Notifications You must be signed in to change notification settings

buraksenyurt/RustWebApp

Repository files navigation

Rust Web App

Rust programlama dili kullanılarak web uygulaması geliştirme sürecinin tecrübe edildiği repodur. Kaynak olarak Packt yayınlarınn Rust Web Programming: A hands-on guide to Rust for modern web development, with microservices and nanoservices , Third Edition isimli kitabından yararlanılmaktadır.

Senaryo

Senaryo da planlı işler ele alınır. Her bir planlı işin kısa bir başlığı, Scrum yaklaşımındakine benzer Fibonacci temelli büyüklüğü (1,2,3,5,8,13 gibi) ve durum bilgisi (Ready, In-Progress, Completed) vardır.

Proje Yapısı

Günden günde gelişen proje yapısı aşağıdaki ağaç yapısı ile ifade edilebilir.

  • Root
    • Core (Binary. CLI ile Work Item ekleme, silme, listeleme gibi özellikler de içerir, api desteği sunar)
    • Dal (Library. Data Access Layer görevini üstlenir)
    • Server (Binary. Actix-Web framework'ü kullanan, asenkron operasyonlarda Tokio küfesi ile çalışan web server)

Day_00

CLI komutları ile Work Item'lar eklenebilmelidir. Ayrıca web server başlatılabilmeli ve localhost:3000 adresine erişildiğinde index sayfası gelmelidir.

#core programında
cargo run -- create -t "Study 25 minutes for Rust" -v 5 -s "completed"
cargo run -- create -t "Develop issue request form" -v 13 -s "completed"
cargo run -- create -t "Clean the room" -v 3 -s "completed"
cargo run -- create -t "Run for 10 Km in 2 hour" -v 8 -s "Ready"
cargo run -- create -t "Read 15 pages from novel" -v 1 -s "InProgress"

#Web Server'ı çalıştırmak için
# root klasörde
cargo run -p server

# veya server klasöründeyken
cargo run

Day_01

Server çalıştırıldıktan sonra index sayfasına ulaşıldığında, CLI uygulamasında örnek olarak eklenmiş work item listeleri statü bilgisine göre ayrılmış şekilde listelenebilmelidir.

Örnek;

Runtime_01.png

Ayrıca yeni bir kayıt eklemek için POST ve key bazlı GET işlemleri yapılabilmelidir. API tarafı için gerekli örnek request'ler Postman Collection dosyasında yer almaktadır.

Day_02

Hata nesnelerinin tüm modüllerde ortak yönetimini kolaylaştırmak için genel bir modülün yazılması ele alınır. Bu amaçla planner içerisindeki rust paketleri tarafından da ortak kullanılabilecek shared isimli üst paket kullanılmaktadır.

Gün sonunda servis bazlı hata mesajlarının shared paketindeki error türü ile yönetilmesi beklenir.

# feature bazlı testleri yürütmek için
# (Örneğin 'actix' feature'ına dahil testleri)
# aşağıdaki cargo komutu ile ilerlenebilir
cargo test --features actix

Day_03

Hata nesnelerinin modüllere uyarlanmasını takiben server api tarafındaki tüm CRUD (Create, Read, Update, Delete) operasyonlarının başarılı şekilde icra edilmesi beklenir.

Runtime_00.png

Runtime_02.png

Runtime_03.png

Runtime_04.png

Runtime_05.png

Runtime_06.png

Runtime_07.png

Ayrıca header bazlı çalışan basit bir token mekanizması da sisteme entegre edilir.

Day_04

Kitap web uygulaması tarafında React ve ESBuild kullanarak ilerlemekte. Ben frontend framework olarak Vue ve build aracı olarak da vite (Build, Bundler ve Dev Server aracı) kullanıyorum.

# Uygulamayı çalıştırmak için önce dist klasörüne build edilen içeriğin çıkması gerekiyor.
# web klasöründeyken aşağıdaki komut işletilir
yarn build

# Vue uygulaması backend api ile konuşur. Bu nedenle öncelikle server uygulamasının ayakta olması gerekir
# planner/server klasöründeyken
cargo run

# Sonrasında ingress klasöründeyken rust uygulaması başlatılır.
cargo run

İlk versiyonda localhost:8001 adresine gidildiğinde App.vue içeriğinin gösterilmesi beklenir.

Runtime_08.png

About

Rust programlama dili kullanılarak web uygulaması geliştirme sürecinin tecrübe edildiği repodur.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published