No agenda. Only -endra.
A tiny gallery of ordinary things with -endra added to their names, because it sounds funny.
python -m http.server 8000Open http://localhost:8000, then proceed with the arrow keys.
Edit catalogue.js when adding a character. Keep the asset as a square PNG with
a transparent background, update Ideas.md, then regenerate the sitemap and
collection metadata:
node scripts/generate-metadata.js
node scripts/generate-metadata.js --checkTo visually rearrange the gallery sequence, start the private curator board:
node scripts/curator-server.jsOpen the local URL printed in the terminal, drag the artworks into place, and
choose Save order to update the working tree, or Commit & push to record
the sequence with a commit message and push directly to remote. The tool updates
catalogue.js, regenerates the order-dependent pages and metadata, and validates
the result. If the default port is occupied, the server automatically chooses another
and prints its URL. Use --port 5000 to request a particular port.
The generator verifies that every listed image exists. To cut out a new image
without changing its colors, install Pillow and rembg, then run
python remove_bg.py input.jpg assets/nameendra.png.
The metadata generator also creates each character's static HTML page and 1200×630 PNG sharing card. Install Pillow before running it; Vercel serves the generated files directly, so shared links have character metadata before any JavaScript runs.
Run node tests/curator_order_test.js and node tests/curator_git_test.js for the curator save, rollback, and git checks.
For browser checks, install Python Playwright and its Chromium browser, then run
python tests/curator_board_test.py, python tests/curator_commit_ui_test.py, python tests/curator_elements_test.py, and
python tests/pwa_test.py.
Darkendra and Lightendra toggles sit in the top-right
corner. Your chosen themendra is saved in localStorage and restored on return.
Without a saved choice the gallery follows the operating system preference.
Watch the stars in Darkendra mode.
Visit the deployed HTTPS site first. In Android Chrome, open the menu and choose Install app or Add to Home screen. In iPhone Safari, use Share → Add to Home Screen, then open Webendra from its icon. It opens without the browser bar; the phone may still show its status bar.
The site is offline friendly for images that have been opened when online.
To check, Open the site online once and wait for it to finish loading. The page and its scripts are saved for offline use. Each character image is saved when you view that character; the gallery does not download the whole collection in advance. An image you have not viewed cannot be opened offline.
To check, view a few characters, turn on airplane mode, and reopen Webendra
from the home screen. The characters you viewed should still appear, including
when you open one of their /character/... links directly. Try the arrow keys
on a computer and tap the arrows on a phone. Check both themes and wraparound.
Turn connectivity back on and reopen the app to receive newly deployed
characters and images.
Changes are deployed to Vercel on push. The site's Git repository is connected to the Vercel project. Vercel regenerates character pages and metadata at build time.
Every character has a shared five-star rating and an optional written review. Guests can revise their own entry on the same browser. Reviews appear immediately; remove unwanted entries in the Supabase Table Editor. Ratings and reviews need a connection, while the gallery's previously viewed images remain available offline.
For a new deployment, set up a Webendra Supabase project before enabling reviews:
- Run
supabase/schema.sqlin the project's SQL Editor. Enable anonymous sign-ins under Authentication > Providers, and enable Cloudflare Turnstile under Authentication > Attack Protection. The Turnstile site must allowwebendra.vercel.appand any local hostname used for testing. - Put the Supabase project URL, publishable key, and Turnstile site key in
reviews-config.js, then redeploy. These three values are public browser settings. Never put a Supabase secret, service-role key, or Turnstile secret in that file. - Confirm that the public review summary loads and a first-time guest can pass Turnstile and submit a rating on the deployed site.
- When adding a new character to
catalogue.js, also insert its lowercase name intopublic.review_characters. This allowlist prevents ratings for unknown characters.
If the public configuration is absent, the gallery still works and the review panel explains that reviews are unavailable. If only the Turnstile site key is missing, visitors can read ratings and reviews but cannot post. A guest's anonymous session belongs to that browser; clearing site data or using another device starts a new session.