Website for the 31st Annual Eskdale Art Show, 23–25 May 2026, at St Bega's School, Eskdale Green, Cumbria.
Built as a static site with no framework dependencies. Content is managed through a web-based CMS. The site deploys automatically on every change.
You do not need any technical knowledge to update this website.
All content — event details, gallery images, descriptions — is edited through a simple web form at pagescms.org. No code, no downloads, no terminal.
Read the full guide: docs/cms-guide.md
- Go to pagescms.org
- Click Sign in with GitHub
- Select the eskdale-website repository
- Edit Event Details or Gallery using the form fields
- Click Save — the site updates automatically within 2 minutes
eskdale-website/
├── src/ Website (deployed to GitHub Pages)
│ ├── index.html Main page
│ ├── CNAME Custom domain config
│ ├── css/style.css Design system & all styles
│ ├── js/
│ │ ├── main.js Data loading, carousel, gallery, countdown
│ │ └── wasm-fallback.js JS brushstroke effect (fallback for WASM)
│ ├── data/
│ │ ├── event.json Event details, venue, categories, contact
│ │ └── gallery.json Gallery items (image, artist, medium)
│ ├── assets/
│ │ ├── images/
│ │ │ ├── gallery/ Gallery artwork images
│ │ │ ├── poster-*.webp Event poster images (carousel)
│ │ │ └── og-card.svg Social sharing card
│ │ └── icons/favicon.svg Site favicon
│ └── wasm/pkg/ Built WASM module (generated by CI)
├── wasm/ Rust source for brushstroke effect
│ ├── Cargo.toml
│ ├── Cargo.lock
│ └── src/lib.rs Particle system (~200 lines)
├── docs/ Project documentation
│ ├── cms-guide.md Content editor guide
│ ├── contributing.md Developer contributor guide
│ ├── design-system.md Colour palette, typography, components
│ ├── prd.md Product requirements
│ ├── ddd.md Domain model
│ └── adr/
│ └── 001-static-gh-pages-architecture.md
├── .github/workflows/deploy.yml CI/CD pipeline
├── .pages.yml CMS schema configuration
└── .gitignore
- Content lives in JSON files (
src/data/*.json), edited via Pages CMS or directly index.htmlprovides the page structure with placeholder elementsmain.jsfetches the JSON at page load and renders content into the DOMstyle.cssimplements the full design system with CSS custom properties- The WASM brushstroke effect renders floating painterly particles on the hero canvas
- GitHub Actions builds the WASM module and deploys
src/to GitHub Pages on every push
# Serve the site locally
cd src && python3 -m http.server 8765
# Open http://localhost:8765
# Build the WASM module (requires Rust + wasm-pack)
cd wasm && wasm-pack build --target web --release --no-typescript --out-dir ../src/wasm/pkg
# The site works without the WASM build — it falls back to the JS implementationEvery push to main triggers the GitHub Actions workflow which:
- Checks out the repository
- Installs the Rust toolchain with
wasm32-unknown-unknowntarget - Builds the WASM brushstroke module via
wasm-pack - Deploys the
src/directory to GitHub Pages
Deployment takes ~45 seconds. The site is served at https://eskdaleartshow.com.
| Decision | Rationale | Details |
|---|---|---|
| No framework (vanilla HTML/CSS/JS) | Contributors can edit without learning React/Vue/etc. | ADR-001 |
| WASM as discrete module | Visual flair without maintenance burden on contributors | ADR-002 |
| Pages CMS for content | Zero infrastructure, GitHub-native, form-based editing | ADR-003 |
| JSON data files | Runtime rendering keeps HTML simple; CMS edits structured data | DDD |
| Document | Audience | Purpose |
|---|---|---|
| CMS Guide | Art show committee | Step-by-step content editing instructions |
| Contributing | Developers | How to set up, develop, and submit changes |
| Design System | Developers & designers | Colour palette, typography, components reference |
| PRD | All | Product requirements and scope |
| DDD | Developers | Domain model and bounded contexts |
| ADRs | Developers | Architecture decision records |
- Art Show Committee: eskdaleartshow@st-begas.cumbria.sch.uk / 019467 23259
- Facebook: Eskdale Artshow
- Website Issues: GitHub Issues