Skip to content

n11-TalentHub-Java-Bootcamp/n11-talenthub-bootcamp-graduation-project-byofficial

Repository files navigation

HAR Logo HAR Logo

n11-talenthub-bootcamp

Graduation-Project Loan System


Sample signal

📖 İçerik

İçerik
  1. ➤ Proje Hakkında
  2. ➤ Önemli Not ve Kredi Skoru Hesapla
  3. ➤ Kullanılan Teknolojiler
  4. ➤ Gereklilikler
  5. ➤ Kurulum
  6. ➤ Klasör Yapısı
  7. ➤ Endpointler
  8. ➤ SMS Gönderimi
  9. ➤ Swagger Dokümantasyon Görüntüsü
  10. ➤ Frontend Ekran Görüntüsü
  11. ➤ Unit Test Ekran Görüntüsü
  12. ➤ Loglama Mekanizması Ekran Görüntüsü
  13. ➤ Docker İmajları Ekran Görüntüsü
  14. ➤ n11 TalentHub ve Patika Hakkında
  15. ➤ İletişim ve Bilgiler

-----------------------------------------------------

Backend Projesi Production: https://com-n11-backend.herokuapp.com/

Frontend Projesi Production: https://com-n11-frontend.herokuapp.com/

Backend Swagger: https://com-n11-backend.herokuapp.com/swagger-ui.html

-----------------------------------------------------

đź“ť Proje Konusu

Proje Konusu: Bir kredi başvuru sistemi için, kredi başvuru isteklerini alıp ilgili kriterlere göre müşteriye kredi sonucunu dönen servisin içinde yer alacak restful bir uygulamanın Spring Boot framework kullanılarak yazılması ve isteğe bağlı olarak önyüzünün yazılması

Gereksinimler:
Backend:
●Kimlik numarası, ad-soyad, aylık gelir, telefon bilgileri, doğum tarihi ve teminat(opsiyonel) kimlik numarasıyla daha önceden yazıldığı varsayılan kredi skoru servisine gidilir ve ilgili kişiye ait kredi skoru alınarak aşağıdaki kurallara göre kullanıcıya kredi sonucu gösterilir. (Onay veya Red olarak iki seçenek olabilir.)

Frontend (opsiyonel):
●Kimlik numarası, ad-soyad, aylık gelir, telefon bilgileri, doğum tarihi ve teminat(opsiyonel) bilgileri form ile alınır ve kullanıcıya kredi sonucu ve kredi limiti gösterilir. ●(JavaScript, HTML, CSS en basit şekilde yeterlidir, isteğe bağlı olarak front-end framework kullanılabilir. Arayüz tasarımı ve deneyimi size bırakılmıştır.)

-----------------------------------------------------

📝 Önemli Not ve Kredi Skoru Hesaplama Algoritması

Projeyi test ederken mutlaka 11 haneli gerçek kimlik numarası girmelisiniz. Kredi skoru hesaplaması için girilen kimlik numarasının son rakamı ile kredi skoru hesaplanır. Tüm T.C Kimlik numarasındaki son basamak 0,2,4,6,8 rakamlarından oluşmaktadır. Aşağıda örnek kredi skoru hesaplama servisini görebilirsiniz.

  public BigDecimal getCreditScore(String kimlikNumarasi) {
   

    BigDecimal krediSkoru = new BigDecimal(0L);
    int sonBasamak = kimlikNumarasi.charAt(kimlikNumarasi.length() - 1) - '0';

    switch (sonBasamak) {
        case 0:
            krediSkoru = BigDecimal.valueOf(1000L);
            break;
        case 2:
            krediSkoru = BigDecimal.valueOf(400L);
            break;
        case 4:
            krediSkoru = BigDecimal.valueOf(800L);
            break;
        case 6:
            krediSkoru = BigDecimal.valueOf(650L);
            break;
        case 8:
            krediSkoru = BigDecimal.valueOf(2000L);
            break;
        default:
            krediSkoru = BigDecimal.valueOf(0L);
            break;
    }


    return creditScore;
}

