Skip to content

JhossephG/IRSystem

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

IRSystem

The Project

This project is an Internal Registration System designed initially to register any kind of product for any type of store. The system provides functionalities for the system admin or store owner to view comprehensive details of the store, such as:

  • All the details of products currently and previously in the store.
  • Managing the store balance.
  • Managing all interested clients.
  • Managing employee data and information.
  • Setting and tracking expenses.
  • And many other functions.

Technologies Used:

  • Backend: Java
  • API: Spring Boot, JPA Repository and RESTful services
  • Database: MySQL
  • Frontend: React
  • Cloud Application/deploy: AWS
  • Version Control: Git and GitHub
  • Build and Configuration Management: Gradle

License

This project are licensed under the GNU GPL v3.0.

Copyright

Β© Jhosseph Pathryck de Souza Gonzalez. All rights reserved.

Figma link w/ workflow and etc

https://www.figma.com/board/f2Y97vUhj2KYLVTs059Fxr/Untitled?node-id=921-517&t=a1ghsiciH1sNn11u-0

Environment Variables

The following environment variables need to be set for the application to run properly:

  • DATABASE_URL: The JDBC URL of the database.
  • DATABASE_USERNAME: The database username.
  • DATABASE_PASSWORD: The database password.

Example:

export DATABASE_URL="jdbc:mysql://localhost:3306/car_store"
export DATABASE_USERNAME="root"
export DATABASE_PASSWORD="your_secure_password"

Project Structure

