MCPcopy Index your code
hub / github.com/dataspecer/dataspecer

github.com/dataspecer/dataspecer @main

Chat with this repo
repository ↗ · DeepWiki ↗ · + Follow
7,338 symbols 19,327 edges 1,921 files 735 documented · 10%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Dataspecer GitHub last commit GitHub contributors test dataspecer.com

A set of tools for effortless management and creation of data specifications.

Check our website dataspecer.com for more information.

Docker container

You can easily run the whole application in a Docker container.

If you just want to try it out for a while and don't care where the data is stored, use following command and then go open http://localhost:3000/.

docker run -p3000:80 ghcr.io/dataspecer/ws

  • The container exposes port 80.
  • Mount /usr/src/app/database directory to your local directory that will be filled with database.db file and stores directory. If the directory is empty, files would be created. You need to mkdir the mounted directory with the correct user.
  • If you want to run the Dataspecer under specific user, use --user with desired UID.
  • You can specify base URL using BASE_URL env if you are hosting Dataspecer from a sub directory. If you are using reverse proxy, it is expected that the base path is preserved. (For example, https://example.com/dataspecer-instance-1/schema should point to http://localhost:3001/dataspecer-instance-1/schema)

Use the following docker run command:

docker run -it --name dataspecer -eBASE_URL=http://localhost/ --user "1000:1000" -v ./database:/usr/src/app/database -p80:80 ghcr.io/dataspecer/ws

Or use following docker-compose file

services:
  dataspecer:
    image: ghcr.io/dataspecer/ws
    environment:
      BASE_URL: http://localhost
    user: "1000:1000"
    ports:
      - 80:80 # Change the first number to your desired port
    volumes:
      - ./database:/usr/src/app/database

Tags

  • latest (default) follows the stable branch
  • branch-main follows the main branch with the latest updates. May contain unstable features!

Documentation

Check what to learn - a simple guide on how to start working on the project.

How to build locally

This repository is a monorepo - consisting of several packages, applications, and services that are build and developed separately, but depends on each other.

For more information about individual packages, applications, and services, please see the given directory. Each contains a README.md file with build instructions and additional documentation.

  • applications - web clients
  • packages - core and helper packages and individual generators
  • services - backend service (used by both web and cli clients)

The monorepo is managed by npm workspaces and Turborepo. Please see the individual packages for their build instructions.

You can check the Cloudflare's build script that deploys all applications. We use Cloudflare Pages for that. Any commit pushed to GitHub into the repository is automatically built, and changes are deployed to the internet. Commits to other branches are also deployed as previews.

In general

Your node -v should be at least v22.

After cloning the repository you should create local config files. Please see individual applications or packages what to do.

Then - Run npm install to install all external packages (including TypeScript for typechecking and Turborepo for building) and link all dependencies between local packages. - Run npm run build to build everything. This will execute turbo build under the hood. This will build packages, which are necessary for the development of other packages and applications; and it also build applications themselves, which is not necessary for development (see the next step). (If you want to build only packages necessary for a specific package or application, use npx turbo run build --filter=<package-name>. Obtain the name of the package from package.json file.)

To develop a concrete package or application, there is usually an npm run dev script that will run live server, which updates everything. See individual packages for more details.

Acknowledgments

EOSC CZ Logo


This project output was developed with financial contributions from the EOSC CZ initiative through the project National Repository Platform for Research Data (CZ.02.01.01/00/23_014/0008787) founded by Programme Johannes Amos Comenius (P JAC) of the Ministry of Education, Youth and Sports of the Czech Republic (MEYS).


EU and MŠMT Logos

Extension points exported contracts — how you extend this code

Metric (Interface)
(no doc) [10 implementers]
packages/layout/src/graph/graph-metrics/graph-metric.ts
ModelCreator (Interface)
(no doc) [50 implementers]
packages/shacl/src/tests/support/ModelCreatorInterface.ts
ArtefactGenerator (Interface)
(no doc) [30 implementers]
packages/core/src/generator/artefact-generator.ts
ModelInDefaultFrontendModelStore (Interface)
(no doc) [7 implementers]
packages/model-store/src/implementation/implementation.ts
ObservableEntityModelV2 (Interface)
(no doc) [15 implementers]
packages/entity-model/src/entity-model.ts
ProfileEntityAggregator (Interface)
(no doc) [7 implementers]
packages/core-v2/src/semantic-model/profile/aggregator/aggregator.ts
ModelCreator (Interface)
(no doc) [50 implementers]
packages/shex/src/tests/support/ModelCreatorInterface.ts
FederatedCoreResourceWriter (Interface)
(no doc) [10 implementers]
packages/federated-observable-store/src/federated-core-resource-writer.ts

Core symbols most depended-on inside this repo

t
called by 811
applications/conceptual-model-editor/src/application/localization.ts
error
called by 318
applications/conceptual-model-editor/src/application/logging.ts
getVisualEntitiesForRepresented
called by 260
packages/visual-model/src/visual-model.ts
get
called by 223
packages/core/src/io/fetch/fetch-api.ts
writeLocalAttributeValue
called by 206
packages/xml/src/xml/xml-writer.ts
writeElementFull
called by 189
packages/xml/src/xml/xml-writer.ts
getId
called by 179
packages/visual-model/src/visual-model.ts
getEntities
called by 146
packages/core-v2/src/entity-model/entity-model.ts

Shape

Function 3,232
Method 2,278
Class 1,033
Interface 746
Enum 49

Languages

TypeScript100%

Modules by API surface

applications/conceptual-model-editor/src/diagram/diagram-controller.ts93 symbols
packages/layout/src/graph/representation/graph.ts67 symbols
applications/conceptual-model-editor/src/action/actions-react-binding.tsx65 symbols
packages/xml/src/xml-schema/xml-schema-model.ts58 symbols
packages/xml/src/xml/xml-writer.ts46 symbols
packages/visual-model/src/default-visual-model.ts45 symbols
packages/json/src/json-schema/json-schema-model.ts45 symbols
packages/layout/src/configurations/elk/elk-configurations.ts43 symbols
applications/conceptual-model-editor/src/dialog/utilities/dialog-utilities.ts43 symbols
applications/conceptual-model-editor/src/diagram/diagram-api.tsx43 symbols
packages/model-store/src/implementation/implementation.ts40 symbols
packages/layout/src/graph/representation/node.ts40 symbols

For agents

$ claude mcp add dataspecer \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact