This page is the map of the Sylva workspace. Use it when you need to know where a concern lives (API vs UI vs jobs vs shared models) before diving into the repo-specific guides linked below.
| Repository | Role | Typical technologies |
|---|
| sylva-enterprise | Main web application (org-branded “white label” UI) | Quasar 1 / Vue 2, Vuex, Axios, Firebase client |
| identity-manager | Backend API, SSO views, sessions, integrations | Node.js 12, LoopBack 2, MongoDB, GCP (Tasks, Pub/Sub, Storage, …) |
| api-models | Shared LoopBack model definitions and remote methods | JSON models + JS hooks/methods consumed by Identity Manager |
| admin-tool | Legacy admin UI bundled with Identity Manager | AngularJS 1.x, Gulp |
| sylva-worker | Standalone services and background jobs | Node (PDF, parsing, indexing, …), Python, Helm/K8s (Selenium), etc. |
| poll-ac | Separate poll UI (Cloudflare Pages) | Vue 3, Vite, Wrangler |
| speedtest | Network speed test server (fork of speedtest-go) | Go |
| sylva-docs | This documentation site | Astro, Starlight |
| Repository | Role | Notes |
|---|
| sylva-lti | LTI platform integration | launcher (Nuxt 2) + public-api (Polka/Svelte); uses Firebase Admin, Cloud Tasks, wolfram-notebook-embedder; OAuth/LTI flows tie into the Sylva ecosystem |
| Repository | Role | Notes |
|---|
| wolfram-server | Minimal Wolfram Language HTTP server (server.wls) | Used alongside or instead of WEPC endpoints for some WL calls (see Enterprise docs under docs/SYLVA/Back end and infrastructure/). |
| wepc-setup | Documentation and ops for Wolfram Enterprise Private Cloud (WEPC) VMs | Certificates, licensing, image import—not a Node dependency of the web apps; operators follow README when maintaining WEPC hosts. |
| mma-package-manager | Small Express service (“Creo related API”) | Very old Node (~10 in package.json); no direct import from Sylva Enterprise. Treat as legacy unless your deployment still routes traffic here. |
Identity Manager installs forks from sylva-ag on GitHub (not the npm registry):
| Repository | Relationship to Sylva |
|---|
| loopback-component-explorer | npm dependency of identity-manager/server (git+https://github.com/sylva-ag/loopback-component-explorer.git) — API explorer / Swagger UI for LoopBack. |
| loopback-connector-mongodb | npm dependency of identity-manager/server — MongoDB connector. |
| loopback-component-access-groups | Vendored copy under identity-manager/server/components/loopback-component-access-groups (upstream fullcube); a separate clone is useful for diffing against vendor or contributing patches—LoopBack does not resolve this from your extra workspace folder unless you change package.json. |
| Repository | Role |
|---|
| pdf.js | Mozilla pdf.js upstream mirror. Sylva Enterprise does not list it in package.json; keep it as a reference or packaging baseline if you patch or vendor the viewer—not part of the core dependency graph below. |
High-level who calls whom in production-like setups. Fine arrows are git/submodule or internal proxy paths.
flowchart TB
subgraph clients [Clients]
Browser[Sylva Enterprise SPA]
Poll[poll-ac]
LTI_UI[sylva-lti launcher / public-api]
end
subgraph api [Identity Manager]
IM["/api REST + SSO views"]
Proxy["/wepc-api and /wwe-api proxies"]
end
subgraph data [Data and identity]
Mongo[(MongoDB)]
FB[(Firebase Auth / Firestore)]
GCS[GCS / GCP APIs]
end
subgraph shared [Shared models]
AM["api-models → identity-manager/common/models"]
end
subgraph jobs [Async]
Fn[Firebase Functions in sylva-enterprise]
Tasks[Cloud Tasks queues]
SW[sylva-worker services]
end
subgraph wolfram [Wolfram endpoints]
WEPC_HOST[WEPC / EPC or wolfram-server host]
end
Browser -->|HTTPS cookie + Bearer| IM
Poll -->|HTTPS API| IM
LTI_UI --> IM
LTI_UI --> FB
IM --> Mongo
IM --> FB
IM --> GCS
AM -.->|git submodule| IM
Browser -->|same host: /wepc-api /wwe-api| Proxy
Proxy --> WEPC_HOST
Browser -->|wolfram-notebook-embedder| WEPC_HOST
Fn --> Tasks
Tasks --> IM
SW --> GCS
SW --> Mongo
Identity Manager proxies (server/boot/wolfram-config.js): /wepc-api and /wwe-api forward to configured upstream Wolfram hosts so the browser and Sylva Enterprise (boot/api.js: WEPC_API, WWE_API) can call Creo/Wolfram APIs through the API host without exposing internal URLs.
What npm/git ties resolve to—useful when cloning forks next to the core repos.
flowchart LR
subgraph im_server [identity-manager/server]
PKG[package.json]
end
subgraph forks [GitHub forks consumed via npm]
EXP[loopback-component-explorer]
MONGO[loopback-connector-mongodb]
end
subgraph vendor [Vendored in repo]
AG[loopback-component-access-groups]
end
subgraph models [Submodule]
AM[api-models]
end
PKG -->|git URL dependency| EXP
PKG -->|git URL dependency| MONGO
PKG --> AG
AM -.->|common/models| im_server
- Browsers load Sylva Enterprise, which calls
/api on the Identity Manager host (see Frontend (Sylva Enterprise)).
- Identity Manager uses MongoDB, Firebase Admin, GCS, Tasks/Pub/Sub, and proxies Wolfram-related routes to upstream servers.
- api-models is not a running service: it is the canonical model layer under
identity-manager/common/models (git submodule). See Backend API and api-models.
- Firebase Functions in sylva-enterprise enqueue Cloud Tasks that call the Identity app (e.g. App Engine
identity service) — see functions/index.js.
- sylva-worker runs additional batch/stream jobs (PDF, Algolia, BigQuery, …) against the same cloud footprint; overlap with LoopBack
Worker model methods is explained in Background jobs and workers.
Statements below are heuristic—confirm with your team and production config before archiving anything.
| Repository / area | Assessment | Reason |
|---|
| admin-tool | Legacy but still shipped | Bundled into Identity Manager for operator admin URLs. New product UI belongs in Sylva Enterprise unless it is strictly internal admin. See Admin tool (legacy). |
sylva-testing (sylva-e2e-testing, Protractor) | Likely deprecated | Old Protractor 5 stack; Sylva Enterprise’s own Selenium/Mocha tests (test/e2e) supersede this pattern for the main app. Keep only if something external still runs this suite. |
| mma-package-manager | Suspect legacy | Node ~10, boilerplate README, no code references found in Sylva Enterprise. Validate whether any production route still hits this service. |
| pdf.js (Mozilla fork in workspace) | Not “deprecated”—it is upstream | Not wired into Sylva Enterprise package.json; treat as vendor/reference, not an application repo. |
| loopback-component-access-groups (standalone clone) | Optional workspace copy | Runtime uses the vendored tree inside identity-manager, not an arbitrary sibling folder. The clone helps compare or patch the fork. |
| wepc-setup | Active docs, not an app | Infrastructure runbooks for WEPC VMs—not unused, but it does not ship as Node services in the Sylva graph. |
- api-models publishes a semver version in its
package.json (for example 2.x). Identity Manager pins the submodule to a commit; when you change models, bump and release api-models, then update the submodule in identity-manager and deploy the API.
- Sylva Enterprise is versioned independently (see Codebase statistics); it must stay compatible with the API contract your environment runs.