IRSystem$
β”œβ”€β”€ build
β”‚Β Β  β”œβ”€β”€ bootJarMainClassName
β”‚Β Β  β”œβ”€β”€ bootRunMainClassName
β”‚Β Β  β”œβ”€β”€ bootScripts
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ IRSystem
β”‚Β Β  β”‚Β Β  └── IRSystem.bat
β”‚Β Β  β”œβ”€β”€ classes
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ java
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ main
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  └── com
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β      └── jhogo
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β          └── irsystem
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β              β”œβ”€β”€ Application.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β              β”œβ”€β”€ common
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β              β”‚Β Β  └── Person.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β              β”œβ”€β”€ config
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β              β”‚Β Β  └── DataSourceConfig.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β              β”œβ”€β”€ controller
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β              β”‚Β Β  β”œβ”€β”€ EmployeeController.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β              β”‚Β Β  β”œβ”€β”€ FinanceController.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β              β”‚Β Β  β”œβ”€β”€ StoreController.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β              β”‚Β Β  β”œβ”€β”€ UserController.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β              β”‚Β Β  └── VehicleController.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β              β”œβ”€β”€ dto
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β              β”‚Β Β  β”œβ”€β”€ EmployeeDTO.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β              β”‚Β Β  β”œβ”€β”€ FinanceDTO.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β              β”‚Β Β  β”œβ”€β”€ StoreDTO.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β              β”‚Β Β  β”œβ”€β”€ UserDTO.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β              β”‚Β Β  └── VehicleDTO.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β              β”œβ”€β”€ model
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β              β”‚Β Β  β”œβ”€β”€ Employee.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β              β”‚Β Β  β”œβ”€β”€ Finance.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β              β”‚Β Β  β”œβ”€β”€ Store.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β              β”‚Β Β  β”œβ”€β”€ User.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β              β”‚Β Β  └── Vehicle.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β              β”œβ”€β”€ repository
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β              β”‚Β Β  β”œβ”€β”€ EmployeeDAO.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β              β”‚Β Β  β”œβ”€β”€ FinanceDAO.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β              β”‚Β Β  β”œβ”€β”€ StoreDAO.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β              β”‚Β Β  β”œβ”€β”€ UserDAO.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β              β”‚Β Β  └── VehicleDAO.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β              └── service
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β                  β”œβ”€β”€ EmployeeService.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β                  β”œβ”€β”€ FinanceService.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β                  β”œβ”€β”€ StoreService.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β                  β”œβ”€β”€ UserService.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β                  └── VehicleService.class
β”‚Β Β  β”‚Β Β  β”‚Β Β  └── test
β”‚Β Β  β”‚Β Β  β”‚Β Β      └── com
β”‚Β Β  β”‚Β Β  β”‚Β Β          └── jhogo
β”‚Β Β  β”‚Β Β  β”‚Β Β              └── irsystem
β”‚Β Β  β”‚Β Β  β”‚Β Β                  β”œβ”€β”€ store
β”‚Β Β  β”‚Β Β  β”‚Β Β                  β”‚Β Β  └── StoreServiceTest.class
β”‚Β Β  β”‚Β Β  β”‚Β Β                  └── vehicle
β”‚Β Β  β”‚Β Β  β”‚Β Β                      β”œβ”€β”€ VehicleDAOIntegrationTest.class
β”‚Β Β  β”‚Β Β  β”‚Β Β                      └── VehicleServiceTest.class
β”‚Β Β  β”‚Β Β  └── kotlin
β”‚Β Β  β”‚Β Β      β”œβ”€β”€ main
β”‚Β Β  β”‚Β Β      β”‚Β Β  └── META-INF
β”‚Β Β  β”‚Β Β      β”‚Β Β      └── IRSystem.kotlin_module
β”‚Β Β  β”‚Β Β      └── test
β”‚Β Β  β”œβ”€β”€ distributions
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ IRSystem-0.0.1-SNAPSHOT.tar
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ IRSystem-0.0.1-SNAPSHOT.zip
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ IRSystem-boot-0.0.1-SNAPSHOT.tar
β”‚Β Β  β”‚Β Β  └── IRSystem-boot-0.0.1-SNAPSHOT.zip
β”‚Β Β  β”œβ”€β”€ generated
β”‚Β Β  β”‚Β Β  └── sources
β”‚Β Β  β”‚Β Β      β”œβ”€β”€ annotationProcessor
β”‚Β Β  β”‚Β Β      β”‚Β Β  └── java
β”‚Β Β  β”‚Β Β      β”‚Β Β      β”œβ”€β”€ main
β”‚Β Β  β”‚Β Β      β”‚Β Β      └── test
β”‚Β Β  β”‚Β Β      └── headers
β”‚Β Β  β”‚Β Β          └── java
β”‚Β Β  β”‚Β Β              β”œβ”€β”€ main
β”‚Β Β  β”‚Β Β              └── test
β”‚Β Β  β”œβ”€β”€ kotlin
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ compileKotlin
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ cacheable
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ caches-jvm
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ inputs
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ source-to-output.tab
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ source-to-output.tab_i
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ source-to-output.tab_i.len
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ source-to-output.tab.keystream
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ source-to-output.tab.keystream.len
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ source-to-output.tab.len
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  └── source-to-output.tab.values.at
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ jvm
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  └── kotlin
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β      β”œβ”€β”€ class-attributes.tab
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β      β”œβ”€β”€ class-attributes.tab_i
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β      β”œβ”€β”€ class-attributes.tab_i.len
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β      β”œβ”€β”€ class-attributes.tab.keystream
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β      β”œβ”€β”€ class-attributes.tab.keystream.len
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β      β”œβ”€β”€ class-attributes.tab.len
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β      β”œβ”€β”€ class-attributes.tab.values.at
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β      β”œβ”€β”€ class-fq-name-to-source.tab
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β      β”œβ”€β”€ class-fq-name-to-source.tab_i
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β      β”œβ”€β”€ class-fq-name-to-source.tab_i.len
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β      β”œβ”€β”€ class-fq-name-to-source.tab.keystream
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β      β”œβ”€β”€ class-fq-name-to-source.tab.keystream.len
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β      β”œβ”€β”€ class-fq-name-to-source.tab.len
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β      β”œβ”€β”€ class-fq-name-to-source.tab.values.at
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β      β”œβ”€β”€ java-sources-proto-map.tab
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β      β”œβ”€β”€ java-sources-proto-map.tab_i
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β      β”œβ”€β”€ java-sources-proto-map.tab_i.len
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β      β”œβ”€β”€ java-sources-proto-map.tab.keystream
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β      β”œβ”€β”€ java-sources-proto-map.tab.keystream.len
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β      β”œβ”€β”€ java-sources-proto-map.tab.len
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β      β”œβ”€β”€ java-sources-proto-map.tab.values.at
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β      β”œβ”€β”€ proto.tab
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β      β”œβ”€β”€ proto.tab_i
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β      β”œβ”€β”€ proto.tab_i.len
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β      β”œβ”€β”€ proto.tab.keystream
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β      β”œβ”€β”€ proto.tab.keystream.len
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β      β”œβ”€β”€ proto.tab.len
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β      β”œβ”€β”€ proto.tab.values.at
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β      β”œβ”€β”€ source-to-classes.tab
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β      β”œβ”€β”€ source-to-classes.tab_i
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β      β”œβ”€β”€ source-to-classes.tab_i.len
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β      β”œβ”€β”€ source-to-classes.tab.keystream
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β      β”œβ”€β”€ source-to-classes.tab.keystream.len
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β      β”œβ”€β”€ source-to-classes.tab.len
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β      β”œβ”€β”€ source-to-classes.tab.values.at
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β      β”œβ”€β”€ subtypes.tab
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β      β”œβ”€β”€ subtypes.tab_i
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β      β”œβ”€β”€ subtypes.tab_i.len
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β      β”œβ”€β”€ subtypes.tab.keystream
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β      β”œβ”€β”€ subtypes.tab.keystream.len
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β      β”œβ”€β”€ subtypes.tab.len
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β      β”œβ”€β”€ subtypes.tab.values.at
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β      β”œβ”€β”€ supertypes.tab
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β      β”œβ”€β”€ supertypes.tab_i
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β      β”œβ”€β”€ supertypes.tab_i.len
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β      β”œβ”€β”€ supertypes.tab.keystream
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β      β”œβ”€β”€ supertypes.tab.keystream.len
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β      β”œβ”€β”€ supertypes.tab.len
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β      └── supertypes.tab.values.at
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  └── lookups
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  └── last-build.bin
β”‚Β Β  β”‚Β Β  β”‚Β Β  └── localstate
β”‚Β Β  β”‚Β Β  β”‚Β Β      └── build-history.bin
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ compileTestKotlin
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ cacheable
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ caches-jvm
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ inputs
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ jvm
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  └── lookups
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”‚Β Β  └── last-build.bin
β”‚Β Β  β”‚Β Β  β”‚Β Β  └── localstate
β”‚Β Β  β”‚Β Β  β”‚Β Β      └── build-history.bin
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ IRSystem001SNAPSHOTplainjar-classes.txt
β”‚Β Β  β”‚Β Β  └── sessions
β”‚Β Β  β”œβ”€β”€ libs
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ IRSystem-0.0.1-SNAPSHOT.jar
β”‚Β Β  β”‚Β Β  └── IRSystem-0.0.1-SNAPSHOT-plain.jar
β”‚Β Β  β”œβ”€β”€ reports
β”‚Β Β  β”‚Β Β  └── tests
β”‚Β Β  β”‚Β Β      └── test
β”‚Β Β  β”‚Β Β          β”œβ”€β”€ classes
β”‚Β Β  β”‚Β Β          β”‚Β Β  └── com.jhogo.irsystem.store.StoreServiceTest.html
β”‚Β Β  β”‚Β Β          β”œβ”€β”€ css
β”‚Β Β  β”‚Β Β          β”‚Β Β  β”œβ”€β”€ base-style.css
β”‚Β Β  β”‚Β Β          β”‚Β Β  └── style.css
β”‚Β Β  β”‚Β Β          β”œβ”€β”€ index.html
β”‚Β Β  β”‚Β Β          β”œβ”€β”€ js
β”‚Β Β  β”‚Β Β          β”‚Β Β  └── report.js
β”‚Β Β  β”‚Β Β          └── packages
β”‚Β Β  β”‚Β Β              └── com.jhogo.irsystem.store.html
β”‚Β Β  β”œβ”€β”€ resources
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ main
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ application.yml
β”‚Β Β  β”‚Β Β  β”‚Β Β  └── db
β”‚Β Β  β”‚Β Β  β”‚Β Β      └── migration
β”‚Β Β  β”‚Β Β  β”‚Β Β          β”œβ”€β”€ V1__Initial_schema.sql
β”‚Β Β  β”‚Β Β  β”‚Β Β          β”œβ”€β”€ V2__Add_new_employee_fields.sql
β”‚Β Β  β”‚Β Β  β”‚Β Β          β”œβ”€β”€ V3__Update_schema_with_relationship_fields.sql
β”‚Β Β  β”‚Β Β  β”‚Β Β          β”œβ”€β”€ V4__Update_schema_with_user_table.sql
β”‚Β Β  β”‚Β Β  β”‚Β Β          β”œβ”€β”€ V5__Update_schema_with_wage_to_employee.sql
β”‚Β Β  β”‚Β Β  β”‚Β Β          └── V6__Create_finance_table.sql
β”‚Β Β  β”‚Β Β  └── test
β”‚Β Β  β”‚Β Β      └── application-test.properties
β”‚Β Β  β”œβ”€β”€ scripts
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ IRSystem
β”‚Β Β  β”‚Β Β  └── IRSystem.bat
β”‚Β Β  β”œβ”€β”€ snapshot
β”‚Β Β  β”‚Β Β  └── kotlin
β”‚Β Β  β”œβ”€β”€ test-results
β”‚Β Β  β”‚Β Β  └── test
β”‚Β Β  β”‚Β Β      β”œβ”€β”€ binary
β”‚Β Β  β”‚Β Β      β”‚Β Β  β”œβ”€β”€ output.bin
β”‚Β Β  β”‚Β Β      β”‚Β Β  β”œβ”€β”€ output.bin.idx
β”‚Β Β  β”‚Β Β      β”‚Β Β  └── results.bin
β”‚Β Β  β”‚Β Β      └── TEST-com.jhogo.irsystem.store.StoreServiceTest.xml
β”‚Β Β  └── tmp
β”‚Β Β      β”œβ”€β”€ bootJar
β”‚Β Β      β”‚Β Β  └── MANIFEST.MF
β”‚Β Β      β”œβ”€β”€ compileJava
β”‚Β Β      β”‚Β Β  β”œβ”€β”€ compileTransaction
β”‚Β Β      β”‚Β Β  β”‚Β Β  β”œβ”€β”€ backup-dir
β”‚Β Β      β”‚Β Β  β”‚Β Β  └── stash-dir
β”‚Β Β      β”‚Β Β  β”‚Β Β      β”œβ”€β”€ DataSourceConfig.class.uniqueId12
β”‚Β Β      β”‚Β Β  β”‚Β Β      β”œβ”€β”€ EmployeeController.class.uniqueId11
β”‚Β Β      β”‚Β Β  β”‚Β Β      β”œβ”€β”€ EmployeeDAO.class.uniqueId10
β”‚Β Β      β”‚Β Β  β”‚Β Β      β”œβ”€β”€ EmployeeService.class.uniqueId4
β”‚Β Β      β”‚Β Β  β”‚Β Β      β”œβ”€β”€ FinanceController.class.uniqueId7
β”‚Β Β      β”‚Β Β  β”‚Β Β      β”œβ”€β”€ FinanceDTO.class.uniqueId3
β”‚Β Β      β”‚Β Β  β”‚Β Β      β”œβ”€β”€ StoreController.class.uniqueId6
β”‚Β Β      β”‚Β Β  β”‚Β Β      β”œβ”€β”€ StoreService.class.uniqueId2
β”‚Β Β      β”‚Β Β  β”‚Β Β      β”œβ”€β”€ UserController.class.uniqueId5
β”‚Β Β      β”‚Β Β  β”‚Β Β      β”œβ”€β”€ UserDAO.class.uniqueId0
β”‚Β Β      β”‚Β Β  β”‚Β Β      β”œβ”€β”€ UserService.class.uniqueId9
β”‚Β Β      β”‚Β Β  β”‚Β Β      β”œβ”€β”€ VehicleController.class.uniqueId1
β”‚Β Β      β”‚Β Β  β”‚Β Β      β”œβ”€β”€ VehicleDAO.class.uniqueId13
β”‚Β Β      β”‚Β Β  β”‚Β Β      └── VehicleService.class.uniqueId8
β”‚Β Β      β”‚Β Β  └── previous-compilation-data.bin
β”‚Β Β      β”œβ”€β”€ compileTestJava
β”‚Β Β      β”‚Β Β  β”œβ”€β”€ compileTransaction
β”‚Β Β      β”‚Β Β  β”‚Β Β  β”œβ”€β”€ backup-dir
β”‚Β Β      β”‚Β Β  β”‚Β Β  └── stash-dir
β”‚Β Β      β”‚Β Β  └── previous-compilation-data.bin
β”‚Β Β      β”œβ”€β”€ jar
β”‚Β Β      β”‚Β Β  └── MANIFEST.MF
β”‚Β Β      └── test
β”œβ”€β”€ build.gradle.kts
β”œβ”€β”€ car_store_schema.sql
β”œβ”€β”€ gradle
β”‚Β Β  β”œβ”€β”€ libs.versions.toml
β”‚Β Β  └── wrapper
β”‚Β Β      β”œβ”€β”€ gradle-wrapper.jar
β”‚Β Β      └── gradle-wrapper.properties
β”œβ”€β”€ gradlew
β”œβ”€β”€ gradlew.bat
β”œβ”€β”€ LICENSE.txt
β”œβ”€β”€ Menu.java
β”œβ”€β”€ README.md
β”œβ”€β”€ settings.gradle.kts
└── src
    β”œβ”€β”€ main
    β”‚Β Β  β”œβ”€β”€ java
    β”‚Β Β  β”‚Β Β  └── com
    β”‚Β Β  β”‚Β Β      └── jhogo
    β”‚Β Β  β”‚Β Β          └── irsystem
    β”‚Β Β  β”‚Β Β              β”œβ”€β”€ Application.java
    β”‚Β Β  β”‚Β Β              β”œβ”€β”€ common
    β”‚Β Β  β”‚Β Β              β”‚Β Β  β”œβ”€β”€ Person.java
    β”‚Β Β  β”‚Β Β              β”‚Β Β  └── vehicle
    β”‚Β Β  β”‚Β Β              β”‚Β Β      β”œβ”€β”€ bike
    β”‚Β Β  β”‚Β Β              β”‚Β Β      β”œβ”€β”€ car
    β”‚Β Β  β”‚Β Β              β”‚Β Β      └── CarManager.java
    β”‚Β Β  β”‚Β Β              β”œβ”€β”€ config
    β”‚Β Β  β”‚Β Β              β”‚Β Β  └── DataSourceConfig.java
    β”‚Β Β  β”‚Β Β              β”œβ”€β”€ controller
    β”‚Β Β  β”‚Β Β              β”‚Β Β  β”œβ”€β”€ EmployeeController.java
    β”‚Β Β  β”‚Β Β              β”‚Β Β  β”œβ”€β”€ FinanceController.java
    β”‚Β Β  β”‚Β Β              β”‚Β Β  β”œβ”€β”€ StoreController.java
    β”‚Β Β  β”‚Β Β              β”‚Β Β  β”œβ”€β”€ UserController.java
    β”‚Β Β  β”‚Β Β              β”‚Β Β  └── VehicleController.java
    β”‚Β Β  β”‚Β Β              β”œβ”€β”€ dto
    β”‚Β Β  β”‚Β Β              β”‚Β Β  β”œβ”€β”€ EmployeeDTO.java
    β”‚Β Β  β”‚Β Β              β”‚Β Β  β”œβ”€β”€ FinanceDTO.java
    β”‚Β Β  β”‚Β Β              β”‚Β Β  β”œβ”€β”€ StoreDTO.java
    β”‚Β Β  β”‚Β Β              β”‚Β Β  β”œβ”€β”€ UserDTO.java
    β”‚Β Β  β”‚Β Β              β”‚Β Β  └── VehicleDTO.java
    β”‚Β Β  β”‚Β Β              β”œβ”€β”€ model
    β”‚Β Β  β”‚Β Β              β”‚Β Β  β”œβ”€β”€ Employee.java
    β”‚Β Β  β”‚Β Β              β”‚Β Β  β”œβ”€β”€ Finance.java
    β”‚Β Β  β”‚Β Β              β”‚Β Β  β”œβ”€β”€ Store.java
    β”‚Β Β  β”‚Β Β              β”‚Β Β  β”œβ”€β”€ User.java
    β”‚Β Β  β”‚Β Β              β”‚Β Β  └── Vehicle.java
    β”‚Β Β  β”‚Β Β              β”œβ”€β”€ repository
    β”‚Β Β  β”‚Β Β              β”‚Β Β  β”œβ”€β”€ EmployeeDAO.java
    β”‚Β Β  β”‚Β Β              β”‚Β Β  β”œβ”€β”€ FinanceDAO.java
    β”‚Β Β  β”‚Β Β              β”‚Β Β  β”œβ”€β”€ StoreDAO.java
    β”‚Β Β  β”‚Β Β              β”‚Β Β  β”œβ”€β”€ UserDAO.java
    β”‚Β Β  β”‚Β Β              β”‚Β Β  └── VehicleDAO.java
    β”‚Β Β  β”‚Β Β              β”œβ”€β”€ service
    β”‚Β Β  β”‚Β Β              β”‚Β Β  β”œβ”€β”€ EmployeeService.java
    β”‚Β Β  β”‚Β Β              β”‚Β Β  β”œβ”€β”€ FinanceService.java
    β”‚Β Β  β”‚Β Β              β”‚Β Β  β”œβ”€β”€ StoreService.java
    β”‚Β Β  β”‚Β Β              β”‚Β Β  β”œβ”€β”€ UserService.java
    β”‚Β Β  β”‚Β Β              β”‚Β Β  └── VehicleService.java
    β”‚Β Β  β”‚Β Β              └── util
    β”‚Β Β  β”œβ”€β”€ kotlin
    β”‚Β Β  β”‚Β Β  └── com
    β”‚Β Β  β”‚Β Β      └── jhogo
    β”‚Β Β  β”‚Β Β          └── irsystem
    β”‚Β Β  β”‚Β Β              └── Application2.kt
    β”‚Β Β  └── resources
    β”‚Β Β      β”œβ”€β”€ application.yml
    β”‚Β Β      └── db
    β”‚Β Β          └── migration
    β”‚Β Β              β”œβ”€β”€ V1__Initial_schema.sql
    β”‚Β Β              β”œβ”€β”€ V2__Add_new_employee_fields.sql
    β”‚Β Β              β”œβ”€β”€ V3__Update_schema_with_relationship_fields.sql
    β”‚Β Β              β”œβ”€β”€ V4__Update_schema_with_user_table.sql
    β”‚Β Β              β”œβ”€β”€ V5__Update_schema_with_wage_to_employee.sql
    β”‚Β Β              └── V6__Create_finance_table.sql
    └── test
        β”œβ”€β”€ java
        β”‚Β Β  └── com
        β”‚Β Β      └── jhogo
        β”‚Β Β          └── irsystem
        β”‚Β Β              β”œβ”€β”€ CarDAOIntegrationTest.java
        β”‚Β Β              β”œβ”€β”€ CarServiceTest.java
        β”‚Β Β              β”œβ”€β”€ employee
        β”‚Β Β              β”œβ”€β”€ finance
        β”‚Β Β              β”œβ”€β”€ store
        β”‚Β Β              β”‚Β Β  └── StoreServiceTest.java
        β”‚Β Β              β”œβ”€β”€ user
        β”‚Β Β              └── vehicle
        β”‚Β Β                  β”œβ”€β”€ VehicleDAOIntegrationTest.java
        β”‚Β Β                  └── VehicleServiceTest.java
        └── resources
            └── application-test.properties

