https://github.com/clarin-eric/fcs-sru-aggregator-ui

Singe Page Application Frontend for CLARIN FCS SRU Aggregator

https://github.com/clarin-eric/fcs-sru-aggregator-ui

Science Score: 26.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (11.3%) to scientific vocabulary

Keywords

bootstrap5 fcs federated-content-search reactjs
Last synced: 5 months ago · JSON representation

Repository

Singe Page Application Frontend for CLARIN FCS SRU Aggregator

Basic Info
Statistics
  • Stars: 0
  • Watchers: 8
  • Forks: 0
  • Open Issues: 0
  • Releases: 0
Topics
bootstrap5 fcs federated-content-search reactjs
Created about 1 year ago · Last pushed 6 months ago
Metadata Files
Readme License

README.md

FCS SRU Aggregator UI

Technologies

The frontend uses the following technologies:

For development and building a few additional dependencies are required:

Features

  • Modern, mobile-friendly, dark-mode, accessibility (ARIA) support
  • Single¹ SPA bundle for easy integration
  • Various usability features like fuzzy filtering, tooltips, ...
  • Input support with query syntax highlighting and visual query builders (FCS-QL, LexCQL)

¹ The build process will generate multiple JS and CSS files to split application code from vendor code but those files only need to be included as scripts/styles in a static index.html page without requiring any complicated server setup.

Requirements

  • Node 22+ (due to node:fs -> globSync)

How to deploy

Building

Running the following command will create a fully static bundle that is ready to be deployed. The build artifacts will be placed into the dist/ folder. The index.html file is the entry point with all dependencies (scripts, styles, images and other assets) in the lib/ subfolder.

bash npm run build

To generate a single bundle build (one script and one style file, with picture assets) use the following command. This will transform dynamic imports into static imports and bundle everything into the main bundle!

bash npm run build:bundle

An overview over all the dependency modules and code files will be generated by rollup-plugin-visualizer and can be found in either bundle-visualization.html or dist/bundle-visualization.html depending on the plugin configuration.

Environment variables allow further configurations of the build. They can be set in the .env.local file or prefixed to the command. Environment variables are evaluated in the vite.config.ts file and the related settings (import.meta.env.) can also be modified there but this is not recommended as it makes it more difficult to update the source code.

  • Disable language switcher (use only one locale): VITE_LOCALES='["en"]' npm run build
  • Disable the visual query builder: VITE_FEATURE_QUERY_BUILDER=false npm run build

Configuration

The bundle can be pre-configured by adjusting the import.meta.env. constants found in the vite.config.ts configuration file.

  • "branding" related configs:
    • HEAD_TITLE: the base application title for the browser
    • CANONCIAL_URL: the canonical URL to the application (head meta information), unused for now?
  • deployment base configuration
    • DEPLOY_PATH: the (sub-)path the application is served from, by default / for the root
    • API_URL: the backend FCS SRU Aggregator REST API endpoint, required!
    • VALIDATOR_URL: the URL to the FCS Endpoint Validator
  • optional features
    • SHOW_SEARCH_RESULT_LINK: boolean, whether to display a semi-permanent search results link, use only for development to avoid confusion
    • FEATURE_TRACKING_MATOMO: boolean, whether to include Matomo/Piwik tracking/statistics calls
    • FEATURE_TRACKING_MATOMO_PARAMS: parameters for tracking setup, set with JSON.stringify({}) where the parameter object {} should contain the following entries:
      • siteId: number, required, for setSiteId
      • trackerUrl: URL for tracking server, required, for setTrackerUrl, likely something like <baseUrl>/matomo.php
      • enableLinkTracking: boolean, optional, by default true, can be disabled
      • domains: string[], optional, can be a list of to be considered "local" domain names, for setDomains
      • userId: string, optional, will be hashed with cyrb53, for setUserId
      • srcUrl: URL for JS script source to load Matomo/Piwik script, required, likely something like <baseUrl>/matomo.js
      • NOTE: if not set or any required value is likely invalid, then tracking will not be configured!
    • FEATURE_QUERY_BUILDER: boolean, whether to include a Visual Query Builder (FCS-QL). If not specified (or explicitely set to true) then it will be excluded from the generated build. Enabling it, multiple output files will be generated, a vendor/antlr.js chunk as well as *-query-builder-*.{js,css} files that will be dynamically loaded when the UI requires them.

Runtime configuration can be set using the window.MyAggregator object and needs to be included before the application script fcs-sru-aggregator-ui-X.Y.Z.js is being loaded. They are completely optional but can be used to override bundle configuration.

  • DEPLOY_PATH: the basename of the application, e.g. if deployed on some subpath like example.org/aggregator/ use /aggregator, by default /
  • API_URL: the base URL to the FCS SRU Aggregator REST API, e.g. https://contentsearch.clarin.eu/rest/
  • VALIDATOR_URL: the base URL to the FCS Endpoint Validator, e.g. https://www.clarin.eu/fcsvalidator/
  • SHOW_SEARCH_RESULT_LINK: boolean (true/false) for whether to display a semi-permanent link to search results using the internal searchID
  • APP_TITLE: application title, by default Content Search
  • APP_TITLE_HEAD: application title, will be used for HTML HEAD title tag, by default FCS Aggregator – Content Search
  • MATOMO_TRACKING_PARAMS: matomo tracking parameters, see section about FEATURE_TRACKING_MATOMO above

Development

Based on React + TypeScript + Vite template (npm create vite@latest), a minimal setup to get React working in Vite with HMR and some ESLint rules. Uses the @vitejs/plugin-react uses Babel plugin for Fast Refresh.

For local testing run:

bash npm run dev

Update dependencies

  • Check possible upgrades with npx npm-check-updates
  • Check system information (for bug reports etc.) npx envinfo --system --npmPackages --binaries --browsers

Expanding the ESLint configuration (TODO)

If you are developing a production application, we recommend updating the configuration to enable type aware lint rules:

  • Configure the top-level parserOptions property like this:

js export default tseslint.config({ languageOptions: { // other options... parserOptions: { project: ['./tsconfig.node.json', './tsconfig.app.json'], tsconfigRootDir: import.meta.dirname, }, }, })

  • Replace tseslint.configs.recommended to tseslint.configs.recommendedTypeChecked or tseslint.configs.strictTypeChecked
  • Optionally add ...tseslint.configs.stylisticTypeChecked
  • Install eslint-plugin-react and update the config:

```js // eslint.config.js import react from 'eslint-plugin-react'

export default tseslint.config({ // Set the react version settings: { react: { version: '18.3' } }, plugins: { // Add the react plugin react, }, rules: { // other rules... // Enable its recommended rules ...react.configs.recommended.rules, ...react.configs['jsx-runtime'].rules, }, }) ```

Owner

  • Name: CLARIN ERIC
  • Login: clarin-eric
  • Kind: organization
  • Email: trac@clarin.eu
  • Location: Utrecht, The Netherlands

CLARIN central source code hub

GitHub Events

Total
  • Member event: 1
  • Push event: 90
  • Create event: 3
Last Year
  • Member event: 1
  • Push event: 90
  • Create event: 3