No description
  • TypeScript 49.8%
  • SCSS 29.1%
  • HTML 11.6%
  • JavaScript 6.9%
  • Shell 2.5%
Find a file
Hutch79 6d718cd088
All checks were successful
Optimize images / optimize-images (pull_request) Successful in 1m50s
feat(fonts): update font asset handling and prevent fingerprinting
Refactor font asset management to avoid fingerprinting for specific font
extensions. Update documentation and comments for clarity on font
locations and usage in the project.
2026-06-02 21:08:20 +02:00
.cursor/rules remove(api): delete Webpage API and associated configurations 2026-05-01 18:14:17 +02:00
.forgejo feat(images): enhance WebP conversion process and add sizing attributes 2026-03-31 21:21:30 +02:00
src/Webpage.Frontend feat(fonts): update font asset handling and prevent fingerprinting 2026-06-02 21:08:20 +02:00
.dockerignore feat(ui): add initial HTML and SCSS files for blog, home, and projects pages 2026-03-28 01:51:31 +01:00
.gitignore remove(api): delete Webpage API and associated configurations 2026-05-01 18:14:17 +02:00
compose.prod.yaml chore(docker): update compose files to use external "proxy" network in staging and production 2026-05-01 18:18:28 +02:00
compose.staging.yaml chore(docker): update compose files to use external "proxy" network in staging and production 2026-05-01 18:18:28 +02:00
compose.yaml remove(api): delete Webpage API and associated configurations 2026-05-01 18:14:17 +02:00
README.md Update README.md 2026-05-01 21:23:13 +00:00

Webpage

Personal site: Angular app in src/Webpage.Frontend/. Blog and project copy live under src/Webpage.Frontend/content/; the static content index is built with npm run content:build in the frontend (see src/Webpage.Frontend/content/README.md for front matter).

Markdown image formats

Images in blog and project Markdown are compiled by src/Webpage.Frontend/scripts/build-content.mjs (Marked). Plain ![alt](url) works as usual. For size and layout without raw HTML, use a braced attribute block immediately after the closing ) of the image link.

Braced syntax (![alt](url){ … })

Only key=value pairs are read (spaces separate pairs). Values may be quoted with " or '.

Sizing (each value must match a safe length: number + unit, or auto):

Key Example values
width 50%, 400px
height 300px, auto
max-width 90%, 32rem
max-height 480px, auto

Allowed units: %, px, rem, em, ch, vw, vh. Other CSS is not accepted (keeps output safe).

Block alignment (no text beside the image; use with width / max-width as needed):

Key Values
align left, center, or right

Float (text wraps beside the image): place the image line before the paragraphs that should run next to it. Section headings (h2 / h3) clear floats.

Key Values
float left or right

Floated images get a markdown-inline-img--float-* class so narrow viewports can drop the float (see src/Webpage.Frontend/src/styles.scss).

Examples

![Hero](/content/blog/my-post/hero.webp){width=50% align=center}
![Thumb](/content/blog/my-post/thumb.webp){width=320px height=200px}
![Shot](/content/blog/my-post/ui.webp){max-width=90% height=auto}
![Meme](/content/blog/my-post/meme.webp){width=50% float=right}
Following paragraph flows to the left of the image when there is room.

This syntax is not processed inside fenced code blocks.

Optional HTML figures

For captions or layouts that need <figure>, you can use raw HTML in Markdown. Styles live on app-content-detail .markdown-body in src/Webpage.Frontend/src/styles.scss.

  • Base: class="markdown-figure" plus one modifier.
  • Block (no wrap): markdown-figure--center, --left, or --right — figure width defaults to 50% of the column.
  • Float (wrap): markdown-figure--float-left or markdown-figure--float-right — place the <figure> before the wrapping paragraphs.
  • Custom width: style="--markdown-figure-width: 40%" on the <figure> element.

On viewports under 640px, figures and floated inline images stack to full width where applicable.