121 directories, 195 files

Build Script (build.gradle.kts)

import org.jetbrains.kotlin.gradle.tasks.KotlinCompile

plugins {
    application
    id("org.springframework.boot") version "2.6.6" 
    id("io.spring.dependency-management") version "1.0.11.RELEASE"
    kotlin("jvm") version "1.6.21" 
    kotlin("plugin.spring") version "1.6.21" 
    id("org.flywaydb.flyway") version "8.5.11" 
}

group = "com.jhogo"
version = "0.0.1-SNAPSHOT"
java.sourceCompatibility = JavaVersion.VERSION_11

repositories {
    mavenCentral()
}

dependencies {
    implementation("org.springframework.boot:spring-boot-starter-data-jpa")
    implementation("org.springframework.boot:spring-boot-starter-web")
    runtimeOnly("mysql:mysql-connector-java")
    testImplementation("org.springframework.boot:spring-boot-starter-test")
    testImplementation("org.mockito:mockito-core")
    implementation("org.flywaydb:flyway-core")
    implementation("org.jetbrains.kotlin:kotlin-reflect")
    implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
    testImplementation("org.junit.jupiter:junit-jupiter-api")
    testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine")
}

application {
    mainClass.set("com.jhogo.irsystem.ApplicationKt")
}

