Skip to content

Lint Jinja templates + hand-authored CSS/JS (djlint + Biome) (parity with IcebergCTI) #322

Description

@richardmhope

Parity gap: Jinja templates + hand-authored CSS/JS are not linted (IcebergCTI lints both)

Cross-repo parity review of the Iceberg family (IcebergCTI / IcebergTTX / IcebergEBS). This repo has server-rendered Jinja templates and hand-authored static CSS/JS (with a vendored Alpine CSP build) but lints neither. The sibling IcebergCTI — same frontend stack — gates on djlint (Jinja) and Biome (CSS/JS) in both CI and pre-commit.

IcebergCTI baseline:

  • djlintdjlint <templates> --lint, profile="jinja", lint-only, with a documented ignore list in [tool.djlint]. Catches Jinja/HTML structure issues.
  • Biomebiome lint <static-css-js>, config in biome.jsonc (formatter off, lint-only, vendor/ excluded). Installed in CI via biomejs/setup-biome (standalone binary, no Node); the pre-commit hook no-ops if the binary is absent.
  • A frontend-assets test also guards the CSP invariants (no inline handlers/<script>, no x-html).

Current state (this repo): templates and hand-authored CSS/JS are unlinted (CSS only passes through the Tailwind build).

Acceptance criteria

  • Add djlint (Jinja) with a [tool.djlint] config and a CI step over the templates dir.
  • Add Biome (biome.jsonc, lint-only, exclude vendored assets) with a CI step via biomejs/setup-biome.
  • Wire both into pre-commit if/when this repo adopts one.
  • (Optional) port IcebergCTI's CSP-invariant test if this repo enforces a strict script-src.

Reverse-parity: adopting a practice IcebergCTI already has.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestparityGap vs the IcebergTTX (deep_thought) house standard

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions