| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
This website is built with Eleventy (11ty) using Nunjucks templates. All pages are configuration-driven — there are no individual .njk files per page. Instead, a single pagination template (src/pages.njk) generates every page from JSON config files.
{
"templateName": "imageAndTextBlock",
"content": { "title": "...", "img": "...", "align": "right" }
}src/ ├── pages.njk # Single pagination template (generates all pages) ├── _data/ │ ├── pages.js # Builds page list from site.json menu │ └── site.js # Exposes site.json globally ├── _includes/ │ ├── base.njk # HTML scaffold (header, nav, footer) │ └── blocks/ # ~21 reusable block templates │ ├── carouselBlock.njk │ ├── imageAndTextBlock.njk │ ├── galleryBlock.njk │ ├── textBlock.njk │ └── ... ├── content/ │ ├── site.json # Menu, footer, socials, variables │ ├── config.json # Homepage blocks │ └── [section]/ │ ├── config.json # Page blocks │ └── assets/ # Page-specific images/media ├── assets/ # Global assets (fonts, CSS, JS, images) └── build/ # Build-time helpers static/ # Files copied to build root (robots.txt, CNAME, etc.) build/ # Output directory (generated)
Assets are served from three sources:
| Source | Destination | Contents |
|---|---|---|
| src/assets/ | build/assets/ | Global CSS, JS, fonts, images, videos |
| static/ | build/ (root) | robots.txt, CNAME, _headers, etc. |
| src/content/[page]/assets/ | build/[page]/assets/ | Per-page images and media |
Per-page assets are discovered automatically by parsing the menu structure in site.json.
npm installStarts a local dev server at http://localhost:8080/ with live reload:
npm startnpm run buildOutput is written to the build/ directory.
To edit an existing page, modify its config.json — add, remove, or reorder blocks. Available block types are the .njk files in src/_includes/blocks/.
This repository uses GitHub Copilot skills (.github/skills/) and helper scripts to automate content updates across the site. The blog post at .github/blog_post/BlogPost.md is the single source of truth for all feature content — every skill reads from it. See .github/INSTRUCTIONS.md for detailed workflow documentation.
Before running any update, make sure the blog post is in place:
| Page | What to say | What happens |
|---|---|---|
| Homepage | "Update the homepage with new features" | Creates imageAndTextBlock entries in src/content/config.json with images, colors, descriptions, and links from the blog post. |
| Specifications | "Update the specifications page from the blog post" | Adds feature names and doc links to the ENGINE SPECIFICATIONS sections in src/content/specifications/config.json. Detects duplicates and checks column balance. |
| Feature Demos | "Add blog post demos to feature demos" | Adds demo entries to the gallery in src/content/featureDemos/config.json. Uses a two-pass workflow (see below). |
| Alt Text | "Add alt tags to the feature demos page" | Generates descriptive alt text for any config JSON file with image references. Works on any page. |
Open GitHub Copilot Chat and type a natural language prompt. You don't need to reference skill files — Copilot matches your request to the right skill automatically. Examples:
Each skill will read the blog post, compare against existing content, and present a plan before making changes. You confirm before anything is written.
The homepage skill handles the most complex update — converting blog post features into visual content blocks with images, background colors, descriptions, and links.
Process:
To update a single image later:
Ask Copilot: "Update the specifications page from the blog post."
The skill extracts feature names and documentation links, then places each feature in the best-matching section (Main Features, Shaders/Rendering, Geometry, Optimizations, Special FX, Cameras, or Exporters and Tooling). It flags potential duplicates with existing entries and asks how to handle them. After adding all features, it checks whether the left and right columns are balanced and suggests moving whole sections if needed.
Automated screenshot capture of WebGL Playground demos is extremely resource-intensive (headless Chromium rendering full 3D scenes). Instead, the feature demos skill uses a manual screenshot workflow:
Pass 1 — Create entries with placeholders:
Between passes — Capture screenshots manually:
Pass 2 — Generate alt text:
The alt text skill works on any page — not just the homepage. Ask Copilot to add or fix alt tags on any page, and it will find images with missing, empty, or placeholder alt text, view each image file, and write descriptive text.
Examples:
| Script | Command | Description |
|---|---|---|
| Process all images | npm run process-images | Resize, optimize, and sample background colors for all feature images |
| Update single image | npm run update-image -- <name> | Process one updated image on demand |
.github/
├── INSTRUCTIONS.md # Full workflow documentation
├── image-colors.json # Generated background colors
├── blog_post/
│ └── BlogPost.md # Blog post content (ground truth)
├── raw_images/ # Source images for homepage
├── scripts/
│ ├── process-images.js # Batch image processor
│ └── update-image.js # Single image updater
└── skills/
├── homepage-update.prompt.md # Homepage feature blocks
├── blog-text-conversion.prompt.md # Text conversion rules
├── specifications-update.prompt.md # Specifications page entries
├── feature-demos-update.prompt.md # Feature demos gallery
└── homepage-alt-text.prompt.md # Image alt text (any page)
this property available as part of page level Json property
"title": "BabylonJS - 3D engine based on WebGL/Web Audio and JavaScript"meta tags can be unique for each page. This property available as part of page level Json property and contains list of tags
"metaTags": [
{
"name": "description",
"content": "BabylonJS - 3D engine based on WebGL/Web Audio and JavaScript"
},
{
"property": "og:title", //optional property for open graph
"content": "BabylonJS - 3D engine based on WebGL/Web Audio and JavaScript"
}
]| Back | FazBrowse Home | New Git URL |