sourceSets {
    main {
        java {
            setSrcDirs(listOf("src/main/java"))
        }
    }
    test {
        java {
            setSrcDirs(listOf("src/test/java"))
        }
    }
}

tasks.withType<KotlinCompile> {
    kotlinOptions {
        freeCompilerArgs = listOf("-Xjsr305=strict")
        jvmTarget = "11"
    }
}

tasks.named<Test>("test") {
    useJUnitPlatform()
}

flyway {
    url = System.getenv("DATABASE_URL") ?: "jdbc:mysql://localhost:3306/car_store"
    user = System.getenv("DATABASE_USERNAME") ?: "root"
    password = System.getenv("DATABASE_PASSWORD") ?: "password"
}

Settings Script (settings.gradle.kts)

/*
 * This file was generated by the Gradle 'init' task.
 *
 * The settings file is used to specify which projects to include in your build.
 * For more detailed information on multi-project builds, please refer to https://docs.gradle.org/8.7/userguide/multi_project_builds.html in the Gradle documentation.
 */

plugins {
    // Apply the foojay-resolver plugin to allow automatic download of JDKs
    id("org.gradle.toolchains.foojay-resolver-convention") version "0.8.0"
}

rootProject.name = "IRSystem"
include("app")

Database Schema Migration Scripts

