Portal matrix

loca.zone serves as the generated project directory for the zone. Its header hosts an unboxed gem link resolving to the hub wiki, while authentication remains operational but excluded from discovery.

Manifesto

The landing header preserves the exact text and typographical error within a Brutalist 4px white frame:

Private Project Portal. A mix of half-baked local environments & experiments. Do NOT enter! xD - Safty is NOT guaranteed.

UI Invariants

Seven strict constraints govern the presentation and interaction of the portal grid:

  1. NO FLUFF: Absolutely zero footers, no JS Epoch clocks, no “PORTAL_OS” text, and no repetitive <p>Autonomic Node</p> labels.
  2. Top Bar Layout: Keep the LOCA.ZONE wordmark and manifesto inside the Brutalist 4px white frame on #000000. The header link must be an unboxed icon-only Gem link resolving to https://wiki.loca.zone with an accessible label.
  3. The Manifesto: Preserve this text exactly (including the typo) in the header block.
  4. Portal Membership: Auth is intentionally omitted from portal discovery; its Nginx site and authentication service remain unchanged. Quartz is a project card. The Loca apex is not in the grid. The wiki is header-only. Carefully curated brand names (e.g., RocketChat, KnowledgeTree, PuterOS, OhMyPi, OpenNotebook) must have no spaces in compounds.
  5. Project Front: Cards use centered legacy-style composition and 4px frames. The front displays a centered brand title hero; the full card opens the project.
  6. Project Back: The back reveals the brand, full domain, version, authentication badge, and a centered in-flow Info icon (no corner square, no hover fill box) functioning as a back-only link to the wiki. Quartz Info links to https://wiki.loca.zone; others link to https://wiki.<subdomain>.loca.zone.
  7. Interaction Contract: Pointer hover immediately flips a centered card to its back; leaving returns the front, using CSS :hover / :focus-within. Minimal JS is used for accessibility fallbacks: keyboard focus reveals, Escape returns to front, hoverless touch uses first tap to reveal/second tap to open, and outside reset. Reduced motion gets an immediate state change. There is no flip button.

Architecture and Satellites

FeatureDesign specificationImplementation
Satellite linksNested subdomains attach as back-face satellite iconsRendered via split_satellites in render_project_card
Security badgeVisual padlock indicator reflecting ingress protectionDisplayed on card back for Authelia or native login
Info linkNavigates directly to project documentationCenter-aligned SVG icon linking to service wiki
Discovery boundaryApex domain and authentication gateways omittedFiltered during vhost discovery

Generator and Hook Pipeline

The landing page at /var/www/loca-zone-root/index.html is dynamically generated. Direct edits to HTML are overwritten on reload.

StageComponentCommand or Path
Source scriptGenerator code/opt/loca-zone/generate_portal.py
VerificationUnit test suitecd /opt/loca-zone && python3 -m unittest -v test_generate_portal.py
File watchersystemd path unit/etc/systemd/system/nginx-reload-hook.path
Trigger hooksystemd service unitsudo systemctl start nginx-reload-hook.service
BackupsDated rollback copy/opt/loca-zone/generate_portal.py.bak-<stamp>

Recovery Protocol

  1. Edit /opt/loca-zone/generate_portal.py to restore invariant compliance.
  2. Execute the unit suite via cd /opt/loca-zone && python3 -m unittest -v test_generate_portal.py.
  3. Rebuild static output using sudo systemctl start nginx-reload-hook.service.

Sources

  • /opt/loca-zone/generate_portal.py:42-53,438-440,527-577,699-787
  • /opt/loca-zone/test_generate_portal.py:1-120
  • /etc/systemd/system/nginx-reload-hook.path:1-15
  • /etc/systemd/system/nginx-reload-hook.service:1-15