diff --git a/.editorconfig b/.editorconfig
index 74f0751..4e55940 100644
--- a/.editorconfig
+++ b/.editorconfig
@@ -1,5 +1,5 @@
# ==============================================================================
-# EditorConfig for project_name
+# EditorConfig for template-python
# https://editorconfig.org
#
# This file enforces consistent coding styles across multiple editors and IDEs.
diff --git a/.env.example b/.env.example
index 15bfebd..31fc86b 100644
--- a/.env.example
+++ b/.env.example
@@ -15,7 +15,7 @@
APP_ENV=development
# Enable/disable debug mode (verbose logging, stack traces)
APP_DEBUG=true
-APP_NAME="project_name"
+APP_NAME="template_python"
APP_VERSION="1.0.0"
# Base URL for the application (useful for generating absolute links, emails)
APP_URL=http://localhost:8080
@@ -42,13 +42,13 @@ CORS_ALLOWED_ORIGINS=http://localhost:3000,http://localhost:8080
DB_CONNECTION=postgres
DB_HOST=localhost
DB_PORT=5432
-DB_DATABASE=project_name_dev
+DB_DATABASE=template_python_dev
DB_USERNAME=admin
DB_PASSWORD=secret
# Database schema (if applicable, e.g., public for postgres)
DB_SCHEMA=public
# Full connection string alternative (often used by ORMs like Prisma or SQLAlchemy)
-# DATABASE_URL=postgres://admin:secret@localhost:5432/project_name_dev
+# DATABASE_URL=postgres://admin:secret@localhost:5432/template_python_dev
# ------------------------------------------------------------------------------
# Cache / Key-Value Store / Message Brokers
diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml
index 4ec5aa8..7da2476 100644
--- a/.github/ISSUE_TEMPLATE/bug_report.yml
+++ b/.github/ISSUE_TEMPLATE/bug_report.yml
@@ -1,6 +1,6 @@
---
name: 🐛 Bug Report
-description: Create a report to help us improve {{project_name}}
+description: Create a report to help us improve template-python
labels:
- "bug"
- "triage"
@@ -8,10 +8,10 @@ body:
- type: markdown
attributes:
value: |
- Thanks for taking the time to report a bug to `{{project_name}}`!
+ Thanks for taking the time to report a bug to `template-python`!
> [!IMPORTANT]
> If you have found a **security vulnerability**, please refer to our [Security Policy](../SECURITY.md) and do not open a public issue.
- For general help and Q&A, please use [GitHub Discussions](https://github.com/{{organization}}/{{project_name}}/discussions) instead.
+ For general help and Q&A, please use [GitHub Discussions](https://github.com/markurtz/template-python/discussions) instead.
- type: checkboxes
id: checks
attributes:
@@ -19,10 +19,10 @@ body:
description: Please confirm that you have checked the following before submitting your
bug report.
options:
- - label: I have searched the [existing issues](https://github.com/{{organization}}/{{project_name}}/issues)
+ - label: I have searched the [existing issues](https://github.com/markurtz/template-python/issues)
and could not find a similar bug.
required: true
- - label: I have read the [Official Documentation](https://{{organization}}.github.io/{{project_name}}).
+ - label: I have read the [Official Documentation](https://markurtz.github.io/template-python).
required: true
- type: textarea
id: description
@@ -60,7 +60,7 @@ body:
value: |
- OS (e.g., Linux, macOS, Windows):
- Language Version (e.g., Python 3.10):
- - `{{project_name}}` Version:
+ - `template-python` Version:
- Other relevant dependency versions:
validations:
required: true
diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml
index 4914ff2..585d486 100644
--- a/.github/ISSUE_TEMPLATE/feature_request.yml
+++ b/.github/ISSUE_TEMPLATE/feature_request.yml
@@ -1,14 +1,14 @@
---
name: Feature Request
-description: Suggest an idea for {{project_name}}
+description: Suggest an idea for template-python
labels:
- "enhancement"
body:
- type: markdown
attributes:
value: |
- Thanks for taking the time to suggest a feature for {{project_name}}!
- Before submitting, please ensure you have searched our existing [Issues](https://github.com/{{organization}}/{{project_name}}/issues) and [Discussions](https://github.com/{{organization}}/{{project_name}}/discussions) to see if this feature has already been requested.
+ Thanks for taking the time to suggest a feature for template-python!
+ Before submitting, please ensure you have searched our existing [Issues](https://github.com/markurtz/template-python/issues) and [Discussions](https://github.com/markurtz/template-python/discussions) to see if this feature has already been requested.
- type: textarea
id: problem
attributes:
diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md
index b1ce491..91f2a4d 100644
--- a/.github/PULL_REQUEST_TEMPLATE.md
+++ b/.github/PULL_REQUEST_TEMPLATE.md
@@ -1,5 +1,5 @@
@@ -16,11 +16,11 @@ If this PR introduces a new feature or changes existing behavior, describe the c
-- [ ] 🐛 Bug fix (non-breaking change which fixes an issue)
-- [ ] ✨ New feature (non-breaking change which adds functionality)
-- [ ] 💥 Breaking change (fix or feature that would cause existing functionality to not work as expected)
-- [ ] 📝 Documentation update (changes to `README.md`, `SUPPORT.md`, docstrings, etc.)
-- [ ] 🛠️ Maintenance/Refactoring (non-breaking change that improves code structure or quality)
+- [ ] Bug fix (non-breaking change which fixes an issue)
+- [ ] New feature (non-breaking change which adds functionality)
+- [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
+- [ ] Documentation update (changes to `README.md`, `SUPPORT.md`, docstrings, etc.)
+- [ ] Maintenance/Refactoring (non-breaking change that improves code structure or quality)
## Test Plan
@@ -52,16 +52,16 @@ please add screenshots, terminal output, or recordings to demonstrate the change
- [ ] Includes AI-assisted code completion
- [ ] Includes code generated by an AI application
-- [ ] Includes AI-generated tests (NOTE: AI written tests should have a docstring that includes `## WRITTEN BY AI ##`)
+- [ ] Includes AI-generated tests
## Checklist
> [!IMPORTANT]
-> Please review and complete this checklist before submitting your PR. This helps our maintainers process your contribution faster and ensures it meets the quality standards of `{{project_name}}`.
+> Please review and complete this checklist before submitting your PR. This helps our maintainers process your contribution faster and ensures it meets the quality standards of `template-python`.
- [ ] "I certify that all code in this PR is my own, except as noted below."
- [ ] I have read the [CONTRIBUTING.md](../CONTRIBUTING.md) guide.
-- [ ] My code follows the established style guidelines of `{{project_name}}`.
+- [ ] My code follows the established style guidelines of `template-python`.
- [ ] I have performed a self-review of my own code.
- [ ] I have commented my code, particularly in hard-to-understand areas.
- [ ] I have made corresponding changes to the documentation.
diff --git a/.github/workflows/development.yml b/.github/workflows/development.yml
index e5fa23d..f2c0680 100644
--- a/.github/workflows/development.yml
+++ b/.github/workflows/development.yml
@@ -75,7 +75,9 @@ jobs:
# ── Stage 3: Docs (Conditional) ────────────────────────────────────────────
docs:
name: "Build & Deploy Docs"
- needs: changes
+ needs:
+ - changes
+ - tests
if: needs.changes.outputs.docs == 'true' && github.event.pull_request.head.repo.fork ==
false
uses: ./.github/workflows/_docs.yml
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index 9ac34f0..cab224d 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -52,7 +52,9 @@ jobs:
# ── Stage 3: Documentation ─────────────────────────────────────────────────
docs:
name: "Build & Deploy Docs"
- needs: quality
+ needs:
+ - quality
+ - tests
uses: ./.github/workflows/_docs.yml
with:
build_type: "dev"
diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml
index 264f7d5..5ae3f85 100644
--- a/.github/workflows/nightly.yml
+++ b/.github/workflows/nightly.yml
@@ -81,7 +81,9 @@ jobs:
# ── Stage 4: Alpha Docs ────────────────────────────────────────────────────
docs:
name: "Nightly Docs"
- needs: check-changes
+ needs:
+ - check-changes
+ - test
if: needs.check-changes.outputs.has_changes == 'true'
uses: ./.github/workflows/_docs.yml
with:
@@ -121,8 +123,7 @@ jobs:
uses: actions/attest-build-provenance@c074443f1aee8d4aeeae555aebba3282517141b2 # v1.5.1
with:
subject-path: dist/*
- - name: Publish to PyPI
- if: github.repository_id != 1226495532 # Skip PyPI for the template repo itself
- uses: pypa/gh-action-pypi-publish@cef221092ed1bacb1cc03d23a2d87d1d172e277b # v1.14
- with:
- packages-dir: dist/
+# - name: Publish to PyPI
+# uses: pypa/gh-action-pypi-publish@cef221092ed1bacb1cc03d23a2d87d1d172e277b # v1.14
+# with:
+# packages-dir: dist/
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 222124f..9fbb0e5 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -49,6 +49,7 @@ jobs:
# ── Stage 4: Versioned Docs ────────────────────────────────────────────────
docs:
name: "Versioned Docs"
+ needs: test
uses: ./.github/workflows/_docs.yml
with:
build_type: "release"
@@ -82,11 +83,10 @@ jobs:
uses: actions/attest-build-provenance@c074443f1aee8d4aeeae555aebba3282517141b2 # v1.5.1
with:
subject-path: dist/*
- - name: Publish to PyPI
- if: github.repository_id != 1226495532 # Skip PyPI for the template repo itself
- uses: pypa/gh-action-pypi-publish@cef221092ed1bacb1cc03d23a2d87d1d172e277b # v1.14
- with:
- packages-dir: dist/
+# - name: Publish to PyPI
+# uses: pypa/gh-action-pypi-publish@cef221092ed1bacb1cc03d23a2d87d1d172e277b # v1.14
+# with:
+# packages-dir: dist/
- name: Create GitHub Release
if: ${{ github.ref_type == 'tag' }}
uses: softprops/action-gh-release@c062e08bd532815e2082a85e87e3ef29c3e6d191 # v2.0.8
diff --git a/.gitignore b/.gitignore
index fce3b1d..3303803 100644
--- a/.gitignore
+++ b/.gitignore
@@ -161,7 +161,7 @@ nosetests.xml
# ==============================================================================
# Python
-src/project_name/version.py
+src/template_python/version.py
__pycache__/
*.py[cod]
*$py.class
diff --git a/AGENTS.md b/AGENTS.md
index 5fd3e62..8697a0e 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -5,7 +5,7 @@
## Project Context
-**`project_name`** is a production-ready Apache 2.0 template repository for bootstrapping modern software projects.
+**`template-python`** is a production-ready Apache 2.0 template repository for bootstrapping modern software projects.
**Primary language:** `Python 3.10+`\
**Package manager:** `Hatch`
@@ -54,7 +54,7 @@
- **`docs/`** and **`mkdocs.yml`** control the site. Do not create docs outside the `nav:` tree.
- `docs/index.md` dynamically includes `README.md` via MkDocs snippets.
-- Use `{{placeholder}}` variables for templated fields (e.g., `project_name`, `{{organization}}`).
+- Use `{{placeholder}}` variables for templated fields (e.g., `template-python`, `markurtz`).
## Agent Notes
diff --git a/CITATION.cff b/CITATION.cff
index c9894c2..e42f54f 100644
--- a/CITATION.cff
+++ b/CITATION.cff
@@ -3,20 +3,19 @@
# For more information on the CFF format, see: https://citation-file-format.github.io/
cff-version: 1.2.0
-title: "project_name"
+title: "template-python"
message: "If you use this software, please cite it as below."
type: software
-version: "{{version}}"
date-released: "{{date_released}}"
license: Apache-2.0
# You can list individual authors or an organization.
# This defaults to the organization to match the README's BibTeX.
authors:
- - name: "{{organization}}"
+ - name: "markurtz"
# - family-names: "{{author_family_name}}"
# given-names: "{{author_given_name}}"
# orcid: "https://orcid.org/{{orcid}}"
-repository-code: "https://github.com/{{organization}}/project_name"
-url: "https://{{organization}}.github.io/project_name"
+repository-code: "https://github.com/markurtz/template-python"
+url: "https://markurtz.github.io/template-python"
diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md
index 92544c5..c4745da 100644
--- a/CODE_OF_CONDUCT.md
+++ b/CODE_OF_CONDUCT.md
@@ -1,4 +1,4 @@
-# Code of Conduct for `project_name`
+# Code of Conduct for `template-python`
## Our Pledge
@@ -61,7 +61,8 @@ representative at an online or offline event.
> [!IMPORTANT]
> Instances of abusive, harassing, or otherwise unacceptable behavior may be
> reported to the community leaders responsible for enforcement by contacting
-> **conduct@{{organization}}.com**.
+>
+>
All complaints will be reviewed and investigated promptly and fairly.
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 8f439bc..0294cd9 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -1,6 +1,6 @@
-# Contributing to project_name
+# Contributing to template-python
-First off, thank you for considering contributing to `project_name`! It's people like you that make this project great.
+First off, thank you for considering contributing to `template-python`! It's people like you that make this project great.
## Code of Conduct
@@ -15,13 +15,13 @@ If you discover a security issue, please refer to our [Security Policy](SECURITY
## How Can I Contribute?
-There are many ways to contribute to `project_name`, and not all of them involve writing code:
+There are many ways to contribute to `template-python`, and not all of them involve writing code:
- **Reporting Bugs:** Help us improve by submitting detailed bug reports via our issue tracker.
- **Suggesting Features:** Propose new features or enhancements that could benefit the project.
- **Improving Documentation:** Fix typos, add examples, or write new guides.
- **Writing Code:** Fix bugs, implement features, or improve performance.
-- **Helping Others:** Answer questions in [Discussions](https://github.com/%7B%7Borganization%7D%7D/%7B%7Bproject_name%7D%7D/discussions) or issue comments.
+- **Helping Others:** Answer questions in [Discussions](https://github.com/markurtz/template-python/discussions) or issue comments.
For general questions and help, please see [SUPPORT.md](SUPPORT.md).
@@ -45,7 +45,7 @@ Before you start coding, please refer to our [Development Guide](DEVELOPING.md)
### 3. Making Changes
-1. **Fork the Repository:** Fork the `project_name` repository to your GitHub account.
+1. **Fork the Repository:** Fork the `template-python` repository to your GitHub account.
1. **Create a Branch:** Create a new branch from `main` for your work (e.g., `git checkout -b feat/add-new-feature`).
1. **Write Code:** Implement your changes, adhering to the project's coding standards.
1. **Write Tests:** Add unit tests or integration tests for your changes to ensure stability.
@@ -67,4 +67,4 @@ Before you start coding, please refer to our [Development Guide](DEVELOPING.md)
## Licensing
-By contributing to `project_name`, you agree that your contributions will be licensed under its [Apache 2.0 License](LICENSE).
+By contributing to `template-python`, you agree that your contributions will be licensed under its [Apache 2.0 License](LICENSE).
diff --git a/DEVELOPING.md b/DEVELOPING.md
index cbc9177..efd8302 100644
--- a/DEVELOPING.md
+++ b/DEVELOPING.md
@@ -1,4 +1,4 @@
-# Developing `project_name`
+# Developing `template-python`
This guide provides instructions for setting up your development environment, navigating the project structure, and adhering to our coding standards.
@@ -22,8 +22,8 @@ Ensure your system meets the following requirements before getting started:
> Once implemented, you can spin up the development environment with:
>
> ```bash
-> git clone https://github.com/{{organization}}/project_name.git
-> cd project_name
+> git clone https://github.com/markurtz/template-python.git
+> cd template-python
>
> # Build and start the development environment in the background
> docker-compose up -d --build
diff --git a/Dockerfile b/Dockerfile
index c2ad751..d9fcbbd 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,5 +1,5 @@
# ---------------------------------------------------------
-# project_name Dockerfile
+# template-python Dockerfile
# Licensed under the Apache License, Version 2.0
# ---------------------------------------------------------
# Standardized Multi-stage Dockerfile Template for Python
@@ -23,7 +23,7 @@ RUN pip install uv hatch
# Copy package manifests and install dependencies
COPY pyproject.toml README.md ./
# Create a dummy src directory to satisfy hatch build if needed
-RUN mkdir -p src/project_name && touch src/project_name/__init__.py
+RUN mkdir -p src/template_python && touch src/template_python/__init__.py
RUN uv pip install --system --no-cache -e .
# Copy application source code
@@ -40,10 +40,10 @@ RUN hatch build
FROM python:3.10-slim
# OCI Standard Labels
-LABEL org.opencontainers.image.title="project_name"
+LABEL org.opencontainers.image.title="template-python"
LABEL org.opencontainers.image.description="Production-ready Python application container"
LABEL org.opencontainers.image.licenses="Apache-2.0"
-LABEL org.opencontainers.image.source="https://github.com/{{organization}}/project_name"
+LABEL org.opencontainers.image.source="https://github.com/markurtz/template-python"
# Define environment variables
ENV APP_ENV=production \
@@ -68,4 +68,4 @@ USER appuser
EXPOSE 8080
# Define the command to run the application
-CMD ["python", "-m", "project_name"]
+CMD ["python", "-m", "template_python"]
diff --git a/NOTICE b/NOTICE
index c4c3b8f..b91e07e 100644
--- a/NOTICE
+++ b/NOTICE
@@ -1,8 +1,8 @@
-project_name
-Copyright {{year}} {{organization}}
+template-python
+Copyright {{year}} markurtz
-This product includes software developed by {{organization}}
-(https://github.com/{{organization}}/project_name).
+This product includes software developed by markurtz
+(https://github.com/markurtz/template-python).
=========================================================================
Third-Party Attributions
diff --git a/README.md b/README.md
index 9caf5ca..da03eae 100644
--- a/README.md
+++ b/README.md
@@ -15,13 +15,15 @@
-
+
+
+
+
+
@@ -31,11 +33,9 @@
-
@@ -62,7 +62,7 @@ ______________________________________________________________________
Welcome to the template-python template repository! This template provides a robust foundation for building high-quality, scalable software projects. It includes standard directories, issue templates, CI/CD workflows, and comprehensive placeholder documentation.
-To use this template, run the included `scripts/bootstrap.sh` script to automatically replace all placeholder variables with your project details. For full setup instructions including GitHub settings, publishing, and docs, see the **[Repository Setup Guide](https://markurtz.github.io/template-python/guides/repository-setup/)**.
+To use this template, run the included `scripts/bootstrap.py` script via `uv run` to automatically replace all placeholder variables with your project details. For full setup instructions including GitHub settings, publishing, and docs, see the **[Repository Setup Guide](https://markurtz.github.io/template-python/guides/repository-setup/)**.
### Why Use template-python?
@@ -79,7 +79,7 @@ When evaluating template-python against other templates, consider the following
| **Setup Speed** | Very Fast | Fast | Slower (requires CLI tool) |
| **Visual Assets** | Pre-configured Light/Dark assets | None | Varies |
| **CI/CD Built-in** | Yes (GitHub Actions) | No | Optional |
-| **Complexity** | Low ([`scripts/bootstrap.sh`](https://github.com/markurtz/template-python/blob/main/scripts/bootstrap.sh)) | None | Medium (Jinja templates) |
+| **Complexity** | Low ([`scripts/bootstrap.py`](https://github.com/markurtz/template-python/blob/main/scripts/bootstrap.py)) | None | Medium (Jinja templates) |
## What's New
@@ -92,10 +92,12 @@ This project has just been instantiated from the template repository. Keep an ey
## Quick Start
```bash
-pip install template-python
+uv run scripts/bootstrap.py
```
-For full installation options (from source, Docker, platform-specific notes) and step-by-step onboarding, see the **[Getting Started guide](https://markurtz.github.io/template-python/getting-started/)**.
+The script will interactively prompt you for your project details (organization, project name, descriptions, and feature toggles) and automatically configure the repository.
+
+For full setup instructions including GitHub settings, publishing, and docs, see the **[Repository Setup Guide](https://markurtz.github.io/template-python/guides/repository-setup/)**.
## Core Concepts
@@ -146,9 +148,7 @@ If you use this template or the resulting software in your research, please cite
@software{template-python,
author = {markurtz},
title = {template-python},
- version = {{{version}}},
- month = {{{month}}},
- year = {2026},
+ year = {{year}},
url = {https://github.com/markurtz/template-python}
}
```
diff --git a/SECURITY.md b/SECURITY.md
index 4ef3726..1a02e20 100644
--- a/SECURITY.md
+++ b/SECURITY.md
@@ -1,10 +1,10 @@
-# Security Policy for `project_name`
+# Security Policy for `template-python`
-We take the security of `project_name` seriously. This document outlines our security policies, supported versions, and how to responsibly disclose a vulnerability.
+We take the security of `template-python` seriously. This document outlines our security policies, supported versions, and how to responsibly disclose a vulnerability.
## Supported Versions
-Please check the table below for the versions of `project_name` that are currently being supported with security updates.
+Please check the table below for the versions of `template-python` that are currently being supported with security updates.
| Version | Supported |
| :------------------------------ | :----------------- |
@@ -20,8 +20,8 @@ Please check the table below for the versions of `project_name` that are current
If you discover a security vulnerability, please bring it to our attention right away using one of the following methods:
-1. **GitHub Security Advisories (Preferred):** Use the "Report a vulnerability" button on the **[Security tab](https://github.com/%7B%7Borganization%7D%7D/%7B%7Bproject_name%7D%7D/security/advisories)** of this repository.
-1. **Email:** Send your report directly to **[INSERT EMAIL ADDRESS OR SECURITY CONTACT]**. *(Optional: Encrypt your email using our PGP key: [INSERT PGP KEY LINK/FINGERPRINT])*
+1. **GitHub Security Advisories (Preferred):** Use the "Report a vulnerability" button on the **[Security tab](https://github.com/markurtz/template-python/security/advisories)** of this repository.
+1. **Email:** Send your report directly to **contact the maintainers**.
### What to Include in Your Report
@@ -31,7 +31,7 @@ To help us resolve the issue quickly, please include the following information:
- **Detailed description** of the vulnerability and its potential impact.
- **Step-by-step instructions** to reproduce the issue.
- **Proof of Concept (PoC)** code or screenshots, if available.
-- **Environment details** (e.g., version of `project_name`, OS, Python version, relevant configurations).
+- **Environment details** (e.g., version of `template-python`, OS, Python version, relevant configurations).
## Triage and Resolution Process
@@ -46,13 +46,13 @@ We will handle your report with strict confidentiality. Our process is as follow
**In Scope:**
-- Vulnerabilities within the core `project_name` codebase.
+- Vulnerabilities within the core `template-python` codebase.
- Security issues resulting from our default configurations or execution paths.
**Out of Scope:**
- Theoretical issues without a reproducible PoC.
-- Vulnerabilities in third-party dependencies that are not exploitable through `project_name`.
-- Issues requiring the victim to intentionally clone and run `project_name` against a malicious, untrusted Git repository, unless it leads to unexpected system compromise beyond the expected permissions.
+- Vulnerabilities in third-party dependencies that are not exploitable through `template-python`.
+- Issues requiring the victim to intentionally clone and run `template-python` against a malicious, untrusted Git repository, unless it leads to unexpected system compromise beyond the expected permissions.
*(Note: We currently do not operate a bug bounty program. Disclosures are greatly appreciated but are not eligible for financial rewards at this time.)*
diff --git a/SUPPORT.md b/SUPPORT.md
index 2f5fea2..eb245ae 100644
--- a/SUPPORT.md
+++ b/SUPPORT.md
@@ -1,6 +1,6 @@
-# Support for `project_name`
+# Support for `template-python`
-We are excited to have you use `project_name`! If you need help, please follow these guidelines to ensure you get support quickly and efficiently.
+We are excited to have you use `template-python`! If you need help, please follow these guidelines to ensure you get support quickly and efficiently.
## Security Vulnerabilities
@@ -13,22 +13,22 @@ If you have found a security vulnerability, please refer to our [Security Policy
Before reaching out, we recommend checking the following resources. Many common questions and issues are already covered there.
-- **[Official Documentation](https://%7B%7Borganization%7D%7D.github.io/%7B%7Bproject_name%7D%7D):** Comprehensive guides, tutorials, and API references.
-- **[GitHub Issues](https://github.com/%7B%7Borganization%7D%7D/%7B%7Bproject_name%7D%7D/issues):** Search existing issues to see if someone else has already reported your problem or requested your feature. Feel free to add a "+1" reaction to existing issues to show your interest.
-- **[GitHub Discussions](https://github.com/%7B%7Borganization%7D%7D/%7B%7Bproject_name%7D%7D/discussions):** Search our discussions for Q&A, general advice, and community knowledge.
+- **[Official Documentation](https://markurtz.github.io/template-python):** Comprehensive guides, tutorials, and API references.
+- **[GitHub Issues](https://github.com/markurtz/template-python/issues):** Search existing issues to see if someone else has already reported your problem or requested your feature. Feel free to add a "+1" reaction to existing issues to show your interest.
+- **[GitHub Discussions](https://github.com/markurtz/template-python/discussions):** Search our discussions for Q&A, general advice, and community knowledge.
## Opening a New Issue
If you cannot find an answer in the documentation or existing issues, please open a new issue. To help us resolve your issue faster, please choose the correct venue:
-| Issue Type | Venue | Description |
-| :--------------------- | :--------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------- |
-| **Bug Report** | [GitHub Issues](https://github.com/%7B%7Borganization%7D%7D/%7B%7Bproject_name%7D%7D/issues/new) | Use the "Bug Report" template. Provide reproducible steps, environment details, and relevant logs. |
-| **Feature Request** | [GitHub Issues](https://github.com/%7B%7Borganization%7D%7D/%7B%7Bproject_name%7D%7D/issues/new) | Use the "Feature Request" template. Clearly describe your use case and the problem the feature would solve. |
-| **Q&A / General Help** | [GitHub Discussions](https://github.com/%7B%7Borganization%7D%7D/%7B%7Bproject_name%7D%7D/discussions/new) | Start a discussion for questions about how to use `project_name`, architecture queries, or advice. |
+| Issue Type | Venue | Description |
+| :--------------------- | :-------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------- |
+| **Bug Report** | [GitHub Issues](https://github.com/markurtz/template-python/issues/new) | Use the "Bug Report" template. Provide reproducible steps, environment details, and relevant logs. |
+| **Feature Request** | [GitHub Issues](https://github.com/markurtz/template-python/issues/new) | Use the "Feature Request" template. Clearly describe your use case and the problem the feature would solve. |
+| **Q&A / General Help** | [GitHub Discussions](https://github.com/markurtz/template-python/discussions/new) | Start a discussion for questions about how to use `template-python`, architecture queries, or advice. |
Feel free to join the conversation on GitHub Discussions to connect with other users and maintainers.
## Commercial Support
-At this time, there is no official commercial support available for `project_name`. Support is provided on a best-effort basis by the open-source community and maintainers.
+At this time, there is no official commercial support available for `template-python`. Support is provided on a best-effort basis by the open-source community and maintainers.
diff --git a/docker-compose.yml b/docker-compose.yml
index ff79821..916fa7c 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -1,6 +1,6 @@
---
# ---------------------------------------------------------
-# project_name Docker Compose
+# template-python Docker Compose
# Licensed under the Apache License, Version 2.0
# ---------------------------------------------------------
services:
@@ -19,7 +19,7 @@ services:
command:
- "python"
- "-m"
- - "project_name"
+ - "template_python"
# Standard Database Profile
# Use `docker-compose --profile db up` to start this service
diff --git a/docs/community/index.md b/docs/community/index.md
index 9cd846c..fafef47 100644
--- a/docs/community/index.md
+++ b/docs/community/index.md
@@ -1,6 +1,6 @@
# Community
-`project_name` is an open-source project and we welcome participation from everyone. This section contains all the resources you need to get involved, stay informed, and interact with the community.
+`template-python` is an open-source project and we welcome participation from everyone. This section contains all the resources you need to get involved, stay informed, and interact with the community.
## Get Involved
@@ -66,9 +66,11 @@ Where to ask questions, report issues, and find help.
## Community Channels
-| Channel | Purpose |
-| :------------------------------------------------------------------------------------------------ | :--------------------------------------------- |
-| GitHub Issues | Bug reports and feature requests |
-| GitHub Discussions | Q&A, ideas, and general community conversation |
-| Slack | Real-time chat with the team and community |
-| Blog | Project updates, tutorials, and announcements |
+| Channel | Purpose |
+| :--------------------------------------------------------------------------------------- | :--------------------------------------------- |
+| GitHub Issues | Bug reports and feature requests |
+| GitHub Discussions | Q&A, ideas, and general community conversation |
+
+
+
+
diff --git a/docs/examples/index.md b/docs/examples/index.md
index 6f72261..1cae486 100644
--- a/docs/examples/index.md
+++ b/docs/examples/index.md
@@ -1,6 +1,6 @@
# Examples
-This section contains runnable code examples that demonstrate real-world usage of {{ project_name }}. Each example is self-contained and can be copied directly into your own project.
+This section contains runnable code examples that demonstrate real-world usage of template-python. Each example is self-contained and can be copied directly into your own project.
> [!NOTE]
> All examples assume you have completed [Installation](../getting-started/installation.md).
@@ -14,9 +14,9 @@ This section contains runnable code examples that demonstrate real-world usage o
______________________________________________________________________
-Simple, self-contained examples that demonstrate the core functionality of `{{ project_name }}`.
+Simple, self-contained examples that demonstrate the core functionality of `template-python`.
-- :octicons-arrow-right-24: Basic Example Template
+- :octicons-arrow-right-24: Basic Example Template
diff --git a/docs/getting-started/index.md b/docs/getting-started/index.md
index ef00288..7671ef3 100644
--- a/docs/getting-started/index.md
+++ b/docs/getting-started/index.md
@@ -1,6 +1,6 @@
# Getting Started
-Welcome to `project_name`! This section walks you through everything you need to go from zero to productive.
+Welcome to `template-python`! This section walks you through everything you need to go from zero to productive.
Follow the pages in order for the best experience, or jump directly to the section you need.
@@ -13,7 +13,7 @@ Follow the pages in order for the best experience, or jump directly to the secti
______________________________________________________________________
-Install `project_name` via pip, from source, or using Docker.
+Install `template-python` via pip, from source, or using Docker.
Includes platform-specific notes and verification steps.
[:octicons-arrow-right-24: Installation Guide](installation.md)
@@ -25,7 +25,7 @@ Includes platform-specific notes and verification steps.
______________________________________________________________________
-Your first 5 minutes with `project_name`. Initialize, run a command,
+Your first 5 minutes with `template-python`. Initialize, run a command,
and see results — fast.
[:octicons-arrow-right-24: Quick Start](quickstart.md)
diff --git a/docs/getting-started/installation.md b/docs/getting-started/installation.md
index b0a9b20..7c18ad2 100644
--- a/docs/getting-started/installation.md
+++ b/docs/getting-started/installation.md
@@ -1,6 +1,6 @@
# Installation
-This page covers all supported installation methods for `project_name`.
+This page covers all supported installation methods for `template-python`.
## Requirements
@@ -13,45 +13,15 @@ Before installing, ensure your system meets the following prerequisites:
| **Git** | 2.x | Required for source installs |
| **Docker** | 24.x | Optional — for containerized installs |
-## Build Setup (Core Workflow)
-
-`project_name` is primarily used as a build plugin. The preferred pathway is to configure it in your `pyproject.toml` utilizing Hatchling or Setuptools.
-
-=== "Hatchling (Preferred)"
-
-````
-```toml
-[build-system]
-requires = ["hatchling", "project_name"]
-build-backend = "hatchling.build"
-
-[tool.hatch.version]
-source = "project_name"
-```
-````
-
-=== "Setuptools (pyproject.toml)"
-
-````
-```toml
-[build-system]
-requires = ["setuptools>=61.0", "project_name"]
-build-backend = "setuptools.build_meta"
-
-[project]
-dynamic = ["version"]
-```
-````
-
## Standard Installation
-If you need to install the package directly into an environment (e.g., for local development or testing without a build system), use `pip` or `uv`:
+If you need to install the package directly into an environment (e.g., for local development or testing), use `pip` or `uv`:
=== "pip (Standard)"
````
```bash
-pip install project_name
+pip install template_python
```
````
@@ -59,7 +29,7 @@ pip install project_name
````
```bash
-uv pip install project_name
+uv pip install template_python
```
````
@@ -68,7 +38,7 @@ uv pip install project_name
After installation, you can confirm it is available in your Python environment by running:
```bash
-python -c "import project_name; print(project_name.__version__)"
+python -c "import template_python; print(template_python.__version__)"
```
You should see output similar to:
@@ -82,8 +52,8 @@ You should see output similar to:
To install the latest unreleased code directly from the repository and set up a local development environment:
```bash
-git clone https://github.com/{{ org_name }}/{{ project_name }}.git
-cd {{ project_name }}
+git clone https://github.com/markurtz/template-python.git
+cd template-python
# Sync the development environment (installs all groups and extras)
uv sync --all-groups --all-extras
@@ -101,10 +71,10 @@ A pre-built Docker image is available for containerized environments:
```bash
# Pull the latest image
-docker pull ghcr.io/{{ org_name }}/{{ project_name }}:latest
+docker pull ghcr.io/markurtz/template-python:latest
# Run a one-off command
-docker run --rm ghcr.io/{{ org_name }}/{{ project_name }}:latest python -c "import project_name; print(project_name.__version__)"
+docker run --rm ghcr.io/markurtz/template-python:latest python -c "import template_python; print(template_python.__version__)"
```
For a persistent, volume-mounted setup using Docker Compose, see the `docker-compose.yml` in the root of the repository.
@@ -137,7 +107,7 @@ To upgrade an existing installation to the latest release:
````
```bash
-pip install --upgrade project_name
+pip install --upgrade template-python
```
````
@@ -145,7 +115,7 @@ pip install --upgrade project_name
````
```bash
-uv pip install --upgrade project_name
+uv pip install --upgrade template-python
```
````
@@ -155,7 +125,7 @@ uv pip install --upgrade project_name
````
```bash
-pip uninstall project_name
+pip uninstall template-python
```
````
@@ -163,7 +133,7 @@ pip uninstall project_name
````
```bash
-uv pip uninstall project_name
+uv pip uninstall template-python
```
````
diff --git a/docs/getting-started/quickstart.md b/docs/getting-started/quickstart.md
index 41b19ad..e6930a3 100644
--- a/docs/getting-started/quickstart.md
+++ b/docs/getting-started/quickstart.md
@@ -1,61 +1,62 @@
# Quick Start
-This guide gets you from a fresh installation to running your first command in under 5 minutes.
+This guide gets you from a fresh clone to a bootstrapped and running project in under 5 minutes.
-> [!NOTE]
-> Make sure you have completed [Installation](installation.md) before continuing. If you are the maintainer and just instantiated this repository from the template, please complete the [Repository Setup](../guides/repository-setup.md) first.
+## Step 1 — Instantiate the Template
-## Step 1 — Initialize Your Environment
+1. Navigate to the [template-python repository on GitHub](https://github.com/markurtz/template-python).
+1. Click the green **Use this template** button and select **Create a new repository**.
+1. Choose your repository name and visibility, then click **Create repository**.
+1. Clone your new repository to your local machine:
+ ```bash
+ git clone https://github.com/YOUR_ORG/YOUR_REPO.git
+ cd YOUR_REPO
+ ```
-If you haven't already, set up your project and install `{{ project_name }}`:
+## Step 2 — Bootstrap the Project
-```bash
-python -m venv .venv
-source .venv/bin/activate
-pip install project_name
-```
+The template comes with an interactive script that automatically replaces all placeholders with your project's details.
-## Step 2 — Verify the Install
+Run the bootstrap script using `uv`:
```bash
-{{ project_name }} --version
+uv run scripts/bootstrap.py
```
-Expected output:
+Follow the interactive prompts to configure your project. Once complete, you can choose to finalize the process, which will delete the bootstrap script and its tests.
-```console
-{{ project_name }} 0.1.0
-```
+## Step 3 — Sync the Environment
-## Step 3 — Run Your First Command
+Now that your project is renamed and configured, install all dependencies and set up your local development environment:
-```python
-from project_name import Client
+```bash
+uv sync --all-groups --all-extras
+```
-# Initialize the client
-client = Client(api_key="YOUR_KEY")
+## Step 4 — Run Tests and Quality Checks
-# Run a core action
-result = client.run_action("hello_world")
-print(result)
-```
+Ensure everything is configured correctly by running the pre-configured quality checks and tests:
-Expected output:
+```bash
+# Run linting and type checking
+hatch run lint:check
+hatch run types:check
-```console
-[INFO] Initializing {{ project_name }} client...
-[SUCCESS] Action completed! Result: Hello, World from {{ project_name }}!
+# Run tests
+hatch run test:all
```
+If all tests pass, your new project is successfully bootstrapped and ready for development!
+
> [!TIP]
-> Replace `"YOUR_KEY"` with your actual API key or credentials. See the [Reference](../reference/index.md) for all available client configuration options.
+> See the [Developer Guide](../community/developing.md) for more details on local development commands.
-## Step 4 — Explore Further
+## Step 5 — Explore Further
-Now that your first command works, explore what `{{ project_name }}` can do:
+Now that your project is ready, explore what `template-python` provides:
-- **[Guides](../guides/index.md)** — Task-specific deep dives including CI/CD and repository setup
-- **[Reference](../reference/index.md)** — Full API and CLI documentation
-- **[Examples](../examples/index.md)** — Runnable code examples
+- **[Repository Setup](../guides/repository-setup.md)** — Complete your GitHub configuration (Actions, Discussions, PyPI publishing).
+- **[Guides](../guides/index.md)** — Task-specific deep dives including CI/CD workflows.
+- **[Reference](../reference/index.md)** — Full configuration reference.
-**Next:** [Guides →](../guides/index.md)
+**Next:** [Repository Setup →](../guides/repository-setup.md)
diff --git a/docs/guides/github-workflows.md b/docs/guides/github-workflows.md
index 5fa6af9..5a47e74 100644
--- a/docs/guides/github-workflows.md
+++ b/docs/guides/github-workflows.md
@@ -1,6 +1,6 @@
# Using CI/CD and GitHub workflows
-This guide explains the continuous integration and continuous deployment (CI/CD) pipelines used in `project_name`. It outlines the standard pathways, development cycles, and what standards must be met to contribute to the repository.
+This guide explains the continuous integration and continuous deployment (CI/CD) pipelines used in `template-python`. It outlines the standard pathways, development cycles, and what standards must be met to contribute to the repository.
## Understand the architecture
diff --git a/docs/guides/index.md b/docs/guides/index.md
index 9eef64b..227242c 100644
--- a/docs/guides/index.md
+++ b/docs/guides/index.md
@@ -1,6 +1,6 @@
# Guides
-This section contains task-oriented how-to guides for `{{ project_name }}`. Unlike the [Getting Started](../getting-started/index.md) section, which is structured as a linear onboarding path, these guides are standalone — jump to whichever one is relevant to your current task.
+This section contains task-oriented how-to guides for `template-python`. Unlike the [Getting Started](../getting-started/index.md) section, which is structured as a linear onboarding path, these guides are standalone — jump to whichever one is relevant to your current task.
## Available Guides
diff --git a/docs/guides/repository-setup.md b/docs/guides/repository-setup.md
index 8d819ab..8f34ff3 100644
--- a/docs/guides/repository-setup.md
+++ b/docs/guides/repository-setup.md
@@ -6,20 +6,18 @@ This guide acts as a checklist for the project maintainer. Once these steps are
## 1. Bootstrap the repository
-Before making any manual changes, run the included bootstrap script to automatically replace all placeholder variables (like `project_name` and `{{organization}}`) with your actual project details.
+Before making any manual changes, run the included interactive bootstrap script to automatically replace all placeholder variables (like `template-python` and `markurtz`) with your actual project details.
```bash
-./scripts/bootstrap.sh \
- --project-name my-cool-project \
- --project-desc "A description of my cool project" \
- --organization my-org \
- --org-name "My Organization"
+uv run scripts/bootstrap.py
```
+The script will interactively prompt you for your project details (organization, project name, descriptions, and feature toggles) and automatically configure the repository.
+
> [!NOTE]
-> This script will rename the source directory (`src/project_name/` -> `src/my_cool_project/`) and update all references in the documentation, GitHub Actions workflows, and configuration files.
+> This script will rename the source directory (`src/template_python/` -> `src/my_cool_project/`) and update all references in the documentation, GitHub Actions workflows, and configuration files.
-Once you have verified the changes, you can safely delete the `scripts/bootstrap.sh` file and commit the updates.
+Once you have verified the changes and chosen to finalize the bootstrap process, the script will automatically delete itself and its related end-to-end tests. Commit the updates.
## 2. Configure GitHub settings
diff --git a/docs/index.md b/docs/index.md
index 1247b77..46fc7a2 100644
--- a/docs/index.md
+++ b/docs/index.md
@@ -10,15 +10,15 @@ hide:
+
+
-
-
-
-
-
-
-
-
+
+
+
+
-
-
+
+
-
-
+
+
@@ -70,10 +70,10 @@ For comprehensive context and full documentation, please see [llms-full.txt](llm
- Documentation | - Roadmap | - Issues | - Discussions + Documentation | + Roadmap | + Issues | + Discussions
______________________________________________________________________ @@ -88,11 +88,11 @@ ______________________________________________________________________ -Welcome to the project_name template repository! This template provides a robust foundation for building high-quality, scalable software projects. It includes standard directories, issue templates, CI/CD workflows, and comprehensive placeholder documentation. +Welcome to the template-python template repository! This template provides a robust foundation for building high-quality, scalable software projects. It includes standard directories, issue templates, CI/CD workflows, and comprehensive placeholder documentation. -To use this template, simply find and replace all instances of `project_name` and `{{organization}}` with your actual project details, update the placeholder SVG images in `docs/assets/branding/`, and you are ready to start coding. +To use this template, run `uv run scripts/bootstrap.py` to automatically configure your project with your organization and repository details, update the placeholder SVG images in `docs/assets/branding/`, and you are ready to start coding. -### Why Use project_name? +### Why Use template-python? - **Consistency:** Enforces a standardized layout and structure across your organization's repositories. - **Speed:** Bootstraps your project with pre-configured Actions, badges, and templates so you don't start from scratch. @@ -100,9 +100,9 @@ To use this template, simply find and replace all instances of `project_name` an ### Comparisons -When evaluating project_name against other templates, consider the following differences: +When evaluating template-python against other templates, consider the following differences: -| Feature | project_name Template | Standard GitHub Init | Cookiecutter / Copier | +| Feature | template-python Template | Standard GitHub Init | Cookiecutter / Copier | | :----------------- | :------------------------------- | :------------------- | :------------------------- | | **Setup Speed** | Very Fast | Fast | Slower (requires CLI tool) | | **Visual Assets** | Pre-configured Light/Dark assets | None | Varies | @@ -111,7 +111,7 @@ When evaluating project_name against other templates, consider the following dif ## What's New -**Welcome to the project_name Launch!** +**Welcome to the template-python Launch!** This project has just been instantiated from the template repository. Keep an eye on this section for future release highlights, new features, and community announcements! @@ -120,10 +120,10 @@ This project has just been instantiated from the template repository. Keep an ey ## Quick Start ```bash -pip install project_name +pip install template-python ``` -For full installation options (from source, Docker, platform-specific notes) and step-by-step onboarding, see the **[Getting Started guide](https://%7B%7Borganization%7D%7D.github.io/%7B%7Bproject_name%7D%7D/getting-started/)**. +For full installation options (from source, Docker, platform-specific notes) and step-by-step onboarding, see the **[Getting Started guide](https://markurtz.github.io/template-python/getting-started/)**. ## Core Concepts @@ -133,7 +133,7 @@ This project is built using modern Python tooling, enforcing strict code quality The repository is structured to separate documentation, application logic, and testing cleanly: -- `src/project_name/`: The primary application source code. +- `src/template_python/`: The primary application source code. - `tests/`: Comprehensive test suite ensuring reliability, organized into `unit/`, `integration/`, and `e2e/`. - `docs/`: Source code for the MkDocs Material documentation site, including step-by-step guides, references, and getting started tutorials. - `examples/`: Runnable reference projects demonstrating real-world configurations. @@ -171,13 +171,11 @@ This project is licensed under the Apache License 2.0. See the [LICENSE](LICENSE If you use this template or the resulting software in your research, please cite it using the following BibTeX entry: ```bibtex -@software{project_name, - author = {{{organization}}}, - title = {project_name}, - version = {{{version}}}, - month = {{{month}}}, - year = {2026}, - url = {https://github.com/{{organization}}/project_name} +@software{template-python, + author = {markurtz}, + title = {template-python}, + year = {{year}}, + url = {https://github.com/markurtz/template-python} } ``` @@ -191,7 +189,7 @@ If you use this template or the resulting software in your research, please cite ## Project Context -**`project_name`** is a production-ready Apache 2.0 template repository for bootstrapping modern software projects. +**`template-python`** is a production-ready Apache 2.0 template repository for bootstrapping modern software projects. **Primary language:** `Python 3.10+`\ **Package manager:** `Hatch` @@ -240,7 +238,7 @@ If you use this template or the resulting software in your research, please cite - **`docs/`** and **`mkdocs.yml`** control the site. Do not create docs outside the `nav:` tree. - `docs/index.md` dynamically includes `README.md` via MkDocs snippets. -- Use `{{placeholder}}` variables for templated fields (e.g., `project_name`, `{{organization}}`). +- Use `{{placeholder}}` variables for templated fields (e.g., `template-python`, `markurtz`). ## Agent Notes @@ -249,7 +247,7 @@ _Add notes here when updating instructions for AI agents._ ## File: DEVELOPING.md -# Developing `project_name` +# Developing `template-python` This guide provides instructions for setting up your development environment, navigating the project structure, and adhering to our coding standards. @@ -273,8 +271,8 @@ Ensure your system meets the following requirements before getting started: > Once implemented, you can spin up the development environment with: > > ```bash -> git clone https://github.com/{{organization}}/project_name.git -> cd project_name +> git clone https://github.com/markurtz/template-python.git +> cd template-python > > # Build and start the development environment in the background > docker-compose up -d --build @@ -457,9 +455,9 @@ For further assistance, please refer to our [SUPPORT.md](SUPPORT.md). ## File: CONTRIBUTING.md -# Contributing to project_name +# Contributing to template-python -First off, thank you for considering contributing to `project_name`! It's people like you that make this project great. +First off, thank you for considering contributing to `template-python`! It's people like you that make this project great. ## Code of Conduct @@ -474,13 +472,13 @@ If you discover a security issue, please refer to our [Security Policy](SECURITY ## How Can I Contribute? -There are many ways to contribute to `project_name`, and not all of them involve writing code: +There are many ways to contribute to `template-python`, and not all of them involve writing code: - **Reporting Bugs:** Help us improve by submitting detailed bug reports via our issue tracker. - **Suggesting Features:** Propose new features or enhancements that could benefit the project. - **Improving Documentation:** Fix typos, add examples, or write new guides. - **Writing Code:** Fix bugs, implement features, or improve performance. -- **Helping Others:** Answer questions in [Discussions](https://github.com/%7B%7Borganization%7D%7D/%7B%7Bproject_name%7D%7D/discussions) or issue comments. +- **Helping Others:** Answer questions in [Discussions](https://github.com/markurtz/template-python/discussions) or issue comments. For general questions and help, please see [SUPPORT.md](SUPPORT.md). @@ -504,7 +502,7 @@ Before you start coding, please refer to our [Development Guide](DEVELOPING.md) ### 3. Making Changes -1. **Fork the Repository:** Fork the `project_name` repository to your GitHub account. +1. **Fork the Repository:** Fork the `template-python` repository to your GitHub account. 1. **Create a Branch:** Create a new branch from `main` for your work (e.g., `git checkout -b feat/add-new-feature`). 1. **Write Code:** Implement your changes, adhering to the project's coding standards. 1. **Write Tests:** Add unit tests or integration tests for your changes to ensure stability. @@ -526,18 +524,18 @@ Before you start coding, please refer to our [Development Guide](DEVELOPING.md) ## Licensing -By contributing to `project_name`, you agree that your contributions will be licensed under its [Apache 2.0 License](LICENSE). +By contributing to `template-python`, you agree that your contributions will be licensed under its [Apache 2.0 License](LICENSE). ## File: SECURITY.md -# Security Policy for `project_name` +# Security Policy for `template-python` -We take the security of `project_name` seriously. This document outlines our security policies, supported versions, and how to responsibly disclose a vulnerability. +We take the security of `template-python` seriously. This document outlines our security policies, supported versions, and how to responsibly disclose a vulnerability. ## Supported Versions -Please check the table below for the versions of `project_name` that are currently being supported with security updates. +Please check the table below for the versions of `template-python` that are currently being supported with security updates. | Version | Supported | | :------------------------------ | :----------------- | @@ -553,7 +551,7 @@ Please check the table below for the versions of `project_name` that are current If you discover a security vulnerability, please bring it to our attention right away using one of the following methods: -1. **GitHub Security Advisories (Preferred):** Use the "Report a vulnerability" button on the **[Security tab](https://github.com/%7B%7Borganization%7D%7D/%7B%7Bproject_name%7D%7D/security/advisories)** of this repository. +1. **GitHub Security Advisories (Preferred):** Use the "Report a vulnerability" button on the **[Security tab](https://github.com/markurtz/template-python/security/advisories)** of this repository. 1. **Email:** Send your report directly to **[INSERT EMAIL ADDRESS OR SECURITY CONTACT]**. *(Optional: Encrypt your email using our PGP key: [INSERT PGP KEY LINK/FINGERPRINT])* ### What to Include in Your Report @@ -564,7 +562,7 @@ To help us resolve the issue quickly, please include the following information: - **Detailed description** of the vulnerability and its potential impact. - **Step-by-step instructions** to reproduce the issue. - **Proof of Concept (PoC)** code or screenshots, if available. -- **Environment details** (e.g., version of `project_name`, OS, Python version, relevant configurations). +- **Environment details** (e.g., version of `template-python`, OS, Python version, relevant configurations). ## Triage and Resolution Process @@ -579,23 +577,23 @@ We will handle your report with strict confidentiality. Our process is as follow **In Scope:** -- Vulnerabilities within the core `project_name` codebase. +- Vulnerabilities within the core `template-python` codebase. - Security issues resulting from our default configurations or execution paths. **Out of Scope:** - Theoretical issues without a reproducible PoC. -- Vulnerabilities in third-party dependencies that are not exploitable through `project_name`. -- Issues requiring the victim to intentionally clone and run `project_name` against a malicious, untrusted Git repository, unless it leads to unexpected system compromise beyond the expected permissions. +- Vulnerabilities in third-party dependencies that are not exploitable through `template-python`. +- Issues requiring the victim to intentionally clone and run `template-python` against a malicious, untrusted Git repository, unless it leads to unexpected system compromise beyond the expected permissions. *(Note: We currently do not operate a bug bounty program. Disclosures are greatly appreciated but are not eligible for financial rewards at this time.)* ## File: SUPPORT.md -# Support for `project_name` +# Support for `template-python` -We are excited to have you use `project_name`! If you need help, please follow these guidelines to ensure you get support quickly and efficiently. +We are excited to have you use `template-python`! If you need help, please follow these guidelines to ensure you get support quickly and efficiently. ## Security Vulnerabilities @@ -608,9 +606,9 @@ If you have found a security vulnerability, please refer to our [Security Policy Before reaching out, we recommend checking the following resources. Many common questions and issues are already covered there. -- **[Official Documentation](https://%7B%7Borganization%7D%7D.github.io/%7B%7Bproject_name%7D%7D):** Comprehensive guides, tutorials, and API references. -- **[GitHub Issues](https://github.com/%7B%7Borganization%7D%7D/%7B%7Bproject_name%7D%7D/issues):** Search existing issues to see if someone else has already reported your problem or requested your feature. Feel free to add a "+1" reaction to existing issues to show your interest. -- **[GitHub Discussions](https://github.com/%7B%7Borganization%7D%7D/%7B%7Bproject_name%7D%7D/discussions):** Search our discussions for Q&A, general advice, and community knowledge. +- **[Official Documentation](https://markurtz.github.io/template-python):** Comprehensive guides, tutorials, and API references. +- **[GitHub Issues](https://github.com/markurtz/template-python/issues):** Search existing issues to see if someone else has already reported your problem or requested your feature. Feel free to add a "+1" reaction to existing issues to show your interest. +- **[GitHub Discussions](https://github.com/markurtz/template-python/discussions):** Search our discussions for Q&A, general advice, and community knowledge. ## Opening a New Issue @@ -618,9 +616,9 @@ If you cannot find an answer in the documentation or existing issues, please ope | Issue Type | Venue | Description | | :--------------------- | :--------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------- | -| **Bug Report** | [GitHub Issues](https://github.com/%7B%7Borganization%7D%7D/%7B%7Bproject_name%7D%7D/issues/new) | Use the "Bug Report" template. Provide reproducible steps, environment details, and relevant logs. | -| **Feature Request** | [GitHub Issues](https://github.com/%7B%7Borganization%7D%7D/%7B%7Bproject_name%7D%7D/issues/new) | Use the "Feature Request" template. Clearly describe your use case and the problem the feature would solve. | -| **Q&A / General Help** | [GitHub Discussions](https://github.com/%7B%7Borganization%7D%7D/%7B%7Bproject_name%7D%7D/discussions/new) | Start a discussion for questions about how to use `project_name`, architecture queries, or advice. | +| **Bug Report** | [GitHub Issues](https://github.com/markurtz/template-python/issues/new) | Use the "Bug Report" template. Provide reproducible steps, environment details, and relevant logs. | +| **Feature Request** | [GitHub Issues](https://github.com/markurtz/template-python/issues/new) | Use the "Feature Request" template. Clearly describe your use case and the problem the feature would solve. | +| **Q&A / General Help** | [GitHub Discussions](https://github.com/markurtz/template-python/discussions/new) | Start a discussion for questions about how to use `template-python`, architecture queries, or advice. | Feel free to join the conversation on GitHub Discussions to connect with other users and maintainers. @@ -628,4 +626,4 @@ Feel free to join the conversation on GitHub Discussions to connect with other u -At this time, there is no official commercial support available for `project_name`. Support is provided on a best-effort basis by the open-source community and maintainers. +At this time, there is no official commercial support available for `template-python`. Support is provided on a best-effort basis by the open-source community and maintainers. diff --git a/llms.txt b/llms.txt index c964fa0..d5715cf 100644 --- a/llms.txt +++ b/llms.txt @@ -1,20 +1,20 @@ -# project_name +# template-python > An opinionated, production-ready Apache 2.0 template repository for bootstrapping modern software projects. -`project_name` is designed to eliminate boilerplate and enforce consistency across an organization's repositories. +`template-python` is designed to eliminate boilerplate and enforce consistency across an organization's repositories. For comprehensive context and full documentation, please see [llms-full.txt](llms-full.txt). ## Docs -- [Home](https://{{organization}}.github.io/project_name/): Documentation site home page -- [Getting Started](https://{{organization}}.github.io/project_name/getting-started/): Installation, quickstart, and workflow guides -- [Guides](https://{{organization}}.github.io/project_name/guides/): How-to guides for common tasks -- [API Reference](https://{{organization}}.github.io/project_name/reference/): Full API reference documentation +- [Home](https://markurtz.github.io/template-python/): Documentation site home page +- [Getting Started](https://markurtz.github.io/template-python/getting-started/): Installation, quickstart, and workflow guides +- [Guides](https://markurtz.github.io/template-python/guides/): How-to guides for common tasks +- [API Reference](https://markurtz.github.io/template-python/reference/): Full API reference documentation ## Repository Files -- [README.md](https://github.com/{{organization}}/project_name/blob/main/README.md): Project overview and quick start -- [AGENTS.md](https://github.com/{{organization}}/project_name/blob/main/AGENTS.md): AI agent coding instructions -- [DEVELOPING.md](https://github.com/{{organization}}/project_name/blob/main/DEVELOPING.md): Developer setup guide +- [README.md](https://github.com/markurtz/template-python/blob/main/README.md): Project overview and quick start +- [AGENTS.md](https://github.com/markurtz/template-python/blob/main/AGENTS.md): AI agent coding instructions +- [DEVELOPING.md](https://github.com/markurtz/template-python/blob/main/DEVELOPING.md): Developer setup guide ## Optional -- [Full Documentation](https://{{organization}}.github.io/project_name/llms-full.txt): The complete concatenated documentation for project_name +- [Full Documentation](https://markurtz.github.io/template-python/llms-full.txt): The complete concatenated documentation for template-python diff --git a/mkdocs.yml b/mkdocs.yml index 2044ec3..a1b407c 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -1,26 +1,26 @@ --- -site_name: "{{project_name}}" -site_description: "{{project_description}}" -site_author: "{{org_name}}" -site_url: "https://{{org_name}}.github.io/{{project_name}}/" -repo_url: "https://github.com/{{org_name}}/{{project_name}}" -repo_name: "{{org_name}}/{{project_name}}" +site_name: "template-python" +site_description: "An opinionated, production-ready Apache 2.0 template repository for bootstrapping\ + \ modern software projects." +site_author: "markurtz" +site_url: "https://markurtz.github.io/template-python/" +repo_url: "https://github.com/markurtz/template-python" +repo_name: "markurtz/template-python" edit_uri: edit/main/docs/ -# --------------------------------------------------------------------------- -# Template Variables — Update these when using this template. -# All {{ variable }} references across the docs site are driven from here. -# --------------------------------------------------------------------------- extra: - project_name: "project_name" - project_description: "{{project_description}}" - org_name: "{{organization}}" - org_email: "conduct@{{organization}}.com" - docs_url: "https://{{org_name}}.github.io/{{project_name}}" + version: + provider: mike + project_name: "template_python" + project_description: "An opinionated, production-ready Apache 2.0 template repository for\ + \ bootstrapping modern software projects." + org_name: "markurtz" +# org_email: "conduct@example.com" + docs_url: "https://markurtz.github.io/template-python" min_python: "3.9" current_major_version: "0" - slack_url: "https://slack.{{organization}}.org" - blog_url: "https://blog.{{organization}}.org" - roadmap_url: "https://github.com/{{organization}}/project_name/milestones" +# slack_url: "https://slack.example.com" +# blog_url: "https://blog.example.com" + roadmap_url: "https://github.com/markurtz/template-python/milestones" theme: name: material logo: assets/branding/icon-white.svg @@ -97,6 +97,11 @@ markdown_extensions: - toc: permalink: true plugins: + - gen-files: + scripts: + - docs/scripts/gen_ref_pages.py + - literate-nav: + nav_file: SUMMARY.md - macros - mike - minify: diff --git a/pyproject.toml b/pyproject.toml index abbc80f..b171710 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -3,14 +3,23 @@ requires = ["hatchling", "gitversioned[hatchling]"] build-backend = "hatchling.build" [project] -name = "project_name" +name = "template-python" dynamic = ["version"] -description = "{{project_description}}" +description = "An opinionated, production-ready Apache 2.0 template repository for bootstrapping modern software projects." readme = "README.md" requires-python = ">=3.10" license = { text = "Apache-2.0" } -authors = [{ name = "{{organization}}" }] +authors = [{ name = "markurtz" }] +classifiers = [ + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "Programming Language :: Python :: 3.13", + "Programming Language :: Python :: 3.14", +] dependencies = [ + "click>=8.0.0", "loguru>=0.7.0", "pydantic>=2.0.0", "pydantic-settings>=2.0.0", @@ -49,6 +58,8 @@ docs = [ "mike~=2.2", "mkdocs~=1.6", "mkdocstrings[python]~=1.0", + "mkdocs-gen-files~=0.5", + "mkdocs-literate-nav~=0.6", "mkdocs-macros-plugin~=1.5", "mkdocs-material~=9.7", "mkdocs-minify-plugin~=0.8", @@ -58,12 +69,13 @@ docs = [ ] [project.scripts] -project_name = "project_name.__main__:main" +template-python = "template_python.__main__:main" [project.urls] -Homepage = "https://github.com/{{org_name}}/{{project_name}}" -Repository = "https://github.com/{{org_name}}/{{project_name}}.git" -Issues = "https://github.com/{{org_name}}/{{project_name}}/issues" +Homepage = "https://github.com/markurtz/template-python" +Repository = "https://github.com/markurtz/template-python.git" +Issues = "https://github.com/markurtz/template-python/issues" +Documentation = "https://markurtz.github.io/template-python/" [tool.hatch.version] source = "gitversioned" @@ -163,12 +175,12 @@ exclude = [ ] [tool.hatch.build.targets.wheel] -packages = ["src/project_name"] +packages = ["src/template_python"] # --- Tool Configurations --- [tool.mypy] -files = ["src/project_name", "tests"] +files = ["src/template_python", "tests"] python_version = "3.10" warn_redundant_casts = true warn_unused_ignores = false @@ -181,7 +193,7 @@ ignore_missing_imports = true [tool.ruff] line-length = 88 indent-width = 4 -exclude = ["build", "dist", "env", ".venv", "src/project_name/version.py"] +exclude = ["build", "dist", "env", ".venv", "src/template_python/version.py"] [tool.ruff.format] quote-style = "double" @@ -278,7 +290,7 @@ select = [ ] [tool.ruff.lint.isort] -known-first-party = ["project_name", "tests"] +known-first-party = ["template_python", "tests"] [tool.pytest.ini_options] addopts = "-s -vvv --cache-clear" @@ -286,10 +298,7 @@ asyncio_mode = "auto" markers = [ "smoke: quick tests to check basic functionality", "sanity: detailed tests to ensure major functions work correctly", - "regression: tests to ensure that new changes do not break existing functionality", - "e2e: end-to-end integration tests", - "unit: unit tests", - "integration: integration tests" + "regression: tests to ensure that new changes do not break existing functionality" ] testpaths = ["tests"] diff --git a/scripts/README.md b/scripts/README.md index 4e853c7..ca384dc 100644 --- a/scripts/README.md +++ b/scripts/README.md @@ -1,6 +1,6 @@ -# `project_name` - Utility Scripts +# Utility Scripts -This directory contains utility scripts designed to assist with local development, maintenance, and automation tasks for `project_name`. +This directory contains utility scripts designed to assist with local development, maintenance, and automation tasks. > [!NOTE] > These scripts are intended for developer and CI/CD use only and are **not** distributed as part of the final application package. @@ -15,10 +15,10 @@ Scripts should generally be executed from the root of the repository to ensure r ```bash # Example -./scripts/setup_dev_env.sh +uv run scripts/bootstrap.py ``` -Ensure the script has execution permissions before running: +Ensure Bash scripts have execution permissions before running: ```bash chmod +x scripts/