{"id":24910438,"url":"https://github.com/fatmabirel/autogo-backend","last_synced_at":"2026-02-09T04:33:22.850Z","repository":{"id":254963141,"uuid":"848101769","full_name":"Fatmabirel/AutoGO-Backend","owner":"Fatmabirel","description":"Bu proje, kullanıcıların kolaylıkla araç kiralayabileceği, çeşitli özellikler sunan kapsamlı bir araç kiralama sistemidir. Projemiz, araç kiralama sürecini daha hızlı ve güvenli bir deneyim haline  getirmeyi hedefler.","archived":false,"fork":false,"pushed_at":"2024-10-09T18:39:02.000Z","size":624,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-14T12:58:45.602Z","etag":null,"topics":["charp","dotnet","fluentvalidation","jwt","jwt-authentication","rentacar","rental-management","rentalsystem"],"latest_commit_sha":null,"homepage":"","language":"C#","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/Fatmabirel.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}},"created_at":"2024-08-27T06:13:49.000Z","updated_at":"2024-10-18T17:25:41.000Z","dependencies_parsed_at":null,"dependency_job_id":"b649070a-8a8c-4c47-ad1c-78dfa69638a0","html_url":"https://github.com/Fatmabirel/AutoGO-Backend","commit_stats":null,"previous_names":["fatmabirel/rentacar-backend","fatmabirel/autogo-backend"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Fatmabirel/AutoGO-Backend","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Fatmabirel%2FAutoGO-Backend","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Fatmabirel%2FAutoGO-Backend/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Fatmabirel%2FAutoGO-Backend/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Fatmabirel%2FAutoGO-Backend/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Fatmabirel","download_url":"https://codeload.github.com/Fatmabirel/AutoGO-Backend/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Fatmabirel%2FAutoGO-Backend/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259466398,"owners_count":22862286,"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":["charp","dotnet","fluentvalidation","jwt","jwt-authentication","rentacar","rental-management","rentalsystem"],"created_at":"2025-02-02T03:35:55.140Z","updated_at":"2026-02-09T04:33:22.799Z","avatar_url":"https://github.com/Fatmabirel.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# AutoGO: Araç Kiralama Sistemi 🚗\n\nBu proje, kullanıcıların kolaylıkla araç kiralayabileceği, çeşitli özellikler sunan kapsamlı bir araç kiralama sistemidir.\n\n\u003cp\u003e📌Projenin frontend kısmına \u003ca href=https://github.com/Fatmabirel/RentACar-Frontend\u003eburadan\u003c/a\u003e ulaşabilirsiniz.\u003c/p\u003e\n\n#### GEREKSİNİMLER 🛠\n- [x] Web projesi: \n  ![Asp.NET Web API](https://img.shields.io/badge/asp.net%20web%20api-%231BA3E8.svg?style=for-the-badge\u0026logo=dotnet\u0026logoColor=white)\n- [x] Veri tabanı: \n  ![MsSQL Server](https://img.shields.io/badge/mssql%20server-%23CC2927.svg?style=for-the-badge\u0026logo=microsoftsqlserver\u0026logoColor=white)\n- [x] Dökümantasyon için:\n  ![Postman](https://img.shields.io/badge/postman-%23FF6C37.svg?style=for-the-badge\u0026logo=postman\u0026logoColor=white)\n  ![Swagger](https://img.shields.io/badge/swagger-%2385EA2D.svg?style=for-the-badge\u0026logo=swagger\u0026logoColor=black)\n\n#### PROJEDE KULLANILAN TEKNOLOJİLER VE KÜTÜPHANELER 🛠️\n\u003cp\u003e\n  \u003cimg alt=\"C#\" src=\"https://img.shields.io/badge/c%23-%23239120.svg?style=for-the-badge\u0026logo=csharp\u0026logoColor=white\" /\u003e\n  \u003cimg alt=\".NET\" src=\"https://img.shields.io/badge/.NET-5C2D91?style=for-the-badge\u0026logo=.net\u0026logoColor=white\" /\u003e\n  \u003cimg alt=\"Entity Framework\" src=\"https://img.shields.io/badge/entity%20framework-%2358B9C9.svg?style=for-the-badge\u0026logo=dotnet\u0026logoColor=white\" /\u003e\n  \u003cimg alt=\"FluentValidation\" src=\"https://img.shields.io/badge/fluentvalidation-%23563D7C.svg?style=for-the-badge\u0026logo=generic\u0026logoColor=white\" /\u003e\n  \u003cimg alt=\"JWT\" src=\"https://img.shields.io/badge/jwt-%23FFA500.svg?style=for-the-badge\u0026logo=generic\u0026logoColor=white\" /\u003e\n\u003c/p\u003e\n\n\n#### 📫 NASIL BİR PROJE OLUŞTURDUK?\n\u003cp\u003eProjemiz, kullanıcıların kolaylıkla araç kiralayabileceği, çeşitli özellikler sunan kapsamlı bir araç kiralama sistemidir. Bu proje, kullanıcı deneyimini ön planda tutarak, araç kiralama sürecini hem hızlı hem de verimli hale getirmeyi amaçlamaktadır.\u003c/p\u003e\n\n## PROJE DETAYLARI📝\n\nProjemiz, .Net ve Angular teknolojilerini içeren modern bir web uygulamasıdır. Projemizde MsSQL kullanılmış olup, dökümantasyon için Swagger entegrasyonu sağlanmıştır.\n\nProjemizde veritabanı işlemleri için **Entity Framework** kullanılmış ve **Database First** yaklaşımı benimsenmiştir.\n\nEk olarak, projede şu önemli kütüphaneler ve araçlar kullanılmaktadır:\n- **FluentValidation**: Veri doğrulama süreçlerini yönetmek için.\n- **JWT (JSON Web Token)**: Kimlik doğrulama ve yetkilendirme işlemlerini güvenli bir şekilde gerçekleştirmek için.\n\nBu sayede, projemiz yüksek performanslı, kolay yönetilebilir ve güvenli bir mimariye sahip olmuştur.\n\n🎯Projede veri tabanı bağlantı yolu RentACarContext içinde yazılmıştır. \n\n```c#\n  protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)\n{\n    optionsBuilder.UseSqlServer(\"Server=DESKTOP-Q270QVE\\\\SQLEXPRESS;Database=ReCap;Trusted_Connection=True;TrustServerCertificate=True;\");\n}\n```\n\n🔒 Projemizin katmanları aşağıda gösterilmiştir:\n\u003c/br\u003e\n\u003cimg width=\"400\" alt=\"image\" src=\"https://github.com/user-attachments/assets/2c216b69-7c98-43da-819a-9468e82879a7\"\u003e\n\u003c/br\u003e\n\n-----------------------------------------------------------------------\n## 🌱ENTITY KATMANI\n\n✎ Entityler Entity katmanında oluşturulmuştur. Aşağıda örnek olarak Brand Entity dosyasını görebilirsiniz. Her class için gereksiz kod tekrarını önlemek adına base class olan Entity sınıfından miras alır. Diğer entityleri projenin içerisinde inceleyebilirsiniz.\n\nOluşturulan Entityler\n\n- ⚡Brand, marka bilgilerini tutar.\n- ⚡Car, araba bilgilerini tutar.\n- ⚡CarImage, araba resimleri bilgilerini tutar.\n- ⚡Color, renk bilgilerini tutar.\n- ⚡Customer, müşteri bilgilerini tutar.\n- ⚡OperationClaim, rol bilgilerini tutar.\n- ⚡Rental, araba kiralama bilgilerini tutar.\n- ⚡User, kullanıcı bilgilerini tutar.\n- ⚡UserOperationClaim, kullanıcı rol bilgilerini tutar.\n```c#\n public class Brand : IEntity\n {\n     public int Id { get; set; }\n     public string Name { get; set; }\n }\n```\n-----------------------------------------------------------------------\n## 🌱DATA ACCESS KATMANI\n\nData Access katmanı, uygulamanın veri tabanı ile olan etkileşimini düzenleyerek, veri saklama işlemlerinin güvenli ve etkili bir şekilde yönetilmesini sağlayan katmandır.\n\n\u003cimg width=\"400\" alt=\"image\" src=\"https://github.com/user-attachments/assets/bd79cfb2-98d9-4b96-8d79-8c523f5a6890\"\u003e\n\u003c/br\u003e\n\u003cp\u003e✎ Data Access katmanında, oluşturulan Entity sınıflarını veri tabanı modellerine karşılık gelecek olan tabloların oluşturulması için RentACarContext sınıfı bulunmaktadır. Ayrıca bu katmanda veri tabanı işlemlerini gerçekleştirmek için oluşturulan repository sınıfları bulunmaktadır.\u003c/p\u003e\n\n📌 Aşağıda RentACarContext sınıfı örnek olarak verilmiştir. Diğer sınıfları projeden inceleyebilirsiniz.\n\n```c#\npublic class RentACarContext : DbContext\n{\n    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)\n    {\n        optionsBuilder.UseSqlServer(\"Server=DESKTOP-Q270QVE\\\\SQLEXPRESS;Database=ReCap;Trusted_Connection=True;TrustServerCertificate=True;\");\n    }\n    protected override void OnModelCreating(ModelBuilder modelBuilder)\n    {\n        modelBuilder.Entity\u003cCustomer\u003e()\n            .HasKey(c =\u003e c.Id);\n    }\n\n    public DbSet\u003cCar\u003e Cars { get; set; }\n    public DbSet\u003cBrand\u003e Brands { get; set; }\n    public DbSet\u003cColor\u003e Colors { get; set; }\n    public DbSet\u003cUser\u003e Users { get; set; }\n    public DbSet\u003cCustomer\u003e Customers { get; set; }\n    public DbSet\u003cRental\u003e Rentals { get; set; }\n    public DbSet\u003cCarImage\u003e CarImages { get; set; }\n    public DbSet\u003cOperationClaim\u003e OperationClaims { get; set; }\n    public DbSet\u003cUserOperationClaim\u003e UserOperationClaims { get; set; }\n}\n```\n-----------------------------------------------------------------------\n## 🌱BUSINESS KATMANI\n\n\u003cimg width=\"400\" alt=\"image\" src=\"https://github.com/user-attachments/assets/b9759e6d-70eb-4a51-9e3e-d38cb4f122e3\"\u003e\n\u003c/br\u003e\n\u003cp\u003e \n\u003c/br\u003e🌕 Business katmanında, uygulamanın iş kodları, iş kuralları ve doğrulama (validation) işlemleri yapılmaktadır. Ayrıca, iş kurallarını uygulayan ve veri doğrulamasını gerçekleştiren sınıflar burada bulunur. \u003c/br\u003e \u003c/p\u003e\n\u003cp\u003e📃 Aşağıda Fluent Validation kütüphanesi kullanılarak Brand Entity için oluşturulan validator sınıfı örnek olarak verilmiştir. Diğer sınıfları projeden inceleyebilirsiniz.\u003c/p\u003e\n\n```c#\npublic class BrandValidator : AbstractValidator\u003cBrand\u003e\n{\n    public BrandValidator()\n    {\n        RuleFor(b=\u003eb.Name).NotEmpty();\n        RuleFor(b=\u003eb.Name).MinimumLength(2);\n    }\n}\n```\n🔎 Böylece daha Controller tarafında istek atılmadan requestlerin istenilen kurallara uygun olup olmadığı kontrol edilir.\n\n-----------------------------------------------------------------------\n## 🌱WEBAPI KATMANI\n\n⚓ Bu katmanda işlemlerin gerçekleştirildiği Controller sınıfları oluşturulur. Aşağıda BrandsController dosyasının kodları örnek olarak gösterilmiştir.\n\n```c#\n[Route(\"api/[controller]\")]\n[ApiController]\npublic class BrandsController : ControllerBase\n{\n    IBrandService _brandService;\n    public BrandsController(IBrandService brandService)\n    {\n        _brandService = brandService;\n    }\n\n    [HttpGet(\"GetAll\")]\n    public IActionResult GetAll()\n    {\n       var result = _brandService.GetAll();\n        if(result.Success)\n        {\n            return Ok(result);\n        }\n        return BadRequest(result);\n    }\n\n    [HttpGet(\"GetById\")]\n    public IActionResult GetById(int id)\n    {\n        var result = _brandService.GetById(id);\n        if (result.Success)\n        {\n            return Ok(result);\n        }\n        return BadRequest(result);\n    }\n\n    [HttpPost(\"Add\")]\n    public IActionResult Add(Brand brand)\n    {\n        var result = _brandService.Add(brand);\n        if (result.Success)\n        {\n            return Ok(result);\n        }\n        return BadRequest(result);\n    }\n\n    [HttpPost(\"Update\")]\n    public IActionResult Update(Brand brand)\n    {\n        var result = _brandService.Update(brand);\n        if (result.Success)\n        {\n            return Ok(result);\n        }\n        return BadRequest(result);\n    }\n\n    [HttpPost(\"Delete\")]\n    public IActionResult Delete(Brand brand)\n    {\n        var result = _brandService.Delete(brand);\n        if (result.Success)\n        {\n            return Ok(result);\n        }\n        return BadRequest(result);\n    }\n}\n   //diğer metotlara proje kodlarından ulaşabilirsiniz.\n```\n\nProjede 9 adet Controller sınıfı bulunmaktadır. Proje isterlerine göre eklenen Controller sınıfları ise şunlardır;\n- ⚡ AuthController, yetkilendirme işlemlerinin gerçekleştirildiği sınıftır.\n- ⚡ BrandsController, marka işlemlerinin gerçekleştirildiği sınıftır.\n- ⚡ CarsController, araba işlemlerinin gerçekleştirildiği sınıftır.\n- ⚡ CarImagesController, araba resimleri işlemlerinin gerçekleştirildiği sınıftır.\n- ⚡ ColorsController, renk işlemlerinin gerçekleştirildiği sınıftır.\n- ⚡ CustomersController, müşteri işlemlerinin gerçekleştirildiği sınıftır.\n- ⚡ RentalsController, araba kiralama işlemlerinin gerçekleştirildiği sınıftır.\n- ⚡ UsersController, kullanıcı işlemlerinin gerçekleştirildiği sınıftır.\n\nGörüşürüz 🎉\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffatmabirel%2Fautogo-backend","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffatmabirel%2Fautogo-backend","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffatmabirel%2Fautogo-backend/lists"}