V1__Initial_schema.sql

CREATE TABLE Store (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(100),
    address VARCHAR(255)
);

CREATE TABLE Car (
    id INT PRIMARY KEY AUTO_INCREMENT,
    model VARCHAR(100),
    brand VARCHAR(100),
    chassis VARCHAR(100),
    manufactureYear INT,
    saleValue DECIMAL(10, 2),
    purchaseValue DECIMAL(10, 2),
    inStore BOOLEAN,
    store_id INT,
    FOREIGN KEY (store_id) REFERENCES Store(id)
);

CREATE TABLE Client (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(100),
    contact VARCHAR(100),
    store_id INT,
    FOREIGN KEY (store_id) REFERENCES Store(id)
);

CREATE TABLE Employee (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(100),
    role VARCHAR(50),
    address VARCHAR(200),
    username VARCHAR(100),
    password VARCHAR(100),
    birthday DATE,
    store_id INT,
    FOREIGN KEY (store_id) REFERENCES Store(id)
);

Summary of Important Points

  1. Project Structure: Ensure the directory structure is correct and follows conventions.
  2. Build Script: Properly configure build.gradle.kts and settings.gradle.kts for Gradle with Kotlin DSL.
  3. Flyway Configuration: Use environment variables to manage sensitive data such as database URLs and credentials.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published