yingjieli-public-site v1.0.0
subsystem yingjieli.site
capsule://quake0day/[email protected]
The public, read-only frontend of yingjieliartist.com. Renders the
hero, biography, masonry gallery of works, exhibitions, and contact
sections, plus a keyboard / touch-friendly lightbox. Pulls all
content at runtime from /api/data and all images from /api/img/<key>.
Owns
- index.html (markup, SEO meta, OpenGraph)
- assets/styles.css (design system: Fraunces + Inter Tight, paper palette)
- assets/app.js (masonry layout + lightbox + nav scroll)
- robots.txt + sitemap.xml
- the visual contract of the site (typography, palette, motion)
Does not own
- content data (consumes GET /api/data; never mutates it)
- image bytes (consumes /api/img/<key>; never uploads)
- authentication (never reads or sets the yl_admin cookie)
- admin UI (separate capsule)
AI orientation
Read-only frontend. All content fetched from /api/data on load;
page is built from that JSON, not data embedded in HTML. If you add
a new section, you also need a new field in content-store's
DEFAULT_DATA and a new card in the admin UI.
Avoid
- Hard-coding content (artwork lists, bios) in HTML.
- Importing jQuery or any heavy framework — the site is 0-dep JS by design.
Provides
http_api:site-root
Requires
http_api:data-readfromyingjieli-content-storehttp_api:image-servefromyingjieli-image-store
Dependencies
Capsules
yingjieli-content-store>=1.0.0 <2.0.0yingjieli-image-store>=1.0.0 <2.0.0
Runtime
cloudflare-pages*
Invariants (must always hold)
- The public site never mutates content (no PUT/POST/DELETE in app.js).
- The public site never reads the yl_admin cookie.
Source files (5)
Click any file to view its content; the path on the right shows where the file lands when this capsule is installed.
src/index.html→index.htmlsrc/assets/styles.css→assets/styles.csssrc/assets/app.js→assets/app.jssrc/robots.txt→robots.txtsrc/sitemap.xml→sitemap.xml
Plus capsule.yaml and
install.json.