From 3a74126c64d2155995b73b661158a56ee9eb0c05 Mon Sep 17 00:00:00 2001 From: Stephen Kent Date: Fri, 3 Apr 2026 10:31:12 -0700 Subject: [PATCH] Add more documentation to project and template --- MAINTAINING.md | 2 +- README.md | 66 ++++++++++++-- copier.yaml | 8 +- docs/prerequisites.md | 26 ++++++ docs/project-creation.md | 71 +++++++++++++++ docs/project-development.md | 35 ++++++++ docs/project-features.md | 87 +++++++++++++++++++ docs/project-updates.md | 32 +++++++ pyproject.toml | 2 +- template/README.md.jinja | 2 +- template/pyproject.toml.jinja | 4 + ...able_docs %}zensical.toml{% endif %}.jinja | 2 +- ...'public' %}MAINTAINING.md{% endif %}.jinja | 2 +- tests/__snapshots__/test_maintaining.ambr | 16 ++-- tests/__snapshots__/test_pyproject.ambr | 4 +- tests/__snapshots__/test_readme.ambr | 14 +-- tests/__snapshots__/test_zensical.ambr | 4 +- zensical.toml | 11 ++- 18 files changed, 351 insertions(+), 37 deletions(-) create mode 100644 docs/prerequisites.md create mode 100644 docs/project-creation.md create mode 100644 docs/project-development.md create mode 100644 docs/project-features.md create mode 100644 docs/project-updates.md diff --git a/MAINTAINING.md b/MAINTAINING.md index 793ab1a..1edd115 100644 --- a/MAINTAINING.md +++ b/MAINTAINING.md @@ -4,7 +4,7 @@ These steps only need to be completed once after the project is first created. -### GitHub Repository +### GitHub repository [Settings → General][repo-settings]: diff --git a/README.md b/README.md index 99a7105..a2eca1f 100644 --- a/README.md +++ b/README.md @@ -2,29 +2,77 @@ [Copier][copier] template for Python projects with modern tooling -[![Copier](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/copier-org/copier/master/img/badge/badge-grayscale-inverted-border-purple.json)][copier] -[![License](https://img.shields.io/github/license/smkent/copier-python)](LICENSE) +[![Copier][copier-badge]][copier] +[![License](https://img.shields.io/github/license/smkent/copier-python)](https://github.com/smkent/copier-python/blob/main/LICENSE) [![PyPI](https://img.shields.io/pypi/v/copier-python)](https://pypi.org/project/copier-python/) [![Python](https://img.shields.io/pypi/pyversions/copier-python)](https://pypi.org/project/copier-python/) [![GitHub stars](https://img.shields.io/github/stars/smkent/copier-python?style=social)](https://github.com/smkent/copier-python) -## Prerequisites +## Quick start -- [Astral's **uv** Python project manager][uv] -- [Copier][copier]: `uv tool install copier` - -## Usage +With [Astral's **uv**][uv] and [**Copier**][copier] (`uv tool install copier`) +installed: ```sh copier copy "gh:smkent/copier-python" /new/project/path ``` +**[For more details, see the documentation!][docs-usage]** + +## Features + +* [Astral][astral] toolset: [**uv**][uv], [**ruff**][ruff], and [**ty**][ty] + + [![uv][uv-badge]][uv] + [![ruff][ruff-badge]][ruff] + [![ty][ty-badge]][ty] + +* [**prek**][prek] for [pre-commit][pre-commit] compatible git hooks + + [![prek][prek-badge]][prek] + +* Update automation with [**Renovate**][renovate] and + [**`copier update`**][copier-update] + + [![Copier][copier-badge]][copier-update] + [![renovate][renovate-badge]][renovate] + +* [**PyPI package**][pypi] and [**container image**][ghcr-docs] release + automation via [**GitHub Actions**][github-actions] +* [**pytest**][pytest] test framework with [**codecov.io**][codecovio] support +* [**Zensical**][zensical] project documentation with automatic deployment to + [**GitHub Pages**][github-pages] +* [**Poe the Poet**][poethepoet] for task shortcuts such as + `poe lint`, `poe test` + ## Credits This template was inspired by [pawamoy/copier-uv][copier-uv] and [ritwiktiwari/copier-astral][copier-astral] -- Thanks! +[astral]: https://astral.sh +[codecovio]: https://codecov.io +[copier-astral]: https://ritwiktiwari.github.io/copier-astral/ +[copier-badge]: https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/copier-org/copier/master/img/badge/badge-grayscale-inverted-border-purple.json +[copier-update]: https://copier.readthedocs.io/en/stable/updating/ +[copier-uv]: https://pawamoy.github.io/copier-uv/ [copier]: https://copier.readthedocs.io -[copier-uv]: https://github.com/pawamoy/copier-uv -[copier-astral]: https://github.com/ritwiktiwari/copier-astral +[docs-usage]: https://smkent.github.io/copier-python/prerequisites/ +[ghcr-docs]: https://docs.github.com/en/packages/working-with-a-github-packages-registry/working-with-the-container-registry +[github-actions]: https://github.com/features/actions +[github-pages]: https://pages.github.com +[poethepoet]: https://poethepoet.natn.io/ +[pre-commit]: https://pre-commit.com/ +[prek-badge]: https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/j178/prek/master/docs/assets/badge-v0.json +[prek]: https://prek.j178.dev/ +[pypi]: https://pypi.org +[pytest]: https://docs.pytest.org +[renovate-badge]: https://img.shields.io/badge/renovate-enabled-brightgreen.svg?logo=renovatebot +[renovate]: https://docs.renovatebot.com/ +[ruff-badge]: https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json +[ruff]: https://docs.astral.sh/ruff/ +[ty-badge]: https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ty/main/assets/badge/v0.json +[ty]: https://docs.astral.sh/ty/ +[uv-badge]: https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/uv/main/assets/badge/v0.json [uv]: https://docs.astral.sh/uv/ +[zensical]: https://zensical.org/ diff --git a/copier.yaml b/copier.yaml index 77f2d6e..401f950 100644 --- a/copier.yaml +++ b/copier.yaml @@ -20,8 +20,12 @@ _message_after_copy: | git push -u origin main {%- if project_visibility == 'public' %} - See MAINTAINING.md for GitHub repository configuration - and additional features setup + For GitHub repository configuration and additional features setup, + either see MAINTAINING.md, or run the documentation site locally: + + uv run poe docs + + Then, see First Time Setup at: http://localhost:8000/{{ project_name }}/maintaining/ {%- endif %} _message_after_update: | diff --git a/docs/prerequisites.md b/docs/prerequisites.md new file mode 100644 index 0000000..a097c38 --- /dev/null +++ b/docs/prerequisites.md @@ -0,0 +1,26 @@ +--- +icon: lucide/bookmark-check +--- + +# Prerequisites + +- [x] A [supported version][python-versions] of [**Python**][python] +- [x] [**git** for verson control][git] +- [x] [Astral's **uv** Python project manager][uv]: `pip install uv` or + [other supported method][uv-installation] +- [x] [**Copier**][copier]: `uv tool install copier` + +## Optional, but recommended + +- [x] [Poe the Poet][poethepoet]: `uv tool install poethepoet` + + This provides `poe` without the `uv run` prefix, + e.g. `poe test` instead of `uv run poe test` + +[copier]: https://copier.readthedocs.io +[git]: https://git-scm.com +[poethepoet]: https://poethepoet.natn.io/ +[python-versions]: https://devguide.python.org/versions/ +[python]: https://python.org +[uv-installation]: https://docs.astral.sh/uv/getting-started/installation/ +[uv]: https://docs.astral.sh/uv/ diff --git a/docs/project-creation.md b/docs/project-creation.md new file mode 100644 index 0000000..eb6e48f --- /dev/null +++ b/docs/project-creation.md @@ -0,0 +1,71 @@ +--- +icon: lucide/wand-sparkles +--- + +# Creating a new project + +## Choose a project name + +Select a name for your project that meets the +[Python package naming criteria][pyproject-name]. This name will be used for +`pip install` if you choose to [publish your project on PyPI][pypi]. + +!!! tip + If you plan to publish your project on PyPI, ensure: + + 1. You have an [active PyPI account][pypi-login] + 2. Your desired package name is available! + +## Create a GitHub repository + +[Create a repository on GitHub for your new project][github-new]. +Set **Repository name** to your chosen project name. + +## Generate new project from template + +1. In the directory where the new project should be created, run Copier: + + ```sh + copier copy "gh:smkent/copier-python" ./project_name + ``` + + Copier will prompt for project information. + Answer the prompts to configure your project. + When complete, Copier will create your new project in `./project_name`. + +2. Change to the new project directory: + + ``` + cd ./project_name + ``` + +## Initialize the project + +To complete project initialization, run: + +```sh +poe init +``` + +This will: + +1. Create the local git repository +2. Install dependencies and git hooks (same as `poe setup`) +3. Create an initial commit with the newly created project contents +4. Add your GitHub repository as the `origin` remote + (when `project_visibility: public`) + +## Push repository to GitHub + +Push your new project to your GitHub repository: + +```sh +git push -u origin main +``` + +Your project's contents should now be visible on GitHub! + +[github-new]: https://github.com/new +[pypi-login]: https://pypi.org/account/login/ +[pypi]: https://pypi.org +[pyproject-name]: https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#name diff --git a/docs/project-development.md b/docs/project-development.md new file mode 100644 index 0000000..da6855c --- /dev/null +++ b/docs/project-development.md @@ -0,0 +1,35 @@ +--- +icon: lucide/braces +--- + +# Project development workflow + +## Cloning the repository + +Run `poe setup` in new repository clones to enable git hooks: + +```sh +git clone https://github.com// +cd project_name +uv sync +uv run poe setup # Enables pre-commit hooks +``` + +## Common tasks + +| Command | Description | +|---|---| +| `poe docs` | Run documentation server locally | +| `poe lint` | Run all formatters and static checks | +| `poe lt` | Run all formatters, static checks and tests (`lint` and `test`) | +| `poe snapup` | Update test snapshots | +| `poe test` | Run tests | + +## Creating a release + +Create and push a tag: + +```sh +git tag vX.Y.Z +git push --tags +``` diff --git a/docs/project-features.md b/docs/project-features.md new file mode 100644 index 0000000..94b14c5 --- /dev/null +++ b/docs/project-features.md @@ -0,0 +1,87 @@ +--- +icon: lucide/settings +--- + +# Preparing project features + +!!! tip + These instructions are also present in your new project, with links directly + to your project's specific settings pages! To view these instructions in + your project: + + 1. Start the local documentation server: `poe docs` + 2. In your browser: + + 1. Open **** + 2. Click the **Development** tab + 3. Click **Maintaining** in the left nav bar + + +## GitHub repository + +[Repository Settings → General][github-settings-docs]: + +- [x] Allow merge commits +- [ ] Allow squash merging +- [ ] Allow rebase merging +- [x] Automatically delete head branches + +Repository Settings → Branches → Add branch protection rule for the default branch +(`main`): + +- [x] Restrict deletions +- [x] Require a pull request before merging +- [x] Block force pushes + +## Renovate + +Ensure the [Renovate app][renovate] is installed on your account, then enable +it for your repository. + +## PyPI publishing + +!!! info "Only needed if your project will publish packages to PyPI" + +This template uses [trusted publishing][pypi-trusted-publishing] so no API +tokens need to be stored as secrets. + +1. On PyPI, add a (pending) trusted publisher in your + [Trusted Publisher Management][pypi-publishing-settings] settings: + - Publisher: GitHub Actions + - Owner: `` + - Repository: `` + - Workflow: `release.yaml` + - Environment: `pypi` +2. Create the `pypi` environment in the GitHub repository: + Repository Settings → Environments → New environment → `pypi` +3. Publish a release by pushing a tag: + ```sh + git tag v0.1.0 # or your desired first version number + git push --tags + ``` + +## Container registry (ghcr.io) + +!!! info "Only needed if your project will build and publish container images" + +Enable write access for Actions: + +Repository Settings → Actions → General → Workflow permissions +→ Read and write permissions + +## GitHub Pages + +!!! info "Only needed if your project will publish the documentation site" + +Repository Settings → Pages → Source → GitHub Actions + +[copier]: https://copier.readthedocs.io +[github-new]: https://github.com/new +[github-settings-docs]: https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features +[pypi-publishing-settings]: https://pypi.org/manage/account/publishing/ +[pypi-trusted-publishing]: https://docs.pypi.org/trusted-publishers/ +[pypi]: https://pypi.org +[pypi-login]: https://pypi.org/account/login/ +[pyproject-name]: https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#name +[renovate]: https://github.com/apps/renovate +[uv]: https://docs.astral.sh/uv/ diff --git a/docs/project-updates.md b/docs/project-updates.md new file mode 100644 index 0000000..e646bce --- /dev/null +++ b/docs/project-updates.md @@ -0,0 +1,32 @@ +--- +icon: lucide/git-merge +--- + +# Applying copier-python template updates + +Copier can update your project with template changes that have occurred since +the project was created. + +To apply updates, simply run in your project directory: + +```sh +copier update +``` + +This will repeat the setup prompts, in case any prompts have been added or +changed. + +!!! tip + To change template-provided features in your project, simply change your + answers in the update prompts. + +To apply updates without being prompted (reusing all previous answers), run: + +```sh +copier update -l +``` + +When `copier update` is finished, view changes with `git status` and `git diff`. +Resolve any conflicts, and then commit the result. + +[copier-update]: https://copier.readthedocs.io/en/stable/updating/ diff --git a/pyproject.toml b/pyproject.toml index 0bec892..a1a77f8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -32,7 +32,7 @@ keywords = [] dependencies = [] [project.urls] -Homepage = "https://github.com/smkent/copier-python" +Homepage = "https://smkent.github.io/copier-python" Repository = "https://github.com/smkent/copier-python" Issues = "https://github.com/smkent/copier-python/issues" diff --git a/template/README.md.jinja b/template/README.md.jinja index 41cbcca..1931760 100644 --- a/template/README.md.jinja +++ b/template/README.md.jinja @@ -3,7 +3,7 @@ {{ project_description }} {%- if project_visibility == 'public' %} -[![License](https://img.shields.io/github/license/{{ github_user }}/{{ project_name }})](LICENSE) +[![License](https://img.shields.io/github/license/{{ github_user }}/{{ project_name }})](https://github.com/{{ github_user }}/{{ project_name }}/blob/main/LICENSE) {%- if enable_pypi %} [![PyPI](https://img.shields.io/pypi/v/{{ project_name }})](https://pypi.org/project/{{ project_name }}/) [![Python](https://img.shields.io/pypi/pyversions/{{ project_name }})](https://pypi.org/project/{{ project_name }}/) diff --git a/template/pyproject.toml.jinja b/template/pyproject.toml.jinja index 2170be5..e1857f2 100644 --- a/template/pyproject.toml.jinja +++ b/template/pyproject.toml.jinja @@ -32,7 +32,11 @@ dependencies = [] {%- if project_visibility == 'public' %} [project.urls] +{%- if enable_docs %} +Homepage = "https://{{ github_user }}.github.io/{{ project_name }}" +{%- else %} Homepage = "https://github.com/{{ github_user }}/{{ project_name }}" +{%- endif %} Repository = "https://github.com/{{ github_user }}/{{ project_name }}" Issues = "https://github.com/{{ github_user }}/{{ project_name }}/issues" {%- endif %} diff --git a/template/{% if enable_docs %}zensical.toml{% endif %}.jinja b/template/{% if enable_docs %}zensical.toml{% endif %}.jinja index 37cfa2d..0b2e0e8 100644 --- a/template/{% if enable_docs %}zensical.toml{% endif %}.jinja +++ b/template/{% if enable_docs %}zensical.toml{% endif %}.jinja @@ -69,7 +69,7 @@ toggle.name = "Switch to system preference" [[project.extra.social]] icon = "fontawesome/brands/github" -link = "https://github.com/{{ github_user }}" +link = "https://github.com/{{ github_user }}/{{ project_name }}" {%- if enable_pypi %} [[project.extra.social]] diff --git a/template/{% if project_visibility == 'public' %}MAINTAINING.md{% endif %}.jinja b/template/{% if project_visibility == 'public' %}MAINTAINING.md{% endif %}.jinja index 4b3ec88..a746e0e 100644 --- a/template/{% if project_visibility == 'public' %}MAINTAINING.md{% endif %}.jinja +++ b/template/{% if project_visibility == 'public' %}MAINTAINING.md{% endif %}.jinja @@ -6,7 +6,7 @@ These steps only need to be completed once after the project is first created. -### GitHub Repository +### GitHub repository [Settings → General][repo-settings]: diff --git a/tests/__snapshots__/test_maintaining.ambr b/tests/__snapshots__/test_maintaining.ambr index 2150345..e98472e 100644 --- a/tests/__snapshots__/test_maintaining.ambr +++ b/tests/__snapshots__/test_maintaining.ambr @@ -7,7 +7,7 @@ These steps only need to be completed once after the project is first created. - ### GitHub Repository + ### GitHub repository [Settings → General][repo-settings]: @@ -65,7 +65,7 @@ These steps only need to be completed once after the project is first created. - ### GitHub Repository + ### GitHub repository [Settings → General][repo-settings]: @@ -146,7 +146,7 @@ These steps only need to be completed once after the project is first created. - ### GitHub Repository + ### GitHub repository [Settings → General][repo-settings]: @@ -196,7 +196,7 @@ These steps only need to be completed once after the project is first created. - ### GitHub Repository + ### GitHub repository [Settings → General][repo-settings]: @@ -269,7 +269,7 @@ These steps only need to be completed once after the project is first created. - ### GitHub Repository + ### GitHub repository [Settings → General][repo-settings]: @@ -322,7 +322,7 @@ These steps only need to be completed once after the project is first created. - ### GitHub Repository + ### GitHub repository [Settings → General][repo-settings]: @@ -398,7 +398,7 @@ These steps only need to be completed once after the project is first created. - ### GitHub Repository + ### GitHub repository [Settings → General][repo-settings]: @@ -443,7 +443,7 @@ These steps only need to be completed once after the project is first created. - ### GitHub Repository + ### GitHub repository [Settings → General][repo-settings]: diff --git a/tests/__snapshots__/test_pyproject.ambr b/tests/__snapshots__/test_pyproject.ambr index d9c506c..4934c05 100644 --- a/tests/__snapshots__/test_pyproject.ambr +++ b/tests/__snapshots__/test_pyproject.ambr @@ -242,7 +242,7 @@ dependencies = [] [project.urls] - Homepage = "https://github.com/ness/PKFire" + Homepage = "https://ness.github.io/PKFire" Repository = "https://github.com/ness/PKFire" Issues = "https://github.com/ness/PKFire/issues" @@ -640,7 +640,7 @@ dependencies = [] [project.urls] - Homepage = "https://github.com/ness/PKFire" + Homepage = "https://ness.github.io/PKFire" Repository = "https://github.com/ness/PKFire" Issues = "https://github.com/ness/PKFire/issues" diff --git a/tests/__snapshots__/test_readme.ambr b/tests/__snapshots__/test_readme.ambr index 5c10e1e..73a9117 100644 --- a/tests/__snapshots__/test_readme.ambr +++ b/tests/__snapshots__/test_readme.ambr @@ -5,7 +5,7 @@ Onett Little League - [![License](https://img.shields.io/github/license/ness/PKFire)](LICENSE) + [![License](https://img.shields.io/github/license/ness/PKFire)](https://github.com/ness/PKFire/blob/main/LICENSE) [![CI](https://github.com/ness/PKFire/actions/workflows/ci.yaml/badge.svg)](https://github.com/ness/PKFire/actions/workflows/ci.yaml) [![Coverage](https://codecov.io/gh/ness/PKFire/branch/main/graph/badge.svg)](https://codecov.io/gh/ness/PKFire) [![Renovate](https://img.shields.io/badge/renovate-enabled-brightgreen?logo=renovatebot)](https://renovatebot.com) @@ -19,7 +19,7 @@ Onett Little League - [![License](https://img.shields.io/github/license/ness/PKFire)](LICENSE) + [![License](https://img.shields.io/github/license/ness/PKFire)](https://github.com/ness/PKFire/blob/main/LICENSE) [![CI](https://github.com/ness/PKFire/actions/workflows/ci.yaml/badge.svg)](https://github.com/ness/PKFire/actions/workflows/ci.yaml) [![Renovate](https://img.shields.io/badge/renovate-enabled-brightgreen?logo=renovatebot)](https://renovatebot.com) [![GitHub stars](https://img.shields.io/github/stars/ness/PKFire?style=social)](https://github.com/ness/PKFire) @@ -32,7 +32,7 @@ Onett Little League - [![License](https://img.shields.io/github/license/ness/PKFire)](LICENSE) + [![License](https://img.shields.io/github/license/ness/PKFire)](https://github.com/ness/PKFire/blob/main/LICENSE) [![PyPI](https://img.shields.io/pypi/v/PKFire)](https://pypi.org/project/PKFire/) [![Python](https://img.shields.io/pypi/pyversions/PKFire)](https://pypi.org/project/PKFire/) [![CI](https://github.com/ness/PKFire/actions/workflows/ci.yaml/badge.svg)](https://github.com/ness/PKFire/actions/workflows/ci.yaml) @@ -54,7 +54,7 @@ Onett Little League - [![License](https://img.shields.io/github/license/ness/PKFire)](LICENSE) + [![License](https://img.shields.io/github/license/ness/PKFire)](https://github.com/ness/PKFire/blob/main/LICENSE) [![PyPI](https://img.shields.io/pypi/v/PKFire)](https://pypi.org/project/PKFire/) [![Python](https://img.shields.io/pypi/pyversions/PKFire)](https://pypi.org/project/PKFire/) [![CI](https://github.com/ness/PKFire/actions/workflows/ci.yaml/badge.svg)](https://github.com/ness/PKFire/actions/workflows/ci.yaml) @@ -75,7 +75,7 @@ Onett Little League - [![License](https://img.shields.io/github/license/ness/PKFire)](LICENSE) + [![License](https://img.shields.io/github/license/ness/PKFire)](https://github.com/ness/PKFire/blob/main/LICENSE) [![PyPI](https://img.shields.io/pypi/v/PKFire)](https://pypi.org/project/PKFire/) [![Python](https://img.shields.io/pypi/pyversions/PKFire)](https://pypi.org/project/PKFire/) [![CI](https://github.com/ness/PKFire/actions/workflows/ci.yaml/badge.svg)](https://github.com/ness/PKFire/actions/workflows/ci.yaml) @@ -97,7 +97,7 @@ Onett Little League - [![License](https://img.shields.io/github/license/ness/PKFire)](LICENSE) + [![License](https://img.shields.io/github/license/ness/PKFire)](https://github.com/ness/PKFire/blob/main/LICENSE) [![PyPI](https://img.shields.io/pypi/v/PKFire)](https://pypi.org/project/PKFire/) [![Python](https://img.shields.io/pypi/pyversions/PKFire)](https://pypi.org/project/PKFire/) [![CI](https://github.com/ness/PKFire/actions/workflows/ci.yaml/badge.svg)](https://github.com/ness/PKFire/actions/workflows/ci.yaml) @@ -127,7 +127,7 @@ Onett Little League - [![License](https://img.shields.io/github/license/ness/PKFire)](LICENSE) + [![License](https://img.shields.io/github/license/ness/PKFire)](https://github.com/ness/PKFire/blob/main/LICENSE) [![PyPI](https://img.shields.io/pypi/v/PKFire)](https://pypi.org/project/PKFire/) [![Python](https://img.shields.io/pypi/pyversions/PKFire)](https://pypi.org/project/PKFire/) [![CI](https://github.com/ness/PKFire/actions/workflows/ci.yaml/badge.svg)](https://github.com/ness/PKFire/actions/workflows/ci.yaml) diff --git a/tests/__snapshots__/test_zensical.ambr b/tests/__snapshots__/test_zensical.ambr index 0f7b748..124ce1b 100644 --- a/tests/__snapshots__/test_zensical.ambr +++ b/tests/__snapshots__/test_zensical.ambr @@ -190,7 +190,7 @@ [[project.extra.social]] icon = "fontawesome/brands/github" - link = "https://github.com/ness" + link = "https://github.com/ness/PKFire" # ---------------------------------------------------------------------------- # Markdown extensions @@ -439,7 +439,7 @@ [[project.extra.social]] icon = "fontawesome/brands/github" - link = "https://github.com/ness" + link = "https://github.com/ness/PKFire" [[project.extra.social]] icon = "fontawesome/brands/python" diff --git a/zensical.toml b/zensical.toml index aafcaf5..3880514 100644 --- a/zensical.toml +++ b/zensical.toml @@ -8,9 +8,16 @@ repo_name = "smkent/copier-python" copyright = "© 2026 Stephen Kent" nav = [ - { "Home" = [ + { "About" = [ { "Overview" = "index.md" }, { "License" = "license.md" }, + { "Usage" = [ + { "Prerequisites" = "prerequisites.md" }, + { "Creating a project" = "project-creation.md" }, + { "Preparing features" = "project-features.md" }, + { "Development workflow" = "project-development.md" }, + { "Template updates" = "project-updates.md" }, + ] }, ] }, { "Development" = [ { "Contributing" = "contributing.md" }, @@ -65,7 +72,7 @@ toggle.name = "Switch to system preference" [[project.extra.social]] icon = "fontawesome/brands/github" -link = "https://github.com/smkent" +link = "https://github.com/smkent/copier-python" [[project.extra.social]] icon = "fontawesome/brands/python"