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 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.
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)
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 runServer ç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;
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.
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 actixHata 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.
Ayrıca header bazlı çalışan basit bir token mekanizması da sisteme entegre edilir.
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.








