Skip to content

Repositories and workspace map

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.

RepositoryRoleTypical technologies
sylva-enterpriseMain web application (org-branded “white label” UI)Quasar 1 / Vue 2, Vuex, Axios, Firebase client
identity-managerBackend API, SSO views, sessions, integrationsNode.js 12, LoopBack 2, MongoDB, GCP (Tasks, Pub/Sub, Storage, …)
api-modelsShared LoopBack model definitions and remote methodsJSON models + JS hooks/methods consumed by Identity Manager
admin-toolLegacy admin UI bundled with Identity ManagerAngularJS 1.x, Gulp
sylva-workerStandalone services and background jobsNode (PDF, parsing, indexing, …), Python, Helm/K8s (Selenium), etc.
poll-acSeparate poll UI (Cloudflare Pages)Vue 3, Vite, Wrangler
speedtestNetwork speed test server (fork of speedtest-go)Go
sylva-docsThis documentation siteAstro, Starlight
RepositoryRoleNotes
sylva-ltiLTI platform integrationlauncher (Nuxt 2) + public-api (Polka/Svelte); uses Firebase Admin, Cloud Tasks, wolfram-notebook-embedder; OAuth/LTI flows tie into the Sylva ecosystem
RepositoryRoleNotes
wolfram-serverMinimal 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-setupDocumentation and ops for Wolfram Enterprise Private Cloud (WEPC) VMsCertificates, licensing, image import—not a Node dependency of the web apps; operators follow README when maintaining WEPC hosts.
mma-package-managerSmall 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):

RepositoryRelationship to Sylva
loopback-component-explorernpm dependency of identity-manager/server (git+https://github.com/sylva-ag/loopback-component-explorer.git) — API explorer / Swagger UI for LoopBack.
loopback-connector-mongodbnpm dependency of identity-manager/server — MongoDB connector.
loopback-component-access-groupsVendored 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.
RepositoryRole
pdf.jsMozilla 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

  1. Browsers load Sylva Enterprise, which calls /api on the Identity Manager host (see Frontend (Sylva Enterprise)).
  2. Identity Manager uses MongoDB, Firebase Admin, GCS, Tasks/Pub/Sub, and proxies Wolfram-related routes to upstream servers.
  3. 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.
  4. Firebase Functions in sylva-enterprise enqueue Cloud Tasks that call the Identity app (e.g. App Engine identity service) — see functions/index.js.
  5. 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.

Deprecated, legacy, or rarely touched repos

Section titled “Deprecated, legacy, or rarely touched repos”

Statements below are heuristic—confirm with your team and production config before archiving anything.

Repository / areaAssessmentReason
admin-toolLegacy but still shippedBundled 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 deprecatedOld 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-managerSuspect legacyNode ~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 upstreamNot wired into Sylva Enterprise package.json; treat as vendor/reference, not an application repo.
loopback-component-access-groups (standalone clone)Optional workspace copyRuntime uses the vendored tree inside identity-manager, not an arbitrary sibling folder. The clone helps compare or patch the fork.
wepc-setupActive docs, not an appInfrastructure 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.
TopicDocument
End-to-end system viewSystem architecture
LoopBack, common/models, deployment notesBackend API and api-models
Quasar app, boot/api, cloud config, Firebase clientFrontend (Sylva Enterprise)
Frontend CSS/structure debt and improvementsFrontend — CSS, structure, and tech debt
Worker model vs sylva-worker repoBackground jobs and workers
Legacy Angular admin inside Identity ManagerAdmin tool (legacy)
Go speedtest deploymentNetwork speedtest (Go)
REST surface (generated from models)API reference
Auth, roles, headersAuthentication and access control