Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 9 additions & 9 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,6 @@ jobs:
with:
fetch-depth: 0

# - name: Install lychee
# run: |
# curl -sSf '<https://sh.rustup.rs>' | sh
# apt install gcc pkg-config libc6-dev libssl-dev

- uses: astral-sh/setup-uv@v8.1.0
with:
enable-cache: true
Expand All @@ -32,8 +27,13 @@ jobs:
- name: Install dependencies
run: uv sync --frozen

# - name: Run pre-commit
# run: uv run pre-commit run --all-files --show-diff-on-failure
- name: Install lychee
uses: taiki-e/install-action@v2
with:
tool: lychee

- name: Run pre-commit
run: uv run pre-commit run --all-files --show-diff-on-failure

- name: Build site
run: uv run zensical build
- name: Build site (strict)
run: uv run zensical build --strict
5 changes: 2 additions & 3 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,9 +39,8 @@ jobs:
- name: Install dependencies
run: uv sync --frozen --no-dev

- name: Build site
# See ci.yml for why --strict is disabled.
run: uv run zensical build
- name: Build site (strict)
run: uv run zensical build --strict

- uses: actions/configure-pages@v6

Expand Down
5 changes: 5 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,11 @@ repos:
stages: [commit-msg]
args: [ops]

- repo: https://github.com/rhysd/actionlint
rev: v1.7.12
hooks:
- id: actionlint

- repo: local
hooks:
- id: zensical-build
Expand Down
40 changes: 40 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
# Contributing

This is primarily a personal stash of boilerplate I keep rewriting, published
in the small chance someone else finds it useful.

PRs are welcome but not actively solicited. If you spot a bug or want to add a
snippet, feel free to open an issue or PR just keep in mind I'll prioritize
based on whether I'd use it myself.

## Local setup

See [README.md](README.md) it covers `uv`, `make install`, and the local
dev loop.

## Conventions

- **Conventional Commits** for commit messages (enforced via `pre-commit` on
the `commit-msg` hook). Allowed types are configured in
[`.pre-commit-config.yaml`](.pre-commit-config.yaml).
- **Run `make pre-commit`** before pushing. CI runs the same hooks plus a
strict Zensical build.
- **Snippets should be self-contained** copy a single block and it works.
Cite the upstream docs at the bottom of every page.
- **Validate variables**. New Terraform variable blocks should follow the
pattern in [`docs/terraform/aws/variables.md`](docs/terraform/aws/variables.md):
type, description, sensible default (or `nullable = true`), and a
`validation` block with a complete-sentence `error_message`.

## Reporting issues

Open a GitHub issue with:

- The page URL or path
- What's wrong (typo, broken link, outdated example, missing context)
- Optionally a suggested fix

## License

