{"id":16428454,"url":"https://github.com/buraksenyurt/modulithdemo","last_synced_at":"2025-03-21T04:30:58.593Z","repository":{"id":255335438,"uuid":"849265862","full_name":"buraksenyurt/ModulithDemo","owner":"buraksenyurt","description":"Modüler Monolitik yaklaşıma göre geliştirilen örnek bir .Net 8 çözümüdür.","archived":false,"fork":false,"pushed_at":"2024-09-18T19:47:44.000Z","size":82,"stargazers_count":9,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-10-12T08:16:49.436Z","etag":null,"topics":["csharp","dotnet","modular-monolith-architecture"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","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":"LICENSE","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}},"created_at":"2024-08-29T09:32:50.000Z","updated_at":"2024-09-18T19:47:47.000Z","dependencies_parsed_at":"2024-09-11T11:51:39.134Z","dependency_job_id":null,"html_url":"https://github.com/buraksenyurt/ModulithDemo","commit_stats":null,"previous_names":["buraksenyurt/modulithdemo"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/buraksenyurt%2FModulithDemo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/buraksenyurt%2FModulithDemo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/buraksenyurt%2FModulithDemo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/buraksenyurt%2FModulithDemo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/buraksenyurt","download_url":"https://codeload.github.com/buraksenyurt/ModulithDemo/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":221811374,"owners_count":16884305,"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":["csharp","dotnet","modular-monolith-architecture"],"created_at":"2024-10-11T08:16:54.733Z","updated_at":"2024-10-28T09:19:29.020Z","avatar_url":"https://github.com/buraksenyurt.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Modulith Demo (Modüler Monolitik Sistem Çözümü)\n\nDeğerli Mehmet Özkaya'nın [Modüler Monolitik](https://www.udemy.com/share/10bAjh3@TzRn0z5EmmTiGTezg3R7UGoGGzqQy7DRdMVOhq9nzqrVxooF7SIIXZ7QMiEZLXHuHg==/) sistemler üzerine hazırlamış olduğu harika Udemy kursundan yararlanarak inşa etmeye çalıştığım çözümün yer aldığı repodur.\n\n## Geliştirme Ortamı\n\nÇalışmayı aşağıdaki özelliklere sahip platformda icra etmekteyim.\n\n| Özellik   | Açıklama                      |\n|-----------|-------------------------------|\n| OS | Ubuntu 22.04 LTS |\n| CPU | Intel® Core™ i7 2.80GHz × 8 |\n| RAM | 32 Gb |\n| IDE | Visual Studio Code |\n| Framework | .Net 8.0 |\n\n## Çözümde Kullanılan Platformlar\n\nÇözümde kullanılan ve Docker üzerinden yürütülen servisler ise şöyle. Makinede başka bir çözüm içinde benzer servisleri kullandığımdan standart port numaralarını container dışından erişim için 1 artırarak kullandım. Örneğin Postgresql veritabanı için standart port 5432 ancak bir başka çözümde bunu kullandığım için 5433 olarak ayarladım. Elbette docker container içerisinde kendi network ortamında 5432 üzerinden erişiliyor.\n\n| **Sistem**     | **Servis**                       |  **Görev**                           | **Adres**  |\n|----------------|----------------------------------|--------------------------------------|------------|\n| DOCKER COMPOSE | Postgresql | Veritabanı | localhost:5433 |\n| DOCKER COMPOSE | PgAdmin | Veritabanı UI | localhost:5051 |\n| DOCKER COMPOSE | RabbitMQ | Async Event Queue | localhost:5673 |\n| DOCKER COMPOSE | Redis | Distributed Key Value Store | localhost:6380 |\n\nPg-admin ayarları ise şöyle.\n\n- **Hostname :** postgres\n- **Port     :** 5432\n- **Username :** johndoe\n- **Password :** somew0rds\n- **Database :** RentAGameDb\n\n## Entity Framework Migration\n\nEF migration işlemleri için aşağıdaki komutlar kullanılabilir. Tabii bu işlemleri yapmadan önce Postgresql bağlantı bilgisini içeren Api projesinin çalışır olduğundan emin olmalıyız. Komutumuzu RentAGame.Catalog klasöründe çalıştırabiliriz.\n\n```shell\n# Eğer yoksa gerekli ef aracı yüklenir\ndotnet tool install --global dotnet-ef\n\n# Örneğin InitialCreate isimli migration paketinin oluşturulması\ndotnet ef migrations add InitialCreate --startup-project ../../../Gateway/RentAGame.Api\n\n# Bu son pakete göre gerekli db operasyonlarının işletilmesi\ndotnet ef database update --startup-project ../../../Gateway/RentAGame.Api\n```\n\n## Web Api Endpoint\n\nRest Api tarafında kullanılacak endpoint adresleri aşağıdaki gibidir.\n\n| HTTP Metot | URI | Açıklama |\n|-----------|-----------------|------------------|\n| GET | /games | Tüm oyunlar listesi |\n| GET | /games/{id} | Belli bir Id değerine sahip oyun bilgisi |\n| POST | /games/genre | Belli türlere ait oyunların listesi (genre listesi request body ile yollanır) |\n| GET | /games/price | Belli bir fiyat aralığındaki oyunları çekmek için (Fiyat listesi request body ile yollanır) |\n| POST | /games | Yeni bir oyun eklemek için |\n| PUT | /games/{id} | Oyun bilgilerini güncellemek için |\n| DELETE | /games/{id} | Belli bir oyunu silmek için |\n\nÖrnek isteklere ait Postman Collection için [bu dosyayı](./Rent%20A%20Game%20Modulith%20Adventure.postman_collection.json) kullanabilirsiniz.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fburaksenyurt%2Fmodulithdemo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fburaksenyurt%2Fmodulithdemo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fburaksenyurt%2Fmodulithdemo/lists"}