Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8c6e807653 | ||
|
|
0725d3eb1a | ||
|
|
bb8fd62041 | ||
|
|
1745ea9e93 | ||
|
|
2f1bb6deb5 | ||
|
|
40d5b54055 | ||
|
|
e2934f84b8 | ||
|
|
a4069d27e4 | ||
|
|
b33a72ced0 | ||
|
|
dde33d0907 |
@@ -6,7 +6,7 @@ This is the static website for Protospace, a non-profit makerspace in Calgary, A
|
||||
|
||||
## Source of truth
|
||||
|
||||
- Edit the HTML, CSS, and metadata files directly.
|
||||
- Edit the HTML, CSS, and metadata files directly under `public/`.
|
||||
- Do not create or reintroduce a static-site generator.
|
||||
- Do not add a build script that overwrites manually maintained pages.
|
||||
- There is intentionally no `build.js` or equivalent generator.
|
||||
@@ -14,7 +14,7 @@ This is the static website for Protospace, a non-profit makerspace in Calgary, A
|
||||
|
||||
## Page structure
|
||||
|
||||
- Every page must be an `index.html` inside its own route directory:
|
||||
- Every page must be an `index.html` inside its own route directory under `public/`:
|
||||
- `/index.html`
|
||||
- `/the-space/index.html`
|
||||
- `/tools/index.html`
|
||||
@@ -81,15 +81,9 @@ Keep the current open-house information consistent:
|
||||
|
||||
If this information changes, update the sidebar, relevant page copy, JSON-LD, and `llms.txt` together.
|
||||
|
||||
## Stylesheet cache versioning
|
||||
|
||||
- Every HTML page references `styles.css` with a cache-busting epoch query parameter, such as `/styles.css?v=1790211252`.
|
||||
- Whenever `styles.css` changes, update the `?v=` value in every HTML page to the current Unix epoch timestamp.
|
||||
- Keep the preload and stylesheet URLs synchronized so both use the same version.
|
||||
|
||||
## Assets
|
||||
|
||||
- Store local images in `/assets/`.
|
||||
- Store local images in `public/assets/`.
|
||||
- Use descriptive filenames rather than WordPress upload names such as `photo_6_2023-06-06_16-39-08.jpg`.
|
||||
- Remove unused downloaded image variants when it is safe to do so.
|
||||
- Update every reference when renaming or removing an asset.
|
||||
@@ -177,6 +171,7 @@ Before finishing an HTML change:
|
||||
- Run structural validation when available, for example:
|
||||
|
||||
```bash
|
||||
cd public/
|
||||
npx html-validate \
|
||||
--rule doctype-style:off \
|
||||
--rule void-style:off \
|
||||
@@ -190,6 +185,7 @@ Before finishing an HTML change:
|
||||
- Start a local static server and smoke-test every route:
|
||||
|
||||
```bash
|
||||
cd public/
|
||||
python3 -m http.server 8765
|
||||
```
|
||||
|
||||
|
||||
@@ -19,9 +19,10 @@ The Protospace WordPress site has been replaced with static HTML and CSS pages.
|
||||
git checkout -b update-page
|
||||
```
|
||||
|
||||
4. Edit the HTML pages, `styles.css`, or files in `assets/`. Preview the site locally with any static web server, for example:
|
||||
4. Edit the HTML pages, `public/styles.css`, or files in `public/assets/`. Preview the site locally from the public directory with any static web server, for example:
|
||||
|
||||
```bash
|
||||
cd public/
|
||||
python3 -m http.server
|
||||
```
|
||||
|
||||
|
||||
|
Before Width: | Height: | Size: 218 KiB |
|
Before Width: | Height: | Size: 128 KiB |
|
Before Width: | Height: | Size: 319 KiB |
|
Before Width: | Height: | Size: 187 KiB |
|
Before Width: | Height: | Size: 206 KiB |
|
Before Width: | Height: | Size: 113 KiB |
|
Before Width: | Height: | Size: 302 KiB |
|
Before Width: | Height: | Size: 163 KiB |
|
Before Width: | Height: | Size: 204 KiB |
|
Before Width: | Height: | Size: 110 KiB |
|
Before Width: | Height: | Size: 300 KiB |
|
Before Width: | Height: | Size: 162 KiB |
|
Before Width: | Height: | Size: 142 KiB |
|
Before Width: | Height: | Size: 92 KiB |
|
Before Width: | Height: | Size: 227 KiB |
|
Before Width: | Height: | Size: 152 KiB |
|
Before Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 1.0 KiB |
|
Before Width: | Height: | Size: 23 KiB |
|
Before Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 48 KiB |
|
Before Width: | Height: | Size: 29 KiB |
|
Before Width: | Height: | Size: 5.7 KiB |
|
Before Width: | Height: | Size: 186 KiB |
|
Before Width: | Height: | Size: 140 KiB |
|
Before Width: | Height: | Size: 351 KiB |
|
Before Width: | Height: | Size: 206 KiB |
|
Before Width: | Height: | Size: 168 KiB |
|
Before Width: | Height: | Size: 125 KiB |
|
Before Width: | Height: | Size: 313 KiB |
|
Before Width: | Height: | Size: 181 KiB |
|
Before Width: | Height: | Size: 195 KiB |
|
Before Width: | Height: | Size: 150 KiB |
|
Before Width: | Height: | Size: 362 KiB |
|
Before Width: | Height: | Size: 217 KiB |
|
Before Width: | Height: | Size: 31 KiB |
|
Before Width: | Height: | Size: 22 KiB |
|
Before Width: | Height: | Size: 62 KiB |
|
Before Width: | Height: | Size: 41 KiB |
|
Before Width: | Height: | Size: 256 KiB |
|
Before Width: | Height: | Size: 155 KiB |
|
Before Width: | Height: | Size: 385 KiB |
|
Before Width: | Height: | Size: 234 KiB |
|
Before Width: | Height: | Size: 221 KiB |
|
Before Width: | Height: | Size: 130 KiB |
|
Before Width: | Height: | Size: 329 KiB |
|
Before Width: | Height: | Size: 189 KiB |
|
Before Width: | Height: | Size: 246 KiB |
|
Before Width: | Height: | Size: 153 KiB |
|
Before Width: | Height: | Size: 377 KiB |
|
Before Width: | Height: | Size: 238 KiB |
|
Before Width: | Height: | Size: 212 KiB |
|
Before Width: | Height: | Size: 123 KiB |
|
Before Width: | Height: | Size: 309 KiB |
|
Before Width: | Height: | Size: 176 KiB |
|
Before Width: | Height: | Size: 182 KiB |
|
Before Width: | Height: | Size: 137 KiB |
|
Before Width: | Height: | Size: 307 KiB |
|
Before Width: | Height: | Size: 249 KiB |
|
Before Width: | Height: | Size: 19 KiB |
|
Before Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 35 KiB |
|
Before Width: | Height: | Size: 22 KiB |
|
Before Width: | Height: | Size: 232 KiB |
|
Before Width: | Height: | Size: 137 KiB |
|
Before Width: | Height: | Size: 343 KiB |
|
Before Width: | Height: | Size: 205 KiB |
|
Before Width: | Height: | Size: 217 KiB |
|
Before Width: | Height: | Size: 125 KiB |
|
Before Width: | Height: | Size: 314 KiB |
|
Before Width: | Height: | Size: 180 KiB |
|
Before Width: | Height: | Size: 191 KiB |
|
Before Width: | Height: | Size: 106 KiB |
|
Before Width: | Height: | Size: 282 KiB |
|
Before Width: | Height: | Size: 152 KiB |
|
Before Width: | Height: | Size: 203 KiB |
|
Before Width: | Height: | Size: 109 KiB |
|
Before Width: | Height: | Size: 294 KiB |
|
Before Width: | Height: | Size: 156 KiB |
|
Before Width: | Height: | Size: 170 KiB |
|
Before Width: | Height: | Size: 88 KiB |
|
Before Width: | Height: | Size: 238 KiB |
|
Before Width: | Height: | Size: 122 KiB |
|
Before Width: | Height: | Size: 35 KiB |
|
Before Width: | Height: | Size: 26 KiB |
|
Before Width: | Height: | Size: 71 KiB |
|
Before Width: | Height: | Size: 48 KiB |
|
Before Width: | Height: | Size: 163 KiB |
|
Before Width: | Height: | Size: 116 KiB |
|
Before Width: | Height: | Size: 275 KiB |
|
Before Width: | Height: | Size: 211 KiB |
@@ -21,8 +21,9 @@ WIKI_URL = "https://wiki.protospace.ca/Tools_we_have"
|
||||
WIKI_ROOT = "https://wiki.protospace.ca"
|
||||
COOKIE = "human_check=verified"
|
||||
ROOT = Path(__file__).resolve().parent
|
||||
OUTPUT = ROOT / "tools.json"
|
||||
IMAGE_DIR = ROOT / "assets" / "tools"
|
||||
PUBLIC_ROOT = ROOT / "public"
|
||||
OUTPUT = PUBLIC_ROOT / "tools.json"
|
||||
IMAGE_DIR = PUBLIC_ROOT / "assets" / "tools"
|
||||
|
||||
|
||||
class ToolsParser(HTMLParser):
|
||||
|
||||
@@ -11,12 +11,12 @@
|
||||
<meta property="og:description" content="Explore Protospace’s 3D printer village in Calgary, with filament and resin printers available to trained members." />
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:url" content="https://protospace.ca/3d-printers/" />
|
||||
<meta property="og:image" content="https://protospace.ca/assets/3d-printers-1-1024x768.jpg" />
|
||||
<meta property="og:image" content="https://protospace.ca/assets/3d-printers-1-800.jpg" />
|
||||
<meta property="og:site_name" content="Protospace" />
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<title>3D Printers – Protospace</title>
|
||||
<link rel="preload" href="/styles.css?v=1790385126" as="style" />
|
||||
<link rel="stylesheet" href="/styles.css?v=1790385126" />
|
||||
<link rel="preload" href="/styles.css" as="style" />
|
||||
<link rel="stylesheet" href="/styles.css" />
|
||||
<script type="application/ld+json">
|
||||
{
|
||||
"@context": "https://schema.org",
|
||||
@@ -84,22 +84,22 @@
|
||||
<div class="entry">
|
||||
<figure>
|
||||
<picture>
|
||||
<source type="image/webp" srcset="/assets/3d-printers-1-1024x768.webp 1024w, /assets/3d-printers-1.webp 1280w" sizes="(max-width: 760px) calc(100vw - 24px), 750px" />
|
||||
<img width="1024" height="772" src="/assets/3d-printers-1.jpg" srcset="/assets/3d-printers-1-1024x768.jpg 1024w, /assets/3d-printers-1.jpg 1280w" sizes="(max-width: 760px) calc(100vw - 24px), 750px" alt="Resin 3D printers and printing supplies" fetchpriority="high" decoding="async" />
|
||||
<source type="image/webp" srcset="/assets/3d-printers-1-400.webp 400w, /assets/3d-printers-1-800.webp 800w, /assets/3d-printers-1-1600.webp 1600w" sizes="(max-width: 760px) calc(100vw - 24px), 750px" />
|
||||
<img width="800" height="602" src="/assets/3d-printers-1-800.jpg" srcset="/assets/3d-printers-1-400.jpg 400w, /assets/3d-printers-1-800.jpg 800w, /assets/3d-printers-1-1600.jpg 1600w" sizes="(max-width: 760px) calc(100vw - 24px), 750px" alt="Resin 3D printers and printing supplies" fetchpriority="high" decoding="async" />
|
||||
</picture>
|
||||
</figure>
|
||||
|
||||
<figure>
|
||||
<picture>
|
||||
<source type="image/webp" srcset="/assets/3d-printers-2-1024x768.webp 1024w, /assets/3d-printers-2.webp 1280w" sizes="(max-width: 760px) calc(100vw - 24px), 750px" />
|
||||
<img width="1024" height="772" src="/assets/3d-printers-2.jpg" srcset="/assets/3d-printers-2-1024x768.jpg 1024w, /assets/3d-printers-2.jpg 1280w" sizes="(max-width: 760px) calc(100vw - 24px), 750px" alt="3D printer village with filament and resin printers" loading="lazy" decoding="async" />
|
||||
<source type="image/webp" srcset="/assets/3d-printers-2-400.webp 400w, /assets/3d-printers-2-800.webp 800w, /assets/3d-printers-2-1600.webp 1600w" sizes="(max-width: 760px) calc(100vw - 24px), 750px" />
|
||||
<img width="800" height="602" src="/assets/3d-printers-2-800.jpg" srcset="/assets/3d-printers-2-400.jpg 400w, /assets/3d-printers-2-800.jpg 800w, /assets/3d-printers-2-1600.jpg 1600w" sizes="(max-width: 760px) calc(100vw - 24px), 750px" alt="3D printer village with filament and resin printers" loading="lazy" decoding="async" />
|
||||
</picture>
|
||||
</figure>
|
||||
|
||||
<figure>
|
||||
<picture>
|
||||
<source type="image/webp" srcset="/assets/3d-printers-3-1024x768.webp 1024w, /assets/3d-printers-3.webp 1280w" sizes="(max-width: 760px) calc(100vw - 24px), 750px" />
|
||||
<img width="1024" height="772" src="/assets/3d-printers-3.jpg" srcset="/assets/3d-printers-3-1024x768.jpg 1024w, /assets/3d-printers-3.jpg 1280w" sizes="(max-width: 760px) calc(100vw - 24px), 750px" alt="Desktop 3D printers and print supplies" loading="lazy" decoding="async" />
|
||||
<source type="image/webp" srcset="/assets/3d-printers-3-400.webp 400w, /assets/3d-printers-3-800.webp 800w, /assets/3d-printers-3-1600.webp 1600w" sizes="(max-width: 760px) calc(100vw - 24px), 750px" />
|
||||
<img width="800" height="602" src="/assets/3d-printers-3-800.jpg" srcset="/assets/3d-printers-3-400.jpg 400w, /assets/3d-printers-3-800.jpg 800w, /assets/3d-printers-3-1600.jpg 1600w" sizes="(max-width: 760px) calc(100vw - 24px), 750px" alt="Desktop 3D printers and print supplies" loading="lazy" decoding="async" />
|
||||
</picture>
|
||||
</figure>
|
||||
</div>
|
||||
@@ -131,10 +131,10 @@
|
||||
<div class="footer-inner">
|
||||
<div class="footer-links">
|
||||
<div><a href="https://www.youtube.com/user/calgaryprotospace/playlists" class="external">YouTube</a></div>
|
||||
<div><a href="https://wiki.protospace.ca/Faq" class="external">F.A.Q.</a></div>
|
||||
<div><a href="https://github.com/Protospace" class="external">GitHub</a></div>
|
||||
<div><a href="https://www.facebook.com/CalgaryProtospace/" class="external">Facebook</a></div>
|
||||
</div>
|
||||
<p>PROTOSPACE 2026 · All rights reserved</p>
|
||||
<p>© PROTOSPACE 2026 · <a href="https://github.com/Protospace/main-website" class="external">Source Code</a></p>
|
||||
</div>
|
||||
</footer>
|
||||
</body>
|
||||
|
After Width: | Height: | Size: 461 KiB |
|
After Width: | Height: | Size: 265 KiB |
|
After Width: | Height: | Size: 43 KiB |
|
After Width: | Height: | Size: 26 KiB |
|
After Width: | Height: | Size: 141 KiB |