By contributing you agree your changes will be released under the project's
[GPL-3.0 license](LICENSE).
11 changes: 10 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ useful:
| `lychee.toml` | [lychee](https://lychee.cli.rs/) link-checker config (used by pre-commit and CI). |
| `.editorconfig` | Whitespace defaults across editors. |
| `Makefile` | Convenience targets β€” run `make help`. |
| `terragrunt/` | Working Terragrunt example referenced by the docs *(WIP β€” being modernized)*. |
| `terragrunt/` | Legacy Terragrunt example. Modern patterns live in [`docs/terraform/terragrunt/`](docs/terraform/terragrunt/). |
| `.github/workflows/` | `ci.yml` (PR checks), `deploy.yml` (Pages deploy on push to `main`), `links.yml` (lychee on PR + weekly cron). |

## Local development
Expand Down Expand Up @@ -79,3 +79,12 @@ This site originally ran on [Material for MkDocs](https://squidfunk.github.io/mk
it now runs on [Zensical](https://zensical.org/), the team's new SSG. Zensical
is currently alpha, so the dependency is pinned to an exact version
(see [`pyproject.toml`](pyproject.toml)) and bumped deliberately.

## Contributing

This is primarily a personal stash, but PRs and issues are welcome. See
[CONTRIBUTING.md](CONTRIBUTING.md) for the local setup and conventions.

## License

Released under the [GPL-3.0 license](LICENSE).
1 change: 1 addition & 0 deletions docs/api/error-responses.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
---
title: RFC 7807 problem+json
description: RFC 7807 problem-detail error responses for HTTP APIs.
status: stub
tags:
- api
Expand Down
1 change: 1 addition & 0 deletions docs/api/fastapi-skeleton.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
---
title: FastAPI service skeleton
description: Opinionated FastAPI project layout with settings, routers, and dependencies.
status: stub
tags:
- api
Expand Down
1 change: 1 addition & 0 deletions docs/api/go-chi-skeleton.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
---
title: Go chi service skeleton
description: Minimal Go service skeleton built on chi with structured logging and graceful shutdown.
status: stub
tags:
- api
Expand Down
1 change: 1 addition & 0 deletions docs/api/index.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
---
title: API / Backend
description: Service skeletons, error responses, pagination, and OpenAPI starters.
status: stub
tags:
- api
Expand Down
1 change: 1 addition & 0 deletions docs/api/openapi.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
---
title: OpenAPI starter + lint
description: OpenAPI 3 starter spec plus linting with spectral or vacuum.
status: stub
tags:
- api
Expand Down
1 change: 1 addition & 0 deletions docs/api/pagination.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
---
title: Pagination β€” cursor vs offset
description: Cursor and offset pagination patterns for REST APIs.
status: stub
tags:
- api
Expand Down
1 change: 1 addition & 0 deletions docs/containers/compose-dev.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
---
title: Compose dev stacks
description: Reusable docker compose stacks for local development (Postgres, Redis, observability).
status: stub
tags:
- docker
Expand Down
1 change: 1 addition & 0 deletions docs/containers/distroless.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
---
title: Distroless / chainguard images
description: Distroless and Chainguard base images for minimal, hardened runtime containers.
status: stub
tags:
- docker
Expand Down
1 change: 1 addition & 0 deletions docs/containers/dockerfile-go.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
---
title: Go β€” static binary, distroless
description: Multi-stage Dockerfile producing a static Go binary on a distroless runtime.
status: stub
tags:
- docker
Expand Down
1 change: 1 addition & 0 deletions docs/containers/dockerfile-node.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
---
title: Node β€” multi-stage, pnpm
description: Multi-stage Dockerfile for Node services with pnpm and a slim runtime stage.
status: stub
tags:
- docker
Expand Down
1 change: 1 addition & 0 deletions docs/containers/dockerfile-python.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
---
title: Python β€” multi-stage with uv
description: Multi-stage Dockerfile for Python services using uv and a slim runtime stage.
status: stub
tags:
- docker
Expand Down
1 change: 1 addition & 0 deletions docs/containers/index.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
---
title: Containers
description: Multi-stage Dockerfiles, distroless images, and Compose dev stacks.
status: stub
tags:
- docker
Expand Down
1 change: 1 addition & 0 deletions docs/data/airflow-dag.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
---
title: Airflow TaskFlow DAG skeleton
description: Airflow DAG skeleton with TaskFlow API, retries, and sensible defaults.
status: stub
tags:
- data
Expand Down
1 change: 1 addition & 0 deletions docs/data/alembic-skeleton.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
---
title: Alembic migration skeleton
description: SQLAlchemy + Alembic project layout with autogenerate, env.py, and per-env URLs.
status: stub
tags:
- data
Expand Down
1 change: 1 addition & 0 deletions docs/data/dbt-skeleton.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
---
title: dbt project skeleton
description: Opinionated dbt project skeleton β€” sources, staging, marts, and tests.
status: stub
tags:
- data
Expand Down
1 change: 1 addition & 0 deletions docs/data/index.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
---
title: Data
description: Postgres conventions, Alembic migrations, dbt projects, and Airflow DAGs.
status: stub
tags:
- data
Expand Down
1 change: 1 addition & 0 deletions docs/data/postgres-conventions.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
---
title: Postgres schema conventions
description: Postgres naming, schema, and constraint conventions for long-lived databases.
status: stub
tags:
- data
Expand Down
1 change: 1 addition & 0 deletions docs/data/postgres-indexes.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
---
title: Postgres indexing & partitioning
description: When and how to add indexes β€” B-tree, partial, GIN, and covering indexes.
status: stub
tags:
- data
Expand Down
Loading
Loading