Skip to content

Kitap koleksiyonu yönetim uygulaması. .NET 10 Web API, Angular 20, EF Core ve MSSQL ile geliştirildi. CRUD operasyonları, kategori yönetimi, okuma durumu takibi içerir.(Book collection management app. Built with .NET 10 Web API, Angular 20, EF Core and MSSQL. Includes CRUD operations, category management, and reading status tracking.)

License

Notifications You must be signed in to change notification settings

erenmulkoglu/book-collection

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Kitap Koleksiyonum

Kişisel kitap koleksiyonunuzu yönetmek için geliştirilmiş modern, full-stack web uygulaması.

.NET Angular MSSQL

Özellikler

  • Kitap ekleme, düzenleme ve silme (CRUD)
  • Kategorilere göre kitap yönetimi
  • Okuma durumu takibi (Okunacak, Okunuyor, Okundu)
  • 5 yıldızlı değerlendirme sistemi
  • Okuma durumuna göre filtreleme
  • Responsive tasarım
  • Modern ve kullanıcı dostu arayüz

Teknolojiler

Backend

  • .NET 10 - Web API
  • Entity Framework Core 10 - ORM
  • MSSQL Server - Veritabanı
  • Swagger - API Dokümantasyonu

Frontend

  • Angular 20 - Standalone Components
  • TypeScript - Tip güvenli JavaScript
  • RxJS - Reactive Programming
  • CSS3 - Modern styling

Mimari & Pattern'ler

  • RESTful API
  • DTO (Data Transfer Object) Pattern
  • Repository Pattern
  • Dependency Injection
  • CORS yapılandırması

Kurulum

Gereksinimler

Backend Kurulumu

  1. Projeyi klonlayın:
cd KitapKoleksiyonum.API
  1. Bağımlılıkları yükleyin:
dotnet restore
  1. Connection String'i düzenleyin:

appsettings.json dosyasında SQL Server bağlantı ayarlarını yapın:

{
  "ConnectionStrings": {
    "DefaultConnection": "Server=localhost;Database=KitapKoleksiyonumDB;Trusted_Connection=True;TrustServerCertificate=True;MultipleActiveResultSets=true"
  }
}
  1. Veritabanını oluşturun:
dotnet ef migrations add InitialCreate
dotnet ef database update
  1. Uygulamayı çalıştırın:
dotnet run

Backend: http://localhost:5116
Swagger: http://localhost:5116/swagger


Frontend Kurulumu

  1. Projeye gidin:
cd KitapKoleksiyonum.UI
  1. Bağımlılıkları yükleyin:
npm install
  1. Uygulamayı çalıştırın:
ng serve

Frontend: http://localhost:4200

Kullanım

Kitap Ekleme

  1. Ana sayfada "+ Yeni Kitap Ekle" butonuna tıklayın
  2. Formu doldurun (Kitap Adı, Yazar, Kategori zorunludur)
  3. "Kaydet" butonuna tıklayın

Kitap Düzenleme

  1. Kitap kartındaki "Düzenle" butonuna tıklayın
  2. İstediğiniz alanları güncelleyin
  3. "Güncelle" butonuna tıklayın

Kitap Silme

  1. Kitap kartındaki "Sil" butonuna tıklayın
  2. Onay dialogunda "Tamam" seçin

Filtreleme

  • Tümü: Tüm kitapları gösterir
  • Okunacak: Henüz okunmamış kitaplar
  • Okunuyor: Şu anda okunan kitaplar
  • Okundu: Tamamlanan kitaplar

API Endpoints

Books

Method Endpoint Açıklama
GET /api/books Tüm kitapları listele
GET /api/books/{id} ID'ye göre kitap getir
POST /api/books Yeni kitap ekle
PUT /api/books/{id} Kitap güncelle
DELETE /api/books/{id} Kitap sil

Categories

Method Endpoint Açıklama
GET /api/categories Tüm kategorileri listele
GET /api/categories/{id} ID'ye göre kategori getir
POST /api/categories Yeni kategori ekle
PUT /api/categories/{id} Kategori güncelle
DELETE /api/categories/{id} Kategori sil

Örnek Request (POST /api/books)

{
  "title": "1984",
  "author": "George Orwell",
  "isbn": "978-0451524935",
  "pageCount": 328,
  "publishDate": "1949-06-08T00:00:00.000Z",
  "status": 2,
  "rating": 5,
  "notes": "Distopik bir başyapıt",
  "categoryId": 1
}

Örnek Response

