I created this project for learning Htmx and Spring boot.
This project implements the following features.
- Search user
- Create user
- Update user
- Delete user
This project consists of two projects: front-end (Htmx) and back-end (Spring Boot).
project_root
├── frontend (Htmx)
└── backend (Spring boot)
Front-end
- Htmx
- Verification of input values
- Submit form
- TailwindCSS
- Screen design/layout creation
- FlowBite
- Show/hide modal control
- Vitest・Puppeteer
- Implement E2E test
Back-end
- Spring Boot・Java
- Search user
- Create user
- Update user
- Delete user
- display user creation modal
- display user update modal
- display user deletion modal
- JUnit
- Implement unit test
The versions of major libraries/frameworks used in each project are as follows.
Front-end
- Htmx: 1.9.12
- TailwindCSS: 3.4.3
- FlowBite: 2.3.0
- Vitest: 1.5.3
- Puppeteer: 22.7.1
Back-end
- Spring Boot: 3.2.0
- Java: 21.0.1
- Gradle: 8.5
- JUnit: 5.10.2
- MyBatis: 3.5.14
This project consists of two projects: front-end (Htmx) and back-end (Spring Boot).
The database uses an in-memory database, so there is no need to build an environment.
project_root
├── frontend (Htmx)
└── backend (Spring boot)
$ cd frontend
$ npm ci
$ npm run start:fe
$ cd frontend
$ npm run build:be:linux
$ npm run start:be
$ cd frontend
$ npm run build:be:windows
$ npm run start:be
Access the following URL after starting the front-end and back-end.
$ cd frontend
$ npm run start:fe
$ npm run start:be
$ npm run test:fe
$ cd frontend
$ npm run test:be:linux
$ cd frontend
$ npm run test:be:windows
API definitions are created using Swagger.
To see the API definition, access the following URL after starting the back-end.
http://localhost:8080/swagger-ui/index.html
![](https://private-user-images.githubusercontent.com/42198184/328017094-e7511701-8347-437b-b454-c38174584d3a.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk0NzgzNzksIm5iZiI6MTczOTQ3ODA3OSwicGF0aCI6Ii80MjE5ODE4NC8zMjgwMTcwOTQtZTc1MTE3MDEtODM0Ny00MzdiLWI0NTQtYzM4MTc0NTg0ZDNhLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTMlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjEzVDIwMjExOVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTNmMDAzMWU1MmJjYjg3NTA2NjA0YzE5MmFlOWM1MTk1NjNkMzBlYTUzYWM4MWU2YjM1MWUwZDRkODAzYjE1YmQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0._MmakiRjXDiNx6zqSsr_vXYto67xUUYsd1b8LtQSgRA)