Not: Geçerli ve rastgele kimlik numarası almak isterseniz fake-national-id-generate servisini çalıştırabilirsiniz.

http://localhost:8084/api/generate-id

-----------------------------------------------------

🍴 Kullanılan Teknolojiler

made-with-java
Made withJupyter

Projede kullanılan diğer teknolojiler:

  • Java 11
  • Maven
  • Spring Boot Actuator
  • Spring Boot MongoDB
  • Spring Boot Validation
  • Spring Boot Web
  • Swagger API
  • Lombok
  • MapStruct
  • React.js
  • Npm
  • Docker

-----------------------------------------------------

🍴 Gereklilikler

Projede kullanılan diğer teknolojiler:

-----------------------------------------------------

🔨 Kurulum

Projeyi lokal suncunuza kurmak için 2 yol vardır. Github deposundan çekebilirsiniz veya docker ile çalıştırabilirsiniz. Proje kurulumuna başlamadan önce bazı önemli bilgilere ihtiyacınız var.

-----------------------------------------------------

🔨 Ön Bilgiler

Proje de kullanılan portlar:

  1. Backend Port: 8084
  2. Frontend Port: 9090
  3. MongoDb Port: 27017

Lokalinizde mongoDb kuruluysa veritabanı ayarlarını application-default.yml dosyasından yapmalısınız. Eğer mongoDb kurulu değilse lütfen docker-compose ile kurulum gerçekleştirin.

-----------------------------------------------------

🔨 Git ile Kurulum

1. Öncelikle projeyi GitHub deposundan klonlayın.

git clone https://github.com/n11-TalentHub-Java-Bootcamp/n11-talenthub-bootcamp-graduation-project-byofficial.git

2.Maven ile bağımlılıkların yümlenmesini bekleyin.
3.a Lokalinizde MongoDb varsa aşağıdaki ayarları güncelleyin.

./src/main/resources/application-default.yml

Yukarıdaki dosyanın 12-20 satırlarını aşağıdaki gibi düzenleyin ve kendi mongoDb veritabanı ayarlarınızı yapılandırın.(Girintiler önemlidir. Aşağıdaki bilgileri yazarken kıvırcık parantezleri kaldırın)

  data:
    mongodb:
        port: {port_numaranız}
        host: {host_bilgisi}
        authentication-database: admin
        username: {kullanıcı_adı}
        database:{veritabanı_adı}
        password: {parola}
        auto-index-creation: true

3.b Eğer lokal mongoDb sunucunuz yoksa 12-20 satırları aşağıdaki gibi düzenleyin ve uzak sunucuya bağlanın. Eğer bu yöntemi tercih ederseniz mongoDb sunucu cloud üzerinde tutulacaktır.

  data:
    mongodb:

        uri: mongodb+srv://javamongop:[email protected]/dbSpringProject?retryWrites=true&w=majority
     
        auto-index-creation: true

3.c Eğer isterseniz docker-compose ile mongodb imajını çalıştırabilirsiniz. Bunun için sadece terminali açıp projenin olduğu kök dizine gitmeniz gerekmektedir.

cd n11-talenthub-bootcamp-graduation-project-byofficial

Daha sonra aşağıdaki komutu çalıştırın ve projeyi docker ortamında çalıştırın.

docker-compose up

4.Frontend sisteminin çalışabilmesi için npm ile paket kurulumu yapılmalıdır. Bunun npm ile kurulum bölümüne bakabilirsiniz.

-----------------------------------------------------

🔨 Docker ile Kurulum

1.Projeyi docker ile çalıştırmak için öncelikle terminal ekranını açın ve projenin kök klasörüne gidin.

cd n11-talenthub-bootcamp-graduation-project-byofficial

2.Kök klasöre gittikten sonra aşağıdaki komutu yazın ve docker-compose işleminin tamamlanmasını bekleyin.

