{"id":15012988,"url":"https://github.com/slub/exhibition-live","last_synced_at":"2025-09-09T01:40:38.924Z","repository":{"id":142594120,"uuid":"593560282","full_name":"slub/exhibition-live","owner":"slub","description":"next based semantic enabled frontend for the exhibition catalog","archived":false,"fork":false,"pushed_at":"2024-09-30T10:37:31.000Z","size":11828,"stargazers_count":3,"open_issues_count":0,"forks_count":2,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-22T10:43:22.779Z","etag":null,"topics":["formswizard","json-ld","jsonforms","jsonschema","semantic-forms","semantic-web","typescript"],"latest_commit_sha":null,"homepage":"https://slub.github.io/exhibition-live/","language":"TypeScript","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"slub/exhibition-adb-next","license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/slub.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-01-26T10:09:12.000Z","updated_at":"2024-09-30T10:29:35.000Z","dependencies_parsed_at":null,"dependency_job_id":"b378cefd-2fd7-4b0f-a0fa-269593537d6c","html_url":"https://github.com/slub/exhibition-live","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/slub/exhibition-live","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/slub%2Fexhibition-live","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/slub%2Fexhibition-live/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/slub%2Fexhibition-live/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/slub%2Fexhibition-live/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/slub","download_url":"https://codeload.github.com/slub/exhibition-live/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/slub%2Fexhibition-live/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274232035,"owners_count":25245856,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-08T02:00:09.813Z","response_time":121,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["formswizard","json-ld","jsonforms","jsonschema","semantic-forms","semantic-web","typescript"],"created_at":"2024-09-24T19:43:33.897Z","updated_at":"2025-09-09T01:40:38.905Z","avatar_url":"https://github.com/slub.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"The adb-next project is an exhibition-catalog, that uses [Next.js](https://nextjs.org/).\n\n# Documentation\n\n## Exhibition Catalog Live\n\nA live demo of the exhibition catalog is available here: [https://slub.github.io/exhibition-live/](https://slub.github.io/exhibition-live/)\n\nYou might want to set your own storage backend(s) within the settings modal.\n\n## Development Documentation\n\nPlease have a look at the **[Storybook of the EDB Framework](https://slub.github.io/exhibition-live/storybook/)** for an indepth documentation of the frontend components, th cli\nand the overall architecture of the exhibition catalog and the EDB framework.\n\n# Development\n\n## Getting Started\n\nFor a quick start install all dependencies initially build the packages and start the development server of the nextjs exhibition-live application.\n\n```bash\nbun i \u0026\u0026 bun build:packages \u0026\u0026 bun run dev:exhibition\n```\n\nOpen [http://localhost:3000](http://localhost:3000) with your browser to see the result.\n\n## Committing and Contributing\n\n### Formatter\n\nplease only commit linted and formatted code by using husky\n\n```bash\nbun run prepare\n```\n\n## Storage Endpoints\n\nThe project can operate on a variety of storage endpoints. The default is a temporary in memory DB within the browser,\nwhich is sufficient for testing purposes. The application can also be configured to use any SPARQL 1.1 endpoint.\nEither provide an initial config or use the settings modal within the application to configure the endpoints.\n\nYou can quickly launch an Oxigraph SPARQL 1.1 endpoint with docker:\n\n```bash\ndocker run -p 7878:7878 -v $(pwd)/data:/data -it ghcr.io/oxigraph/oxigraph:latest\n```\n\nConsult the [Oxigraph GitHub repository](https://github.com/oxigraph/oxigraph) for further information.\n\n### Other SPARQL 1.1 endpoints\n\nOther SPARQL Endpoints, like Jena Fuseki, Virtuoso, Blazegraph or GraphDB can be used as well.\nAdditional effort might be needed to configure CORS and authentication and to get along with some\nEndpoints not beeing fully SPARQL 1.1 compliant.\n\n### Endpoint Configuration\n\nThe configuration of endpoints within the `exhibition-live` application can either be done dynamically at runtime using\nthe settings modal or by providing a `SPARQL_ENDPOINT` environment variable at build time, which disables setting the endpoint\nwithin the modal and is especially suitable for production deployments, where one wants to make sure all users operate on the same endpoint.\n\n## Storybook\n\nThis project uses [Storybooks](https://storybook.js.org/) to enforce reusable component based development and to document them with\nall of their props and options. It also gives an overview over the frontend components used for this project.\n\n```bash\ncd app/exhibition-live\nbun i \u0026\u0026 bun run storybook\n```\n\nOpen [http://localhost:6006](http://localhost:6006) with your browser to see the storybook.\n\n## Testing\n\nUnit tests of core functionality is done by `jest`. For integration tests of the frontend `Cypress` is being used.\n\n### Trouble Shooting\n\nCypress under Nix:\nit might be necessary to delete `~/.cache/Cypress`\n\n```\nrm -rf ~/.cache/Cypress\n```\n\n## Using Docker\n\n1. [Install Docker](https://docs.docker.com/get-docker/) on your machine.\n1. Build your container: `docker build -t exhibition-docker .`.\n1. Run your container: `docker run -p 3000:3000 exhibition-docker`.\n\n### develop within docker\n\n1. `docker compose up -d`\n2. `docker compose  exec exhibition-live /bin/bash`\n\n## Technologies\n\n### NextJS\n\nTo learn more about Next.js, take a look at the following resources:\n\n- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API.\n- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial.\n  You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js/) - your feedback and contributions are welcome!\n\n### @rdfjs and SPARQL related packages\n\nThe project uses the [RDFJS](https://rdf.js.org/) stack for RDF processing.This choice does also offer the\nability to use the same code for both the browser and the server. The project uses the following packages:\n\nSome of the following libraries are being used within this project:\n\n- @rdfjs/parser-n3 for RDF parsing and serialisation of turtle and ntriples\n- @rdfjs/parser-jsonld for RDF parsing and serialisation of JSON-LD\n- @rdfjs/dataset as a temporary in memory RDF store\n- oxigraph for SPARQL 1.1 compliant RDF storage within a ServiceWorker (browser) or on the server\n- RDF/JS for RDF processing\n- @tpluscode/rdfine for common RDF Vocabularies and typesafe namespaces\n- SPARQL.js for SPARQL query generation\n- sparql-http-client for SPARQL compliant query execution and easier triple streaming\n- clownface for RDF graph traversal\n- openAI for optional AI based data mapping from unknown sources (complementary to manual declaration based mapping)\n\n### LinkML\n\nLinkML was used for the initial data schemata and schema-conversion. Nevertheless the single source of truth for the data schemata\nis the JSON Schema located within the public directory.\n\nThe main schema is located within the `schema/exhibition-info.yml` directory\n\n### JSON Schema\n\nThe JSON Schema ist the basis for:\n\n- Form generation\n- Form validation\n- Data conversion\n- Query generation\n- Document extraction\n- Ontology generation and Semantic-Mapping\n\nAlongside the core Exhibition Schema, there are complementary declaration files referring to elements from the core schema,\nthat provide additional information for the frontend, like:\n\n- the UI-Schemata for form layout and style hints\n- data mapping declarations for data conversion from and to norm data repositories\n\n# Helpful Commands\n\nComplete rebuild without cache:\n\n```\ndocker compose down\ndocker compose rm -f\ndocker compose pull\ndocker compose up --build -d\n```\n\nDeletes all images, reloads all images from repository, starts all images with building in daemon-mode, may add `docker compose logs -f` for output in following mode.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fslub%2Fexhibition-live","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fslub%2Fexhibition-live","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fslub%2Fexhibition-live/lists"}