{"id":15010399,"url":"https://github.com/wdhowe/clj-project","last_synced_at":"2026-03-02T07:01:02.812Z","repository":{"id":55387541,"uuid":"324035707","full_name":"wdhowe/clj-project","owner":"wdhowe","description":"Template for a clj tools based project.","archived":false,"fork":false,"pushed_at":"2024-02-09T04:55:59.000Z","size":17,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-02-13T04:31:35.666Z","etag":null,"topics":["clj","clojure","clojure-deps","clojure-tools","template"],"latest_commit_sha":null,"homepage":"","language":"Clojure","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"epl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/wdhowe.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2020-12-24T01:17:52.000Z","updated_at":"2024-02-07T04:12:39.000Z","dependencies_parsed_at":"2024-02-09T05:32:56.944Z","dependency_job_id":"23d5584b-9fa3-4d86-8981-6b0d0ed2db4f","html_url":"https://github.com/wdhowe/clj-project","commit_stats":{"total_commits":5,"total_committers":2,"mean_commits":2.5,"dds":"0.19999999999999996","last_synced_commit":"5f69bc8efda546a507aed51d85b581a287fed24e"},"previous_names":[],"tags_count":1,"template":true,"template_full_name":null,"purl":"pkg:github/wdhowe/clj-project","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wdhowe%2Fclj-project","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wdhowe%2Fclj-project/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wdhowe%2Fclj-project/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wdhowe%2Fclj-project/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wdhowe","download_url":"https://codeload.github.com/wdhowe/clj-project/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wdhowe%2Fclj-project/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29994618,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-02T01:47:34.672Z","status":"online","status_checked_at":"2026-03-02T02:00:07.342Z","response_time":60,"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":["clj","clojure","clojure-deps","clojure-tools","template"],"created_at":"2024-09-24T19:34:01.950Z","updated_at":"2026-03-02T07:01:02.784Z","avatar_url":"https://github.com/wdhowe.png","language":"Clojure","funding_links":[],"categories":[],"sub_categories":[],"readme":"# clj-project\n\n\u003c!-- Uncomment after editing links at the bottom of this page\n[![Build Status][gh-actions-badge]][gh-actions] [![Clojars Project][clojars-badge]][clojars] [![Clojure Docs][cljdoc-badge]][cljdoc-link] [![Clojure version][clojure-v]](deps.edn)\n/--\u003e\n\nA template for starting a clj tools based project.\n\n## Overview\n\nBatteries included features:\n\n- Project dirs/file basics\n  - src and test directory structure.\n  - .gitignore, build.clj, deps.edn, LICENSE, README.\n- Tasks: Taskfile for common development tasks.\n- Dev: REPL with nREPL and cider-nrepl for Calva/VSCode.\n- Quality: Linting with 'clj-kondo', formatting with 'cljfmt'.\n- Tests: Clojure 'test-runner' from Cognitect.\n- Dependencies: Dependency version checks with 'antq'.\n- Packaging: Create jars/uberjars with 'clojure.tools.build'.\n- Deploy: Publish jars/uberjars to clojars via 'deps-deploy'.\n- Docker: Dockerfile for containerized builds.\n- CI/CD: Github Workflow that runs tests and packages.\n\n## Usage\n\nRun the -main function in the namespace/core.clj file:\n\n- Method 1: Implied -main function in the namespace. Args sent as a list.\n\n```clojure\nclj -M:run-m\n```\n\n- Method 2: Explicit namespace+function. Args sent as a key value map.\n\n```clojure\nclj -X:run-x\n```\n\n## Tasks\n\nA [Taskfile](https://taskfile.dev) is provided as a convenience wrapper around\nthe clj commands documented below.\n\nList all available tasks:\n\n```sh\ntask\n```\n\nExamples:\n\n```sh\ntask test           # Run tests\ntask build          # Build uberjar\ntask lint           # Lint code\ntask fmt            # Format code\ntask docker:build   # Build Docker image\ntask outdated       # Check for outdated deps\n```\n\n## Development\n\nStart a dev REPL with nREPL for Calva/VSCode:\n\n```clojure\nclj -M:dev\n```\n\nLint code:\n\n```clojure\nclj -M:lint src/ test/\n```\n\nCheck formatting:\n\n```clojure\nclj -M:cljfmt check src/ test/\n```\n\nFix formatting:\n\n```clojure\nclj -M:cljfmt fix src/ test/\n```\n\n## Tests\n\nRun tests (excludes integration and strict tests):\n\n```clojure\nclj -M:test\n```\n\nRun tests matching a pattern:\n\n```clojure\nclj -X:test-m :p core\n```\n\nRun integration tests:\n\n```clojure\nclj -X:test-integration\n```\n\nRun all tests via build (no exclusions):\n\n```clojure\nclj -T:build test\n```\n\n## Dependency Maintenance\n\nCheck for outdated dependencies:\n\n```clojure\nclj -M:outdated\n```\n\nUpgrade outdated dependencies.\n\n```clojure\nclj -M:outdated --upgrade\n```\n\n## Packaging\n\nTest, write pom, and build a JAR.\n\n```clojure\nclj -T:build jar\n```\n\nBuild a uberJAR.\n\n```clojure\nclj -T:build uber\n```\n\nTest, write pom, and build a uberJAR.\n\n```clojure\nclj -T:build ci\n```\n\nClean packaging area.\n\n```clojure\nclj -T:build clean\n```\n\n## Deploy\n\nDeploy jars to clojars:\n\n```clojure\n;; env vars for clojars\nCLOJARS_USERNAME=username\nCLOJARS_PASSWORD=clojars-token\n\nclj -T:build deploy\n```\n\n\u003c!-- Named page links below: /--\u003e\n\n[gh-actions-badge]: https://github.com/wdhowe/clj-project/workflows/ci%2Fcd/badge.svg\n[gh-actions]: https://github.com/wdhowe/clj-project/actions\n[cljdoc-badge]: https://cljdoc.org/badge/com.github.wdhowe/clj-project\n[cljdoc-link]: https://cljdoc.org/d/com.github.wdhowe/clj-project/CURRENT\n[clojure-v]: https://img.shields.io/badge/clojure-1.12.4-blue.svg\n[clojars]: https://clojars.org/com.github.wdhowe/clj-project\n[clojars-badge]: https://img.shields.io/clojars/v/com.github.wdhowe/clj-project.svg\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwdhowe%2Fclj-project","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwdhowe%2Fclj-project","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwdhowe%2Fclj-project/lists"}