İçerik
- ➤ Proje Hakkında
- ➤ Önemli Not ve Kredi Skoru Hesapla
- ➤ Kullanılan Teknolojiler
- ➤ Gereklilikler
- ➤ Kurulum
- ➤ Klasör Yapısı
- ➤ Endpointler
- ➤ SMS Gönderimi
- ➤ Swagger Dokümantasyon Görüntüsü
- ➤ Frontend Ekran Görüntüsü
- ➤ Unit Test Ekran Görüntüsü
- ➤ Loglama Mekanizması Ekran Görüntüsü
- ➤ Docker İmajları Ekran Görüntüsü
- ➤ n11 TalentHub ve Patika Hakkında
- ➤ İ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:
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.)
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
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
Projede kullanılan diğer teknolojiler:
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.
Proje de kullanılan portlar:
- Backend Port: 8084
- Frontend Port: 9090
- 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.
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.
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!
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.
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
│
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:
- Tüm endpointler, controller yazıldıktan sonra
/api/
çağrısı ile devam eder. {controller}
çağrısı backend içerisinde bulunan controller sınıfının çoğul(s) adıdır. örneğincustomers
veyaloan-results
.{action}
controller sınıfına verilen metotlardır. Örneğin{nationalId}
metodu ile T.C numarası parametre verilir ve müşteri bilgileri getirilir.[filters]
çeşitli filtreler ile GET sorgusu yapılabilir. Örneğin parametre olarak doğum tarihi ve T.C numarası verilip kredi sonucu öğrenilebilir.
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. |
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. |
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. |
Yukarıdaki endpoinleri swagger aracılığı ile test edebilirsiniz. https://localhost:8084/swagger-ui.html
Projede sms gönderimi yerine log mesajı verilmiştir. Örnek SMS log mesajı
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
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
Projede ayrıntılı log çalışmaları yapılmıştır.
Projede ayrıntılı log çalışmaları yapılmıştır.
Proje yolunda docker-compose.yml dosyasını build ettiğinizde 3 imaj çalışmaktadır. Sırasyıla; mongoDb, frontend projesi ve backend projesidir.
🎓 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
✤ Mail
✤ LinkedIn
✤ GitHub
✤ YouTube
✤ Udemy
✤ Python Projeler ve Popüler Kütüphaneler Kitabı