docker-compose up

3.Docker kurulumu tamamlandıktan sonra backend servisleri varsayılan olarak 8084 portunda, frontend servisleri ise 9090 portunda çalışacaktır. Frontend kurulumu tamamlanması için lokalinizde nodejs ve npm yüklü olmalıdır!

-----------------------------------------------------

🔨 Npm ile Frontend Kurulum

1.Frontend projesinin çalışabilmesi için npm ile kurulumu gerekmektedir. Bunun için öncelikle nodejs ve npm paket yöneticisini yüklemelisiniz.

./src/frontend/

2.Yukarıdaki dizine terminal ekranını kullanarak gidin.

npm install

Yukarıdaki komutu çalıştırarak tüm npm bağımlılıklarının yüklenmesini bekleyin.

3.Modül kurulumundan sonra aşağıdaki komut ile projeyi başlatın.

npm start

Proje başladıktan sonra varsayılan çalışma portu 3000 dir. Frontend projesinin çalışabilmesi için backend projesinin ve veritabanı sunucunun çalışır olması gerekmektedir.

4.Eğer backend projesinin varsayılan 8084 çalışma portunu değiştirdiyseniz lütfen frontend projesinin portunu da güncelleyin. Frontend projesi port ayarı için aşağıdaki dosya yoluna gidin.

./src/frontend/src/constants/index.js

Yukarıdaki dosyadan api servisi için linki güncelleyin.

-----------------------------------------------------

🌵 Klasör Yapısı

code
.
│
├── src
│   ├── frontend
│   │   ├── public
│   │   │   ├── assets
│   │   │   └── bootstrap
│   │   │   └── plugins
│   │   ├── src
│   │       ├── component
│   │       └── constants
│   │       └── pages
│   │
│   ├── main
│   │   ├── java
│   │   │   ├── com.n11.graduationproject
│   │   │       ├── config
│   │   │       ├── controller
│   │   │       ├── dto
│   │   │       │   └── request
│   │   │       │   └── response
│   │   │       ├── exception
│   │   │           └── customer
│   │   │           └── loan
│   │   │       ├── mapper
│   │   │       ├── model
│   │   │           └── enums
│   │   │       ├── repository
│   │   │       ├── service
│   │   │           └── impl
│   │   ├── resources
│   │       ├── application-default.yml
│   │
│   ├── test
│

-----------------------------------------------------

đź’ľ Endpointler

Projede 2 controller bulunmaktadır. Aşağıda iki controller ile ilgili gönderilen istek ve karşılıklarını inceleyebilirsiniz.

### Genel Endpoint Yapısı

End point inceleyin:

http://localhost:8084/api/{controller}/{action}?[filters]&[find]&[limit]&[...]

Ă–zellikler:

  1. Tüm endpointler, controller yazıldıktan sonra /api/ çağrısı ile devam eder.
  2. {controller}çağrısı backend içerisinde bulunan controller sınıfının çoğul(s) adıdır. örneğin customers veya loan-results.
  3. {action} controller sınıfına verilen metotlardır. Örneğin {nationalId} metodu ile T.C numarası parametre verilir ve müşteri bilgileri getirilir.
  4. [filters] çeşitli filtreler ile GET sorgusu yapılabilir. Örneğin parametre olarak doğum tarihi ve T.C numarası verilip kredi sonucu öğrenilebilir.

Customer Endpoint

Müşteri sınıfı ile ilgili tüm endpointler ve açıklamalar.

Method URL Açıklama
GET /api/customers Tüm müşterileri geri döner.
POST /api/customers Yeni bir müşteri oluşturur. Yalnızca müşteri oluşturur.
GET /api/customers/12341324123 T.C Kimlik numarası #12341324123 olan müşteri sistemde varsa bilgilerini getirir.
PUT /api/customers/12341324123 T.C Kimlik numarası #12341324123 olan müşteri sistemde varsa bilgilerini günceller.
DELETE /api/customers/12341324123 Kimlik numarası #12341324123 olan müşteri sistemde varsa bilgilerini siler.
GET /api/users?active=true&sort=username&direction=asc&search=nodes Search for "nodes" in active users, sorted by username ascendingly.

Loan-Result Endpoint

Kredi-Başvuru sınıfı ile ilgili tüm endpointler ve açıklamalar.

Method URL Açıklama
POST /api/loan-request/new-customer Yeni müşteri bilgileri alır ve önce bu müşteriyi sisteme kaydeder. Daha sonra kredi başvurusu yapıp sonucunu geriye döner.
POST /api/loan-request/12341324123 T.C Kimlik numarası #12341324123 olan müşteri sistemde varsa bu müşteriye ait bilgileri kullanarak kredi sonucu hesaplar.
GET /api/loan-request/q?nationalId=12341324123&dateOfBirth=1990-02-28 T.C Kimlik numarası #12341324123 ve doğum tarihi #28 Şubat 1990 olan müşteri sistemde varsa kredi sonucunu getirir. Burada doğum tarihi YYYY-MM-DD standartlarında yazılmalıdır.

Fake National Id Genarator Endpoint

Geçerli rastgele kimlik numarası üretme servisi ve açıklamalar.

Method URL Açıklama
GET /api/generate-id Geçerli ve rastgele kimlik numarası üretir.

Swagger ile Ä°Ĺźlem

Yukarıdaki endpoinleri swagger aracılığı ile test edebilirsiniz. https://localhost:8084/swagger-ui.html

-----------------------------------------------------

🎯 SMS Gönderimi

Projede sms gönderimi yerine log mesajı verilmiştir. Örnek SMS log mesajı

Table 3 and 4


-----------------------------------------------------

🎯 Swagger Dokümantasyon Ekran Görüntüsü

Swagger ile tüm backend api testlerini gerçekleştirebilirsiniz. İlgili dokümantasyona ulaşmak için proje yolu:

http://localhost:8084/swagger-ui.html

Table 3 and 4


Table 3 and 4


Table 3 and 4


Table 3 and 4


Table 3 and 4


Table 3 and 4


-----------------------------------------------------

🎯 Frontend Ekran Görüntüsü

Projenin belirli frontend kısımları React ile yazılmıştır. Docker ile çalışıyorsanız frontend adresi:

http://localhost:9090/

Eğer npm ile kendiniz derleyip çalıştırıyorsanız frontend adresi:

http://localhost:3000/

Örnek ekran görüntüleri

Table 3 and 4


Table 3 and 4


-----------------------------------------------------

🎯 Unit Test Ekran Görüntüsü

Projede ayrıntılı log çalışmaları yapılmıştır.

Table 3 and 4


-----------------------------------------------------

🎯 Loglama Ekran Görüntüsü

Projede ayrıntılı log çalışmaları yapılmıştır.

Table 3 and 4


-----------------------------------------------------

🎯 Docker İmajları Ekran Görüntüsü

Proje yolunda docker-compose.yml dosyasını build ettiğinizde 3 imaj çalışmaktadır. Sırasyıla; mongoDb, frontend projesi ve backend projesidir.

Table 3 and 4


-----------------------------------------------------

📜 n11 TalentHub ve Patika Hakkında

🎓 Proje n11 ve Patika iş birliği ile geliştirilen 143. n11 TalentHub Java Bootcamp için hazırlanmıştır. Patika İlan Link

🎓 Patika.dev
      Email: [email protected]
      Web: https://www.patika.dev/hakkimizda

🎓 n11 TalentHub
      Email: [email protected]
      Web: TalentHub Hakkında


đź“ś Ä°letiĹźim ve Bilgiler

✤ Mail
✤ LinkedIn
✤ GitHub
✤ YouTube
✤ Udemy
✤ Python Projeler ve Popüler Kütüphaneler Kitabı

About

n11-talenthub-bootcamp-graduation-project-byofficial created by GitHub Classroom

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published