/bitirmeprojesi-ismaildemircann

bitirmeprojesi-ismaildemircann created by GitHub Classroom

Primary LanguageJava

SOFTTECH SPRING BOOTCAMP GRADUATION PROJECT

Requirements

For building and running the application you need:

Running the application locally

First of all, dml and ddl scripts should be run after cloning the project.Afterwards, the relevant packages should be installed by maven install. After these procedures you can run application.

There are several ways to run a Spring Boot application on your local machine. One way is to execute the main method in the BitirmeprojesiIsmaildemircannApplication class from your IDE.

Alternatively you can use the Spring Boot Maven plugin like so:

mvn spring-boot:run

Client App

I have developed a simple react project to show that the web service application is working correctly. I have shown the user and auth operations as well as the product listing function with simple designs.

For building and running the application you need: Node v16.10.0

In order to run the client application, the packages related to the "npm install" command must be installed first.

In the project directory, you can run:

npm run start Runs the app in the development mode. Open http://localhost:3000 to view it in your browser.

Structures Used In The Project

Backend

  • H2 database was created for the integration test
  • Mockito and Junit were used for testing.
  • Jwt was used for security.
  • Save, update and delete methods are saved to the file with logback.xml and reflection.
  • With triggers, data is added to the relevant log table after updating and deleting operations.
  • After adding the product, a deletion link was given using Hateoas.
  • Generic base model implemented in for services and entities.
  • General exception handling structing was created.

Test

  • Unit
  • Integration

87% classes, 70% covered in entire project.

Runing Tests

  • Before running tests, make sure the resource package is shown as test resources under test resources in the project structure.
          └───src
                └──main
                └──test
                     └──resources
  

Frontend

  • Redux structure installed. Tested using for variable product list .
  • Material-UI library were used for desings.
  • Axios library were using for requests.

File Structure

* Backend
│   pom.xml
│  
├───resources 
│       application.properties # Change port and database settings
│  
└───src                                                     
    └───main  
        ├───java  
        │   └───com  
        
* Frontend
│   package.json
│  
└───src                                                     
    └───index.js    # You can change url

Api

To make a request in Swagger, do not forget to register and then log in and be authenticed with the incoming token.

Image

You can test the api from Swagger.

Image

Demo

Image

Bitirme Projesi

Projenin Konusu: Bir marketteki ürünlerin satış fiyatlarına göre son fiyatlarını belirleyen servisin Spring Boot Framework kullanılarak yazılması ve isteğe bağlı olarak önyüzünün yazılması.

Gereksinimler:

Backend:

  • Kullanıcıdan kullanıcı adı, şifre, isim, soy isim bilgilerini alarak sisteme kayıt yapılır.
  • Sisteme kayıtlı kullanıcılar market ürünlerinin veri girişini yapabilir.
  • Ürün türlerine göre KDV oranları değişiklik göstermektedir. Bu oranlar aşağıdaki tabloda belirtilmiştir. Zaman zaman KDV oranları değişiklik gösterebilmektedir.

Image

  • Ürün için veri girişi yapacak kullanıcı; ürünün adı, ürünün türü ve vergisiz satış fiyatı alanlarını doldurur. Her bir ürün için KDV Tutarı ve ürünün son fiyatı da hesaplanarak sisteme kaydedilir.

Kurallar ve gereksinimler:

  • Sisteme yeni kullanıcı tanımlanabilir, güncellenebilir ve silinebilir.
  • Sisteme yeni ürünler tanımlanabilir, güncellenebilir ve silinebilir.
  • Ürünlerin fiyatları güncellenebilir.
  • KDV oranları değiştiğinde sistemdeki ürünlere de bu değişiklik yansıtılmalıdır. Herhangi bir hata durumunda tüm işlemler geri alınmalıdır.
  • Tüm ürünler listelenebilmelidir.
  • Ürün türlerine göre ürünler listelenebilmelidir.
  • Belirli bir fiyat aralığındaki ürünler listelenebilmelidir.
  • Ürün türlerine göre aşağıdaki gibi detay veri içeren bir bilgilendirme alınabilmelidir.

Image

Validasyonlar:

  • Aynı kullanıcı adı ile kullanıcı tanımı yapılamaz.
  • Kullanıcı girişi kullanıcı adı & şifre kombinasyonu ile yapılır.
  • Ürün türü, fiyatı, adı gibi alanlar boş olamaz.
  • Ürün fiyatı sıfır ya da negatif olamaz.
  • KDV oranı negatif olamaz.

Authentication:

  • Güvenli endpointler kullanınız. (jwt, bearer vs. )

Response:

  • Başarılı ve başarısız responselar için modeller tanımlayın ve bunları kullanın.

Dökümantasyon:

  • Open API Specification (Swagger tercih sebebi)

Exception Handling:

  • Hatalı işlemler için doğru hata kodlarının dönüldüğünden emin olunuz.

Test:

  • Unit ve integration testleri yazınız.