{"id":19120325,"url":"https://github.com/cubetiq/spring-web-modules","last_synced_at":"2025-05-05T16:11:50.365Z","repository":{"id":37976162,"uuid":"368395360","full_name":"CUBETIQ/spring-web-modules","owner":"CUBETIQ","description":"CUBETIQ Spring Web Modules with Template and Default Configuration","archived":false,"fork":false,"pushed_at":"2025-04-25T16:07:13.000Z","size":319,"stargazers_count":1,"open_issues_count":16,"forks_count":1,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-04-30T03:18:44.853Z","etag":null,"topics":["dockerfile","kotlin","rest-api","spring-boot"],"latest_commit_sha":null,"homepage":"https://spring-web-api-demo.heroku.ctdn.dev/swagger-ui/index.html","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/CUBETIQ.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2021-05-18T03:59:19.000Z","updated_at":"2023-08-02T16:09:56.000Z","dependencies_parsed_at":"2023-02-04T07:15:41.606Z","dependency_job_id":"f6582f77-5946-4170-808a-0da7318b64e7","html_url":"https://github.com/CUBETIQ/spring-web-modules","commit_stats":null,"previous_names":[],"tags_count":0,"template":true,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CUBETIQ%2Fspring-web-modules","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CUBETIQ%2Fspring-web-modules/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CUBETIQ%2Fspring-web-modules/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CUBETIQ%2Fspring-web-modules/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CUBETIQ","download_url":"https://codeload.github.com/CUBETIQ/spring-web-modules/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252531836,"owners_count":21763290,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dockerfile","kotlin","rest-api","spring-boot"],"created_at":"2024-11-09T05:13:53.461Z","updated_at":"2025-05-05T16:11:50.347Z","avatar_url":"https://github.com/CUBETIQ.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"# CUBETIQ Web Modules (Template)\n\n- Setup and Default Web Configuration\n- Swagger UI and API's Documentation (SpringDoc)\n- General Purpose for External and Internal use-cases\n- Dockerfile and Docker profile build support\n- Kubernetes support\n- Jenkins Support\n\n### Language and Framework\n\n- Spring Boot: 3.0.0\n- Kotlin: 1.7.22\n- Gradle: 7.5.1\n\n# Modules\n\n- API (Default Module)\n\n### Spring Data\n\n- Add `spring-data-jpa` dependency in `build.gradle.kts`\n\n```kotlin\nimplementation(\"org.springframework.boot:spring-boot-starter-data-jpa\")\n```\n\n- Add `spring-data-redis` dependency in `build.gradle.kts` (Redis + Driver)\n\n```kotlin\nimplementation(\"org.springframework.boot:spring-boot-starter-data-redis\")\n```\n\n### Spring Boot Properties\n\n- Recommend\n\n```yaml\nspring:\n  application:\n    name: ${APP_NAME:spring-web-api}\napp:\n  data-dir: ${APP_DATA_DIR:${user.home}/${spring.application.name}}\n```\n\n- Upload File Properties\n\n```yaml\nserver:\n  tomcat:\n    max-http-form-post-size: ${SERVER_MAX_HTTP_FORM_POST_SIZE:50MB}\n\nspring:\n  servlet:\n    multipart:\n      max-file-size: 256MB\n      max-request-size: 256MB\n      enabled: true\n```\n\n- Logging\n\n```yaml\nlogging:\n  file:\n    path: ${LOGGING_FILE_PATH:${app.data-dir}/logs/}\n    name: ${logging.file.path}/app.log\n```\n\n### Spring Data Redis\n\n- Redis Properties\n\n```yaml\nspring:\n  redis:\n    host: ${REDIS_HOST:localhost}\n    port: ${REDIS_PORT:6379}\n    password: ${REDIS_PASSWORD:your_password}\n```\n\n### Spring Data JPA Properties\n\n- Datasource Enhancement (Default: PostgresSQL)\n\n```yaml\nspring:\n  datasource:\n    driverClassName: ${DATA_SOURCE_DRIVER_CLASS_NAME:org.postgresql.Driver}\n    url: ${DATA_SOURCE_URL:jdbc:postgresql://localhost:5432/demo}\n    username: ${POSTGRES_USERNAME:postgres}\n    password: ${POSTGRES_PASSWORD:postgres}\n    hikari:\n      max-lifetime: ${DATA_SOURCE_MAX_LIFETIME:1800000}\n      connection-timeout: ${DATA_SOURCE_CONNECTION_TIMEOUT:30000}\n      idle-timeout: ${DATA_SOURCE_IDLE_TIMEOUT:600000}\n      maximum-pool-size: ${DATA_SOURCE_MAXIMUM_POOL_SIZE:10}\n      allow-pool-suspension: ${DATA_SOURCE_ALLOW_POOL_SUSPENSION:true}\n    tomcat:\n      max_active: ${DATA_SOURCE_TOMCAT_MAX_ACTIVE:100}\n      max_idle: ${DATA_SOURCE_TOMCAT_MAX_IDLE:10}\n      min-idle: ${DATA_SOURCE_TOMCAT_MIN_IDLE:10}\n      initial_size: ${DATA_SOURCE_TOMCAT_INITIAL_SIZE:10}\n      remove_abandoned: ${DATA_SOURCE_TOMCAT_REMOVE_ABANDONED:true}\n  jpa:\n    database-platform: ${JPA_DATABASE_PLATFORM:org.hibernate.dialect.PostgreSQLDialect}\n    show-sql: ${JPA_SHOW_SQL:false}\n    hibernate:\n      ddl-auto: ${JPA_HIBERNATE_DDL_AUTO:update}\n    properties:\n      hibernate:\n        dialect: ${JPA_HIBERNATE_DIALECT:org.hibernate.dialect.PostgreSQLDialect}\n    open-in-view: ${JPA_OPEN_IN_VIEW:false}\n```\n\n- PostgreSQL\n\n```yaml\nspring:\n  datasource:\n    driverClassName: ${DATA_SOURCE_DRIVER_CLASS_NAME:org.postgresql.Driver}\n    url: jdbc:postgresql://${POSTGRES_HOST:localhost}:${POSTGRES_PORT:5432}/${POSTGRES_DB:demo}\n    username: ${POSTGRES_USERNAME:postgres}\n    password: ${POSTGRES_PASSWORD:postgres}\n```\n\n- MySQL\n\n```yaml\nspring:\n  datasource:\n    driverClassName: ${DATA_SOURCE_DRIVER_CLASS_NAME:com.mysql.cj.jdbc.Driver}\n    url: jdbc:mysql://${MYSQL_HOST:localhost}:${MYSQL_PORT:3306}/${MYSQL_DB:demo}?createDatabaseIfNotExist=true\u0026useUnicode=true\u0026useJDBCCompliantTimezoneShift=true\u0026useLegacyDatetimeCode=false\u0026serverTimezone=UTC\n    username: ${MYSQL_USERNAME:demo}\n    password: ${MYSQL_PASSWORD:demo}\n  jpa:\n    database-platform: ${JPA_DATABASE_PLATFORM:org.hibernate.dialect.MySQLDialect}\n    properties:\n      hibernate:\n        dialect: ${JPA_HIBERNATE_DIALECT:org.hibernate.dialect.MySQLDialect}\n```\n\n- H2 (Embedded)\n\n```yaml\nspring:\n  datasource:\n    driverClassName: ${DATA_SOURCE_DRIVER_CLASS_NAME:org.h2.Driver}\n    url: jdbc:h2:file:${H2_DB_PATH:./data/db};DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE\n    username: ${H2_USERNAME:sa}\n    password: ${H2_PASSWORD:password}\n  jpa:\n    database-platform: ${JPA_DATABASE_PLATFORM:org.hibernate.dialect.H2Dialect}\n  h2:\n    console:\n      enabled: ${H2_CONSOLE_ENABLED:true}\n```\n\n- Avoid the Lazy Initialization Problem\n\n```yaml\nspring:\n  jpa:\n    properties:\n      hibernate:\n        enable_lazy_load_no_trans: ${HIBERNATE_LAZY_NO_TRANS:true}\n```\n\n# Contributors\n\n- Sambo Chea \u003csombochea@cubetiqs.com\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcubetiq%2Fspring-web-modules","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcubetiq%2Fspring-web-modules","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcubetiq%2Fspring-web-modules/lists"}