{"id":21419290,"url":"https://github.com/wimdeblauwe/ttcli","last_synced_at":"2025-10-11T02:33:43.084Z","repository":{"id":62790170,"uuid":"558084485","full_name":"wimdeblauwe/ttcli","owner":"wimdeblauwe","description":"CLI to create a Spring Boot with Thymeleaf project","archived":false,"fork":false,"pushed_at":"2025-06-04T18:46:07.000Z","size":571,"stargazers_count":105,"open_issues_count":9,"forks_count":12,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-06-04T21:42:34.258Z","etag":null,"topics":["spring-boot","thymeleaf"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/wimdeblauwe.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,"zenodo":null}},"created_at":"2022-10-26T21:40:13.000Z","updated_at":"2025-06-04T21:41:53.000Z","dependencies_parsed_at":"2023-02-10T00:45:18.398Z","dependency_job_id":"32c7f718-e23b-477c-b3ae-de27a280d7fc","html_url":"https://github.com/wimdeblauwe/ttcli","commit_stats":null,"previous_names":[],"tags_count":41,"template":false,"template_full_name":null,"purl":"pkg:github/wimdeblauwe/ttcli","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wimdeblauwe%2Fttcli","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wimdeblauwe%2Fttcli/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wimdeblauwe%2Fttcli/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wimdeblauwe%2Fttcli/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wimdeblauwe","download_url":"https://codeload.github.com/wimdeblauwe/ttcli/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wimdeblauwe%2Fttcli/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279005943,"owners_count":26083999,"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","status":"online","status_checked_at":"2025-10-11T02:00:06.511Z","response_time":55,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["spring-boot","thymeleaf"],"created_at":"2024-11-22T19:39:01.307Z","updated_at":"2025-10-11T02:33:43.078Z","avatar_url":"https://github.com/wimdeblauwe.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Taming Thymeleaf CLI\n\nThe goal of this project is to provide a command line tool to help set up a Spring Boot project with either JTE or\nThymeleaf as the template engine.\n\n## Usage\n\n1. Download the release from https://github.com/wimdeblauwe/ttcli/releases\n2. Unzip the release\n3. Run `./ttcli help` (macOS/Linux) or `ttcli.exe help` (Windows) to see the options of the tool.\n\nThe application is also available via the following package managers:\n\n* [Homebrew](https://brew.sh/) (Linux/macOS): `brew install wimdeblauwe/homebrew-ttcli/ttcli`\n* [Chocolatey](https://chocolatey.org/) (Windows): `choco install ttcli`\n\n### Initialize\n\nRun `ttcli init` to have the tool create a new Spring Boot project with an NPM based live-reload setup.\n\nThe tool will ask the following questions:\n\n1. GroupId: the Maven `groupId` that should be used for the project.\n2. ArtifactId: the Maven `artifactId` that should be used for the project.\n3. Name: the project name\n4. Spring Boot version: Select the Spring Boot version to use\n5. Template engine: Select either Thymeleaf (default) or JTE as the template engine\n6. Live reload setup: Select how you want to have your live reload setup\n7. Web dependencies: Select from various CSS and/or JavaScript libraries to be added to your project.\n\nThe tool will create a new project in a sub-directory of the current directory with the name of the `artifactId` and apply the following changes:\n\n* Generate a Spring Boot project\n* Add NPM dependencies and NPM scripts needed to have a live reload setup\n* Add template files as a starting point for your application:\n  * For Thymeleaf: `index.html` and `layout/main.html` in the `src/main/resources/templates` directory\n  * For JTE: `index.jte` and `layout/main.jte` in the `src/main/jte` directory\n* Setup Tailwind CSS when selected.\n* Setup Bootstrap when selected.\n* Adds webjars to the Maven dependencies.\n* Adds an `application-local.properties` with template caching disabled.\n\n\u003e [!NOTE]\n\u003e You can choose a different base directory that the tool should use via `ttcli --baseDir \u003cotherdir\u003e`\n\n## Live reload options\n\nThe tool allows selecting from various options for having live reload when editing HTML, CSS and JavaScript files.\n\n\u003e [!IMPORTANT]\n\u003e Be sure to always read the instructions in the generated HELP.md to know how to work with your live reload selection.\n\n### DevTools\n\nThis is the simplest option, but it is also the slowest to reload upon change.\nThe biggest advantage is that you do not need to have npm installed.\n\n\u003e [!NOTE]\n\u003e If you also select 'Tailwind CSS' with this option, then you will need `npm` to make it work.\n\n### Npm based scripts\n\nThis uses npm to watch the HTML, CSS and JavaScript files and processes them.\nThis gives a quicker live reload experience compared to using DevTools.\n\n### Vite\n\nThis option uses [Vite](https://vitejs.dev/) for live reloading.\nIt requires an additional dependency on the Spring Boot side to process the assets and manifest that Vite generates.\nThe biggest advantages:\n\n* It is very quick to reload the changes.\n* Vite supports SASS, TypeScript, ... so you can use all that now in your Spring Boot project with either JTE or\n  Thymeleaf.\n  If you add the Vite Vue plugin, you can even write Vue components and have live reloading of them working just fine.\n\n## Tailwind CSS support\n\nSupport for Tailwind CSS is a bit more involved compared to other web dependency as you can't just add a webjars dependency.\nFor that reason, the live reload options all do various customizations when you select 'Tailwind CSS' as a web dependency.\n\n## Building\n\n### Regular JVM build\n\n```\nmvn verify\n```\n\n### Native build\n\nUse GraalVM JDK:\n\n```\nsdk use java 22.3.r17-grl\n```\n\nRun native compilation:\n\n```\nmvn -Pnative native:compile\n```\n\n### Releasing\n\n#### Github\n\nAn official release is done via\na [manual action on Github Actions](https://github.com/wimdeblauwe/ttcli/actions/workflows/release.yml).\n\n#### Local\n\n\u003e [!NOTE]\n\u003e You need to configure\n\u003e a [GitHub access token](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token).\n\u003e Put it in `~/.jreleaser/config.properties` with for example:\n\u003e\n\u003e ```properties\n\u003e JRELEASER_GITHUB_TOKEN=\u003cgithub-token-value\u003e\n\u003e ```\n\nCheck JReleaser configuration:\n\n```\nmvn -Djreleaser.dry.run -Prelease jreleaser:config\n```\n\nPosting a release from a local environment only when binaries for the current platform are available:\n\n```\nmvn -Prelease jreleaser:release -Djreleaser.select.current.platform\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwimdeblauwe%2Fttcli","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwimdeblauwe%2Fttcli","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwimdeblauwe%2Fttcli/lists"}