{"id":29264362,"url":"https://github.com/buraksenyurt/rustwebapp","last_synced_at":"2025-07-04T12:34:35.899Z","repository":{"id":302287111,"uuid":"1009492075","full_name":"buraksenyurt/RustWebApp","owner":"buraksenyurt","description":"Rust programlama dili kullanılarak web uygulaması geliştirme sürecinin tecrübe edildiği repodur.","archived":false,"fork":false,"pushed_at":"2025-07-01T13:22:38.000Z","size":81,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-07-01T15:09:28.878Z","etag":null,"topics":["actix-web","cli","rust","self-learning","todoapp","tokio","web-programming"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/buraksenyurt.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-06-27T08:11:45.000Z","updated_at":"2025-07-01T13:22:41.000Z","dependencies_parsed_at":"2025-07-01T15:19:55.112Z","dependency_job_id":null,"html_url":"https://github.com/buraksenyurt/RustWebApp","commit_stats":null,"previous_names":["buraksenyurt/rustwebapp"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/buraksenyurt/RustWebApp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/buraksenyurt%2FRustWebApp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/buraksenyurt%2FRustWebApp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/buraksenyurt%2FRustWebApp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/buraksenyurt%2FRustWebApp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/buraksenyurt","download_url":"https://codeload.github.com/buraksenyurt/RustWebApp/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/buraksenyurt%2FRustWebApp/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263542605,"owners_count":23477456,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["actix-web","cli","rust","self-learning","todoapp","tokio","web-programming"],"created_at":"2025-07-04T12:34:35.395Z","updated_at":"2025-07-04T12:34:35.894Z","avatar_url":"https://github.com/buraksenyurt.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Rust Web App\n\nRust 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 ](https://www.packtpub.com/en-us/product/rust-web-programming-9781835887769) isimli kitabından yararlanılmaktadır.\n\n## Senaryo\n\nSenaryo 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.\n\n## Proje Yapısı\n\nGünden günde gelişen proje yapısı aşağıdaki ağaç yapısı ile ifade edilebilir.\n\n- **Root**\n  - **Core** (Binary. CLI ile Work Item ekleme, silme, listeleme gibi özellikler de içerir, api desteği sunar)\n  - **Dal** (Library. Data Access Layer görevini üstlenir)\n  - **Server** (Binary. Actix-Web framework'ü kullanan, asenkron operasyonlarda Tokio küfesi ile çalışan web server)\n\n## Day_00\n\nCLI komutları ile Work Item'lar eklenebilmelidir. Ayrıca web server başlatılabilmeli ve localhost:3000 adresine erişildiğinde index sayfası gelmelidir.\n\n```bash\n#core programında\ncargo run -- create -t \"Study 25 minutes for Rust\" -v 5 -s \"completed\"\ncargo run -- create -t \"Develop issue request form\" -v 13 -s \"completed\"\ncargo run -- create -t \"Clean the room\" -v 3 -s \"completed\"\ncargo run -- create -t \"Run for 10 Km in 2 hour\" -v 8 -s \"Ready\"\ncargo run -- create -t \"Read 15 pages from novel\" -v 1 -s \"InProgress\"\n\n#Web Server'ı çalıştırmak için\n# root klasörde\ncargo run -p server\n\n# veya server klasöründeyken\ncargo run\n```\n\n## Day_01\n\nServer ç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.\n\nÖrnek;\n\n![Runtime_01.png](Runtime_01.png)\n\nAyrı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](./Rust%20Web%20App.postman_collection.json) yer almaktadır.\n\n## Day_02\n\nHata 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.\n\nGün sonunda servis bazlı hata mesajlarının shared paketindeki error türü ile yönetilmesi beklenir.\n\n```bash\n# feature bazlı testleri yürütmek için\n# (Örneğin 'actix' feature'ına dahil testleri)\n# aşağıdaki cargo komutu ile ilerlenebilir\ncargo test --features actix\n```\n\n## Day_03\n\nHata 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.\n\n![Runtime_00.png](Runtime_00.png)\n\n![Runtime_02.png](Runtime_02.png)\n\n![Runtime_03.png](Runtime_03.png)\n\n![Runtime_04.png](Runtime_04.png)\n\n![Runtime_05.png](Runtime_05.png)\n\n![Runtime_06.png](Runtime_06.png)\n\n![Runtime_07.png](Runtime_07.png)\n\nAyrıca header bazlı çalışan basit bir token mekanizması da sisteme entegre edilir.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fburaksenyurt%2Frustwebapp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fburaksenyurt%2Frustwebapp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fburaksenyurt%2Frustwebapp/lists"}