{"id":27243702,"url":"https://github.com/goerz/cookiecutter-juliapackage","last_synced_at":"2025-10-19T02:31:42.666Z","repository":{"id":284230670,"uuid":"954252310","full_name":"goerz/cookiecutter-juliapackage","owner":"goerz","description":"Cookiecutter Template for Julia Projects","archived":false,"fork":false,"pushed_at":"2025-08-12T12:55:56.000Z","size":39,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-10-10T20:36:28.276Z","etag":null,"topics":["cookiecutter-template","development","julialang"],"latest_commit_sha":null,"homepage":"","language":"Makefile","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/goerz.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-03-24T19:46:12.000Z","updated_at":"2025-08-29T08:07:44.000Z","dependencies_parsed_at":"2025-03-24T21:22:55.265Z","dependency_job_id":"5e568c56-d542-4d75-b5d8-e61ed27b7149","html_url":"https://github.com/goerz/cookiecutter-juliapackage","commit_stats":null,"previous_names":["goerz/cookiecutter-juliapackage"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/goerz/cookiecutter-juliapackage","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/goerz%2Fcookiecutter-juliapackage","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/goerz%2Fcookiecutter-juliapackage/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/goerz%2Fcookiecutter-juliapackage/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/goerz%2Fcookiecutter-juliapackage/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/goerz","download_url":"https://codeload.github.com/goerz/cookiecutter-juliapackage/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/goerz%2Fcookiecutter-juliapackage/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279005273,"owners_count":26083863,"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-10T02:00:06.843Z","response_time":62,"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":["cookiecutter-template","development","julialang"],"created_at":"2025-04-10T20:54:31.663Z","updated_at":"2025-10-10T20:36:29.563Z","avatar_url":"https://github.com/goerz.png","language":"Makefile","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Cookiecutter Template for Julia Projects\n\n[![CI](https://github.com/goerz/cookiecutter-juliapackage/actions/workflows/CI.yml/badge.svg)](https://github.com/goerz/cookiecutter-juliapackage/actions/workflows/CI.yml)\n\n## Prerequisites\n\n* A Unix-based operating system (your mileage may vary on Windows)\n* [`cookiecutter`](https://github.com/cookiecutter/cookiecutter) (`pipx install cookiecutter`, see the [installation instructions](https://github.com/cookiecutter/cookiecutter?tab=readme-ov-file#installation))\n* A GitHub account [authenticated with SSH](https://docs.github.com/en/authentication/connecting-to-github-with-ssh)\n\nThe minimum required version of `cookiecutter` is 2.4.0 to support the [pre-prompt scripts](hooks/pre_prompt.py) that generates the UUID for the Julia package.\n\n## Generating a Julia Project\n\nRun\n\n```\ncookiecutter gh:goerz/cookiecutter-juliapackage\n```\n\nand fill out the required information, following the prompts.\n\nAfterwards,\n\n* create the Project on GitHub. Make sure to match the project name (including the `.jl` suffix!)\n* push the project to GitHub (`git push -u origin master`)\n* add an SSH Deploy Key on GitHub, for Documenter\n  - Install the `DocumenterTools` Julia package into your base environment\n  - Open a REPL for the generated project (`make devrepl`)\n  - Load both `DocumenterTools` and the generated project (e.g., `MyPackage`)\n  - Run, e.g., `DocumenterTools.genkeys(MyPackage)`\n  - Follow the instructions printed in the REPL\n* enable GitHub Pages (Repository Settings, \"Pages\"), set \"Branch\" to `gh-pages`.\n* Make sure you have a [`CODECOV_TOKEN`](https://docs.codecov.com/docs/adding-the-codecov-token) set up. This can be set [at the level of an organization](https://discourse.julialang.org/t/psa-new-version-of-codecov-action-requires-additional-setup/109857). For packages hosted by a personal account, the token must be set as a repository secret (and it it best to use a project-specific token).\n* Go through the settings of the project on GitHub. Options to enable include \"Always suggest updating pull request branches\" and \"Automatically delete head branches\".\n\n## Template Variables\n\n  * `project_name`: The name of the package, including the `.jl` suffix\n  * `author`: The name of the author, in the `Project.toml` and `LICENSE` file\n  * `email`: The email address under which to reach the author\n  * `owner`: The name of the user or organization hosting the project on GitHub\n  * `year`: The year in the copyright notice\n  * `version`: The initial version in the `Project.toml`\n  * `julia_version`: The minimum supported Julia version\n  * `uuid`: The UUID of the project. This should be [auto-generated](https://stackoverflow.com/questions/69945658/how-to-create-a-uuid-for-a-julia-package).\n\n## Features\n\n* `Makefile` for development workflows (see below)\n* Test environment configured with `test/Project.toml` (requires Julia 1.11 for the [`[Sources]` section](https://github.com/crate-ci/typos))\n* Automated testing on CI\n* Documentation via [Documenter](https://documenter.juliadocs.org/stable/)\n* Documentation build environment configured with `docs/Project.toml` (requires Julia 1.11 for the [`[Sources]` section](https://github.com/crate-ci/typos))\n* Documentation is build on CI and deployed to GitHub Pages\n* For pull requests, CI deploys preview documentation and automatically cleans it up\n* [CompatHelper](https://github.com/JuliaRegistries/CompatHelper.jl) and [TagBot](https://github.com/JuliaRegistries/TagBot)\n* Code coverage with [Codecov](https://about.codecov.io). Locally, coverage can be created with `make coverage`\n* Generate a local HTML coverage report with `make htmlcoverage`\n* Automatic code style via [JuliaFormatter](https://github.com/domluna/JuliaFormatter.jl), enforced on CI.\n* The default branch is `master`, [not `main`](https://docs.github.com/en/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/managing-the-default-branch-name-for-your-repositories)\n* Spell-checking with [typos](https://github.com/crate-ci/typos) on CI.\n* Versions on `master` must have a `-dev` or `+dev` suffix. Release versions are allowed only on `release-*` branches\n\n## Package Extensions\n\nIf you would like to add [extension modules](https://docs.julialang.org/en/v1/manual/code-loading/#man-extensions) to the package, make sure to edit the `Makefile` to take into account the `ext` folder:\n\n* In the `coverage` target, make sure that `generate_coverage` is called with the additional option `folder_list = [\"src\", \"ext\"])`\n* In the `codestyle` target, add `\"ext\"` to the list of folders being formatted.\n\n\n## Development\n\nVarious development tasks can be achieved via the `Makefile`. Run `make` (or `make help`) for an overview.\n\nRunning `make devrepl` opens a development REPL where the tests can be run with `include(\"test/runtests.jl\")` and the documentation can be built using `include(\"docs/make.jl\")`.\n\nReview the `CONTRIBUTING.md` file in the generated project.\n\nThe [`git merge-pr` script](https://github.com/goerz/git-merge-pr)  is recommended over merging pull requests via the GitHub UI.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgoerz%2Fcookiecutter-juliapackage","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgoerz%2Fcookiecutter-juliapackage","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgoerz%2Fcookiecutter-juliapackage/lists"}