web frontend - Alshival-Ai/neural-labs GitHub Wiki
Web frontend
The small, replaceable landing page for each self-hosted installation lives in web/.
The full public product page is maintained by the separate website project at
https://alshival.ai/neural-labs/ and is also served at https://neural-labs.ai/.
Self-hosted signup, login, assets, and account state remain local to the installation. The React login, signup, and pending-account interface lives in console/
and is compiled into the control-plane/ image. The authenticated desktop,
including Settings, lives in workspace/desktop/ and ships in the workspace
image. First-run
setup remains server-rendered by the control plane so an unbuilt or failed
console cannot weaken the bootstrap checks. Keeping the public static surface
separate makes both runtime containers smaller and their trust boundaries
clearer.
Directory layout
web/
├── index.html
├── styles.css
├── app.js
└── assets/
├── brand/ # Neural Labs logos and marks
├── icons/ # Third-party and interface icons
└── media/ # Page imagery, video, and source media
The site is currently plain HTML, CSS, and JavaScript. Keep it framework-free until application requirements justify adding a build system.
The landing page and control-plane console deliberately use different build
pipelines. See Administrator settings for the current application UI; run make validate for repository checks.
Local preview
From the repository root, run:
python3 -m http.server 8080 --bind 127.0.0.1 --directory web
Then open http://127.0.0.1:8080/. The landing page's /login link only works
through the complete same-domain Nginx routing configuration.
Microsoft sign-in assets
Microsoft-provided sign-in button artwork is stored in web/assets/icons/.
These files are visual assets only. OAuth configuration and encrypted
credentials are owned by the control plane as described in Authentication and
administrator model.
Do not place Entra tenant IDs, client secrets, tokens, or generated tenant state
in web/. Anything served from this directory must be treated as public.