{"id":24647129,"url":"https://github.com/ccmjga/mjga-scaffold","last_synced_at":"2025-04-04T08:05:57.852Z","repository":{"id":214124837,"uuid":"735747097","full_name":"ccmjga/mjga-scaffold","owner":"ccmjga","description":"🥇 A brand-new Java scaffold; a fresh blueprint for the Java ecosystem; a modern philosophy of Java programming.","archived":false,"fork":false,"pushed_at":"2024-10-22T07:37:42.000Z","size":2956,"stargazers_count":217,"open_issues_count":0,"forks_count":18,"subscribers_count":5,"default_branch":"main","last_synced_at":"2024-10-23T10:27:05.005Z","etag":null,"topics":["gradle","java","java-docker","java-scaffold","java17","java21","jooq","pmd","spotless","spring-boot","spring-cache","spring-security","testcontainer"],"latest_commit_sha":null,"homepage":"https://www.mjga.cc","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ccmjga.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","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}},"created_at":"2023-12-26T01:58:43.000Z","updated_at":"2024-10-23T07:24:49.000Z","dependencies_parsed_at":"2024-05-12T05:27:09.368Z","dependency_job_id":"bfb54f36-e1bd-4aba-b323-530be20aa92a","html_url":"https://github.com/ccmjga/mjga-scaffold","commit_stats":null,"previous_names":["ccmjga/mjga-scaffold"],"tags_count":9,"template":true,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ccmjga%2Fmjga-scaffold","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ccmjga%2Fmjga-scaffold/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ccmjga%2Fmjga-scaffold/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ccmjga%2Fmjga-scaffold/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ccmjga","download_url":"https://codeload.github.com/ccmjga/mjga-scaffold/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247142032,"owners_count":20890651,"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":["gradle","java","java-docker","java-scaffold","java17","java21","jooq","pmd","spotless","spring-boot","spring-cache","spring-security","testcontainer"],"created_at":"2025-01-25T15:15:07.552Z","updated_at":"2025-04-04T08:05:57.825Z","avatar_url":"https://github.com/ccmjga.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![MIT License](https://img.shields.io/badge/License-MIT-green.svg)](https://choosealicense.com/licenses/mit/)\n![logo.png](asset/logo.png)\n\n- [English](README_EN.md)\n- [中文](README_CN.md)\n\n**选择您喜爱的工程范式**\n- [Database First](https://github.com/ccmjga/mjga-scaffold/)\n\n\u003e以数据库为一等公民，围绕类型安全的、可复用的、支持 Debug 的 SQL 来构建基于 Docker 的 RESTful、无状态、云原生的三层架构应用。\n\n- [Model First](https://github.com/ccmjga/mjga-scaffold/tree/model-first)\n\n\u003e以模型、领域和模块为一等公民，围绕革命性的现代 ORM 构建基于 Docker 的 RESTful、无状态、云原生的领域驱动应用。\n\n# Database First\n\n[Mjga](https://www.mjga.cc) 是一款全新设计的，基于云原生理念的打造的现代 Java Web 脚手架，它具备以下特点：\n\n- 容器化的应用\n- 可装卸的组件\n- 有口皆碑的单元测试\n- 自定义元信息\n\n### 🥝 选择模板\n\n![stack_dbfirst_cn.png](asset/stack_dbfirst_cn.png)\n\n### 🍅 组件选配\n\n![stack_cn.png](asset/option_modelfirst_cn.png)\n\n### 🍹 自定义元信息\n\n![meta_cn.png](asset/meta_cn.png)\n\n#### 容器化与云原生\n\n1. 通过 `docker-compose.yml` 管理应用程序的整个生命周期与配置。\n2. 通过 `.env` 文件自定义所有配置。\n3. 通过 `docker-compose.yml` 交付整个应用程序和配套的生态组件。\n\n#### 开箱即用\n\n1. 集成了常用的基础业务功能，如身份验证、权限管理和缓存抽象。\n2. Code Check\u0026Format、CI/CD Plugin 、Docker Integration 全部开箱即用。\n3. 完善的、从设计出发的、隔离了运行环境的单元测试。\n\n#### 现代化\n\n1. 现代化：技术选型紧跟开源社区风向。\n2. 可配置化：支持在网页上选配组件。\n3. 最佳实践：每个变量和函数、每个模块和组件都考虑最佳实践。\n4. 专注边界：将守好自己的功能边界，不做 All In One。\n\n\n### 快速开始\n\n**确认环境变量与执行权限**\n\n```shell\n# confirm .env and make sure process can use it\nvim ${projectRoot}/.env\n# confirm gradlew executable (unix-like OS)\nchmod 755 ${projectRoot}/gradlew\n```\n**[安装 Docker 并启动容器](https://docs.docker.com/engine/install/)**\n\n```shell\ncd ${projectRoot}\ndocker compose up -d database\ndocker compose build web\ndocker compose up -d web\n````\n\n**(可选)在本机启动**\n```shell\n# confirm .env and gradle.properties make sure process can use it\n./gradlew jooqCodegen\nvim ${projectRoot}/.env\ndocker compose up -d database\n${projectRoot}/gradlew bootRun\n```\n\n### 常用工具\n\n**编译项目，并根据数据库 Schema 生成表的映射对象与 Data Access Layer**\n```shell\n# generate schema mapping codes\n./gradlew jooqCodegen\n# output -\u003e\n# projectRootDir/build/generated-sources\n# └── org.jooq.generated\n#    └── tables # table mapping\n#       ├── daos # Data Access Layer\n#       ├── pojos # mapping dto\n#       └── records # jooq query record\n\n```\n\n**全局代码格式化**\n```shell\n./gradlew spotlessApply\n```\n**全局代码检查**\n```shell\n./gradlew pmdMain\n```\n\n**单元测试**\n```shell\n# will automatically generate jacocoTestReport\n./gradlew test\n```\n\n[更多文档请点击...](https://www.mjga.cc/doc/db-first)\n\n## 🍓 测试报告\n\n![cover](https://www.mjga.cc/dbfirst/test-cover.png)\n\n## 🍟 其他\n1. 本仓库主要为代码展示和问题收集使用。代码可能会落后从产品官网下载的版本。\n2. 关于产品的意见、讨论、bug 请提交到 issue 中，我会认真处理。\n3. 也欢迎其他社区提出你的任何想法，我会积极参与回复。\n4. 更多的全新视频教程正在录制中，请耐心等待。\n\n## 🔮 用户社区\n产品主页：[![Static Badge](https://img.shields.io/badge/HomePage-white?style=social\u0026logo=homepage\u0026label=mjga\u0026logoColor=%23FF0074)](https://www.mjga.cc)\n\nQQ群：[![Static Badge](https://img.shields.io/badge/-red?style=social\u0026logo=Tencent%20QQ\u0026logoColor=%23FF0056\u0026label=QQ-910248188)](https://qm.qq.com/q/8ojXz6ZOkE)\n\n文本教程：[![Static Badge](https://img.shields.io/badge/Blog-red?style=social\u0026logo=Bytedance\u0026logoColor=%233C8CFF\u0026label=%E6%8E%98%E9%87%91%E7%A8%80%E5%9C%9F)](https://juejin.cn/post/7410333135119253543)\n\n视频教程：[![Static Badge](https://img.shields.io/badge/-white?style=social\u0026logo=bilibili\u0026label=bilibili)](https://www.bilibili.com/video/BV1Erpje8ERF/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fccmjga%2Fmjga-scaffold","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fccmjga%2Fmjga-scaffold","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fccmjga%2Fmjga-scaffold/lists"}