Package growth

Portal, Module, and Media Extension Contracts

Future additions use small static registries instead of server-side discovery. This keeps cPanel uploads simple while preserving the no-backend public boundary.

Add a top-level portal

Upload a new portal folder and add one object to /assets/data/portal-status.json. New project portals should use homePlacement: catalog so they appear through Explore More Portals instead of crowding the homepage.

/newportal/index.html
/newportal/portal.json
/newportal/PORTAL_CONTRACT.md
/newportal/modules/modules_index.json
/newportal/modules/MODULES_CONTRACT.md

Add a module to a portal

Upload a folder to /portal-name/modules/module-name/, then add module-name/module.json to that portal's modules_index.json.

Add RetroWeb media

Upload a cleanly named media file or HTML tool, then add one object to /retroweb/data/media_index.json. Video and images use native contain-fit rendering; large games and instruments should prefer standalone launch on phones.

Templates

Static templates are included under /templates/ in this package for portal, module, and RetroWeb media entries.