{"id":13491468,"url":"https://github.com/practicalli/project-templates","last_synced_at":"2026-02-05T16:01:17.425Z","repository":{"id":153487732,"uuid":"621440039","full_name":"practicalli/project-templates","owner":"practicalli","description":"Clojure CLI Production level templates for seancorfield/deps-new","archived":false,"fork":false,"pushed_at":"2026-01-21T22:42:27.000Z","size":376,"stargazers_count":37,"open_issues_count":7,"forks_count":4,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-22T11:58:21.813Z","etag":null,"topics":["clojure","clojure-cli","clojurescript","deps-new","hacktoberfest","template"],"latest_commit_sha":null,"homepage":"https://practical.li/clojure/clojure-cli/projects/templates/","language":"Clojure","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"cc-by-sa-4.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/practicalli.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":["practicalli-johnny"]}},"created_at":"2023-03-30T17:02:34.000Z","updated_at":"2026-01-21T22:42:33.000Z","dependencies_parsed_at":"2024-01-16T09:05:46.112Z","dependency_job_id":"933324ac-7d3e-4e58-b7f8-cfff4fd108e9","html_url":"https://github.com/practicalli/project-templates","commit_stats":null,"previous_names":[],"tags_count":25,"template":false,"template_full_name":null,"purl":"pkg:github/practicalli/project-templates","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/practicalli%2Fproject-templates","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/practicalli%2Fproject-templates/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/practicalli%2Fproject-templates/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/practicalli%2Fproject-templates/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/practicalli","download_url":"https://codeload.github.com/practicalli/project-templates/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/practicalli%2Fproject-templates/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29125101,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-05T14:05:12.718Z","status":"ssl_error","status_checked_at":"2026-02-05T14:03:53.078Z","response_time":65,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["clojure","clojure-cli","clojurescript","deps-new","hacktoberfest","template"],"created_at":"2024-07-31T19:00:57.303Z","updated_at":"2026-02-05T16:01:17.363Z","avatar_url":"https://github.com/practicalli.png","language":"Clojure","readme":"# Practicalli project templates\n\n```none\n██████╗ ██████╗  █████╗  ██████╗████████╗██╗ ██████╗ █████╗ ██╗     ██╗     ██╗\n██╔══██╗██╔══██╗██╔══██╗██╔════╝╚══██╔══╝██║██╔════╝██╔══██╗██║     ██║     ██║\n██████╔╝██████╔╝███████║██║        ██║   ██║██║     ███████║██║     ██║     ██║\n██╔═══╝ ██╔══██╗██╔══██║██║        ██║   ██║██║     ██╔══██║██║     ██║     ██║\n██║     ██║  ██║██║  ██║╚██████╗   ██║   ██║╚██████╗██║  ██║███████╗███████╗██║\n╚═╝     ╚═╝  ╚═╝╚═╝  ╚═╝ ╚═════╝   ╚═╝   ╚═╝ ╚═════╝╚═╝  ╚═╝╚══════╝╚══════╝╚═╝\n```\n\n## Overview\n\nCreate new projects with a REPL driven development focus, including production level features where relevant. The templates are used by [deps-new](https://github.com/seancorfield/deps-new) via a user or project alias.\n\nTemplates provide\n\n- `:practicalli/minimal` essential tools, libraries and example code\n- `:practicalli/service` production level web services with http-kit, reitit and swagger. Optional `:component` management with `:donut` or `:integrant`\n\n\n## Configuration\n\n[![Latest Release](https://img.shields.io/github/v/release/practicalli/project-templates?display_name=tag)](https://github.com/practicalli/project-templates/releases)\n\n```clojure\nio.github.practicalli/project-templates {:git/tag \"2024-09-09\" :git/sha \"0d11ca4\"}\n```\n\n### Add alias\n\n`:project/create` alias is provided by [Practicalli Clojure CLI Config](https://practical.li/clojure/clojure-cli/practicalli-config/).\n\nThe `project/create` alias definition combines [seancorfield/deps-new](https://github.com/seancorfield/deps-new) and practicalli/project-templates so that all Practicalli templates are available within one alias.\n\n```clojure\n  :project/create\n  {:replace-deps {io.github.seancorfield/deps-new\n                  {:git/tag \"v0.8.0\" :git/sha \"2f96530\"}\n                  io.github.practicalli/project-templates\n                  {:git/tag \"2024-09-09\" :git/sha \"0d11ca4\"}}\n   :exec-fn      org.corfield.new/create\n   :exec-args    {:template practicalli/application\n                  :name practicalli/playground}}\n```\n\n\u003e [![Latest Release](https://img.shields.io/github/v/release/practicalli/project-templates?display_name=tag)](https://github.com/practicalli/project-templates/releases) page includes the release `:git/tag` and `:git/sha` values for `io.github.practicalli/project-templates`\n\n\n## Usage\n\nCreate a new project using the `:project/create` alias from [Practicalli Clojure CLI Config](https://practical.li/clojure/clojure-cli/practicalli-config/), using `practicalli/minimal` template by default\n\n```shell\nclojure -T:project/create\n```\n\nOverride the defaults used to create a project using command line options\n\n* `:template` to specify a different template to create the project from, e.g. `:template practicalli/service`\n* `:name` and value to create a project with a different name, e.g. `github-org/project-name`\n* `:target-dir` to specify a directory to create the project in\n* `:overwrite` an existing project with the same `:target-dir name`, `true` updates, `:delete` deletes existing project and replaces it with new project\n\n```shell\nclojure -T:project/create :template practicalli/service \\\n:name practicalli/gameboard :target-dir gameboard-service\n```\n\n\n## Templates Roadmap\n\n🧰 General purpose\n\n* [practicalli/service](https://github.com/practicalli/project-templates/issues/2) - production grade HTTP service, basic routing (reitit-ring \u0026 middleware)\n  * `:component :donut` argument to manage system with donut-party/system\n  * `:component :integrant` argument to manage system with Integrant and Integrant REPL\n* [practicalli/application](https://github.com/practicalli/project-templates/issues/4) - general application, limited code\n* [practicalli/minimal](https://github.com/practicalli/project-templates/issues/19) - Clojure CLI project, tools-build, kaocha test runner alias, Make tasks, GitHub quality checks workflow\n* TODO: practicalli/api - production grade API service (reitit-ring, clojure.spec validation)\n* TODO: practicalli/library - general library, deploymnent to Maven/Clojars\n* TODO: [practicalli/blog](https://github.com/practicalli/project-templates/issues/1) - cryogen project with Practicalli Customisation\n* TODO: practicalli/jetty - basic web server\n* TODO: practicalli/httpkit - basic web server\n\n🕸️  Web UI\n\n* DONE: [#15](https://github.com/practicalli/project-templates/issues/15) practicalli/landing-page - a simple landing page with figwheel and Bulma.io CSS\n* TODO: practicalli/single-page-app - a simple landing page with figwheel and Bulma.io CSS\n* TODO: practicalli/catalog - a catalog front-end webapp with [firebase persistence](https://firebase.google.com/), user OAuth authentication, figwheel, Reagent, Bulma.io CSS\n* TODO: practicalli/store-front - a catalog front-end webapp with stripe integration, [firebase persistence](https://firebase.google.com/), OAuth authentication, figwheel, Reagent, Bulma.io CSS\n\n🔬 Data Science ‍\n\n* TODO: practicalli/notebook - clerk or notespace projects\n* TODO: practicalli/dashboard - visualising data sources to communicate information and concepts\n* TODO: practicalli/visualisation - oz or hanami projects\n* TODO: practicalli/data-transform - tablecloth \u0026 code for data set manipulation\n\n🐈 Miscellaneous\n\n* TODO: practicalli/zulip-bot\n* TODO: practicalli/slack-bot\n* TODO: practicalli/mastodon-bot\n\n3rd party templates\n\n* [Clerk template](https://github.com/mentat-collective/clerk-utils/tree/main/resources/clerk_utils/custom)\n\n\n## Sponsor Practicalli\n\n[![Sponsor practicalli-johnny](https://raw.githubusercontent.com/practicalli/graphic-design/live/buttons/practicalli-github-sponsors-button.png)](https://github.com/sponsors/practicalli-johnny/)\n\nThe majority of my work is focused on the [Practicalli series of books and videos](https://practical.li/) and supporting projects.\n\nThank you to [Cognitect](https://www.cognitect.com/), [Nubank](https://nubank.com.br/) and a wide range of other [sponsors](https://github.com/sponsors/practicalli-johnny#sponsors) for your continued support\n\n\n## Development\n\nList all the available project tasks using the `make` help\n\n```shell\nmake\n```\n\n\u003e This project uses `make` tasks to run the Clojure tests, kaocha test runner and package the service into an uberjar.  The `Makefile` uses `clojure` commands and arguments that can be used directly if not using `make`.\n\nStart a Clojure REPL process with a rich terminal UI, nREPL server for editor connection and including the `build.clj` script on the class path\n\n```shell\nmake repl\n```\n\nRun kaocha unit test runner to check the template configuration against the seancorfield/deps-new template specification\n\n```shell\nmake test\n```\n\nRun tests when ever there are file changes using kaocha watch (requires `:test/watch` from Practicalli Clojure CLI Config)\n\n```shell\nmake test-watch\n```\n\n\u003e [Practicalli Blog: Create deps-new template for Clojure CLI projects](https://practical.li/blog-staging/posts/create-deps-new-template-for-clojure-cli-projects/)\n\n## License\n\nCopyright © 2023 Practicalli\n\nCreative Commons Attribution Share-Alike 4.0 International\n","funding_links":["https://github.com/sponsors/practicalli-johnny","https://github.com/sponsors/practicalli-johnny/"],"categories":["Clojure"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpracticalli%2Fproject-templates","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpracticalli%2Fproject-templates","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpracticalli%2Fproject-templates/lists"}