{
  "id": 1,
  "title": "1984",
  "author": "George Orwell",
  "isbn": "978-0451524935",
  "pageCount": 328,
  "publishDate": "1949-06-08T00:00:00",
  "status": 2,
  "rating": 5,
  "notes": "Distopik bir başyapıt",
  "categoryId": 1,
  "categoryName": "Roman",
  "createdAt": "2024-11-19T10:30:00"
}

Proje Yapısı

KitapKoleksiyonum/
├── KitapKoleksiyonum.API/          # Backend (.NET 10)
│   ├── Controllers/                # API Controllers
│   │   ├── BooksController.cs
│   │   └── CategoriesController.cs
│   ├── Data/                       # Database Context
│   │   ├── AppDbContext.cs
│   │   └── AppDbContextFactory.cs
│   ├── DTOs/                       # Data Transfer Objects
│   │   └── BookDto.cs
│   ├── Models/                     # Entity Models
│   │   ├── Book.cs
│   │   └── Category.cs
│   ├── Migrations/                 # EF Core Migrations
│   ├── Program.cs                  # Entry Point
│   └── appsettings.json           # Configuration
│
└── KitapKoleksiyonum.UI/           # Frontend (Angular 20)
    ├── src/
    │   ├── app/
    │   │   ├── components/         # Angular Components
    │   │   │   ├── book-list/
    │   │   │   ├── book-form/
    │   │   │   └── category-list/
    │   │   ├── models/             # TypeScript Interfaces
    │   │   │   ├── book.model.ts
    │   │   │   └── category.model.ts
    │   │   ├── services/           # API Services
    │   │   │   ├── book.service.ts
    │   │   │   └── category.service.ts
    │   │   ├── app.component.ts
    │   │   ├── app.routes.ts
    │   │   └── app.config.ts
    │   ├── styles.css              # Global Styles
    │   └── index.html
    └── package.json

Ekran Görüntüleri

Ana Sayfa

image image image image

Kitap Ekleme/Düzenleme Formu

image

Swagger API Dokümantasyonu

image

Veritabanı Şeması

Books Tablosu

Sütun Tip Açıklama
Id int Primary Key
Title nvarchar(200) Kitap adı
Author nvarchar(150) Yazar
ISBN nvarchar(20) ISBN numarası
PageCount int Sayfa sayısı
PublishDate datetime2 Yayın tarihi
Status int Okuma durumu (0-2)
Rating int Değerlendirme (1-5)
Notes nvarchar(1000) Notlar
CategoryId int Foreign Key
CreatedAt datetime2 Oluşturma tarihi

Categories Tablosu

Sütun Tip Açıklama
Id int Primary Key
Name nvarchar(100) Kategori adı
Description nvarchar(500) Açıklama

CORS Yapılandırması

Backend, frontend'den gelen isteklere izin vermek için CORS yapılandırması içerir:

builder.Services.AddCors(options =>
{
    options.AddPolicy("AllowAngular", policy =>
    {
        policy.WithOrigins("http://localhost:4200")
              .AllowAnyHeader()
              .AllowAnyMethod();
    });
});

Sorun Giderme

Backend çalışmıyor

  • SQL Server'ın çalıştığından emin olun
  • Connection string'i kontrol edin
  • Migration'ları çalıştırın: dotnet ef database update

Frontend çalışmıyor

  • Node.js ve Angular CLI'ın yüklü olduğundan emin olun
  • npm install komutunu çalıştırın
  • Backend'in çalıştığından emin olun

CORS hatası alıyorum

  • Backend'de CORS policy'nin doğru yapılandırıldığından emin olun
  • Frontend URL'inin http://localhost:4200 olduğundan emin olun

Geliştirme İçin Notlar

  • Backend varsayılan olarak port 5116 üzerinde çalışır
  • Frontend varsayılan olarak port 4200 üzerinde çalışır
  • Swagger UI: http://localhost:5116/swagger
  • Hot reload her iki tarafta da aktif

Lisans

Bu proje tarafımca eğitim amaçlı sıfırdan inşa edilip geliştirilmiştir.

Geliştirici

Eren Mülkoğlu - Senior Software Engineer

Teşekkürler

Projeyi beğendiyseniz yıldız vermeyi unutmayın!

About

Kitap koleksiyonu yönetim uygulaması. .NET 10 Web API, Angular 20, EF Core ve MSSQL ile geliştirildi. CRUD operasyonları, kategori yönetimi, okuma durumu takibi içerir.(Book collection management app. Built with .NET 10 Web API, Angular 20, EF Core and MSSQL. Includes CRUD operations, category management, and reading status tracking.)

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published