From 546b83eba629d09b33e5a1f7591507a10c82edeb Mon Sep 17 00:00:00 2001 From: Yasin Date: Mon, 9 Mar 2026 16:39:40 +0100 Subject: [PATCH 1/2] feat: redesign pages --- package.json | 4 + pnpm-lock.yaml | 649 ++++++++++++++++++ src/components/about-hero-visual.tsx | 128 ++++ src/components/command-palette.tsx | 308 ++++++--- src/components/dna-scene.tsx | 251 +++++++ src/components/elements.tsx | 6 +- src/components/footer.tsx | 286 ++++---- src/components/hero.tsx | 190 ++++- src/components/highlights-carousel.tsx | 164 +++++ src/components/navigation.tsx | 331 +++++---- src/components/organisation-marquee.tsx | 21 + src/components/people.astro | 107 +-- src/components/sections/base-section.astro | 20 +- .../sections/detailed-feature.astro | 35 +- src/components/sections/latest-news.astro | 155 +++++ src/components/sections/services-overview.tsx | 128 ++++ src/components/theme-toggle.tsx | 118 ++-- src/components/two-col-hero.tsx | 28 +- src/components/universities.tsx | 101 +-- src/content/about/index.mdx | 108 ++- src/content/landing/index.mdx | 24 +- src/pages/index.astro | 35 +- src/styles/global.scss | 17 +- tailwind.config.mjs | 21 +- 24 files changed, 2568 insertions(+), 667 deletions(-) create mode 100644 src/components/about-hero-visual.tsx create mode 100644 src/components/dna-scene.tsx create mode 100644 src/components/highlights-carousel.tsx create mode 100644 src/components/organisation-marquee.tsx create mode 100644 src/components/sections/latest-news.astro create mode 100644 src/components/sections/services-overview.tsx diff --git a/package.json b/package.json index 2ca95efb..ed130e54 100644 --- a/package.json +++ b/package.json @@ -25,11 +25,14 @@ "@astrojs/tailwind": "^6.0.0", "@headlessui/react": "^2.1.2", "@heroicons/react": "^2.1.3", + "@react-three/drei": "9.117.0", + "@react-three/fiber": "8.17.10", "@tailwindcss/forms": "^0.5.7", "animate.css": "^4.1.1", "astro": "^5.0.0", "dayjs": "^1.11.12", "dompurify": "^3.2.4", + "framer-motion": "^12.35.2", "leaflet": "^1.9.4", "lodash": "^4.17.21", "react": "^18.2.0", @@ -40,6 +43,7 @@ "sass": "^1.77.8", "slugify": "^1.6.6", "tailwindcss": "^3.4.3", + "three": "^0.183.2", "typescript": "^5.4.5" }, "devDependencies": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 85d65965..38fb6bad 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -32,6 +32,12 @@ importers: '@heroicons/react': specifier: ^2.1.3 version: 2.1.5(react@18.3.1) + '@react-three/drei': + specifier: 9.117.0 + version: 9.117.0(@react-three/fiber@8.17.10(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(three@0.183.2))(@types/react@18.3.12)(@types/three@0.183.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(three@0.183.2) + '@react-three/fiber': + specifier: 8.17.10 + version: 8.17.10(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(three@0.183.2) '@tailwindcss/forms': specifier: ^0.5.7 version: 0.5.9(tailwindcss@3.4.14) @@ -47,6 +53,9 @@ importers: dompurify: specifier: ^3.2.4 version: 3.2.4 + framer-motion: + specifier: ^12.35.2 + version: 12.35.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) leaflet: specifier: ^1.9.4 version: 1.9.4 @@ -77,6 +86,9 @@ importers: tailwindcss: specifier: ^3.4.3 version: 3.4.14 + three: + specifier: ^0.183.2 + version: 0.183.2 typescript: specifier: ^5.4.5 version: 5.6.3 @@ -258,6 +270,10 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/runtime@7.28.6': + resolution: {integrity: sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA==} + engines: {node: '>=6.9.0'} + '@babel/template@7.27.2': resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} engines: {node: '>=6.9.0'} @@ -278,6 +294,9 @@ packages: resolution: {integrity: sha512-8XqW8xGn++Eqqbz3e9wKuK7mxryeRjs4LOHLxbh2lwKeSbuNR4NFifDZT4KzvjU6HMOPbiNTsWpniK5EJfTWkg==} engines: {node: '>=18'} + '@dimforge/rapier3d-compat@0.12.0': + resolution: {integrity: sha512-uekIGetywIgopfD97oDL5PfeezkFpNhwlzlaEYNOA0N6ghdsOvh/HYjSMek5Q2O1PYvRSDFcqFVJl4r4ZBwOow==} + '@emmetio/abbreviation@2.3.3': resolution: {integrity: sha512-mgv58UrU3rh4YgbE/TzgLQwJ3pFsHHhCLqY20aJq+9comytTXUDNGG/SMtSeMJdkpxgXSXunBGLD8Boka3JyVA==} @@ -665,6 +684,14 @@ packages: '@mdx-js/mdx@3.1.1': resolution: {integrity: sha512-f6ZO2ifpwAQIpzGWaBQT2TXxPv6z3RBzQKpVftEWN78Vl/YweF1uwussDx8ECAXVtr3Rs89fKyG9YlzUs9DyGQ==} + '@mediapipe/tasks-vision@0.10.17': + resolution: {integrity: sha512-CZWV/q6TTe8ta61cZXjfnnHsfWIdFhms03M9T7Cnd5y2mdpylJM0rF1qRq+wsQVRMLz1OYPVEBU9ph2Bx8cxrg==} + + '@monogrid/gainmap-js@3.4.0': + resolution: {integrity: sha512-2Z0FATFHaoYJ8b+Y4y4Hgfn3FRFwuU5zRrk+9dFWp4uGAdHGqVEdP7HP+gLA3X469KXHmfupJaUbKo1b/aDKIg==} + peerDependencies: + three: '>= 0.159.0' + '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -813,11 +840,75 @@ packages: react: ^18.0.0 react-dom: ^18.0.0 + '@react-spring/animated@9.7.5': + resolution: {integrity: sha512-Tqrwz7pIlsSDITzxoLS3n/v/YCUHQdOIKtOJf4yL6kYVSDTSmVK1LI1Q3M/uu2Sx4X3pIWF3xLUhlsA6SPNTNg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + + '@react-spring/core@9.7.5': + resolution: {integrity: sha512-rmEqcxRcu7dWh7MnCcMXLvrf6/SDlSokLaLTxiPlAYi11nN3B5oiCUAblO72o+9z/87j2uzxa2Inm8UbLjXA+w==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + + '@react-spring/rafz@9.7.5': + resolution: {integrity: sha512-5ZenDQMC48wjUzPAm1EtwQ5Ot3bLIAwwqP2w2owG5KoNdNHpEJV263nGhCeKKmuA3vG2zLLOdu3or6kuDjA6Aw==} + + '@react-spring/shared@9.7.5': + resolution: {integrity: sha512-wdtoJrhUeeyD/PP/zo+np2s1Z820Ohr/BbuVYv+3dVLW7WctoiN7std8rISoYoHpUXtbkpesSKuPIw/6U1w1Pw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + + '@react-spring/three@9.7.5': + resolution: {integrity: sha512-RxIsCoQfUqOS3POmhVHa1wdWS0wyHAUway73uRLp3GAL5U2iYVNdnzQsep6M2NZ994BlW8TcKuMtQHUqOsy6WA==} + peerDependencies: + '@react-three/fiber': '>=6.0' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + three: '>=0.126' + + '@react-spring/types@9.7.5': + resolution: {integrity: sha512-HVj7LrZ4ReHWBimBvu2SKND3cDVUPWKLqRTmWe/fNY6o1owGOX0cAHbdPDTMelgBlVbrTKrre6lFkhqGZErK/g==} + '@react-stately/utils@3.10.4': resolution: {integrity: sha512-gBEQEIMRh5f60KCm7QKQ2WfvhB2gLUr9b72sqUdIZ2EG+xuPgaIlCBeSicvjmjBvYZwOjoOEnmIkcx2GHp/HWw==} peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + '@react-three/drei@9.117.0': + resolution: {integrity: sha512-UuYnM/qNiP+37R2dVR68R9ufGrWI/OdtDxfJRxtHaXyHWWfj7muEy4vbLZRe95a4fGEfaKy0gdplbG2BFedHtg==} + peerDependencies: + '@react-three/fiber': '>=8.0' + react: '>=18.0' + react-dom: '>=18.0' + three: '>=0.137' + peerDependenciesMeta: + react-dom: + optional: true + + '@react-three/fiber@8.17.10': + resolution: {integrity: sha512-S6bqa4DqUooEkInYv/W+Jklv2zjSYCXAhm6qKpAQyOXhTEt5gBXnA7W6aoJ0bjmp9pAeaSj/AZUoz1HCSof/uA==} + peerDependencies: + expo: '>=43.0' + expo-asset: '>=8.4' + expo-file-system: '>=11.0' + expo-gl: '>=11.0' + react: '>=18.0' + react-dom: '>=18.0' + react-native: '>=0.64' + three: '>=0.133' + peerDependenciesMeta: + expo: + optional: true + expo-asset: + optional: true + expo-file-system: + optional: true + expo-gl: + optional: true + react-dom: + optional: true + react-native: + optional: true + '@react-types/shared@3.25.0': resolution: {integrity: sha512-OZSyhzU6vTdW3eV/mz5i6hQwQUhkRs7xwY2d1aqPvTdMe0+2cY7Fwp45PAiwYLEj73i9ro2FxF9qC4DvHGSCgQ==} peerDependencies: @@ -988,6 +1079,9 @@ packages: '@tanstack/virtual-core@3.10.8': resolution: {integrity: sha512-PBu00mtt95jbKFi6Llk9aik8bnR3tR/oQP1o3TSi+iG//+Q2RTIzCEgKkHG8BB86kxMNW6O8wku+Lmi+QFR6jA==} + '@tweenjs/tween.js@23.1.3': + resolution: {integrity: sha512-vJmvvwFxYuGnF2axRtPYocag6Clbb5YS7kLL+SO/TeVFzHqDIWrNKYtcsPMibjDx9O+bu+psAy9NKfWklassUA==} + '@types/acorn@4.0.6': resolution: {integrity: sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==} @@ -1003,12 +1097,18 @@ packages: '@types/babel__traverse@7.20.6': resolution: {integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==} + '@types/debounce@1.2.4': + resolution: {integrity: sha512-jBqiORIzKDOToaF63Fm//haOCHuwQuLa2202RK4MozpA6lh93eCBc+/8+wZn5OzjJt3ySdc+74SXWXB55Ewtyw==} + '@types/debug@4.1.12': resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} '@types/dompurify@3.0.5': resolution: {integrity: sha512-1Wg0g3BtQF7sSb27fJQAKck1HECM6zV1EB66j8JH9i3LCjYabJa0FSdiSgsD5K/RbrsR0SiraKacLB+T8ZVYAg==} + '@types/draco3d@1.4.10': + resolution: {integrity: sha512-AX22jp8Y7wwaBgAixaSvkoG4M/+PlAcm3Qs4OW8yT9DM4xUpWKeFhLueTAyZF39pviAdcDdeJoACapiAceqNcw==} + '@types/estree-jsx@1.0.5': resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==} @@ -1045,18 +1145,35 @@ packages: '@types/node@22.7.9': resolution: {integrity: sha512-jrTfRC7FM6nChvU7X2KqcrgquofrWLFDeYC1hKfwNWomVvrn7JIksqf344WN2X/y8xrgqBd2dJATZV4GbatBfg==} + '@types/offscreencanvas@2019.7.3': + resolution: {integrity: sha512-ieXiYmgSRXUDeOntE1InxjWyvEelZGP63M+cGuquuRLuIKKT1osnkXjxev9B7d1nXSug5vpunx+gNlbVxMlC9A==} + '@types/prop-types@15.7.13': resolution: {integrity: sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==} '@types/react-dom@18.3.1': resolution: {integrity: sha512-qW1Mfv8taImTthu4KoXgDfLuk4bydU6Q/TkADnDWWHwi4NX4BR+LWfTp2sVmTqRrsHvyDDTelgelxJ+SsejKKQ==} + '@types/react-reconciler@0.26.7': + resolution: {integrity: sha512-mBDYl8x+oyPX/VBb3E638N0B7xG+SPk/EAMcVPeexqus/5aTpTphQi0curhhshOqRrc9t6OPoJfEUkbymse/lQ==} + + '@types/react-reconciler@0.28.9': + resolution: {integrity: sha512-HHM3nxyUZ3zAylX8ZEyrDNd2XZOnQ0D5XfunJF5FLQnZbHHYq4UWvW1QfelQNXv1ICNkwYhfxjwfnqivYB6bFg==} + peerDependencies: + '@types/react': '*' + '@types/react@18.3.12': resolution: {integrity: sha512-D2wOSq/d6Agt28q7rSI3jhU7G6aiuzljDGZ2hTZHIkrTLUI+AF3WMeKkEZ9nN2fkBAlcktT6vcZjDFiIhMYEQw==} '@types/sax@1.2.7': resolution: {integrity: sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==} + '@types/stats.js@0.17.4': + resolution: {integrity: sha512-jIBvWWShCvlBqBNIZt0KAshWpvSjhkwkEu4ZUcASoAvhmrgAUI2t1dXrjSL4xXVLB4FznPrIsX3nKXFl/Dt4vA==} + + '@types/three@0.183.1': + resolution: {integrity: sha512-f2Pu5Hrepfgavttdye3PsH5RWyY/AvdZQwIVhrc4uNtvF7nOWJacQKcoVJn0S4f0yYbmAE6AR+ve7xDcuYtMGw==} + '@types/trusted-types@2.0.7': resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} @@ -1066,9 +1183,20 @@ packages: '@types/unist@3.0.3': resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} + '@types/webxr@0.5.24': + resolution: {integrity: sha512-h8fgEd/DpoS9CBrjEQXR+dIDraopAEfu4wYVNY2tEPwk60stPWhvZMf4Foo5FakuQ7HFZoa8WceaWFervK2Ovg==} + '@ungap/structured-clone@1.2.0': resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} + '@use-gesture/core@10.3.1': + resolution: {integrity: sha512-WcINiDt8WjqBdUXye25anHiNxPc0VOrlT8F6LLkU6cycrOGUDyY/yyFmsg3k8i5OLvv25llc0QC45GhR/C8llw==} + + '@use-gesture/react@10.3.1': + resolution: {integrity: sha512-Yy19y6O2GJq8f7CHf7L0nxL8bf4PZCPaVOCgJrusOeFHY1LvHgYXnmnXg6N5iwAnbgbZCDjo60SiM6IPJi9C5g==} + peerDependencies: + react: '>= 16.8.0' + '@vitejs/plugin-react@4.7.0': resolution: {integrity: sha512-gUu9hwfWvvEDBBmgtAowQCojwZmJ5mcLn3aufeCsitijs3+f2NsrPtlAWIR6OPiqljl96GVCUbLe0HyqIpVaoA==} engines: {node: ^14.18.0 || >=16.0.0} @@ -1101,6 +1229,9 @@ packages: '@vscode/l10n@0.0.18': resolution: {integrity: sha512-KYSIHVmslkaCDyw013pphY+d7x1qV8IZupYfeIfzNA+nsaWHbn5uPuQRvdRFsa9zFzGeudPuoGoZ1Op4jrJXIQ==} + '@webgpu/types@0.1.69': + resolution: {integrity: sha512-RPmm6kgRbI8e98zSD3RVACvnuktIja5+yLgDAkTmxLr90BEwdTXRQWNLF3ETTTyH/8mKhznZuN5AveXYFEsMGQ==} + acorn-jsx@5.3.2: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: @@ -1216,6 +1347,9 @@ packages: resolution: {integrity: sha512-ZCQ9GEWl73BVm8bu5Fts8nt7MHdbt5vY9bP6WGnUh+r3l8M7CgfyTlwsgCbMC66BNxPr6Xoce3j66Ms5YUQTNA==} hasBin: true + bidi-js@1.0.3: + resolution: {integrity: sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==} + binary-extensions@2.3.0: resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} engines: {node: '>=8'} @@ -1250,6 +1384,9 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true + buffer@6.0.3: + resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} + call-bind@1.0.7: resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} engines: {node: '>= 0.4'} @@ -1262,6 +1399,11 @@ packages: resolution: {integrity: sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==} engines: {node: '>=16'} + camera-controls@2.10.1: + resolution: {integrity: sha512-KnaKdcvkBJ1Irbrzl8XD6WtZltkRjp869Jx8c0ujs9K+9WD+1D7ryBsCiVqJYUqt6i/HR5FxT7RLASieUD+Q5w==} + peerDependencies: + three: '>=0.126.1' + caniuse-lite@1.0.30001669: resolution: {integrity: sha512-DlWzFDJqstqtIVx1zeSpIMLjunf5SmwOw0N2Ck/QSQdS8PLS4+9HrLaYei4w8BIAL7IB/UEDu889d8vhCTPA0w==} @@ -1366,6 +1508,11 @@ packages: resolution: {integrity: sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==} engines: {node: '>=18'} + cross-env@7.0.3: + resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==} + engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'} + hasBin: true + cross-spawn@6.0.5: resolution: {integrity: sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==} engines: {node: '>=4.8'} @@ -1419,6 +1566,9 @@ packages: dayjs@1.11.13: resolution: {integrity: sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==} + debounce@1.2.1: + resolution: {integrity: sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==} + debug@4.3.7: resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} engines: {node: '>=6.0'} @@ -1458,6 +1608,9 @@ packages: destr@2.0.5: resolution: {integrity: sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==} + detect-gpu@5.0.70: + resolution: {integrity: sha512-bqerEP1Ese6nt3rFkwPnGbsUF9a4q+gMmpTVVOEzoCyeCc+y7/RvJnQZJx1JwhgQI5Ntg0Kgat8Uu7XpBqnz1w==} + detect-libc@1.0.3: resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} engines: {node: '>=0.10'} @@ -1506,6 +1659,9 @@ packages: domutils@3.2.2: resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==} + draco3d@1.5.7: + resolution: {integrity: sha512-m6WCKt/erDXcw+70IJXnG7M3awwQPAsZvJGX5zY7beBqpELw6RDGkYVU0W43AFxye4pDZ5i2Lbyc/NNGqwjUVQ==} + dset@3.1.4: resolution: {integrity: sha512-2QF/g9/zTaPDc3BjNcVTGoBbXBgYfMTTceLaYcFJ/W9kggFUkhxD/hMEeuLKbugyef9SqAx8cpgwlIP/jinUTA==} engines: {node: '>=4'} @@ -1640,6 +1796,12 @@ packages: picomatch: optional: true + fflate@0.6.10: + resolution: {integrity: sha512-IQrh3lEPM93wVCEczc9SaAOvkmcoQn/G8Bo1e8ZPlY3X3bnAxWaBdvTdvM1hP62iZp0BXWDy4vTAy4fF0+Dlpg==} + + fflate@0.8.2: + resolution: {integrity: sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==} + fill-range@7.1.1: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} @@ -1664,6 +1826,20 @@ packages: fraction.js@5.3.4: resolution: {integrity: sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==} + framer-motion@12.35.2: + resolution: {integrity: sha512-dhfuEMaNo0hc+AEqyHiIfiJRNb9U9UQutE9FoKm5pjf7CMitp9xPEF1iWZihR1q86LBmo6EJ7S8cN8QXEy49AA==} + peerDependencies: + '@emotion/is-prop-valid': '*' + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@emotion/is-prop-valid': + optional: true + react: + optional: true + react-dom: + optional: true + fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} @@ -1718,6 +1894,9 @@ packages: resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} engines: {node: '>= 0.4'} + glsl-noise@0.0.0: + resolution: {integrity: sha512-b/ZCF6amfAUb7dJM/MxRs7AetQEahYzJ8PtgfrmEdtw6uyGOr+ZSGtgjFm6mfsBkxJ4d2W7kg+Nlqzqvn3Bc0w==} + gopd@1.0.1: resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} @@ -1792,6 +1971,9 @@ packages: hastscript@8.0.0: resolution: {integrity: sha512-dMOtzCEd3ABUeSIISmrETiKuyydk1w0pa+gE/uormcTpSYuaNJPbX1NU3JLyscSLjwAQM8bWMhhIlnCqnRvDTw==} + hls.js@1.6.15: + resolution: {integrity: sha512-E3a5VwgXimGHwpRGV+WxRTKeSp2DW5DI5MWv34ulL3t5UNmyJWCQ1KmLEHbYzcfThfXG8amBL+fCYPneGHC4VA==} + hosted-git-info@2.8.9: resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} @@ -1804,6 +1986,12 @@ packages: http-cache-semantics@4.2.0: resolution: {integrity: sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==} + ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + + immediate@3.0.6: + resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==} + immutable@4.3.7: resolution: {integrity: sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==} @@ -1907,6 +2095,9 @@ packages: resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} engines: {node: '>=12'} + is-promise@2.2.2: + resolution: {integrity: sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==} + is-regex@1.1.4: resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} engines: {node: '>= 0.4'} @@ -1940,6 +2131,11 @@ packages: isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + its-fine@1.2.5: + resolution: {integrity: sha512-fXtDA0X0t0eBYAGLVM5YsgJGsJ5jEmqZEPrGbzdf5awjv0xE7nqv3TVnvtUF060Tkes15DbDAKW/I48vsb6SyA==} + peerDependencies: + react: '>=18.0' + jackspeak@3.4.3: resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} @@ -1991,6 +2187,9 @@ packages: leaflet@1.9.4: resolution: {integrity: sha512-nxS1ynzJOmOlHp+iL3FyWqK89GtNL8U8rvlMOsQdTTssxZwCXh8N2NB3GDQOL+YR3XnWyZAxwQixURb+FA74PA==} + lie@3.3.0: + resolution: {integrity: sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==} + lilconfig@2.1.0: resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} engines: {node: '>=10'} @@ -2031,6 +2230,12 @@ packages: lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + maath@0.10.8: + resolution: {integrity: sha512-tRvbDF0Pgqz+9XUa4jjfgAQ8/aPKmQdWXilFu2tMy4GWj4NOsx99HlULO4IeREfbO3a0sA145DZYyvXPkybm0g==} + peerDependencies: + '@types/three': '>=0.134.0' + three: '>=0.134.0' + magic-string@0.30.21: resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} @@ -2109,6 +2314,14 @@ packages: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} + meshline@3.3.1: + resolution: {integrity: sha512-/TQj+JdZkeSUOl5Mk2J7eLcYTLiQm2IDzmlSvYm7ov15anEcDJ92GHqqazxTSreeNgfnYu24kiEvvv0WlbCdFQ==} + peerDependencies: + three: '>=0.137' + + meshoptimizer@1.0.1: + resolution: {integrity: sha512-Vix+QlA1YYT3FwmBBZ+49cE5y/b+pRrcXKqGpS5ouh33d3lSp2PoTpCw19E0cKDFWalembrHnIaZetf27a+W2g==} + micromark-core-commonmark@2.0.1: resolution: {integrity: sha512-CUQyKr1e///ZODyD1U3xit6zXwy1a8q2a1S1HKtIlmgvurrEpaw/Y9y6KSIbF8P59cn/NjzHyO+Q2fAyYLQrAA==} @@ -2233,6 +2446,12 @@ packages: resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} engines: {node: '>=16 || 14 >=14.17'} + motion-dom@12.35.2: + resolution: {integrity: sha512-pWXFMTwvGDbx1Fe9YL5HZebv2NhvGBzRtiNUv58aoK7+XrsuaydQ0JGRKK2r+bTKlwgSWwWxHbP5249Qr/BNpg==} + + motion-utils@12.29.2: + resolution: {integrity: sha512-G3kc34H2cX2gI63RqU+cZq+zWRRPSsNIOjpdl9TN4AQwC4sgwYPl/Q/Obf/d53nOm569T0fYK+tcoSV50BWx8A==} + mrmime@2.0.1: resolution: {integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==} engines: {node: '>=10'} @@ -2480,6 +2699,9 @@ packages: resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} engines: {node: ^10 || ^12 || >=14} + potpack@1.0.2: + resolution: {integrity: sha512-choctRBIV9EMT9WGAZHn3V7t0Z2pMQyl0EZE6pFc/6ml3ssw7Dlf/oAOvFwjm1HVsqfQN8GfeFyJ+d8tRzqueQ==} + prettier@3.7.4: resolution: {integrity: sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA==} engines: {node: '>=14'} @@ -2489,10 +2711,16 @@ packages: resolution: {integrity: sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==} engines: {node: '>=6'} + promise-worker-transferable@1.0.4: + resolution: {integrity: sha512-bN+0ehEnrXfxV2ZQvU2PetO0n4gqBD4ulq3MI1WOPLgr7/Mg9yRQkX5+0v1vagr74ZTsl7XtzlaYDo2EuCeYJw==} + prompts@2.4.2: resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} engines: {node: '>= 6'} + prop-types@15.8.1: + resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} + property-information@6.5.0: resolution: {integrity: sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==} @@ -2505,6 +2733,11 @@ packages: radix3@1.1.2: resolution: {integrity: sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==} + react-composer@5.0.3: + resolution: {integrity: sha512-1uWd07EME6XZvMfapwZmc7NgCZqDemcvicRi3wMJzXsQLvZ3L7fTHVyPy1bZdnWXM4iPjYuNE+uJ41MLKeTtnA==} + peerDependencies: + react: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 + react-dom@18.3.1: resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} peerDependencies: @@ -2515,6 +2748,9 @@ packages: peerDependencies: react: '*' + react-is@16.13.1: + resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + react-is@18.3.1: resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} @@ -2525,6 +2761,12 @@ packages: react: ^18.0.0 react-dom: ^18.0.0 + react-reconciler@0.27.0: + resolution: {integrity: sha512-HmMDKciQjYmBRGuuhIaKA1ba/7a+UsM5FzOZsMO2JYHt9Jh8reCb7j1eDC95NOyUlKM9KRyvdx0flBuDvYSBoA==} + engines: {node: '>=0.10.0'} + peerDependencies: + react: ^18.0.0 + react-refresh@0.17.0: resolution: {integrity: sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==} engines: {node: '>=0.10.0'} @@ -2671,6 +2913,9 @@ packages: sax@1.4.3: resolution: {integrity: sha512-yqYn1JhPczigF94DMS+shiDMjDowYO6y9+wB/4WgO0Y19jWYk0lQ4tuG5KI7kj4FTp1wxPj5IFfcrz/s1c3jjQ==} + scheduler@0.21.0: + resolution: {integrity: sha512-1r87x5fz9MXqswA2ERLo0EbOAU74DpIUO090gIasYTqlVoJeMcl+Z1Rg7WHz+qtPujhS/hGIt9kxZOYBV3faRQ==} + scheduler@0.23.2: resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} @@ -2773,6 +3018,15 @@ packages: spdx-license-ids@3.0.20: resolution: {integrity: sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw==} + stats-gl@2.4.2: + resolution: {integrity: sha512-g5O9B0hm9CvnM36+v7SFl39T7hmAlv541tU81ME8YeSb3i1CIP5/QdDeSB3A0la0bKNHpxpwxOVRo2wFTYEosQ==} + peerDependencies: + '@types/three': '*' + three: '*' + + stats.js@0.17.0: + resolution: {integrity: sha512-hNKz8phvYLPEcRkeG1rsGmV5ChMjKDAWU7/OJJdDErPBNChQXxCo3WZurGpnWc6gZhAzEPFad1aVgyOANH1sMw==} + stream-replace-string@2.0.0: resolution: {integrity: sha512-TlnjJ1C0QrmxRNrON00JvaFFlNh5TTG00APw23j74ET7gkQpTASi6/L2fuiav8pzK715HXtUeClpBTw2NPSn6w==} @@ -2837,6 +3091,11 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} + suspend-react@0.1.3: + resolution: {integrity: sha512-aqldKgX9aZqpoDp3e8/BZ8Dm7x1pJl+qI3ZKxDN0i/IQTWUwBx/ManmlVJ3wowqbno6c2bmiIfs+Um6LbsjJyQ==} + peerDependencies: + react: '>=17.0' + svgo@4.0.0: resolution: {integrity: sha512-VvrHQ+9uniE+Mvx3+C9IEe/lWasXCU0nXMY2kZeLrHNICuRiC8uMPyM14UEaMOFA5mhyQqEkB02VoQ16n3DLaw==} engines: {node: '>=16'} @@ -2857,6 +3116,20 @@ packages: thenify@3.3.1: resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + three-mesh-bvh@0.7.8: + resolution: {integrity: sha512-BGEZTOIC14U0XIRw3tO4jY7IjP7n7v24nv9JXS1CyeVRWOCkcOMhRnmENUjuV39gktAw4Ofhr0OvIAiTspQrrw==} + deprecated: Deprecated due to three.js version incompatibility. Please use v0.8.0, instead. + peerDependencies: + three: '>= 0.151.0' + + three-stdlib@2.36.1: + resolution: {integrity: sha512-XyGQrFmNQ5O/IoKm556ftwKsBg11TIb301MB5dWNicziQBEs2g3gtOYIf7pFiLa0zI2gUwhtCjv9fmjnxKZ1Cg==} + peerDependencies: + three: '>=0.128.0' + + three@0.183.2: + resolution: {integrity: sha512-di3BsL2FEQ1PA7Hcvn4fyJOlxRRgFYBpMTcyOgkwJIaDOdJMebEFPA+t98EvjuljDx4hNulAGwF6KIjtwI5jgQ==} + tiny-inflate@1.0.3: resolution: {integrity: sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==} @@ -2875,6 +3148,19 @@ packages: trim-lines@3.0.1: resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} + troika-three-text@0.52.4: + resolution: {integrity: sha512-V50EwcYGruV5rUZ9F4aNsrytGdKcXKALjEtQXIOBfhVoZU9VAqZNIoGQ3TMiooVqFAbR1w15T+f+8gkzoFzawg==} + peerDependencies: + three: '>=0.125.0' + + troika-three-utils@0.52.4: + resolution: {integrity: sha512-NORAStSVa/BDiG52Mfudk4j1FG4jC4ILutB3foPnfGbOeIs9+G5vZLa0pnmnaftZUGm4UwSoqEpWdqvC7zms3A==} + peerDependencies: + three: '>=0.125.0' + + troika-worker-utils@0.52.0: + resolution: {integrity: sha512-W1CpvTHykaPH5brv5VHLfQo9D1OYuo0cSBEUQFFT/nBUzM8iD6Lq2/tgG/f1OelbAS1WtaTPQzE5uM49egnngw==} + trough@2.2.0: resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} @@ -2894,6 +3180,9 @@ packages: tslib@2.8.0: resolution: {integrity: sha512-jWVzBLplnCmoaTr13V9dYbiQ99wvZRd0vNWaDRg+aVYRcjDF3nDksxFDE/+fkXnKhpnUUkmx5pK/v8mCtLVqZA==} + tunnel-rat@0.1.2: + resolution: {integrity: sha512-lR5VHmkPhzdhrM092lI2nACsLO4QubF0/yoOhzX7c+wIpbN1GjHNzCc91QlpxBi+cnx8vVJ+Ur6vL5cEoQPFpQ==} + type-fest@4.26.1: resolution: {integrity: sha512-yOGpmOAL7CkKe/91I5O3gPICmJNLJ1G4zFYVAsRHg7M64biSnPtRj0WNQt++bRkjYOqjWXrhnUw1utzmVErAdg==} engines: {node: '>=16'} @@ -3056,9 +3345,22 @@ packages: peerDependencies: browserslist: '>= 4.21.0' + use-sync-external-store@1.6.0: + resolution: {integrity: sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + utility-types@3.11.0: + resolution: {integrity: sha512-6Z7Ma2aVEWisaL6TvBCy7P8rm2LQoPv6dJ7ecIaIixHcwfbJ0x7mWdbcwlIM5IGQxPZSFYeqRCqlOOeKoJYMkw==} + engines: {node: '>= 4'} + + uuid@9.0.1: + resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} + hasBin: true + validate-npm-package-license@3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} @@ -3217,6 +3519,12 @@ packages: web-namespaces@2.0.1: resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} + webgl-constants@1.1.1: + resolution: {integrity: sha512-LkBXKjU5r9vAW7Gcu3T5u+5cvSvh5WwINdr0C+9jpzVB41cjQAP5ePArDtk/WHYdVj0GefCgM73BA7FlIiNtdg==} + + webgl-sdf-generator@1.1.1: + resolution: {integrity: sha512-9Z0JcMTFxeE+b2x1LJTdnaT8rT8aEp7MVxkNwoycNmJWwPdzoXzMh0BjJSh/AEFP+KPYZUli814h8bJZFIZ2jA==} + which-boxed-primitive@1.0.2: resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} @@ -3311,6 +3619,30 @@ packages: zod@3.25.76: resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==} + zustand@3.7.2: + resolution: {integrity: sha512-PIJDIZKtokhof+9+60cpockVOq05sJzHCriyvaLBmEJixseQ1a5Kdov6fWZfWOu5SK9c+FhH1jU0tntLxRJYMA==} + engines: {node: '>=12.7.0'} + peerDependencies: + react: '>=16.8' + peerDependenciesMeta: + react: + optional: true + + zustand@4.5.7: + resolution: {integrity: sha512-CHOUy7mu3lbD6o6LJLfllpjkzhHXSBlX8B9+qPddUsIfeF5S/UZ5q0kmCsnRqT1UHFQZchNFDDzMbQsuesHWlw==} + engines: {node: '>=12.7.0'} + peerDependencies: + '@types/react': '>=16.8' + immer: '>=9.0.6' + react: '>=16.8' + peerDependenciesMeta: + '@types/react': + optional: true + immer: + optional: true + react: + optional: true + zwitch@2.0.4: resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} @@ -3561,6 +3893,8 @@ snapshots: '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 + '@babel/runtime@7.28.6': {} + '@babel/template@7.27.2': dependencies: '@babel/code-frame': 7.27.1 @@ -3593,6 +3927,8 @@ snapshots: dependencies: fontkit: 2.0.4 + '@dimforge/rapier3d-compat@0.12.0': {} + '@emmetio/abbreviation@2.3.3': dependencies: '@emmetio/scanner': 1.0.4 @@ -3907,6 +4243,13 @@ snapshots: transitivePeerDependencies: - supports-color + '@mediapipe/tasks-vision@0.10.17': {} + + '@monogrid/gainmap-js@3.4.0(three@0.183.2)': + dependencies: + promise-worker-transferable: 1.0.4 + three: 0.183.2 + '@nodelib/fs.scandir@2.1.5': dependencies: '@nodelib/fs.stat': 2.0.5 @@ -4032,11 +4375,100 @@ snapshots: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) + '@react-spring/animated@9.7.5(react@18.3.1)': + dependencies: + '@react-spring/shared': 9.7.5(react@18.3.1) + '@react-spring/types': 9.7.5 + react: 18.3.1 + + '@react-spring/core@9.7.5(react@18.3.1)': + dependencies: + '@react-spring/animated': 9.7.5(react@18.3.1) + '@react-spring/shared': 9.7.5(react@18.3.1) + '@react-spring/types': 9.7.5 + react: 18.3.1 + + '@react-spring/rafz@9.7.5': {} + + '@react-spring/shared@9.7.5(react@18.3.1)': + dependencies: + '@react-spring/rafz': 9.7.5 + '@react-spring/types': 9.7.5 + react: 18.3.1 + + '@react-spring/three@9.7.5(@react-three/fiber@8.17.10(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(three@0.183.2))(react@18.3.1)(three@0.183.2)': + dependencies: + '@react-spring/animated': 9.7.5(react@18.3.1) + '@react-spring/core': 9.7.5(react@18.3.1) + '@react-spring/shared': 9.7.5(react@18.3.1) + '@react-spring/types': 9.7.5 + '@react-three/fiber': 8.17.10(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(three@0.183.2) + react: 18.3.1 + three: 0.183.2 + + '@react-spring/types@9.7.5': {} + '@react-stately/utils@3.10.4(react@18.3.1)': dependencies: '@swc/helpers': 0.5.13 react: 18.3.1 + '@react-three/drei@9.117.0(@react-three/fiber@8.17.10(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(three@0.183.2))(@types/react@18.3.12)(@types/three@0.183.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(three@0.183.2)': + dependencies: + '@babel/runtime': 7.28.6 + '@mediapipe/tasks-vision': 0.10.17 + '@monogrid/gainmap-js': 3.4.0(three@0.183.2) + '@react-spring/three': 9.7.5(@react-three/fiber@8.17.10(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(three@0.183.2))(react@18.3.1)(three@0.183.2) + '@react-three/fiber': 8.17.10(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(three@0.183.2) + '@use-gesture/react': 10.3.1(react@18.3.1) + camera-controls: 2.10.1(three@0.183.2) + cross-env: 7.0.3 + detect-gpu: 5.0.70 + glsl-noise: 0.0.0 + hls.js: 1.6.15 + maath: 0.10.8(@types/three@0.183.1)(three@0.183.2) + meshline: 3.3.1(three@0.183.2) + react: 18.3.1 + react-composer: 5.0.3(react@18.3.1) + stats-gl: 2.4.2(@types/three@0.183.1)(three@0.183.2) + stats.js: 0.17.0 + suspend-react: 0.1.3(react@18.3.1) + three: 0.183.2 + three-mesh-bvh: 0.7.8(three@0.183.2) + three-stdlib: 2.36.1(three@0.183.2) + troika-three-text: 0.52.4(three@0.183.2) + tunnel-rat: 0.1.2(@types/react@18.3.12)(react@18.3.1) + utility-types: 3.11.0 + uuid: 9.0.1 + zustand: 3.7.2(react@18.3.1) + optionalDependencies: + react-dom: 18.3.1(react@18.3.1) + transitivePeerDependencies: + - '@types/react' + - '@types/three' + - immer + + '@react-three/fiber@8.17.10(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(three@0.183.2)': + dependencies: + '@babel/runtime': 7.28.6 + '@types/debounce': 1.2.4 + '@types/react-reconciler': 0.26.7 + '@types/webxr': 0.5.24 + base64-js: 1.5.1 + buffer: 6.0.3 + debounce: 1.2.1 + its-fine: 1.2.5(@types/react@18.3.12)(react@18.3.1) + react: 18.3.1 + react-reconciler: 0.27.0(react@18.3.1) + scheduler: 0.21.0 + suspend-react: 0.1.3(react@18.3.1) + three: 0.183.2 + zustand: 3.7.2(react@18.3.1) + optionalDependencies: + react-dom: 18.3.1(react@18.3.1) + transitivePeerDependencies: + - '@types/react' + '@react-types/shared@3.25.0(react@18.3.1)': dependencies: react: 18.3.1 @@ -4175,6 +4607,8 @@ snapshots: '@tanstack/virtual-core@3.10.8': {} + '@tweenjs/tween.js@23.1.3': {} + '@types/acorn@4.0.6': dependencies: '@types/estree': 1.0.6 @@ -4200,6 +4634,8 @@ snapshots: dependencies: '@babel/types': 7.25.9 + '@types/debounce@1.2.4': {} + '@types/debug@4.1.12': dependencies: '@types/ms': 0.7.34 @@ -4208,6 +4644,8 @@ snapshots: dependencies: '@types/trusted-types': 2.0.7 + '@types/draco3d@1.4.10': {} + '@types/estree-jsx@1.0.5': dependencies: '@types/estree': 1.0.6 @@ -4244,12 +4682,22 @@ snapshots: dependencies: undici-types: 6.19.8 + '@types/offscreencanvas@2019.7.3': {} + '@types/prop-types@15.7.13': {} '@types/react-dom@18.3.1': dependencies: '@types/react': 18.3.12 + '@types/react-reconciler@0.26.7': + dependencies: + '@types/react': 18.3.12 + + '@types/react-reconciler@0.28.9(@types/react@18.3.12)': + dependencies: + '@types/react': 18.3.12 + '@types/react@18.3.12': dependencies: '@types/prop-types': 15.7.13 @@ -4259,14 +4707,35 @@ snapshots: dependencies: '@types/node': 22.7.9 + '@types/stats.js@0.17.4': {} + + '@types/three@0.183.1': + dependencies: + '@dimforge/rapier3d-compat': 0.12.0 + '@tweenjs/tween.js': 23.1.3 + '@types/stats.js': 0.17.4 + '@types/webxr': 0.5.24 + '@webgpu/types': 0.1.69 + fflate: 0.8.2 + meshoptimizer: 1.0.1 + '@types/trusted-types@2.0.7': {} '@types/unist@2.0.11': {} '@types/unist@3.0.3': {} + '@types/webxr@0.5.24': {} + '@ungap/structured-clone@1.2.0': {} + '@use-gesture/core@10.3.1': {} + + '@use-gesture/react@10.3.1(react@18.3.1)': + dependencies: + '@use-gesture/core': 10.3.1 + react: 18.3.1 + '@vitejs/plugin-react@4.7.0(vite@6.4.1(@types/node@22.7.9)(jiti@1.21.6)(sass@1.80.4)(yaml@2.7.1))': dependencies: '@babel/core': 7.28.5 @@ -4329,6 +4798,8 @@ snapshots: '@vscode/l10n@0.0.18': {} + '@webgpu/types@0.1.69': {} + acorn-jsx@5.3.2(acorn@8.15.0): dependencies: acorn: 8.15.0 @@ -4527,6 +4998,10 @@ snapshots: baseline-browser-mapping@2.9.4: {} + bidi-js@1.0.3: + dependencies: + require-from-string: 2.0.2 + binary-extensions@2.3.0: {} boolbase@1.0.0: {} @@ -4574,6 +5049,11 @@ snapshots: node-releases: 2.0.27 update-browserslist-db: 1.2.2(browserslist@4.28.1) + buffer@6.0.3: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + call-bind@1.0.7: dependencies: es-define-property: 1.0.0 @@ -4586,6 +5066,10 @@ snapshots: camelcase@8.0.0: {} + camera-controls@2.10.1(three@0.183.2): + dependencies: + three: 0.183.2 + caniuse-lite@1.0.30001669: {} caniuse-lite@1.0.30001759: {} @@ -4672,6 +5156,10 @@ snapshots: cookie@1.1.1: {} + cross-env@7.0.3: + dependencies: + cross-spawn: 7.0.3 + cross-spawn@6.0.5: dependencies: nice-try: 1.0.5 @@ -4738,6 +5226,8 @@ snapshots: dayjs@1.11.13: {} + debounce@1.2.1: {} + debug@4.3.7: dependencies: ms: 2.1.3 @@ -4768,6 +5258,10 @@ snapshots: destr@2.0.5: {} + detect-gpu@5.0.70: + dependencies: + webgl-constants: 1.1.1 + detect-libc@1.0.3: {} detect-libc@2.1.2: @@ -4813,6 +5307,8 @@ snapshots: domelementtype: 2.3.0 domhandler: 5.0.3 + draco3d@1.5.7: {} + dset@3.1.4: {} eastasianwidth@0.2.0: {} @@ -5023,6 +5519,10 @@ snapshots: optionalDependencies: picomatch: 4.0.3 + fflate@0.6.10: {} + + fflate@0.8.2: {} + fill-range@7.1.1: dependencies: to-regex-range: 5.0.1 @@ -5057,6 +5557,15 @@ snapshots: fraction.js@5.3.4: {} + framer-motion@12.35.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + motion-dom: 12.35.2 + motion-utils: 12.29.2 + tslib: 2.8.0 + optionalDependencies: + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + fsevents@2.3.3: optional: true @@ -5115,6 +5624,8 @@ snapshots: define-properties: 1.2.1 gopd: 1.0.1 + glsl-noise@0.0.0: {} + gopd@1.0.1: dependencies: get-intrinsic: 1.2.4 @@ -5295,6 +5806,8 @@ snapshots: property-information: 6.5.0 space-separated-tokens: 2.0.2 + hls.js@1.6.15: {} + hosted-git-info@2.8.9: {} html-escaper@3.0.3: {} @@ -5303,6 +5816,10 @@ snapshots: http-cache-semantics@4.2.0: {} + ieee754@1.2.1: {} + + immediate@3.0.6: {} + immutable@4.3.7: {} import-meta-resolve@4.2.0: {} @@ -5388,6 +5905,8 @@ snapshots: is-plain-obj@4.1.0: {} + is-promise@2.2.2: {} + is-regex@1.1.4: dependencies: call-bind: 1.0.7 @@ -5421,6 +5940,13 @@ snapshots: isexe@2.0.0: {} + its-fine@1.2.5(@types/react@18.3.12)(react@18.3.1): + dependencies: + '@types/react-reconciler': 0.28.9(@types/react@18.3.12) + react: 18.3.1 + transitivePeerDependencies: + - '@types/react' + jackspeak@3.4.3: dependencies: '@isaacs/cliui': 8.0.2 @@ -5457,6 +5983,10 @@ snapshots: leaflet@1.9.4: {} + lie@3.3.0: + dependencies: + immediate: 3.0.6 + lilconfig@2.1.0: {} lilconfig@3.1.2: {} @@ -5490,6 +6020,11 @@ snapshots: dependencies: yallist: 3.1.1 + maath@0.10.8(@types/three@0.183.1)(three@0.183.2): + dependencies: + '@types/three': 0.183.1 + three: 0.183.2 + magic-string@0.30.21: dependencies: '@jridgewell/sourcemap-codec': 1.5.5 @@ -5680,6 +6215,12 @@ snapshots: merge2@1.4.1: {} + meshline@3.3.1(three@0.183.2): + dependencies: + three: 0.183.2 + + meshoptimizer@1.0.1: {} + micromark-core-commonmark@2.0.1: dependencies: decode-named-character-reference: 1.0.2 @@ -5963,6 +6504,12 @@ snapshots: minipass@7.1.2: {} + motion-dom@12.35.2: + dependencies: + motion-utils: 12.29.2 + + motion-utils@12.29.2: {} + mrmime@2.0.1: {} ms@2.1.3: {} @@ -6201,15 +6748,28 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 + potpack@1.0.2: {} + prettier@3.7.4: {} prismjs@1.30.0: {} + promise-worker-transferable@1.0.4: + dependencies: + is-promise: 2.2.2 + lie: 3.3.0 + prompts@2.4.2: dependencies: kleur: 3.0.3 sisteransi: 1.0.5 + prop-types@15.8.1: + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + react-is: 16.13.1 + property-information@6.5.0: {} property-information@7.1.0: {} @@ -6218,6 +6778,11 @@ snapshots: radix3@1.1.2: {} + react-composer@5.0.3(react@18.3.1): + dependencies: + prop-types: 15.8.1 + react: 18.3.1 + react-dom@18.3.1(react@18.3.1): dependencies: loose-envify: 1.4.0 @@ -6228,6 +6793,8 @@ snapshots: dependencies: react: 18.3.1 + react-is@16.13.1: {} + react-is@18.3.1: {} react-leaflet@4.2.1(leaflet@1.9.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): @@ -6237,6 +6804,12 @@ snapshots: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) + react-reconciler@0.27.0(react@18.3.1): + dependencies: + loose-envify: 1.4.0 + react: 18.3.1 + scheduler: 0.21.0 + react-refresh@0.17.0: {} react@18.3.1: @@ -6492,6 +7065,10 @@ snapshots: sax@1.4.3: {} + scheduler@0.21.0: + dependencies: + loose-envify: 1.4.0 + scheduler@0.23.2: dependencies: loose-envify: 1.4.0 @@ -6619,6 +7196,13 @@ snapshots: spdx-license-ids@3.0.20: {} + stats-gl@2.4.2(@types/three@0.183.1)(three@0.183.2): + dependencies: + '@types/three': 0.183.1 + three: 0.183.2 + + stats.js@0.17.0: {} + stream-replace-string@2.0.0: {} string-width@4.2.3: @@ -6704,6 +7288,10 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} + suspend-react@0.1.3(react@18.3.1): + dependencies: + react: 18.3.1 + svgo@4.0.0: dependencies: commander: 11.1.0 @@ -6751,6 +7339,22 @@ snapshots: dependencies: any-promise: 1.3.0 + three-mesh-bvh@0.7.8(three@0.183.2): + dependencies: + three: 0.183.2 + + three-stdlib@2.36.1(three@0.183.2): + dependencies: + '@types/draco3d': 1.4.10 + '@types/offscreencanvas': 2019.7.3 + '@types/webxr': 0.5.24 + draco3d: 1.5.7 + fflate: 0.6.10 + potpack: 1.0.2 + three: 0.183.2 + + three@0.183.2: {} + tiny-inflate@1.0.3: {} tinyexec@1.0.2: {} @@ -6766,6 +7370,20 @@ snapshots: trim-lines@3.0.1: {} + troika-three-text@0.52.4(three@0.183.2): + dependencies: + bidi-js: 1.0.3 + three: 0.183.2 + troika-three-utils: 0.52.4(three@0.183.2) + troika-worker-utils: 0.52.0 + webgl-sdf-generator: 1.1.1 + + troika-three-utils@0.52.4(three@0.183.2): + dependencies: + three: 0.183.2 + + troika-worker-utils@0.52.0: {} + trough@2.2.0: {} ts-interface-checker@0.1.13: {} @@ -6776,6 +7394,14 @@ snapshots: tslib@2.8.0: {} + tunnel-rat@0.1.2(@types/react@18.3.12)(react@18.3.1): + dependencies: + zustand: 4.5.7(@types/react@18.3.12)(react@18.3.1) + transitivePeerDependencies: + - '@types/react' + - immer + - react + type-fest@4.26.1: {} typed-array-buffer@1.0.2: @@ -6928,8 +7554,16 @@ snapshots: escalade: 3.2.0 picocolors: 1.1.1 + use-sync-external-store@1.6.0(react@18.3.1): + dependencies: + react: 18.3.1 + util-deprecate@1.0.2: {} + utility-types@3.11.0: {} + + uuid@9.0.1: {} + validate-npm-package-license@3.0.4: dependencies: spdx-correct: 3.2.0 @@ -7070,6 +7704,10 @@ snapshots: web-namespaces@2.0.1: {} + webgl-constants@1.1.1: {} + + webgl-sdf-generator@1.1.1: {} + which-boxed-primitive@1.0.2: dependencies: is-bigint: 1.0.4 @@ -7174,4 +7812,15 @@ snapshots: zod@3.25.76: {} + zustand@3.7.2(react@18.3.1): + optionalDependencies: + react: 18.3.1 + + zustand@4.5.7(@types/react@18.3.12)(react@18.3.1): + dependencies: + use-sync-external-store: 1.6.0(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.12 + react: 18.3.1 + zwitch@2.0.4: {} diff --git a/src/components/about-hero-visual.tsx b/src/components/about-hero-visual.tsx new file mode 100644 index 00000000..93d4b4a5 --- /dev/null +++ b/src/components/about-hero-visual.tsx @@ -0,0 +1,128 @@ +import React from 'react'; +import { motion, useReducedMotion } from 'framer-motion'; + +interface Chip { + label: string; + size: 'lg' | 'md' | 'sm'; + x: number; + y: number; + color?: string; + rotate?: number; +} + +const CHIPS: Chip[] = [ + { label: 'UiB Bergen', size: 'lg', x: 12, y: 6, color: '#dc3545', rotate: -2 }, + { label: 'UiO Oslo', size: 'lg', x: 60, y: 2, color: '#c8102e', rotate: 1 }, + { label: 'UiT Tromsø', size: 'lg', x: 2, y: 45, color: '#003349', rotate: -1 }, + { label: 'NTNU Trondheim', size: 'lg', x: 48, y: 80, color: '#00509e', rotate: 2 }, + { label: 'NMBU Ås', size: 'lg', x: 70, y: 42, color: '#005f3b', rotate: -1 }, + { label: 'Services', size: 'md', x: 50, y: 26 }, + { label: 'Training', size: 'md', x: 0, y: 76 }, + { label: 'Helpdesk', size: 'md', x: 72, y: 66, rotate: -1 }, + { label: 'NeLS', size: 'md', x: 34, y: 52, rotate: 1 }, + { label: 'Storage', size: 'sm', x: 28, y: 28, rotate: 2 }, + { label: 'Sensitive Data', size: 'sm', x: 16, y: 66, rotate: -2 }, + { label: 'Bioinformatics', size: 'sm', x: 56, y: 56, rotate: 1 }, +]; + +const sizeClasses = { + lg: 'px-6 py-3 text-base font-bold', + md: 'px-5 py-2.5 text-sm font-semibold', + sm: 'px-4 py-2 text-xs font-semibold', +}; + +const BLOBS = [ + { x: 20, y: 25, size: 220, color: 'from-brand-primary/20 to-brand-secondary/10', delay: 0 }, + { x: 65, y: 60, size: 180, color: 'from-brand-secondary/15 to-orange-300/10', delay: 2 }, + { x: 40, y: 75, size: 140, color: 'from-blue-400/10 to-brand-primary/15', delay: 4 }, +]; + +export default function AboutHeroVisual() { + const shouldReduceMotion = useReducedMotion(); + + return ( +
+ {/* Gradient blobs — background depth */} + {BLOBS.map((blob, i) => ( +
+ ); +} diff --git a/src/components/command-palette.tsx b/src/components/command-palette.tsx index f1ba1a60..130bef39 100644 --- a/src/components/command-palette.tsx +++ b/src/components/command-palette.tsx @@ -1,118 +1,216 @@ -import { - Combobox, - ComboboxInput, - ComboboxOption, - ComboboxOptions, - Dialog, - DialogBackdrop, - DialogPanel, -} from '@headlessui/react' -import { MagnifyingGlassIcon } from '@heroicons/react/20/solid' -import { ExclamationCircleIcon, } from '@heroicons/react/24/outline' -import { useState } from 'react'; -import debounce from "lodash/debounce"; -import DomPurify from "dompurify"; +import React, { useState, useEffect, useRef, useCallback } from 'react'; +import { AnimatePresence, motion, useReducedMotion } from 'framer-motion'; +import DomPurify from 'dompurify'; const ignoredPaths = /^\/news\/?$/; -const debounceTime = 200; - -export default function CommandPalette({ open, setOpen }) { - - const [searchTerm, setSearchTerm] = useState(''); - const [filteredItems, setFilteredItems] = useState([]); - - const handleSearch = async (e) => { - if (window?.pagefind) { - const term = e.target.value; - const results = await (await window?.pagefind.search(term)).results; - const res = []; - for (const result of results) { - const data = await result.data(); - res.push({ - url: data.url, - title: data.meta?.title, - image: data.meta?.image, - excerpt: data.excerpt - }) - } - setFilteredItems([...res.filter((r) => !ignoredPaths.test(r.url))]) +const DEBOUNCE_MS = 200; + +interface SearchResult { + url: string; + title: string; + excerpt: string; +} + +// NOTE: dangerouslySetInnerHTML below is safe — all content is sanitized +// through DomPurify.sanitize() before rendering. The excerpts come from +// Pagefind (our own build-time index) and contain tags for highlights. + +export default function CommandPalette({ open, setOpen }: { open: boolean; setOpen: (v: boolean) => void }) { + const [query, setQuery] = useState(''); + const [results, setResults] = useState([]); + const [activeIndex, setActiveIndex] = useState(0); + const inputRef = useRef(null); + const listRef = useRef(null); + const debounceRef = useRef>(); + const shouldReduceMotion = useReducedMotion(); + + // Lock body scroll without jitter — compensate for scrollbar width + useEffect(() => { + if (!open) return; + const scrollbarWidth = window.innerWidth - document.documentElement.clientWidth; + document.body.style.overflow = 'hidden'; + document.body.style.paddingRight = `${scrollbarWidth}px`; + return () => { + document.body.style.overflow = ''; + document.body.style.paddingRight = ''; + }; + }, [open]); + + // Focus input on open + useEffect(() => { + if (open) { + requestAnimationFrame(() => inputRef.current?.focus()); } - }; + }, [open]); + + // CMD+K / Ctrl+K global shortcut + useEffect(() => { + const onKey = (e: KeyboardEvent) => { + if ((e.metaKey || e.ctrlKey) && e.key === 'k') { + e.preventDefault(); + setOpen(!open); + } + }; + document.addEventListener('keydown', onKey); + return () => document.removeEventListener('keydown', onKey); + }, [open, setOpen]); - const onCommandPaletteClose = () => { + const close = useCallback(() => { setOpen(false); - setSearchTerm(''); - }; + setQuery(''); + setResults([]); + setActiveIndex(0); + }, [setOpen]); - const onItemSelected = (url: string | Location) => { - if (url) { - window.location.href = typeof url === 'string' ? url : url.href; + const navigate = useCallback((url: string) => { + close(); + window.location.href = url; + }, [close]); + + const search = useCallback(async (term: string) => { + if (!term.trim() || !(window as any)?.pagefind) { + setResults([]); + return; + } + const { results: raw } = await (window as any).pagefind.search(term); + const items: SearchResult[] = []; + for (const r of raw) { + const data = await r.data(); + if (!ignoredPaths.test(data.url)) { + items.push({ url: data.url, title: data.meta?.title, excerpt: data.excerpt }); + } } - }; + setResults(items); + setActiveIndex(0); + }, []); + + const onInputChange = useCallback((e: React.ChangeEvent) => { + const val = e.target.value; + setQuery(val); + clearTimeout(debounceRef.current); + debounceRef.current = setTimeout(() => search(val), DEBOUNCE_MS); + }, [search]); + + const onKeyDown = useCallback((e: React.KeyboardEvent) => { + if (e.key === 'Escape') { close(); return; } + if (e.key === 'ArrowDown') { e.preventDefault(); setActiveIndex(i => Math.min(i + 1, results.length - 1)); } + if (e.key === 'ArrowUp') { e.preventDefault(); setActiveIndex(i => Math.max(i - 1, 0)); } + if (e.key === 'Enter' && results[activeIndex]) { navigate(results[activeIndex].url); } + }, [close, navigate, results, activeIndex]); + + // Scroll active item into view + useEffect(() => { + const el = listRef.current?.children[activeIndex] as HTMLElement | undefined; + el?.scrollIntoView({ block: 'nearest' }); + }, [activeIndex]); + + if (!open) return null; + + const hasQuery = query.trim().length > 0; return ( - - -
- - -
-
- {filteredItems.length > 0 && ( - - {filteredItems.map((item, index) => ( - -
-

{item.title}

-

-

-
- ))} -
- )} - {searchTerm !== '' && filteredItems.length === 0 && ( -
- + {open && ( +
+ {/* Backdrop */} +
- ); + {/* Results */} + {hasQuery && results.length > 0 && ( +
+ {results.map((item, i) => ( +
navigate(item.url)} + onMouseEnter={() => setActiveIndex(i)} + className={`flex flex-col gap-1 rounded-lg px-3 py-2.5 cursor-pointer transition-colors ${ + i === activeIndex + ? 'bg-brand-secondary/10 dark:bg-brand-secondary/10' + : 'hover:bg-gray-50 dark:hover:bg-white/5' + }`} + > + + {item.title} + + +
+ ))} +
+ )} + + {/* Empty state */} + {hasQuery && results.length === 0 && ( +
+

No results found

+

Try a different search term

+
+ )} + + {/* Hint when empty */} + {!hasQuery && ( +
+

Start typing to search across all pages

+
+ )} + + + + )} + + ); } diff --git a/src/components/dna-scene.tsx b/src/components/dna-scene.tsx new file mode 100644 index 00000000..855fa504 --- /dev/null +++ b/src/components/dna-scene.tsx @@ -0,0 +1,251 @@ +import React, { useRef, useMemo } from 'react'; +import { Canvas, useFrame } from '@react-three/fiber'; +import * as THREE from 'three'; + +const ORANGE = '#f47d20'; +const NAVY = '#023452'; + +// Strand backbone colors — vivid +const STRAND_1_COLOR = '#5bb5f5'; // bright sky blue backbone +const STRAND_2_COLOR = '#ff8c42'; // vivid orange backbone + +// Nucleotide base pair colors +const BASE_COLORS = [ + '#ef4444', // Adenine — red + '#22c55e', // Thymine — green + '#3b82f6', // Guanine — blue + '#22c55e', // Cytosine — green +]; + +const NUM_POINTS = 100; +const RADIUS = 1.8; +const HEIGHT = 12; +const TURNS = 3; +const RUNG_INTERVAL = 6; + +function computeHelixData() { + const strand1: THREE.Vector3[] = []; + const strand2: THREE.Vector3[] = []; + const rungs: { mid: THREE.Vector3; quat: THREE.Quaternion; len: number }[] = []; + const accentIndices: number[] = []; + + const yAxis = new THREE.Vector3(0, 1, 0); + + for (let i = 0; i <= NUM_POINTS; i++) { + const t = i / NUM_POINTS; + const angle = t * Math.PI * 2 * TURNS; + const y = (t - 0.5) * HEIGHT; + + const x1 = Math.cos(angle) * RADIUS; + const z1 = Math.sin(angle) * RADIUS; + const x2 = Math.cos(angle + Math.PI) * RADIUS; + const z2 = Math.sin(angle + Math.PI) * RADIUS; + + strand1.push(new THREE.Vector3(x1, y, z1)); + strand2.push(new THREE.Vector3(x2, y, z2)); + + if (i % RUNG_INTERVAL === 0 && i > 0 && i < NUM_POINTS) { + accentIndices.push(i); + const a = new THREE.Vector3(x1, y, z1); + const b = new THREE.Vector3(x2, y, z2); + const dir = new THREE.Vector3().subVectors(b, a); + const len = dir.length(); + dir.normalize(); + const quat = new THREE.Quaternion().setFromUnitVectors(yAxis, dir); + const mid = new THREE.Vector3().addVectors(a, b).multiplyScalar(0.5); + rungs.push({ mid, quat, len }); + } + } + + return { strand1, strand2, rungs, accentIndices }; +} + +function DNAHelix() { + const groupRef = useRef(null!); + const strandRef1 = useRef(null!); + const strandRef2 = useRef(null!); + const accent1Ref = useRef(null!); + const accent2Ref = useRef(null!); + const rungsRef = useRef(null!); + + const data = useMemo(() => computeHelixData(), []); + const strandCount = data.strand1.length; + const rungCount = data.rungs.length; + const accentCount = data.accentIndices.length; + + const initialized = useRef(false); + useFrame((_, delta) => { + if (!initialized.current) { + const dummy = new THREE.Object3D(); + + for (let i = 0; i < strandCount; i++) { + dummy.position.copy(data.strand1[i]); + dummy.scale.setScalar(1); + dummy.updateMatrix(); + strandRef1.current.setMatrixAt(i, dummy.matrix); + + dummy.position.copy(data.strand2[i]); + dummy.updateMatrix(); + strandRef2.current.setMatrixAt(i, dummy.matrix); + } + strandRef1.current.instanceMatrix.needsUpdate = true; + strandRef2.current.instanceMatrix.needsUpdate = true; + + for (let i = 0; i < accentCount; i++) { + const idx = data.accentIndices[i]; + dummy.position.copy(data.strand1[idx]); + dummy.scale.setScalar(1); + dummy.updateMatrix(); + accent1Ref.current.setMatrixAt(i, dummy.matrix); + + dummy.position.copy(data.strand2[idx]); + dummy.updateMatrix(); + accent2Ref.current.setMatrixAt(i, dummy.matrix); + } + accent1Ref.current.instanceMatrix.needsUpdate = true; + accent2Ref.current.instanceMatrix.needsUpdate = true; + + for (let i = 0; i < rungCount; i++) { + const r = data.rungs[i]; + dummy.position.copy(r.mid); + dummy.quaternion.copy(r.quat); + dummy.scale.set(1, r.len, 1); + dummy.updateMatrix(); + rungsRef.current.setMatrixAt(i, dummy.matrix); + } + rungsRef.current.instanceMatrix.needsUpdate = true; + + // Per-instance colors for rungs + const rungColorArr = new Float32Array(rungCount * 3); + const baseColors = BASE_COLORS.map(c => new THREE.Color(c)); + for (let i = 0; i < rungCount; i++) { + const c = baseColors[i % baseColors.length]; + rungColorArr[i * 3] = c.r; + rungColorArr[i * 3 + 1] = c.g; + rungColorArr[i * 3 + 2] = c.b; + } + rungsRef.current.instanceColor = new THREE.InstancedBufferAttribute(rungColorArr, 3); + + initialized.current = true; + } + + if (groupRef.current) { + groupRef.current.rotation.y += delta * 0.3; + } + }); + + return ( + + {/* Strand 1 — blue backbone */} + + + + + + {/* Strand 2 — orange backbone */} + + + + + + {/* Accent nodes strand 1 */} + + + + + + {/* Accent nodes strand 2 */} + + + + + + {/* Rungs — per-instance nucleotide colors */} + + + + + + ); +} + +function Particles({ count = 40 }) { + const ref = useRef(null!); + const dummy = useMemo(() => new THREE.Object3D(), []); + + const particles = useMemo(() => + Array.from({ length: count }, () => ({ + x: (Math.random() - 0.5) * 16, + y: (Math.random() - 0.5) * 12, + z: (Math.random() - 0.5) * 6 - 3, + speed: 0.05 + Math.random() * 0.15, + phase: Math.random() * Math.PI * 2, + size: 0.02 + Math.random() * 0.04, + })), + [count]); + + useFrame(({ clock }) => { + if (!ref.current) return; + const t = clock.getElapsedTime(); + particles.forEach((p, i) => { + dummy.position.set( + p.x + Math.sin(t * p.speed + p.phase) * 0.5, + p.y + Math.cos(t * p.speed * 0.8 + p.phase) * 0.3, + p.z + ); + dummy.scale.setScalar(p.size); + dummy.updateMatrix(); + ref.current.setMatrixAt(i, dummy.matrix); + }); + ref.current.instanceMatrix.needsUpdate = true; + }); + + return ( + + + + + ); +} + +export default function DNAScene() { + return ( +
+ + + + + + + + + +
+ ); +} diff --git a/src/components/elements.tsx b/src/components/elements.tsx index 8680e3f1..d1157fab 100644 --- a/src/components/elements.tsx +++ b/src/components/elements.tsx @@ -25,8 +25,8 @@ export const LI: React.FC> = (props) => (
  • ); -export const H1: React.FC> = (props) => ( -

    +export const H1: React.FC> = ({ className, ...props }) => ( +

    ); export const H2: React.FC> = (props) => ( @@ -106,7 +106,7 @@ export const Td: React.FC> = (p ); export const Em: React.FC = (props) => ( - + ); export const Strong: React.FC = (props) => ( diff --git a/src/components/footer.tsx b/src/components/footer.tsx index e520774f..6c6e1b07 100644 --- a/src/components/footer.tsx +++ b/src/components/footer.tsx @@ -1,141 +1,185 @@ -import { SiFlickr, SiLinkedin, SiYoutube } from "react-icons/si"; -import { FaTwitter } from "react-icons/fa"; +import { SiLinkedin, SiYoutube, SiFlickr } from "react-icons/si"; import React from "react"; const BASE = import.meta.env.BASE_URL.replace(/\/$/, ''); -const Footer = () => { - return ( -
    - -
    -
    - - - -
    -
    -
    - ); -} +const footerLinks = [ + { href: `${BASE}/about`, label: "About" }, + { href: `${BASE}/research-support`, label: "Research Support" }, + { href: `${BASE}/services`, label: "Services" }, + { href: `${BASE}/funding-and-projects`, label: "Funding & Projects" }, + { href: `${BASE}/news`, label: "News" }, + { href: `${BASE}/events`, label: "Events" }, + { href: `${BASE}/training`, label: "Training" }, + { href: `${BASE}/accessibility`, label: "Accessibility" }, +]; -const ElixirBrand = () => { - return ( -
    -
    - - ELIXIR Norway Logo - ELIXIR Norway Logo - -
    - } - /> - } - /> - } - /> -
    -
    -
    - ); -}; - -const ElixirOrgs = () => { +const socials = [ + { name: "LinkedIn", href: "https://www.linkedin.com/company/elixir-norway", icon: SiLinkedin }, + { name: "YouTube", href: "https://www.youtube.com/channel/UCvwFIw5HomylguGOGxR8B8w", icon: SiYoutube }, + { name: "Flickr", href: "https://www.flickr.com/photos/elixir-europe/", icon: SiFlickr }, +]; - const orgs = [ - ["https://uib.no/", `${BASE}/assets/logos/orgs/uib.svg`, "UiB logo"], - ["https://uio.no/", `${BASE}/assets/logos/orgs/uio.svg`, "UiO logo"], - ["https://uit.no/", `${BASE}/assets/logos/orgs/uit.svg`, "UiT logo"], - ["https://ntnu.no/", `${BASE}/assets/logos/orgs/ntnu.svg`, "NTNU logo"], - ["https://nmbu.no/", `${BASE}/assets/logos/orgs/nmbu.svg`, "NMBU logo"], - ]; +const partners = [ + { href: "https://uib.no/", src: `${BASE}/assets/logos/orgs/uib.svg`, alt: "University of Bergen" }, + { href: "https://uio.no/", src: `${BASE}/assets/logos/orgs/uio.svg`, alt: "University of Oslo" }, + { href: "https://uit.no/", src: `${BASE}/assets/logos/orgs/uit.svg`, alt: "UiT The Arctic University of Norway" }, + { href: "https://ntnu.no/", src: `${BASE}/assets/logos/orgs/ntnu.svg`, alt: "NTNU" }, + { href: "https://nmbu.no/", src: `${BASE}/assets/logos/orgs/nmbu.svg`, alt: "NMBU" }, +]; - const funders = [ - ["https://forskningsradet.no/", `${BASE}/assets/logos/orgs/nfr.svg`, "Research Council of Norway logo"], - ["https://www.nordforsk.org", `${BASE}/assets/logos/orgs/nordforsk.svg`, "Nordforsk logo"], - ["https://research-and-innovation.ec.europa.eu/", `${BASE}/assets/logos/orgs/eu.svg`, "EU co-funded logo"], - ]; +const funders = [ + { href: "https://forskningsradet.no/", src: `${BASE}/assets/logos/orgs/nfr.svg`, alt: "Research Council of Norway" }, + { href: "https://www.nordforsk.org", src: `${BASE}/assets/logos/orgs/nordforsk.svg`, alt: "NordForsk" }, + { href: "https://research-and-innovation.ec.europa.eu/", src: `${BASE}/assets/logos/orgs/eu.svg`, alt: "Co-funded by the European Union" }, +]; +const Footer = () => { return ( -
    -
    - {orgs.map(([href, imageUrl, alt]) => { - return ( - +
    + + + {/* Main footer content */} +
    +
    + + {/* Brand column */} +
    + {alt} - - ) - })} -
    -
    - {funders.map(([href, imageUrl, alt]) => { - return ( - {alt} - ) - })} -
    -

    - Financed by the Research Council of Norway’s grants 208481, 270068, 295932, - the University of Bergen, the University of Oslo, the Arctic University - of Norway in Tromsø, the Norwegian University of Science and Technology, - the Norwegian University of Life Sciences: NMBU, Nordforsk and co-funded by the European Union. -

    -
    - ); -}; +

    + ELIXIR Norway is the Norwegian Node of{' '} + + ELIXIR + + {' '}– the European infrastructure for life science data. +

    +
    + {socials.map(({ name, href, icon: Icon }) => ( + + + ))} +
    +
    -const Links = () => { - return ( - - ); -}; + {/* Links column */} +
    +

    Navigation

    +
      + {footerLinks.map(({ href, label }) => ( +
    • + + {label} + +
    • + ))} +
    +
    + {/* Contact column */} + -const SocialButton = ({ name, link, icon }) => { - return ( - - {name} - {icon} - + {/* Partners column */} +
    +

    Partner institutions

    +
    + {partners.map(({ href, src, alt }) => ( + + {alt} + + ))} +
    +

    Funded by

    +
    + {funders.map(({ href, src, alt }) => ( + + {alt} + + ))} +
    +
    +
    +
    + + {/* Bottom bar */} +
    +
    +

    + Financed by the Research Council of Norway (grants 208481, 270068, 295932), + its partner institutions, NordForsk, and co-funded by the European Union. +

    +
    +
    + ); }; diff --git a/src/components/hero.tsx b/src/components/hero.tsx index dd81c032..01a82053 100644 --- a/src/components/hero.tsx +++ b/src/components/hero.tsx @@ -1,37 +1,163 @@ -export const Hero = () => { +import { motion, AnimatePresence, useReducedMotion } from 'framer-motion'; +import React, { Component, Suspense, lazy, useState, useEffect, useCallback } from 'react'; +import type { ReactNode } from 'react'; + +const DNAScene = lazy(() => import('./dna-scene')); + +const BASE = import.meta.env.BASE_URL.replace(/\/$/, ''); + +class SceneErrorBoundary extends Component< + { fallback: ReactNode; children: ReactNode }, + { hasError: boolean } +> { + state = { hasError: false }; + static getDerivedStateFromError() { return { hasError: true }; } + componentDidCatch(error: Error) { console.warn('3D scene failed:', error.message); } + render() { + if (this.state.hasError) return this.props.fallback; + return this.props.children; + } +} + +function SceneFallback() { return ( -
    -
    -
    -
    - Announcing our next round of funding.{' '} - - -
    -
    -
    -

    - Data to enrich your online business -

    -

    - Anim aute id magna aliqua ad ad non deserunt sunt. Qui irure qui lorem cupidatat commodo. Elit sunt amet - fugiat veniam occaecat fugiat aliqua. -

    - + ); +} + +const ROTATING_WORDS = ['life science', 'genomics', 'bioinformatics', 'biomedical', 'proteomics']; +const ROTATE_INTERVAL = 3000; + +function RotatingWord({ shouldReduceMotion }: { shouldReduceMotion: boolean | null }) { + const [index, setIndex] = useState(0); + + const next = useCallback(() => { + setIndex(i => (i + 1) % ROTATING_WORDS.length); + }, []); + + useEffect(() => { + if (shouldReduceMotion) return; + const id = setInterval(next, ROTATE_INTERVAL); + return () => clearInterval(id); + }, [shouldReduceMotion, next]); + + const word = ROTATING_WORDS[index]; + + if (shouldReduceMotion) { + return {word}; + } + + return ( + + + + {word} + + + + ); +} + +export function Hero() { + const shouldReduceMotion = useReducedMotion(); + + const fadeUp = shouldReduceMotion + ? {} + : { initial: { opacity: 0, y: 30 }, animate: { opacity: 1, y: 0 } }; + + return ( +
    + {/* Background gradient */} + - ) -} \ No newline at end of file +
    + ); +} + +export default Hero; diff --git a/src/components/highlights-carousel.tsx b/src/components/highlights-carousel.tsx new file mode 100644 index 00000000..624c8504 --- /dev/null +++ b/src/components/highlights-carousel.tsx @@ -0,0 +1,164 @@ +import React, { useState, useEffect, useCallback, useRef } from 'react'; +import { motion, AnimatePresence, useReducedMotion } from 'framer-motion'; + +const BASE = import.meta.env.BASE_URL.replace(/\/$/, ''); + +interface Slide { + src: string; + alt: string; + caption?: string; +} + +export default function HighlightsCarousel({ slides }: { slides: Slide[] }) { + const [current, setCurrent] = useState(0); + const [paused, setPaused] = useState(false); + const [direction, setDirection] = useState(1); + const shouldReduceMotion = useReducedMotion(); + const timerRef = useRef>(); + const progressRef = useRef(null); + + const INTERVAL = 6000; + + const go = useCallback((idx: number) => { + setDirection(idx > current ? 1 : -1); + setCurrent(idx); + }, [current]); + + const next = useCallback(() => { + setDirection(1); + setCurrent(i => (i + 1) % slides.length); + }, [slides.length]); + + const prev = useCallback(() => { + setDirection(-1); + setCurrent(i => (i - 1 + slides.length) % slides.length); + }, [slides.length]); + + useEffect(() => { + if (paused || shouldReduceMotion) return; + timerRef.current = setTimeout(next, INTERVAL); + return () => clearTimeout(timerRef.current); + }, [current, paused, shouldReduceMotion, next]); + + const slide = slides[current]; + + const variants = shouldReduceMotion + ? { enter: {}, center: {}, exit: {} } + : { + enter: (d: number) => ({ x: d > 0 ? '100%' : '-100%', opacity: 0.5 }), + center: { x: 0, opacity: 1 }, + exit: (d: number) => ({ x: d > 0 ? '-30%' : '30%', opacity: 0 }), + }; + + return ( +
    setPaused(true)} + onMouseLeave={() => setPaused(false)} + role="region" + aria-label="Highlights carousel" + aria-roledescription="carousel" + > + {/* Main slide area */} +
    + + + {slide.alt} + {slide.caption && ( +
    +

    + {slide.caption} +

    +
    + )} +
    +
    + + {/* Side arrows — visible on hover */} +
    + + +
    +
    + + {/* Progress bar + controls */} +
    + {/* Segmented progress bar */} +
    + {slides.map((_, i) => ( + + ))} +
    + + {/* Pause */} + +
    +
    + ); +} diff --git a/src/components/navigation.tsx b/src/components/navigation.tsx index f9b6c5e6..f117f1af 100644 --- a/src/components/navigation.tsx +++ b/src/components/navigation.tsx @@ -1,23 +1,18 @@ -import { Dialog, DialogPanel } from '@headlessui/react' -import { Bars3Icon } from '@heroicons/react/24/outline' -import React, { Fragment, useEffect, useState } from "react"; -import { IoSearch } from "react-icons/io5"; +import { AnimatePresence, motion, useReducedMotion } from 'framer-motion' +import React, { Fragment, useEffect, useState, useCallback } from "react"; import CommandPalette from "./command-palette.tsx"; import ThemeToggle from "./theme-toggle.tsx"; +const SearchIcon = ({ className }: { className?: string }) => ( + +); + const BASE = import.meta.env.BASE_URL.replace(/\/$/, ''); const navigation = [ - { - href: `${BASE}/about`, - name: "About", - sections: [ - { id: "organization", name: "Organization" }, - { id: "funding-and-projects", name: "Funding & Projects" }, - { id: "impact", name: "Impact" }, - { id: "international-collaboration", name: "International Collaboration\n" }, - ] - }, + { href: `${BASE}/about`, name: "About" }, { href: `${BASE}/research-support`, name: "Research Support" }, { href: `${BASE}/services`, name: "Services" }, { href: `${BASE}/events`, name: "Events" }, @@ -26,154 +21,228 @@ const navigation = [ { href: `${BASE}/news`, name: "News" }, ]; -export const Navigation = ({ pathname }) => { +const useScrolled = (threshold = 20) => { + const [scrolled, setScrolled] = useState(false); + useEffect(() => { + const onScroll = () => setScrolled(window.scrollY > threshold); + onScroll(); + window.addEventListener('scroll', onScroll, { passive: true }); + return () => window.removeEventListener('scroll', onScroll); + }, [threshold]); + return scrolled; +}; +export const Navigation = ({ pathname }: { pathname: string }) => { const [mobileMenuOpen, setMobileMenuOpen] = useState(false); - const [open, setOpen] = useState(false); - - // If context menu is needed. - // const [sections, setSections] = useState([]); - // - // useEffect(() => { - // const ref = navigation.find(x => x.href === pathname); - // if (ref && ref.sections) { - // setSections(ref.sections) - // } - // }, [pathname]); + const [searchOpen, setSearchOpen] = useState(false); + const scrolled = useScrolled(); + const shouldReduceMotion = useReducedMotion(); + + const closeMobile = useCallback(() => setMobileMenuOpen(false), []); useEffect(() => { - console.log(pathname); - }, [ pathname]) + document.body.style.overflow = mobileMenuOpen ? 'hidden' : ''; + return () => { document.body.style.overflow = ''; }; + }, [mobileMenuOpen]); - const onSearchClick = () => { - setOpen(true); - }; + useEffect(() => { + const onKey = (e: KeyboardEvent) => { + if (e.key === 'Escape' && mobileMenuOpen) closeMobile(); + }; + document.addEventListener('keydown', onKey); + return () => document.removeEventListener('keydown', onKey); + }, [mobileMenuOpen, closeMobile]); return ( -
    - - -
    - -
    - + +
    +
    + +
    +
    + + {/* Spacer for fixed header */} + - -
    -
    + + + )} +
    ); - }; export default Navigation; diff --git a/src/components/organisation-marquee.tsx b/src/components/organisation-marquee.tsx new file mode 100644 index 00000000..2a546ed5 --- /dev/null +++ b/src/components/organisation-marquee.tsx @@ -0,0 +1,21 @@ +import React from 'react'; +import Universities from './universities'; + +export default function OrganisationMarquee() { + return ( +
    +
    +
    +

    + Five Organisations Across Norway +

    +

    + A collaboration between five leading institutions, combining expertise to advance + life science research and innovation. +

    +
    + +
    +
    + ); +} diff --git a/src/components/people.astro b/src/components/people.astro index 782916ec..6b40372b 100644 --- a/src/components/people.astro +++ b/src/components/people.astro @@ -1,6 +1,5 @@ --- import people from "../data/people.json"; -import { A } from "./elements"; type Org = { name: string; @@ -15,6 +14,8 @@ type Person = { "elixir-groups": Array<{ name: string; role: string }> } +const BASE = import.meta.env.BASE_URL.replace(/\/$/, ''); + const { elixirGroup, org, @@ -60,61 +61,67 @@ const filteredPeople = peopleWithMeta .filter(o => !org ? true : o["org-key"] === org) .filter(o => !elixirGroup ? true : o["elixir-groups"]?.find(sub)); -const resolveLayoutClass = () => { +const gridClass = (() => { switch (layout) { - case "three-col": - return "grid-cols-3"; - case "two-col": - return "grid-cols-2"; - default: - return "grid-cols-1"; + case "three-col": return "sm:grid-cols-2 lg:grid-cols-3"; + case "two-col": return "sm:grid-cols-2"; + default: return ""; } -} +})(); --- {isSummary ? ( - +
    +

    + 70+ people powering ELIXIR Norway +

    + + See everyone + + +
    ) : ( - + )}
    - diff --git a/src/components/sections/base-section.astro b/src/components/sections/base-section.astro index 1767f64f..1b445432 100644 --- a/src/components/sections/base-section.astro +++ b/src/components/sections/base-section.astro @@ -5,15 +5,19 @@ const { title, centered = true, marginTop } = Astro.props; const headingSlug = slugify(title.toLowerCase()); --- -
    -
    -

    +
    +
    +

    {title} -

    - +

    +
    + +
    -
    - +
    +
    diff --git a/src/components/sections/detailed-feature.astro b/src/components/sections/detailed-feature.astro index 90833ab6..56815a76 100644 --- a/src/components/sections/detailed-feature.astro +++ b/src/components/sections/detailed-feature.astro @@ -2,28 +2,23 @@ const { figSrc, figCaption } = Astro.props; --- -
    -
    -
    - +
    +
    +
    +
    -
    +
    Product screenshot -
    {figCaption}
    + {figCaption && ( +
    + {figCaption} +
    + )}
    -
    \ No newline at end of file +
    diff --git a/src/components/sections/latest-news.astro b/src/components/sections/latest-news.astro new file mode 100644 index 00000000..757892e3 --- /dev/null +++ b/src/components/sections/latest-news.astro @@ -0,0 +1,155 @@ +--- +import { getCollection } from "astro:content"; + +const BASE = import.meta.env.BASE_URL.replace(/\/$/, ''); + +const news = (await getCollection("news")) + .sort((a, b) => new Date(b.data.date).getTime() - new Date(a.data.date).getTime()) + .slice(0, 3); + +function resolveCoverUrl(articleId: string, coverSource: string): string { + const dir = articleId.replace(/\/?index(\.mdx?)?$/, ''); + const file = coverSource.replace(/^\.\//, ''); + return `${BASE}/content/news/${dir}/${file}`; +} + +function formatDate(dateStr: string): string { + const d = new Date(dateStr); + if (isNaN(d.getTime())) return dateStr; + return d.toLocaleDateString('en-GB', { day: 'numeric', month: 'short', year: 'numeric' }); +} + +function articleUrl(id: string): string { + const clean = id.replace(/\.mdx?$/, '').replace(/\/index$/, ''); + return `${BASE}/news/${clean}`; +} + +const [featured, ...rest] = news; +const featuredCover = featured?.data.cover?.source + ? resolveCoverUrl(featured.id, featured.data.cover.source) + : null; +--- + +
    +
    +
    +
    +

    + Latest News +

    +

    + Stay updated with the latest from ELIXIR Norway. +

    +
    + +
    + +
    + {/* Featured article — large card with image */} + {featured && ( + + {/* Background */} + {featuredCover ? ( + + ) : ( +
    + )} + + {/* Gradient overlay */} +
    + + {/* Content */} +
    + +

    + {featured.data.title} +

    +

    + {featured.data.summary} +

    + + Read article + + +
    +
    + )} + + {/* Secondary articles — stacked text cards */} +
    + {rest.map((article) => { + const hasCover = !!article.data.cover?.source; + const coverUrl = hasCover ? resolveCoverUrl(article.id, article.data.cover!.source) : null; + + return ( + + {/* Thumbnail */} + {hasCover && ( + + )} + +
    + +

    + {article.data.title} +

    +

    + {article.data.summary} +

    +
    + + +
    + ); + })} +
    +
    + + {/* Mobile "View all" */} + +
    +
    diff --git a/src/components/sections/services-overview.tsx b/src/components/sections/services-overview.tsx new file mode 100644 index 00000000..1686688f --- /dev/null +++ b/src/components/sections/services-overview.tsx @@ -0,0 +1,128 @@ +import React from 'react'; +import { motion, useReducedMotion } from 'framer-motion'; + +const BASE = import.meta.env.BASE_URL.replace(/\/$/, ''); + +interface Service { + title: string; + description: string; + icon: React.ReactNode; + color: string; + href: string; +} + +const services: Service[] = [ + { + title: 'Research Support', + description: 'Short and long-term support with bioinformatics analyses, programming and data management tasks.', + icon: , + color: '#3b82f6', + href: `${BASE}/research-support`, + }, + { + title: 'Services', + description: 'Analysis and management of life science data within marine, health, genomics, proteomics and more.', + icon: , + color: '#f47d20', + href: `${BASE}/services`, + }, + { + title: 'e-Infrastructure', + description: 'NeLS, the Norwegian e-Infrastructure for Life Sciences, for analysis, sharing, management and storage of life science data.', + icon: , + color: '#10b981', + href: `${BASE}/e-infrastructure`, + }, + { + title: 'Sensitive Data', + description: 'Archiving solutions for potentially identifiable human data with support on TSD, HUNT Cloud and SAFE.', + icon: , + color: '#8b5cf6', + href: `${BASE}/sensitive-data`, + }, +]; + +const container = { + hidden: {}, + show: { transition: { staggerChildren: 0.1, delayChildren: 0.2 } }, +}; + +const item = { + hidden: { opacity: 0, y: 24 }, + show: { opacity: 1, y: 0 }, +}; + +export default function ServicesOverview() { + const shouldReduceMotion = useReducedMotion(); + + return ( +
    +
    +
    + {/* Left — heading */} + +

    + Unlock the Power of Your Data +

    +

    + From comprehensive data management and analysis to secure storage and specialised support — everything you need to propel your life science research forward. +

    + + Explore all services + + +
    + + {/* Right — cards */} + + {services.map((svc) => ( + +
    + {svc.icon} +
    +

    + {svc.title} +

    +

    + {svc.description} +

    + + Learn more + + +
    + ))} +
    +
    +
    +
    + ); +} diff --git a/src/components/theme-toggle.tsx b/src/components/theme-toggle.tsx index eac47242..187a0110 100644 --- a/src/components/theme-toggle.tsx +++ b/src/components/theme-toggle.tsx @@ -1,47 +1,85 @@ +import { useState, useEffect } from 'react'; +import { motion, AnimatePresence, useReducedMotion } from 'framer-motion'; + export default function ThemeToggle() { - const onClick = () => { - const element = document.documentElement; - element.classList.toggle("dark"); - const isDark = element.classList.contains("dark"); - localStorage.setItem("theme", isDark ? "dark" : "light"); + const [isDark, setIsDark] = useState(false); + const shouldReduceMotion = useReducedMotion(); + + useEffect(() => { + setIsDark(document.documentElement.classList.contains('dark')); + }, []); + + const toggle = () => { + const el = document.documentElement; + el.classList.toggle('dark'); + const dark = el.classList.contains('dark'); + localStorage.setItem('theme', dark ? 'dark' : 'light'); + setIsDark(dark); }; + const iconVariants = shouldReduceMotion + ? { initial: {}, animate: {}, exit: {} } + : { + initial: { scale: 0, rotate: -90, opacity: 0 }, + animate: { scale: 1, rotate: 0, opacity: 1 }, + exit: { scale: 0, rotate: 90, opacity: 0 }, + }; + return ( - + + {isDark ? ( + + ) : ( + + )} + + ); } diff --git a/src/components/two-col-hero.tsx b/src/components/two-col-hero.tsx index 8b14ee20..abd1c0c8 100644 --- a/src/components/two-col-hero.tsx +++ b/src/components/two-col-hero.tsx @@ -9,35 +9,37 @@ type LandingComponent = FunctionComponent & { const TwoColHero: LandingComponent = ({ children }) => { return ( -
    +
    {children}
    ); }; -const Header = ({ children }) => ( -

    +const Header = ({ children }: PropsWithChildren) => ( +

    {children}

    ); TwoColHero.Header = Header; -const Description = ({ children }) => ( -
    -

    +const Description = ({ children }: PropsWithChildren) => ( +

    +

    {children}

    ); TwoColHero.Description = Description; -const Figure = ({ src, alt }) => ( - {alt} +const Figure = ({ src, alt }: { src: string; alt: string }) => ( +
    + {alt} +
    ); TwoColHero.Figure = Figure; diff --git a/src/components/universities.tsx b/src/components/universities.tsx index 854104ba..84d603c9 100644 --- a/src/components/universities.tsx +++ b/src/components/universities.tsx @@ -1,54 +1,61 @@ import React from "react"; +import { motion, useReducedMotion } from "framer-motion"; const BASE = import.meta.env.BASE_URL.replace(/\/$/, ''); -const Universities = () => { - return ( -
    - - - - - -
    - ); -} +const universities = [ + { name: 'University of Bergen', location: 'Bergen', logo: `${BASE}/assets/logos/orgs/uib.svg`, href: `${BASE}/about/bergen`, color: '#dc3545' }, + { name: 'University of Oslo', location: 'Oslo', logo: `${BASE}/assets/logos/orgs/uio.svg`, href: `${BASE}/about/oslo`, color: '#c8102e' }, + { name: 'UiT The Arctic University of Norway', location: 'Troms\u00f8', logo: `${BASE}/assets/logos/orgs/uit.svg`, href: `${BASE}/about/tromso`, color: '#003349' }, + { name: 'Norwegian University of Life Sciences', location: '\u00c5s', logo: `${BASE}/assets/logos/orgs/nmbu.svg`, href: `${BASE}/about/aas`, color: '#005f3b' }, + { name: 'Norwegian University of Science and Technology', location: 'Trondheim', logo: `${BASE}/assets/logos/orgs/ntnu.svg`, href: `${BASE}/about/trondheim`, color: '#00509e' }, +]; -const Entry = ({ src, alt, location, href }) => { - return ( - -
    - {alt -
    -

    {location}

    -
    - ); +const container = { + hidden: {}, + show: { transition: { staggerChildren: 0.1 } }, }; -export default Universities; +const item = { + hidden: { opacity: 0, y: 20 }, + show: { opacity: 1, y: 0 }, +}; + +export default function Universities() { + const shouldReduceMotion = useReducedMotion(); + + return ( + + {universities.map((uni) => ( + + {`${uni.name} + + {uni.location} + + + ))} + + ); +} diff --git a/src/content/about/index.mdx b/src/content/about/index.mdx index 4b73e9b6..931231db 100644 --- a/src/content/about/index.mdx +++ b/src/content/about/index.mdx @@ -3,82 +3,76 @@ layout: "../../layouts/page.astro" variant: "full" --- -import TwoColHero from "../../components/two-col-hero.tsx"; import BaseContentSection from "../../components/sections/base-section.astro"; import {Fragment} from "react"; import Universities from "../../components/universities.tsx"; import People from "../../components/people.astro"; -import SimpleIconCards from "../../components/simple-icon-cards.astro"; import DetailedFeature from "../../components/sections/detailed-feature.astro"; -import Data from "../../data/people.json"; -import PageLayout from "../../layouts/page.astro"; +import AboutHeroVisual from "../../components/about-hero-visual.tsx"; export const BASE = import.meta.env.BASE_URL.replace(/\/$/, ''); - - Collaborative Life Science Hub Linking Five Organisations to [ELIXIR - Europe](https://www.elixir-europe.org) - Coordinated from the [University of Bergen](https://www.uib.no/), ELIXIR Norway includes - subnodes at the [University of Oslo](https://www.uio.no/), the [Arctic University of Norway in - Tromsø](https://uit.no/), [NTNU Trondheim](https://www.ntnu.no/), and [NMBU Ås](https://www.nmbu.no/). This - intergovernmental network supports and advances life science research by integrating resources and expertise - nationwide. - - +
    +
    +

    Collaborative Life Science Hub Linking Five Organisations to ELIXIR Europe

    +

    Coordinated from the University of Bergen, ELIXIR Norway connects the University of Oslo, UiT Tromsø, NTNU, and NMBU into a national network — part of ELIXIR Europe's infrastructure for life science data.

    +
    +
    + +
    +
    - - ELIXIR Norway is structured into several roles and committees. It includes node leaders from - the partner universities in Norway, a node coordinator, coordinators for technical aspects, training, data management, and services, - a steering board with representatives from various universities, a scientific advisory committee with - international members, and a stakeholder panel featuring experts from academia and industry. - -
    - -
    -
    -

    Node Leaders

    - -
    -
    -

    Coordinators

    - -
    + ELIXIR Norway is organised across five partner universities, with dedicated leadership, coordination, and advisory committees guiding our national infrastructure. +
    + +
    -

    Steering Board

    - +

    Node Leaders

    +
    + +
    -
    -

    Scientific Advisory Committee

    - +
    +

    Coordinators

    +
    + +
    -
    -

    Stakeholder Panel

    - +
    +

    Steering Board

    +
    + +
    +
    +
    +

    Scientific Advisory Committee

    +
    + +
    -
    - +
    +

    Stakeholder Panel

    +
    + +
    +
    - - We often explain and communicate the impact of work funded by and through ELIXIR using impact areas. - All activities carried out under the umbrella of ELIXIR can be attached to one or more impact categories shown in the illustration. - These categories are useful to describe what ELIXIR-related activities are meant to achieve in terms of impact. - -
    -
    - Product screenshot -
    Adapted from Martin et al. (2021) [DOI: 10.1111/apce.12328] - (https://doi.org/10.1111/apce.12328)
    -
    -
    + We categorise the impact of ELIXIR-funded work into distinct areas. Every activity maps to one or more of the categories shown below. +
    + ELIXIR impact areas diagram +
    + Adapted from Martin et al. (2021) DOI: 10.1111/apce.12328 +
    +
    @@ -101,6 +95,8 @@ export const BASE = import.meta.env.BASE_URL.replace(/\/$/, ''); +
    + diff --git a/src/content/landing/index.mdx b/src/content/landing/index.mdx index b2346a91..dace86e8 100644 --- a/src/content/landing/index.mdx +++ b/src/content/landing/index.mdx @@ -3,9 +3,7 @@ layout: "../../layouts/page.astro" variant: "full" --- -import ThreeColumnHero from "../../components/three-column-hero.astro"; -import Carousel from "../../components/carousel.tsx"; -import slides from "../../data/slides.json"; +import Hero from "../../components/hero.tsx"; import TinyCardWithIconLeft from "../../components/tiny-card-with-icon-left.tsx"; import {IoMdHelpCircle} from "react-icons/io"; import {FaFingerprint, FaServer, FaTools} from "react-icons/fa"; @@ -14,25 +12,7 @@ import FeaturedNews from "../../components/featured-news.astro"; import GridFeature from "../../components/sections/grid-feature.astro"; import BasicFeature from "../../components/sections/basic-feature.astro"; - -
    - # ELIXIR Norway - - ELIXIR Norway is a national node of [ELIXIR](https://elixir-europe.org/), the pan-European - infrastructure for _biological information_, supporting life science research - and its translation to medicine, the environment, the bioindustries and society. - - ELIXIR Norway is funded by the [Research Council of Norway](https://www.forskningsradet.no/en/), - its partner institutions, and the [ELIXIR Hub](https://elixir-europe.org/about-us/who-we-are/hub). - ELIXIR Norway builds upon the Norwegian Bioinformatics Platform, which has - provided support and tools for Norwegian life science research for over two decades. -
    - -
    - # News - -
    -
    +
    diff --git a/src/pages/index.astro b/src/pages/index.astro index 8776a63a..a0342ead 100644 --- a/src/pages/index.astro +++ b/src/pages/index.astro @@ -1,6 +1,35 @@ --- -import LandingContent from "../content/landing/index.mdx"; -import { components } from "../components/elements"; +import BaseLayout from "../layouts/base.astro"; +import Hero from "../components/hero.tsx"; +import ServicesOverview from "../components/sections/services-overview.tsx"; +import LatestNews from "../components/sections/latest-news.astro"; +import HighlightsCarousel from "../components/highlights-carousel.tsx"; +import OrganisationMarquee from "../components/organisation-marquee.tsx"; +import slides from "../data/slides.json"; --- - + +
    + + +
    +
    +
    +

    + Highlights +

    +

    + Recent events, milestones, and initiatives from our network. +

    +
    + +
    +
    + + + + + + +
    +
    diff --git a/src/styles/global.scss b/src/styles/global.scss index bf140feb..bcf9f846 100644 --- a/src/styles/global.scss +++ b/src/styles/global.scss @@ -1,4 +1,4 @@ -@import url('https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@300..700&family=Sriracha&display=swap'); +@import url('https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;500;600;700&display=swap'); @import "animate.css"; @tailwind base; @@ -7,8 +7,17 @@ @layer base { - html, body { + html { + font-size: 16px; scroll-behavior: smooth; + + @media (min-width: 1536px) { font-size: 17px; } + @media (min-width: 1800px) { font-size: 19px; } + @media (min-width: 2560px) { font-size: 21px; } + @media (min-width: 3840px) { font-size: 24px; } + } + + html, body { text-rendering: geometricPrecision; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; @@ -26,8 +35,8 @@ @apply text-light-on-background dark:text-dark-on-background; } - .link, a { - @apply text-blue-600 dark:text-blue-300 hover:text-blue-300 dark:hover:text-blue-500; + .content a, .link { + @apply text-brand-secondary dark:text-brand-secondary hover:text-brand-secondary/70 dark:hover:text-brand-secondary/70 underline underline-offset-2 decoration-brand-secondary/30 hover:decoration-brand-secondary/60 transition-colors; } em, strong { diff --git a/tailwind.config.mjs b/tailwind.config.mjs index 095800d1..e1d092b0 100644 --- a/tailwind.config.mjs +++ b/tailwind.config.mjs @@ -9,31 +9,28 @@ export default { extend: { fontFamily: { sans: ['Space Grotesk', ...defaultTheme.fontFamily.sans], - emphasized: ['Sriracha', ...defaultTheme.fontFamily.sans] }, colors: { brand: { "primary": "#023452", - "secondary": "#F57D20", + "secondary": "#f47d20", + "grey": "#4d4848", + "green": "#bebf32", }, light: { - // Basic "background": colors.white, "surface": "#f8f9fa", - // Text - "on-background": colors.gray["900"], - "on-surface": colors.slate["700"], - "on-primary": "#F57D20" + "on-background": "#4d4848", + "on-surface": "#4d4848", + "on-primary": "#f47d20", }, dark: { - // Basics "background": "#121212", "surface": "#202020", - // Text "on-background": colors.slate["100"], "on-surface": colors.slate["200"], - "on-primary": colors.white - } + "on-primary": colors.white, + }, }, invert: { 25: '.25', @@ -41,7 +38,7 @@ export default { 75: '.75', 85: '.85', 95: '.95', - } + }, }, }, plugins: [ From a792b7320d41d27c150f6ef567713b568d6a3b81 Mon Sep 17 00:00:00 2001 From: Yasin Date: Mon, 9 Mar 2026 17:46:05 +0100 Subject: [PATCH 2/2] feat: redesign services, events, and news --- src/components/callout.tsx | 94 ++-- src/components/card.tsx | 11 +- src/components/navigation.tsx | 2 +- src/components/pricing.tsx | 101 ++-- src/components/project-filters.tsx | 150 ++++++ src/components/sections/services-overview.tsx | 2 +- src/components/tags-filter.tsx | 115 ++--- src/content/config.ts | 1 + .../index.mdx | 1 + .../index.mdx | 1 + .../2018/elixirno-newsletter-no-5/index.mdx | 1 + .../index.mdx | 1 + .../index.mdx | 1 + .../index.mdx | 1 + .../index.mdx | 1 + .../index.mdx | 1 + .../index.mdx | 1 + .../new-release-of-marref-and-mardb/index.mdx | 1 + .../index.mdx | 1 + .../index.mdx | 1 + .../index.mdx | 1 + .../index.mdx | 1 + .../biomeddata-kicked-off-today/index.mdx | 1 + .../index.mdx | 3 +- .../index.mdx | 1 + .../index.mdx | 1 + .../index.mdx | 1 + .../index.mdx | 1 + .../index.mdx | 1 + .../index.mdx | 1 + .../index.mdx | 1 + .../index.mdx | 1 + .../index.mdx | 1 + .../index.mdx | 1 + .../2020/join-elixir-europe-survey/index.mdx | 1 + .../index.mdx | 1 + .../metapipe-is-now-operational/index.mdx | 1 + .../index.mdx | 1 + .../index.mdx | 1 + .../index.mdx | 1 + .../index.mdx | 1 + .../index.mdx | 1 + .../index.mdx | 1 + .../2021/ai-and-protein-folding/index.mdx | 1 + .../index.mdx | 1 + .../index.mdx | 1 + .../index.mdx | 1 + .../index.mdx | 1 + .../index.mdx | 1 + .../index.mdx | 1 + .../index.mdx | 1 + .../index.mdx | 1 + .../index.mdx | 1 + .../index.mdx | 1 + .../index.mdx | 1 + .../index.mdx | 1 + .../fairification-of-genomic-tracks/index.mdx | 1 + .../index.mdx | 1 + .../index.mdx | 1 + .../new-version-of-salmobase-online/index.mdx | 1 + .../index.mdx | 1 + .../index.mdx | 1 + .../index.mdx | 1 + .../index.mdx | 1 + .../index.mdx | 1 + .../index.mdx | 1 + .../index.mdx | 1 + .../news/2021/open-access-week-2021/index.mdx | 1 + .../index.mdx | 1 + .../index.mdx | 1 + .../index.mdx | 1 + .../index.mdx | 1 + .../index.mdx | 1 + .../index.mdx | 1 + .../biomeddata-face2face-meeting/index.mdx | 1 + .../index.mdx | 1 + .../index.mdx | 1 + .../index.mdx | 1 + .../index.mdx | 1 + .../index.mdx | 1 + .../index.mdx | 1 + .../index.mdx | 1 + .../index.mdx | 1 + .../index.mdx | 1 + .../index.mdx | 1 + .../index.mdx | 1 + .../index.mdx | 1 + .../index.mdx | 1 + .../index.mdx | 1 + .../index.mdx | 1 + .../index.mdx | 1 + .../index.mdx | 1 + .../index.mdx | 1 + .../index.mdx | 1 + .../index.mdx | 1 + .../index.mdx | 1 + .../index.mdx | 1 + .../index.mdx | 1 + .../index.mdx | 1 + .../news/2024/elixir4-celebration/index.mdx | 1 + .../index.mdx | 1 + .../index.mdx | 1 + .../index.mdx | 1 + .../workpackage-2-face-2-face-2024/index.mdx | 1 + src/content/news/2025/ahm-europe/index.mdx | 1 + .../news/2025/call-for-services/index.mdx | 5 +- .../index.mdx | 1 + src/content/news/2025/elitma/index.mdx | 1 + .../elixir-industry-engagement-day/index.mdx | 1 + .../news/2025/eosc-entrust-workshop/index.mdx | 1 + .../index.mdx | 1 + src/content/news/2026/jaspar-cdr/index.mdx | 1 + src/content/services/carve-me/index.mdx | 18 +- src/content/services/chop-chop/index.mdx | 16 +- .../covid-19-data-portal-norway/index.mdx | 18 +- src/content/services/dsw/index.mdx | 30 +- src/content/services/edam/index.mdx | 18 +- src/content/services/fair-tracks/index.mdx | 20 +- src/content/services/fega-norway/index.mdx | 19 +- src/content/services/galaxy/index.mdx | 23 +- .../services/gsuite-hyperbrowser/index.mdx | 21 +- src/content/services/hunt-cloud/index.mdx | 22 +- src/content/services/immune-ml/index.mdx | 22 +- src/content/services/jaspar/index.mdx | 21 +- src/content/services/lice-base/index.mdx | 21 +- .../marine-metagenomics-portal/index.mdx | 77 +-- src/content/services/mir-gene-db/index.mdx | 23 +- src/content/services/nels/index.mdx | 22 +- src/content/services/rdm-kit/index.mdx | 25 +- src/content/services/safe/index.mdx | 25 +- src/content/services/salmo-base/index.mdx | 25 +- src/content/services/sars-cov2-db/index.mdx | 24 +- src/content/services/tsd/index.mdx | 26 +- src/content/services/uni-bind/index.mdx | 28 +- src/content/services/web-nma/index.mdx | 39 +- src/pages/events/index.astro | 183 ++++++-- src/pages/funding-and-projects/index.astro | 444 ++++++++++++------ src/pages/news/index.astro | 291 +++++++++++- src/pages/research-support.astro | 243 ++++++++-- src/pages/services/index.astro | 191 +++++--- src/pages/training/index.astro | 363 +++++++++++++- 141 files changed, 2137 insertions(+), 747 deletions(-) create mode 100644 src/components/project-filters.tsx diff --git a/src/components/callout.tsx b/src/components/callout.tsx index 742bc052..5c8c0939 100644 --- a/src/components/callout.tsx +++ b/src/components/callout.tsx @@ -1,54 +1,68 @@ import React from 'react'; -import { FaExclamationCircle } from "react-icons/fa"; -import { MdCancel, MdCheck, MdInfo } from "react-icons/md"; -const Callout = ({ variant = 'info', title, children }) => { - - const variants = { - info: { - bgColor: 'bg-blue-50 dark:bg-blue-800/25', - textColor: 'text-blue-800 dark:text-blue-200', - icon: MdInfo, - iconColor: 'text-blue-400 dark:text-blue-200', - }, - success: { - bgColor: 'bg-green-50', - textColor: 'text-green-800', - icon: MdCheck, - iconColor: 'text-green-400', - }, - warn: { - bgColor: 'bg-yellow-50', - textColor: 'text-yellow-800', - icon: FaExclamationCircle, - iconColor: 'text-yellow-400', - }, - danger: { - bgColor: 'bg-red-50', - textColor: 'text-red-800', - icon: MdCancel, - iconColor: 'text-red-400', - }, - }; +const variants = { + info: { + border: 'border-blue-400 dark:border-blue-500', + bg: 'bg-blue-50/50 dark:bg-blue-900/10', + title: 'text-blue-900 dark:text-blue-200', + text: 'text-blue-800 dark:text-blue-300', + icon: ( + + ), + }, + success: { + border: 'border-green-400 dark:border-green-500', + bg: 'bg-green-50/50 dark:bg-green-900/10', + title: 'text-green-900 dark:text-green-200', + text: 'text-green-800 dark:text-green-300', + icon: ( + + ), + }, + warn: { + border: 'border-yellow-400 dark:border-yellow-500', + bg: 'bg-yellow-50/50 dark:bg-yellow-900/10', + title: 'text-yellow-900 dark:text-yellow-200', + text: 'text-yellow-800 dark:text-yellow-300', + icon: ( + + ), + }, + danger: { + border: 'border-red-400 dark:border-red-500', + bg: 'bg-red-50/50 dark:bg-red-900/10', + title: 'text-red-900 dark:text-red-200', + text: 'text-red-800 dark:text-red-300', + icon: ( + + ), + }, +}; - const { bgColor, textColor, icon: Icon, iconColor } = variants[variant] || variants.info; +const Callout = ({ variant = 'info', title, children }) => { + const v = variants[variant] || variants.info; return ( -
    -
    -
    -
    -
    - {title &&

    {title}

    } -
    +
    +
    +
    {v.icon}
    +
    + {title &&

    {title}

    } +
    {children}
    ); - }; export default Callout; diff --git a/src/components/card.tsx b/src/components/card.tsx index a7120578..1b89b26c 100644 --- a/src/components/card.tsx +++ b/src/components/card.tsx @@ -10,13 +10,12 @@ export type CardTypeProps = { export default function Card({ title, icon: Icon, children, margin = true, className = "" }: CardTypeProps) { return ( -
    -
    - {Icon && } -

    {title}

    +
    +
    + {Icon && } +

    {title}

    -
    +
    {children}
    diff --git a/src/components/navigation.tsx b/src/components/navigation.tsx index f117f1af..6f4b70df 100644 --- a/src/components/navigation.tsx +++ b/src/components/navigation.tsx @@ -98,7 +98,7 @@ export const Navigation = ({ pathname }: { pathname: string }) => { - {tiers.map((tier, tierIdx) => ( +
    + {tiers.map((tier) => ( - ) + ); } diff --git a/src/components/project-filters.tsx b/src/components/project-filters.tsx new file mode 100644 index 00000000..b5771a95 --- /dev/null +++ b/src/components/project-filters.tsx @@ -0,0 +1,150 @@ +import React, { useEffect, useState, useCallback } from 'react'; + +export type FilterOption = { + id: string; + label: string; + count: number; +}; + +export type FilterGroup = { + key: string; + label: string; + options: FilterOption[]; +}; + +export default function ProjectFilters({ groups = [] }: { groups: FilterGroup[] }) { + const [selected, setSelected] = useState>>({}); + const [mobileOpen, setMobileOpen] = useState(false); + + useEffect(() => { + const params = new URLSearchParams(window.location.search); + const initial: Record> = {}; + groups.forEach(g => { + const vals = params.getAll(g.key); + if (vals.length) initial[g.key] = new Set(vals); + }); + setSelected(initial); + }, []); + + const notify = useCallback((next: Record>) => { + const params = new URLSearchParams(); + Object.entries(next).forEach(([key, vals]) => { + vals.forEach(v => params.append(key, v)); + }); + const qs = params.toString(); + window.history.replaceState(null, '', qs ? `?${qs}` : window.location.pathname); + window.dispatchEvent(new CustomEvent('filters-changed', { detail: next })); + }, []); + + const toggle = useCallback((groupKey: string, optionId: string) => { + setSelected(prev => { + const next = { ...prev }; + const set = new Set(prev[groupKey] || []); + if (set.has(optionId)) set.delete(optionId); + else set.add(optionId); + if (set.size === 0) delete next[groupKey]; + else next[groupKey] = set; + notify(next); + return next; + }); + }, [notify]); + + const clearAll = useCallback(() => { + setSelected({}); + notify({}); + }, [notify]); + + const activeCount = Object.values(selected).reduce((sum, s) => sum + s.size, 0); + const hasAnyFilter = activeCount > 0; + + const filterContent = ( +
    + {groups.map(group => ( +
    +

    + {group.label} +

    +
    + {group.options.map(opt => { + const isActive = selected[group.key]?.has(opt.id) || false; + return ( + + ); + })} +
    +
    + ))} + {hasAnyFilter && ( + + )} +
    + ); + + return ( + <> + {/* Mobile toggle button */} + + + {/* Mobile filter panel */} + {mobileOpen && ( +
    + {filterContent} +
    + )} + + {/* Desktop sidebar content */} +
    + {filterContent} +
    + + ); +} diff --git a/src/components/sections/services-overview.tsx b/src/components/sections/services-overview.tsx index 1686688f..d6787589 100644 --- a/src/components/sections/services-overview.tsx +++ b/src/components/sections/services-overview.tsx @@ -98,7 +98,7 @@ export default function ServicesOverview() { href={svc.href} variants={shouldReduceMotion ? undefined : item} transition={{ duration: 0.5, ease: 'easeOut' }} - className="group relative px-5 py-5 rounded-xl border border-gray-100 dark:border-gray-800 bg-transparent transition-all duration-300 hover:bg-white hover:border-gray-200/80 dark:hover:bg-dark-surface dark:hover:border-gray-700/50 hover:shadow-md hover:shadow-black/[0.04] dark:hover:shadow-black/20 hover:-translate-y-0.5 focus:outline-none focus-visible:ring-2 focus-visible:ring-brand-secondary" + className="group relative px-5 py-5 rounded-xl border border-gray-100 dark:border-gray-800 bg-transparent transition-[border-color,box-shadow,background-color] duration-200 hover:bg-white hover:border-gray-200/80 dark:hover:bg-dark-surface dark:hover:border-gray-700/50 hover:shadow-[0_0_0_3px_rgba(244,125,32,0.08)] focus:outline-none focus-visible:ring-2 focus-visible:ring-brand-secondary" >
    ([]); +export default function TagsFilter({ tags = [] }: { tags: Tag[] }) { + const [selected, setSelected] = useState>(new Set()); useEffect(() => { const params = new URLSearchParams(window.location.search); - const selectedFromUrl = params.getAll('tags').map(String); - setSelectedTags(selectedFromUrl); + const fromUrl = params.getAll('tags'); + if (fromUrl.length) setSelected(new Set(fromUrl)); }, []); - const updateUrl = (newSelectedTags: (number | string)[]) => { + const notify = useCallback((next: Set) => { const params = new URLSearchParams(); - newSelectedTags.forEach(tagId => params.append('tags', tagId.toString())); - window.history.replaceState( - null, - '', - `${window.location.pathname}?${params.toString()}` - ); - // Dispatch a custom event to notify anyone about the URL change - window.dispatchEvent(new Event('url-change')); - }; + next.forEach(t => params.append('tags', t)); + const qs = params.toString(); + window.history.replaceState(null, '', qs ? `?${qs}` : window.location.pathname); + window.dispatchEvent(new CustomEvent('tags-changed', { detail: [...next] })); + }, []); - const toggleTag = (id: number | string) => { - console.assert(!!id, "TagsFilter: {id} cannot be null|undefined") - setSelectedTags((prevSelectedTags) => { - const newSelectedTags = prevSelectedTags.includes(id) - ? prevSelectedTags.filter((tagId) => tagId !== id) - : [...prevSelectedTags, id]; - // Update URL with new selected tags - updateUrl(newSelectedTags); - return newSelectedTags; + const handleToggle = useCallback((id: string) => { + setSelected(prev => { + const next = new Set(prev); + if (next.has(id)) next.delete(id); + else next.add(id); + notify(next); + return next; }); - }; + }, [notify]); + + const handleClear = useCallback(() => { + setSelected(new Set()); + notify(new Set()); + }, [notify]); + + const isAllSelected = selected.size === 0; return ( -
    - {tags.map(({ id, label, value }) => { - const isSelected = selectedTags.includes(id); +
    + + {tags.map(tag => { + const isActive = selected.has(tag.id); return ( -
    - -
    + ); })} - +
    ); } diff --git a/src/content/config.ts b/src/content/config.ts index f26fae5e..7520cd84 100644 --- a/src/content/config.ts +++ b/src/content/config.ts @@ -86,6 +86,7 @@ const news = defineCollection({ source: z.string(), }).optional(), summary: z.string(), + tags: z.array(z.string()).optional(), }), }); diff --git a/src/content/news/2018/elixir-galaxy-administrator-workshop-in-oslo/index.mdx b/src/content/news/2018/elixir-galaxy-administrator-workshop-in-oslo/index.mdx index 78104215..3816dba9 100644 --- a/src/content/news/2018/elixir-galaxy-administrator-workshop-in-oslo/index.mdx +++ b/src/content/news/2018/elixir-galaxy-administrator-workshop-in-oslo/index.mdx @@ -6,6 +6,7 @@ date: "Jan 13, 2018" cover: source: ./cover.png summary: "The European Galaxy Administrator Workshop was hosted by ELIXIR Norway in Oslo, 8-12 January 2018, and included five international instructors and 35 national and international participants." +tags: [training-events, infrastructure] --- The European Galaxy Administrator Workshop was hosted by ELIXIR Norway in Oslo, diff --git a/src/content/news/2018/elixir-norway-all-hands-23-24-october-2018/index.mdx b/src/content/news/2018/elixir-norway-all-hands-23-24-october-2018/index.mdx index 140f65ba..a5c5af1a 100644 --- a/src/content/news/2018/elixir-norway-all-hands-23-24-october-2018/index.mdx +++ b/src/content/news/2018/elixir-norway-all-hands-23-24-october-2018/index.mdx @@ -6,6 +6,7 @@ date: "Oct 30, 2018" cover: source: ./cover.png summary: "The yearly project meeting ('All Hands') of ELIXIR Norway took place in the scenic town of Drøbak on October 23-24 2018. During these two days, we had exciting plenary updates from all work packages, in addition to internal and cross work package meetings." +tags: [meetings] --- The yearly project meeting ("All Hands") of ELIXIR Norway took place in diff --git a/src/content/news/2018/elixirno-newsletter-no-5/index.mdx b/src/content/news/2018/elixirno-newsletter-no-5/index.mdx index 127cfdb5..9f98835d 100644 --- a/src/content/news/2018/elixirno-newsletter-no-5/index.mdx +++ b/src/content/news/2018/elixirno-newsletter-no-5/index.mdx @@ -4,6 +4,7 @@ variant: "article" title: "ELIXIR.NO newsletter no 5" date: "Jan 25, 2018" summary: "No summary found" +tags: [meetings] --- ELIXIR.NO newsletter number 5, January 2018, is now out. diff --git a/src/content/news/2018/fair-data-management-in-molecular-life-sciences/index.mdx b/src/content/news/2018/fair-data-management-in-molecular-life-sciences/index.mdx index 0aac72f1..073d21e1 100644 --- a/src/content/news/2018/fair-data-management-in-molecular-life-sciences/index.mdx +++ b/src/content/news/2018/fair-data-management-in-molecular-life-sciences/index.mdx @@ -6,6 +6,7 @@ date: "Dec 12, 2018" cover: source: ./cover.png summary: "See how ELIXIR may help, in the latest edition of NBS Nytt, the journal of the Norwegian Biochemical Society." +tags: [fair-data, open-science] --- **[See how ELIXIR may help](./fair-dm-nbs-nytt-4-2018-pages-13-14.pdf), in the latest edition of NBS Nytt, the journal of the Norwegian Biochemical Society.** diff --git a/src/content/news/2018/first-hands-on-workshop-in-marine-metagenomics-organised-in-troms/index.mdx b/src/content/news/2018/first-hands-on-workshop-in-marine-metagenomics-organised-in-troms/index.mdx index 0a39dd78..b2c15fc2 100644 --- a/src/content/news/2018/first-hands-on-workshop-in-marine-metagenomics-organised-in-troms/index.mdx +++ b/src/content/news/2018/first-hands-on-workshop-in-marine-metagenomics-organised-in-troms/index.mdx @@ -7,6 +7,7 @@ cover: source: ./cover.png caption: "Taxonomic Profile" summary: "The first hands-on workshop in Marine Metagenomics was organised in Tromsø, November 26-30. In the workshop, the participants were introduced to the research field of metagenomcis, with focus on samples from the marine environment." +tags: [training-events, genomic-data] --- **The first hands-on workshop in Marine Metagenomics was organised in Tromsø, November 26-30\. In the workshop, the participants were introduced to the research field of metagenomcis, with focus on samples from the marine environment.** diff --git a/src/content/news/2019/elixir-excelerate-all-hands-meeting-2019/index.mdx b/src/content/news/2019/elixir-excelerate-all-hands-meeting-2019/index.mdx index 1ae1eccf..7cafb460 100644 --- a/src/content/news/2019/elixir-excelerate-all-hands-meeting-2019/index.mdx +++ b/src/content/news/2019/elixir-excelerate-all-hands-meeting-2019/index.mdx @@ -4,6 +4,7 @@ variant: "article" title: "ELIXIR - EXCELERATE All Hands meeting 2019" date: "Jun 6, 2019" summary: "The fifth ELIXIR All Hands meeting will take place 17 -20 June 2019 in Lisbon." +tags: [meetings] --- **The fifth ELIXIR All Hands meeting will take place 17 -20 June 2019 in Lisbon.** diff --git a/src/content/news/2019/elixir-norway-at-the-elixir-all-hands-meeting-in-lisbon/index.mdx b/src/content/news/2019/elixir-norway-at-the-elixir-all-hands-meeting-in-lisbon/index.mdx index c6cd7715..7a8fead8 100644 --- a/src/content/news/2019/elixir-norway-at-the-elixir-all-hands-meeting-in-lisbon/index.mdx +++ b/src/content/news/2019/elixir-norway-at-the-elixir-all-hands-meeting-in-lisbon/index.mdx @@ -6,6 +6,7 @@ date: "Jun 21, 2019" cover: source: ./cover.png summary: "ELIXIR Norway was well represented at the 5th ELIXIR All Hands meeting, which took place in Lisbon 17-20 June." +tags: [meetings, services] --- **ELIXIR Norway was well represented at the 5th ELIXIR All Hands meeting, diff --git a/src/content/news/2019/elixir-norway-at-the-elixir-innovation-and-sme-forum-in-stockholm-5-6-march/index.mdx b/src/content/news/2019/elixir-norway-at-the-elixir-innovation-and-sme-forum-in-stockholm-5-6-march/index.mdx index cff28a73..5462e428 100644 --- a/src/content/news/2019/elixir-norway-at-the-elixir-innovation-and-sme-forum-in-stockholm-5-6-march/index.mdx +++ b/src/content/news/2019/elixir-norway-at-the-elixir-innovation-and-sme-forum-in-stockholm-5-6-march/index.mdx @@ -6,6 +6,7 @@ date: "Feb 26, 2019" cover: source: ./cover.png summary: "ELIXIR Norway participates in the nextELIXIR Innovation and SME Forum:Genomics and associated data innational healthcare initiatives, which takes place in Stockholm, 5-6 March. Professor Eivind Hovig (UiO) will present an overview ofELIXIR Norway’s involvement in national healthcare initiatives." +tags: [meetings, open-science] --- **ELIXIR Norway participates in the next [ELIXIR Innovation and SME diff --git a/src/content/news/2019/highlights-from-elixir-norway-all-hands-2019/index.mdx b/src/content/news/2019/highlights-from-elixir-norway-all-hands-2019/index.mdx index 2cfd2196..3246ddde 100644 --- a/src/content/news/2019/highlights-from-elixir-norway-all-hands-2019/index.mdx +++ b/src/content/news/2019/highlights-from-elixir-norway-all-hands-2019/index.mdx @@ -6,6 +6,7 @@ date: "Oct 29, 2019" cover: source: ./cover.png summary: "Our annual 'All Hands' meeting took place during four consecutive days in Oslo, 22-25 October, this year with a strong flavour of data management, thanks to our two new grants BioMedData and Converge!" +tags: [meetings, data-management] --- **Our annual "All Hands" meeting took place during four consecutive days diff --git a/src/content/news/2019/new-release-of-marref-and-mardb/index.mdx b/src/content/news/2019/new-release-of-marref-and-mardb/index.mdx index c19b1102..481cb624 100644 --- a/src/content/news/2019/new-release-of-marref-and-mardb/index.mdx +++ b/src/content/news/2019/new-release-of-marref-and-mardb/index.mdx @@ -4,6 +4,7 @@ variant: "article" title: "New release of MarRef and MarDB" date: "Jun 27, 2019" summary: "We are pleased to announce the first release ofMarFun, a database for marine fungi, and also an update ofMarRefandMarDB." +tags: [services, genomic-data] --- **We are pleased to announce the first release of diff --git a/src/content/news/2019/norway-signs-the-1-million-genomes-declaration/index.mdx b/src/content/news/2019/norway-signs-the-1-million-genomes-declaration/index.mdx index a1edb0d9..5a7ed7ed 100644 --- a/src/content/news/2019/norway-signs-the-1-million-genomes-declaration/index.mdx +++ b/src/content/news/2019/norway-signs-the-1-million-genomes-declaration/index.mdx @@ -7,6 +7,7 @@ cover: source: ./cover.png caption: "Image from European Commission" summary: "We are very happy that Norway recently signed the European Declaration 'Towardsaccess to at least 1 Million sequenced genomes in the EU by 2022'. This initiative aims to link genomic information across borders, and ELIXIR Norwayis ready to contribute with crucial infrastructure in this effort, along with ELIXIR nodes all over Europe." +tags: [genomic-data, open-science, funding] --- **We are very happy that Norway recently signed the European Declaration [Towards access to at least 1 Million sequenced genomes in the EU by 2022](https://ec.europa.eu/digital-single-market/en/news/norway-signs-1-million-genomes-declaration)'. This initiative aims to link genomic information across borders, and ELIXIR Norway is ready to contribute with crucial infrastructure in this effort, along with ELIXIR nodes all over Europe.** diff --git a/src/content/news/2019/please-help-us-improve-our-bioinformatics-services/index.mdx b/src/content/news/2019/please-help-us-improve-our-bioinformatics-services/index.mdx index a35810e7..490e84fa 100644 --- a/src/content/news/2019/please-help-us-improve-our-bioinformatics-services/index.mdx +++ b/src/content/news/2019/please-help-us-improve-our-bioinformatics-services/index.mdx @@ -4,6 +4,7 @@ variant: "article" title: "Please help us improve our bioinformatics services!" date: "Oct 31, 2019" summary: "ELIXIR Norway is now performing auser surveyto evaluate and identify gaps in our bioinformatics services." +tags: [services] --- **ELIXIR Norway is now performing a [user survey](https://bit.ly/ELIXIRsurvey) to evaluate and identify gaps in our bioinformatics services.** diff --git a/src/content/news/2020/2nd-round-of-elixir-fairdom-staff-exchange/index.mdx b/src/content/news/2020/2nd-round-of-elixir-fairdom-staff-exchange/index.mdx index 20a7b1f4..95bebb07 100644 --- a/src/content/news/2020/2nd-round-of-elixir-fairdom-staff-exchange/index.mdx +++ b/src/content/news/2020/2nd-round-of-elixir-fairdom-staff-exchange/index.mdx @@ -4,6 +4,7 @@ variant: "article" title: "2nd round of ELIXIR-FAIRDOM staff exchange" date: "Dec 9, 2020" summary: "ELIXIR Norway and Digital Life Norway have been hosting the 2nd round of the ELIXIR-FAIRDOM staff exchange." +tags: [data-management, fair-data] --- **ELIXIR Norway and Digital Life Norway have been hosting the 2nd round of the [ELIXIR-FAIRDOM staff exchange](https://elixir-europe.org/activities/fairdom).** diff --git a/src/content/news/2020/a-story-of-success-elixir-norway-and-the-data-steward-wizard/index.mdx b/src/content/news/2020/a-story-of-success-elixir-norway-and-the-data-steward-wizard/index.mdx index cec84917..35fc5785 100644 --- a/src/content/news/2020/a-story-of-success-elixir-norway-and-the-data-steward-wizard/index.mdx +++ b/src/content/news/2020/a-story-of-success-elixir-norway-and-the-data-steward-wizard/index.mdx @@ -4,6 +4,7 @@ variant: "article" title: "A story of success: ELIXIR Norway and the Data Steward Wizard" date: "Sep 2, 2020" summary: "ELIXIR Norway, in collaboration with theCentre for Digital Life Norway, has explored methods to support Norwegian researchers in data management planning for several years. After we got to know the Data Steward Wizard (DSW) in 2018, we started to use it fully in production in 2019 to enable assisted data management planning (DMP) for Life-Scientists across Norway. TheData Steward Wizardprovides us with the unique opportunity to facilitate both the generation of DMPs by the research community and at the same time to increase awareness for research data management." +tags: [data-management, fair-data] --- ELIXIR Norway, in collaboration with the [Centre for Digital Life Norway](https://digitallifenorway.org/gb/ "Centre diff --git a/src/content/news/2020/biomeddata-kicked-off-today/index.mdx b/src/content/news/2020/biomeddata-kicked-off-today/index.mdx index a15c57a1..e4c75c7f 100644 --- a/src/content/news/2020/biomeddata-kicked-off-today/index.mdx +++ b/src/content/news/2020/biomeddata-kicked-off-today/index.mdx @@ -6,6 +6,7 @@ date: "Jun 17, 2020" cover: source: ./cover.png summary: "Today, 11 Life Science Research Infrastructure programs in Norway kicked off the BioMedData project to build an open and collaborative framework for the exchange of Life Science Data in Norway." +tags: [funding, data-management] --- **Today, 11 Life Science Research Infrastructure programs in Norway kicked off the BioMedData project to build an open and collaborative framework for the exchange of Life Science Data in Norway.** diff --git a/src/content/news/2020/elixir-builds-capacity-in-performance-and-impact-evaluation/index.mdx b/src/content/news/2020/elixir-builds-capacity-in-performance-and-impact-evaluation/index.mdx index a7657f57..3d4018af 100644 --- a/src/content/news/2020/elixir-builds-capacity-in-performance-and-impact-evaluation/index.mdx +++ b/src/content/news/2020/elixir-builds-capacity-in-performance-and-impact-evaluation/index.mdx @@ -5,7 +5,8 @@ title: "ELIXIR builds capacity in performance and impact evaluation" date: "Feb 10, 2020" cover: source: ./cover.png -summary: "Convened byBioData.pt, the first workshop of the ELIXIR-funded Staff Exchange Project entitled “Empowering ELIXIR Nodes to measure and communicate their performance and impact” took place on 30 January 2020, in Lisbon (Portugal)" +summary: “Convened byBioData.pt, the first workshop of the ELIXIR-funded Staff Exchange Project entitled “Empowering ELIXIR Nodes to measure and communicate their performance and impact” took place on 30 January 2020, in Lisbon (Portugal)” +tags: [“training-events”, “infrastructure”] --- Convened by [BioData.pt](https://biodata.pt), the first workshop of the ELIXIR-funded diff --git a/src/content/news/2020/elixir-converge-a-new-project-to-streamline-data-management-practices/index.mdx b/src/content/news/2020/elixir-converge-a-new-project-to-streamline-data-management-practices/index.mdx index 544d4e87..6ccdfb2f 100644 --- a/src/content/news/2020/elixir-converge-a-new-project-to-streamline-data-management-practices/index.mdx +++ b/src/content/news/2020/elixir-converge-a-new-project-to-streamline-data-management-practices/index.mdx @@ -6,6 +6,7 @@ date: "Feb 5, 2020" cover: source: ./cover.png summary: "After the completion of the successful ELIXIR-EXCELERATE project, which provided ELIXIR with solid foundations, this week ELIXIR kicks off a new project to support the provision of data management across Europe. ELIXIR Norway is proud to be a part of ELIXIR-CONVERGE, and will lead a work package and a demonstrator in this project." +tags: [funding, data-management] --- After the completion of the successful ELIXIR-EXCELERATE project, which provided ELIXIR with diff --git a/src/content/news/2020/elixir-norway-all-hands-2020-goes-digital/index.mdx b/src/content/news/2020/elixir-norway-all-hands-2020-goes-digital/index.mdx index 4eb325fc..e191a970 100644 --- a/src/content/news/2020/elixir-norway-all-hands-2020-goes-digital/index.mdx +++ b/src/content/news/2020/elixir-norway-all-hands-2020-goes-digital/index.mdx @@ -4,6 +4,7 @@ variant: "article" title: "ELIXIR Norway All hands 2020 goes digital" date: "Sep 21, 2020" summary: "The annual meeting for all staff/hands involved in ELIXIR Norway will go digital 21-23 October. We are very sorry that we will not be able to meet in person in Trondheim this year, but wewill do our best to create an engaging digital event and to maintain the good team spirit." +tags: [meetings] --- **The annual meeting for all staff/hands involved in ELIXIR Norway will go digital diff --git a/src/content/news/2020/elixir-norway-has-a-new-training-coordinator/index.mdx b/src/content/news/2020/elixir-norway-has-a-new-training-coordinator/index.mdx index 51da46c9..c0872b17 100644 --- a/src/content/news/2020/elixir-norway-has-a-new-training-coordinator/index.mdx +++ b/src/content/news/2020/elixir-norway-has-a-new-training-coordinator/index.mdx @@ -4,6 +4,7 @@ variant: "article" title: "ELIXIR Norway has a new Training coordinator" date: "Oct 4, 2020" summary: "From October 1st. Erik Hjerde took over the role as the Training coordinator for ELIXIR Norway." +tags: [training-events] --- **From October 1st. Erik Hjerde took over the role as the Training diff --git a/src/content/news/2020/elixir-norway-hosts-analysis-workflows-for-sars-cov-2-sequence-data/index.mdx b/src/content/news/2020/elixir-norway-hosts-analysis-workflows-for-sars-cov-2-sequence-data/index.mdx index ed4ad10a..2366b6ed 100644 --- a/src/content/news/2020/elixir-norway-hosts-analysis-workflows-for-sars-cov-2-sequence-data/index.mdx +++ b/src/content/news/2020/elixir-norway-hosts-analysis-workflows-for-sars-cov-2-sequence-data/index.mdx @@ -4,6 +4,7 @@ variant: "article" title: "ELIXIR Norway hosts analysis workflows for SARS-CoV-2 sequence data" date: "Apr 14, 2020" summary: "In the writing moment 414 complete SARS-CoV-2 genome sequences are accessible in NCBI and many more are being sequenced world-wide. In addition, the sequence data is being made publicly available." +tags: [covid-19, infrastructure] --- **In the writing moment 414 complete SARS-CoV-2 genome sequences are accessible in NCBI and many more are being sequenced world-wide. In addition, the sequence data is being made publicly available.** diff --git a/src/content/news/2020/elixir-norway-modellers-propose-covid-19-testing-scheme/index.mdx b/src/content/news/2020/elixir-norway-modellers-propose-covid-19-testing-scheme/index.mdx index f896ae96..5de6cce6 100644 --- a/src/content/news/2020/elixir-norway-modellers-propose-covid-19-testing-scheme/index.mdx +++ b/src/content/news/2020/elixir-norway-modellers-propose-covid-19-testing-scheme/index.mdx @@ -6,6 +6,7 @@ date: "Apr 30, 2020" cover: source: ./cover.png summary: "The COVID-19 epidemic has caused significant societal challenges, and it is of utmost important to identify approaches to mitigate the impact of the disease. The ELIXIR Norway expertise in computational modeling of biological systems can aid in this process." +tags: [covid-19] --- The COVID-19 epidemic has caused significant societal challenges, and it is diff --git a/src/content/news/2020/elixir-open-science-and-covid-19/index.mdx b/src/content/news/2020/elixir-open-science-and-covid-19/index.mdx index 61734029..3c1b85b2 100644 --- a/src/content/news/2020/elixir-open-science-and-covid-19/index.mdx +++ b/src/content/news/2020/elixir-open-science-and-covid-19/index.mdx @@ -6,6 +6,7 @@ date: "Mar 25, 2020" cover: source: ./cover.png summary: "Open data and science is key against COVID-19, have a look at the efforts and resources provided by ELIXIR and ELIXIR Norway." +tags: [covid-19, open-science] --- **Open data and science is key against COVID-19, have a look at the efforts diff --git a/src/content/news/2020/feide-access-to-elixir-norway-data-management-tool-dsw/index.mdx b/src/content/news/2020/feide-access-to-elixir-norway-data-management-tool-dsw/index.mdx index b4b2163b..a31ceea2 100644 --- a/src/content/news/2020/feide-access-to-elixir-norway-data-management-tool-dsw/index.mdx +++ b/src/content/news/2020/feide-access-to-elixir-norway-data-management-tool-dsw/index.mdx @@ -6,6 +6,7 @@ date: "May 27, 2020" cover: source: ./cover.png summary: "It is now possible to log on to ELIXIR Norway Data Stewardship Wizard, the data management planning tool for smart generation of DMPs using FEIDE" +tags: [data-management, infrastructure] --- **It is now possible to log on to ELIXIR Norway Data Stewardship Wizard, the data management planning tool for smart generation of DMPs using FEIDE** diff --git a/src/content/news/2020/five-nels-galaxy-instances-merge-into-one-in-october-2020/index.mdx b/src/content/news/2020/five-nels-galaxy-instances-merge-into-one-in-october-2020/index.mdx index e8ec952d..3e1c4733 100644 --- a/src/content/news/2020/five-nels-galaxy-instances-merge-into-one-in-october-2020/index.mdx +++ b/src/content/news/2020/five-nels-galaxy-instances-merge-into-one-in-october-2020/index.mdx @@ -4,6 +4,7 @@ variant: "article" title: "Five NeLS Galaxy instances merge into one in October 2020" date: "Jul 7, 2020" summary: "We have good news to all users of NeLS Galaxy" +tags: [infrastructure] --- **We have good news to all users of NeLS Galaxy** diff --git a/src/content/news/2020/how-open-databases-turn-out-to-be-crucial-in-the-fight-against-covid-19/index.mdx b/src/content/news/2020/how-open-databases-turn-out-to-be-crucial-in-the-fight-against-covid-19/index.mdx index d7e07338..4d0299cc 100644 --- a/src/content/news/2020/how-open-databases-turn-out-to-be-crucial-in-the-fight-against-covid-19/index.mdx +++ b/src/content/news/2020/how-open-databases-turn-out-to-be-crucial-in-the-fight-against-covid-19/index.mdx @@ -6,6 +6,7 @@ date: "Dec 17, 2020" cover: source: ./cover.png summary: "The last year has effectively demonstrated the importance of sharing data during an ongoing pandemic. Currently, we also benefit from all the data that has been shared openly prior to the Covid-19 pandemic. Read our piece onhow the fight against Covid-19 has relied on open databasesin the last number of NBS-Nytt, the journal of theNorwegian Biochemical Society." +tags: [covid-19, open-science] --- **The last year has effectively demonstrated the importance of sharing data diff --git a/src/content/news/2020/interested-in-contributing-a-bioinformatics-service-to-elixir/index.mdx b/src/content/news/2020/interested-in-contributing-a-bioinformatics-service-to-elixir/index.mdx index 3a4024f4..833c0b19 100644 --- a/src/content/news/2020/interested-in-contributing-a-bioinformatics-service-to-elixir/index.mdx +++ b/src/content/news/2020/interested-in-contributing-a-bioinformatics-service-to-elixir/index.mdx @@ -4,6 +4,7 @@ variant: "article" title: "Interested in contributing a bioinformatics service to ELIXIR?" date: "Nov 2, 2020" summary: "ELIXIR Norway now invites groups at the five partner institutions (UiB, UiT, NTNU, UiO and NMBU) to propose their bioinformatics tools and resources to be included as ELIXIR services." +tags: [services] --- **ELIXIR Norway now invites groups at the five partner institutions diff --git a/src/content/news/2020/join-elixir-europe-survey/index.mdx b/src/content/news/2020/join-elixir-europe-survey/index.mdx index 8941fe4c..4b0e07d7 100644 --- a/src/content/news/2020/join-elixir-europe-survey/index.mdx +++ b/src/content/news/2020/join-elixir-europe-survey/index.mdx @@ -4,6 +4,7 @@ variant: "article" title: "Join ELIXIR Europe Survey" date: "Nov 30, 2020" summary: "Identifying gaps in current training" +tags: [training-events] --- **Identifying gaps in current training** diff --git a/src/content/news/2020/kick-off-meeting-for-biomeddata-ri-pals/index.mdx b/src/content/news/2020/kick-off-meeting-for-biomeddata-ri-pals/index.mdx index e317f461..f3b82414 100644 --- a/src/content/news/2020/kick-off-meeting-for-biomeddata-ri-pals/index.mdx +++ b/src/content/news/2020/kick-off-meeting-for-biomeddata-ri-pals/index.mdx @@ -4,6 +4,7 @@ variant: "article" title: "Kick off meeting for BioMedData RI PALs" date: "Sep 11, 2020" summary: "The first meeting between the Research Infrastructure Project Area Liaison (RI PAL) in BioMedData (BMD) was held September 2nd." +tags: [meetings, data-management] --- **The first meeting between the Research Infrastructure Project diff --git a/src/content/news/2020/metapipe-is-now-operational/index.mdx b/src/content/news/2020/metapipe-is-now-operational/index.mdx index eb6fd2f3..67f29cae 100644 --- a/src/content/news/2020/metapipe-is-now-operational/index.mdx +++ b/src/content/news/2020/metapipe-is-now-operational/index.mdx @@ -4,6 +4,7 @@ variant: "article" title: "Metapipe is now operational" date: "Sep 18, 2020" summary: "ELIXIR Norway and the Senter for Bioinformatcis at UiT have the pleasure to inform you that, after a fairly intense period of technological update, Metapipe is now operational." +tags: [services] --- **ELIXIR Norway and the Senter for Bioinformatcis at UiT have the diff --git a/src/content/news/2020/nok-50-million-for-new-5-year-period-for-the-centre-for-digital-life-norway/index.mdx b/src/content/news/2020/nok-50-million-for-new-5-year-period-for-the-centre-for-digital-life-norway/index.mdx index d2463acf..5f38ce33 100644 --- a/src/content/news/2020/nok-50-million-for-new-5-year-period-for-the-centre-for-digital-life-norway/index.mdx +++ b/src/content/news/2020/nok-50-million-for-new-5-year-period-for-the-centre-for-digital-life-norway/index.mdx @@ -6,6 +6,7 @@ date: "Sep 25, 2020" cover: source: ./cover.png summary: "The Research Council of Norway has granted the Centre for Digital Life Norway (DLN) funding for 5 more years. The centre aims to transform Norwegian biotechnology research to increase innovation and value creation for society. DLN 2.0 starts in February 2021 with ELIXIR-Norway as a partner for Research Data Management" +tags: [funding, data-management] --- **The Research Council of Norway has granted the Centre for Digital Life diff --git a/src/content/news/2020/our-sars-cov-2-database-and-portal-have-been-launched/index.mdx b/src/content/news/2020/our-sars-cov-2-database-and-portal-have-been-launched/index.mdx index 447d9a0b..9175c2e0 100644 --- a/src/content/news/2020/our-sars-cov-2-database-and-portal-have-been-launched/index.mdx +++ b/src/content/news/2020/our-sars-cov-2-database-and-portal-have-been-launched/index.mdx @@ -6,6 +6,7 @@ date: "Apr 27, 2020" cover: source: ./cover.png summary: "Visit our newSARS-COV-2 portalfor a manually curated database of sequences and metadata for completeSARS_CoV2 genomes, from publicly available resources." +tags: [covid-19, genomic-data] --- **Visit our new [SARS-COV-2 portal](https://covid19.sfb.uit.no) for a manually curated database of sequences and metadata for complete SARS_CoV2 genomes, from publicly available resources.** diff --git a/src/content/news/2020/the-new-norwegian-covid19-data-portal-enhances-access-to-critical-knowledge/index.mdx b/src/content/news/2020/the-new-norwegian-covid19-data-portal-enhances-access-to-critical-knowledge/index.mdx index 8e412c81..24e6e7b8 100644 --- a/src/content/news/2020/the-new-norwegian-covid19-data-portal-enhances-access-to-critical-knowledge/index.mdx +++ b/src/content/news/2020/the-new-norwegian-covid19-data-portal-enhances-access-to-critical-knowledge/index.mdx @@ -6,6 +6,7 @@ date: "Oct 29, 2020" cover: source: ./cover.png summary: "Today ELIXIR Norway has launched the Norwegian COVID-19 Data Portal (https://covid19dataportal.no/). The service facilitates sharing and accessing research data generated in Norway on the coronavirus disease (COVID-19). On this occasion, ELIXIR Norway underlines its commitment for Open Science by endorsing the Manifesto for COVID-19 Research by the European Commission." +tags: [covid-19, open-science, fair-data] --- Today ELIXIR Norway has launched the Norwegian COVID-19 Data Portal (https://covid19dataportal.no/). The service facilitates sharing and accessing research data generated in Norway on the coronavirus disease (COVID-19\). On this occasion, ELIXIR Norway underlines its commitment for Open Science by endorsing the Manifesto for COVID-19 Research by the European Commission. diff --git a/src/content/news/2020/usegalaxyno-is-now-in-production/index.mdx b/src/content/news/2020/usegalaxyno-is-now-in-production/index.mdx index 89a5409a..54ae9f77 100644 --- a/src/content/news/2020/usegalaxyno-is-now-in-production/index.mdx +++ b/src/content/news/2020/usegalaxyno-is-now-in-production/index.mdx @@ -4,6 +4,7 @@ variant: "article" title: "usegalaxy.no is now in production" date: "Nov 5, 2020" summary: "ELIXIR Norway has successfully migrated the five NeLS Galaxy instances into one Norwegian usegalaxy" +tags: [infrastructure] --- **ELIXIR Norway has successfully migrated the five NeLS Galaxy instances into one Norwegian usegalaxy** diff --git a/src/content/news/2020/we-have-a-winner-of-our-user-survey-prize-draw/index.mdx b/src/content/news/2020/we-have-a-winner-of-our-user-survey-prize-draw/index.mdx index fd6b9025..66ffe879 100644 --- a/src/content/news/2020/we-have-a-winner-of-our-user-survey-prize-draw/index.mdx +++ b/src/content/news/2020/we-have-a-winner-of-our-user-survey-prize-draw/index.mdx @@ -4,6 +4,7 @@ variant: "article" title: "We have a winner of our user survey prize draw!" date: "Jun 30, 2020" summary: "Congratulations Andreas Borchel!" +tags: [services] --- **Congratulations Andreas Borchel! 🥳** diff --git a/src/content/news/2020/workshop-series-at-all-elixir-nodes-in-data-management-for-life-science-projects/index.mdx b/src/content/news/2020/workshop-series-at-all-elixir-nodes-in-data-management-for-life-science-projects/index.mdx index 4a5af1e7..3c553ea5 100644 --- a/src/content/news/2020/workshop-series-at-all-elixir-nodes-in-data-management-for-life-science-projects/index.mdx +++ b/src/content/news/2020/workshop-series-at-all-elixir-nodes-in-data-management-for-life-science-projects/index.mdx @@ -4,6 +4,7 @@ variant: "article" title: "Workshop series at all ELIXIR nodes in Data Management for Life Science projects" date: "Feb 4, 2020" summary: "The topic is on how you can generate a data management plan for a research project that will meet the requirements of the funding organisations. You will use the ELIXIR Norway Data Steward Wizard to make a data management plan." +tags: [training-events, data-management] --- The topic is on how you can generate a data management plan for a research project that will meet the requirements of the funding organisations. You will use the ELIXIR Norway Data Steward Wizard to make a data management plan. diff --git a/src/content/news/2021/ai-and-protein-folding/index.mdx b/src/content/news/2021/ai-and-protein-folding/index.mdx index fe3fc62b..e3ac9957 100644 --- a/src/content/news/2021/ai-and-protein-folding/index.mdx +++ b/src/content/news/2021/ai-and-protein-folding/index.mdx @@ -4,6 +4,7 @@ variant: "article" title: "AI and protein folding" date: "Jan 26, 2021" summary: "In this podcast ELIXIR Norway leader Inge Jonassen explains how artificial intelligence research can drive and accelerate new scientific discoveries." +tags: [open-science] --- In this podcast ELIXIR Norway leader Inge Jonassen explains how artificial diff --git a/src/content/news/2021/alphafold2-and-rosettafold-workshop/index.mdx b/src/content/news/2021/alphafold2-and-rosettafold-workshop/index.mdx index 2f4d011b..21451065 100644 --- a/src/content/news/2021/alphafold2-and-rosettafold-workshop/index.mdx +++ b/src/content/news/2021/alphafold2-and-rosettafold-workshop/index.mdx @@ -4,6 +4,7 @@ variant: "article" title: "AlphaFold2 and RoseTTAFold workshop" date: "Sep 30, 2021" summary: "ELIXIR Norway contributed to hosting the 2-day AlphaFold2 and RoseTTAFold workshop with 600 participants from 40 countries" +tags: [training-events] --- ELIXIR Norway contributed to hosting the 2-day **"AlphaFold2 and RoseTTAFold workshop"** with 600 participants from 40 countries. diff --git a/src/content/news/2021/biomeddata-report-on-data-management-plan-needsgaps/index.mdx b/src/content/news/2021/biomeddata-report-on-data-management-plan-needsgaps/index.mdx index a6b416b5..ab66abdb 100644 --- a/src/content/news/2021/biomeddata-report-on-data-management-plan-needsgaps/index.mdx +++ b/src/content/news/2021/biomeddata-report-on-data-management-plan-needsgaps/index.mdx @@ -4,6 +4,7 @@ variant: "article" title: "BioMedData - Report on data management plan needs/gaps" date: "Mar 26, 2021" summary: "No summary found" +tags: [data-management, fair-data] --- The 11 Norwegian Life Science Research Infrastructures in the [BioMedData](services/bio-med-data) project have published their **"Report on data management plan needs/gaps"**. diff --git a/src/content/news/2021/biomeddata-starts-work-on-domain-specific-dmp-guidance-in-norway/index.mdx b/src/content/news/2021/biomeddata-starts-work-on-domain-specific-dmp-guidance-in-norway/index.mdx index 6bcacf58..9350d91c 100644 --- a/src/content/news/2021/biomeddata-starts-work-on-domain-specific-dmp-guidance-in-norway/index.mdx +++ b/src/content/news/2021/biomeddata-starts-work-on-domain-specific-dmp-guidance-in-norway/index.mdx @@ -6,6 +6,7 @@ date: "Apr 16, 2021" cover: source: ./cover.png summary: "No summary found" +tags: [data-management] --- In a joint effort representatives from all research infrastructures in [BioMedData](/services/bio-med-data) have gathered for a 2-day online workshop to perform the first steps towards domain specific guidance for researchers in their data management. This work will result in the near future in expert recommendation for different domains and technologies which can be imported to new data management plans, forming the basis for more efficient research. diff --git a/src/content/news/2021/by-covid-a-new-eu-project-for-pandemic-preparedness/index.mdx b/src/content/news/2021/by-covid-a-new-eu-project-for-pandemic-preparedness/index.mdx index 965ba4d5..487fa950 100644 --- a/src/content/news/2021/by-covid-a-new-eu-project-for-pandemic-preparedness/index.mdx +++ b/src/content/news/2021/by-covid-a-new-eu-project-for-pandemic-preparedness/index.mdx @@ -6,6 +6,7 @@ date: "Oct 30, 2021" cover: source: ./cover.png summary: "ELIXIR coordinates the new EU-funded project BeYond-COVID (BY-COVID), which will tackle the data challenges that can hinder effective pandemic response. The core aim of the project is to ensure that data on SARS-CoV-2 and other infectious diseases can be found and used by everyone. Learn more about the project in thenews releaseon the BY-COVID website, and inthis news articlein the Norwegian medically oriented newspaper Dagens Medisin." +tags: [covid-19, funding] --- ELIXIR coordinates the new EU-funded project BeYond-COVID ([BY-COVID](https://by-covid.org)), which will tackle the data challenges that can hinder effective pandemic response. The core aim of the project is to ensure that data on SARS-CoV-2 and other infectious diseases can be found and used by everyone. Learn more about the project in the [news release](https://by-covid.org/news-events/by-covid-launch/) on the BY-COVID website, and in [this news article](https://www.dagensmedisin.no/artikler/2021/10/15/53-organisasjoner-og-19-land-gar-sammen--stort-skritt-i-riktig-retning/?login=true) in the Norwegian medically oriented newspaper Dagens Medisin. diff --git a/src/content/news/2021/continued-funding-to-elixir-norway/index.mdx b/src/content/news/2021/continued-funding-to-elixir-norway/index.mdx index 7502595a..b7bff1dd 100644 --- a/src/content/news/2021/continued-funding-to-elixir-norway/index.mdx +++ b/src/content/news/2021/continued-funding-to-elixir-norway/index.mdx @@ -6,6 +6,7 @@ date: "Dec 10, 2021" cover: source: ./cover.png summary: "We are so happy that ELIXIR Norway will be able to continue our work on enabling analysis and sharing of life science data for Norwegian researchers!" +tags: [funding] --- We are so happy that ELIXIR Norway will be able to continue our work on enabling analysis and sharing of life science data for Norwegian researchers! diff --git a/src/content/news/2021/drop-in-bioinformatics-support-in-oslo-every-wednesday/index.mdx b/src/content/news/2021/drop-in-bioinformatics-support-in-oslo-every-wednesday/index.mdx index 0df8a84b..1aae82dc 100644 --- a/src/content/news/2021/drop-in-bioinformatics-support-in-oslo-every-wednesday/index.mdx +++ b/src/content/news/2021/drop-in-bioinformatics-support-in-oslo-every-wednesday/index.mdx @@ -4,6 +4,7 @@ variant: "article" title: "Drop-in bioinformatics support in Oslo every Wednesday" date: "Sep 27, 2021" summary: "The Genomics- and Bioinformatics core facilities at the Oslo University Hospital/ELIXIR Oslo are hosting a drop-in service every Wednesday!" +tags: [training-events] --- The Genomics and Bioinformatics core facilities at the Oslo University Hospital/ELIXIR Oslo are hosting a drop-in service every Wednesday! diff --git a/src/content/news/2021/eight-new-services-join-the-service-delivery-plan-of-elixir-norway/index.mdx b/src/content/news/2021/eight-new-services-join-the-service-delivery-plan-of-elixir-norway/index.mdx index 8ed926d0..5a8cb0db 100644 --- a/src/content/news/2021/eight-new-services-join-the-service-delivery-plan-of-elixir-norway/index.mdx +++ b/src/content/news/2021/eight-new-services-join-the-service-delivery-plan-of-elixir-norway/index.mdx @@ -6,6 +6,7 @@ date: "Oct 29, 2021" cover: source: ./cover.png summary: "ELIXIR Norway is happy to announce the launch of eight new ELIXIR Node services to be included in our Service Delivery Plan towards ELIXIR Europe." +tags: [services] --- ELIXIR Norway is happy to announce the launch of eight new ELIXIR Node services to be included in our Service Delivery Plan towards ELIXIR Europe. diff --git a/src/content/news/2021/elixir-converge-receives-second-uplift-for-covid-19-variant-surveillance/index.mdx b/src/content/news/2021/elixir-converge-receives-second-uplift-for-covid-19-variant-surveillance/index.mdx index a6b3197f..c08b9d5e 100644 --- a/src/content/news/2021/elixir-converge-receives-second-uplift-for-covid-19-variant-surveillance/index.mdx +++ b/src/content/news/2021/elixir-converge-receives-second-uplift-for-covid-19-variant-surveillance/index.mdx @@ -6,6 +6,7 @@ date: "Dec 13, 2021" cover: source: ./cover.png summary: "TheELIXIR-CONVERGE projecthas received a €2 million uplift from the European Commission (EC). The new funding aims to mobilise SARS-CoV-2 variant surveillance data tracking services and tools to feed theEuropean COVID-19 Data Platform. The work is led by ELIXIR Switzerland and ELIXIR Norway." +tags: [covid-19, funding] --- The [ELIXIR-CONVERGE project](https://elixir-europe.org/about-us/how-funded/eu-projects/converge) diff --git a/src/content/news/2021/elixir-norway-all-hands-2021-face-to-face/index.mdx b/src/content/news/2021/elixir-norway-all-hands-2021-face-to-face/index.mdx index d55178d8..ccff42a3 100644 --- a/src/content/news/2021/elixir-norway-all-hands-2021-face-to-face/index.mdx +++ b/src/content/news/2021/elixir-norway-all-hands-2021-face-to-face/index.mdx @@ -6,6 +6,7 @@ date: "Nov 3, 2021" cover: source: ./cover.png summary: "Our annual ‘All hands’ meeting took place in Bergen 19-21 October, and finally we were able to gather ‘the family’ physically again!" +tags: [meetings, services] --- **Our annual ‘All hands’ meeting took place in Bergen 19-21 October, and finally diff --git a/src/content/news/2021/elixir-norway-broker-data-to-ena/index.mdx b/src/content/news/2021/elixir-norway-broker-data-to-ena/index.mdx index 6e870d14..5ec332ad 100644 --- a/src/content/news/2021/elixir-norway-broker-data-to-ena/index.mdx +++ b/src/content/news/2021/elixir-norway-broker-data-to-ena/index.mdx @@ -4,6 +4,7 @@ variant: "article" title: "ELIXIR Norway broker data to ENA" date: "Feb 10, 2021" summary: "ELIXIR Norway is pleased to announce that we launched a service to submit data to the European Nucleotide Archive (ENA) on behalf of end-users and Norwegian research institutions." +tags: [genomic-data, fair-data] --- **ELIXIR Norway is pleased to announce that we launched a service to submit diff --git a/src/content/news/2021/elixir-norway-webinar-on-data-management-requirements/index.mdx b/src/content/news/2021/elixir-norway-webinar-on-data-management-requirements/index.mdx index c418d83d..5fb94bad 100644 --- a/src/content/news/2021/elixir-norway-webinar-on-data-management-requirements/index.mdx +++ b/src/content/news/2021/elixir-norway-webinar-on-data-management-requirements/index.mdx @@ -4,6 +4,7 @@ variant: "article" title: "ELIXIR Norway webinar on Data Management requirements" date: "Jan 29, 2021" summary: "Be ready to receive funding! Why is Data Management important for my application?" +tags: [training-events, data-management] --- **Be ready to receive funding! Why is Data Management important for my application?** diff --git a/src/content/news/2021/elixir-norway-wiki-for-end-users/index.mdx b/src/content/news/2021/elixir-norway-wiki-for-end-users/index.mdx index cd784932..7297f58b 100644 --- a/src/content/news/2021/elixir-norway-wiki-for-end-users/index.mdx +++ b/src/content/news/2021/elixir-norway-wiki-for-end-users/index.mdx @@ -4,6 +4,7 @@ variant: "article" title: "ELIXIR Norway wiki for end-users" date: "Mar 22, 2021" summary: "ELIXIR Norway has made a wiki with documentation on how to use the different parts of our infrastructure" +tags: [infrastructure, training-events] --- **ELIXIR Norway has made a wiki with documentation on how to use diff --git a/src/content/news/2021/fairification-of-genomic-tracks/index.mdx b/src/content/news/2021/fairification-of-genomic-tracks/index.mdx index bc3ff740..6b843518 100644 --- a/src/content/news/2021/fairification-of-genomic-tracks/index.mdx +++ b/src/content/news/2021/fairification-of-genomic-tracks/index.mdx @@ -4,6 +4,7 @@ variant: "article" title: "FAIRification of genomic tracks" date: "May 31, 2021" summary: "ELIXIR Norway together with the ELIXIR Interoperability Platform is running a survey to collect input from potential users that will become topics in the coming workshop in autumn 2021" +tags: [fair-data] --- **ELIXIR Norway together with the ELIXIR Interoperability Platform is running a survey to collect input from potential users that will become topics in the coming workshop in autumn 2021** diff --git a/src/content/news/2021/fairtracks-included-as-an-elixir-recommended-interoperability-resource/index.mdx b/src/content/news/2021/fairtracks-included-as-an-elixir-recommended-interoperability-resource/index.mdx index 2ddb0cfa..c799fbf1 100644 --- a/src/content/news/2021/fairtracks-included-as-an-elixir-recommended-interoperability-resource/index.mdx +++ b/src/content/news/2021/fairtracks-included-as-an-elixir-recommended-interoperability-resource/index.mdx @@ -6,6 +6,7 @@ date: "Feb 15, 2021" cover: source: ./cover.png summary: "We are so happy and proud to announce thatFAIRtracks, one of the new bioinformatics services recently added to our service portfolio, has been announced as one of four new ELIXIR Recommended Interoperability Resources(RIR)!The FAIRtracks ecosystem is a collaboration between ELIXIR Norway, ELIXIR Spain and EMBL/EBI." +tags: [services, fair-data] --- **We are so happy and proud to announce that [FAIRtracks](https://fairtracks.github.io/), one of the new bioinformatics services recently added to our service portfolio, has been announced as one of four new ELIXIR [Recommended Interoperability Resources](https://elixir-europe.org/platforms/interoperability/rirs) (RIR)! The FAIRtracks ecosystem is a collaboration between ELIXIR Norway, ELIXIR Spain and EMBL/EBI.** diff --git a/src/content/news/2021/new-norwegian-bioinformatics-services-promoted-by-elixir-norway/index.mdx b/src/content/news/2021/new-norwegian-bioinformatics-services-promoted-by-elixir-norway/index.mdx index 852a89af..42d0e2d1 100644 --- a/src/content/news/2021/new-norwegian-bioinformatics-services-promoted-by-elixir-norway/index.mdx +++ b/src/content/news/2021/new-norwegian-bioinformatics-services-promoted-by-elixir-norway/index.mdx @@ -6,6 +6,7 @@ date: "Feb 2, 2021" cover: source: ./cover.png summary: "We are happy to announce that 14 new tools, databases and platforms developed by various research groups and centres in Norway now will be available for our users via ELIXIR Norway." +tags: [services] --- **We are happy to announce that 14 new tools, databases and platforms developed by various diff --git a/src/content/news/2021/new-version-of-salmobase-online/index.mdx b/src/content/news/2021/new-version-of-salmobase-online/index.mdx index 33acb3f4..dc41efae 100644 --- a/src/content/news/2021/new-version-of-salmobase-online/index.mdx +++ b/src/content/news/2021/new-version-of-salmobase-online/index.mdx @@ -4,6 +4,7 @@ variant: "article" title: "New version of salmobase online" date: "Sep 27, 2021" summary: "No summary found" +tags: [services, genomic-data] --- [Salmobase](https://salmobase.org/) is a tool for making molecular genomic resources for salmonid diff --git a/src/content/news/2021/norske-sars-cov-2-gensekvenser-na-fritt-tilgjengelig-gjennom-den-apne-genbanken-ena/index.mdx b/src/content/news/2021/norske-sars-cov-2-gensekvenser-na-fritt-tilgjengelig-gjennom-den-apne-genbanken-ena/index.mdx index 936ef40f..bae33e69 100644 --- a/src/content/news/2021/norske-sars-cov-2-gensekvenser-na-fritt-tilgjengelig-gjennom-den-apne-genbanken-ena/index.mdx +++ b/src/content/news/2021/norske-sars-cov-2-gensekvenser-na-fritt-tilgjengelig-gjennom-den-apne-genbanken-ena/index.mdx @@ -4,6 +4,7 @@ variant: "article" title: "Norske SARS-CoV-2 gensekvenser nå fritt tilgjengelig gjennom den åpne genbanken ENA !" date: "Sep 28, 2021" summary: "Rådata for norske SARS-CoV-2 gensekvenser blir nå for første gang fritt tilgjengelig gjennom den åpne genbanken ENA (European Nucleotide Archive). ELIXIR Norge og Folkehelseinstituttet (FHI) har samarbeidet om en teknisk løsning som laster opp de norske virussekvensene til genbanken sammen med informasjon om hvor prøvene kom fra. Løsningen sikrer at sensitiv informasjon om pasienten som hadde det aktuelle viruset ikke inkluderes." +tags: [covid-19, genomic-data, open-science] --- **Rådata for norske SARS-CoV-2 gensekvenser blir nå for første gang fritt tilgjengelig gjennom den åpne genbanken ENA (European Nucleotide Archive). ELIXIR Norge og Folkehelseinstituttet (FHI) har samarbeidet om en teknisk løsning som laster opp de norske virussekvensene til genbanken sammen med informasjon om hvor prøvene kom fra. Løsningen sikrer at sensitiv informasjon om pasienten som hadde det aktuelle viruset ikke inkluderes.** diff --git a/src/content/news/2021/norwegian-sars-cov-2-sequences-now-openly-available-in-ena/index.mdx b/src/content/news/2021/norwegian-sars-cov-2-sequences-now-openly-available-in-ena/index.mdx index fcd8738b..2ce2920c 100644 --- a/src/content/news/2021/norwegian-sars-cov-2-sequences-now-openly-available-in-ena/index.mdx +++ b/src/content/news/2021/norwegian-sars-cov-2-sequences-now-openly-available-in-ena/index.mdx @@ -4,6 +4,7 @@ variant: "article" title: "Norwegian SARS-CoV-2 sequences now openly available in ENA!" date: "Sep 28, 2021" summary: "We are happy to announce that the first Norwegian SARS-CoV-2 sequences now are openly available inENA, the European Nucleotide Archive." +tags: [covid-19, genomic-data, open-science] --- **We are happy to announce that the first Norwegian SARS-CoV-2 sequences now are openly available in [ENA](https://www.ebi.ac.uk/ena/browser/home), the European Nucleotide Archive.** diff --git a/src/content/news/2021/online-course-by-elixir-norway-using-the-norwegian-e-infrastructure-for-life-science-and-usegalaxyno/index.mdx b/src/content/news/2021/online-course-by-elixir-norway-using-the-norwegian-e-infrastructure-for-life-science-and-usegalaxyno/index.mdx index e8e7fd05..873ff3d2 100644 --- a/src/content/news/2021/online-course-by-elixir-norway-using-the-norwegian-e-infrastructure-for-life-science-and-usegalaxyno/index.mdx +++ b/src/content/news/2021/online-course-by-elixir-norway-using-the-norwegian-e-infrastructure-for-life-science-and-usegalaxyno/index.mdx @@ -4,6 +4,7 @@ variant: "article" title: "Online course by ELIXIR Norway: Using the Norwegian e-infrastructure for Life Science and usegalaxy.no" date: "Mar 2, 2021" summary: "We are pleased to announce the first online course on using the Norwegian e-infrastructure for Life Science (NeLS) and the national supported Galaxy (usegalaxy.no). The course will consist of lessons covering the necessary topics alternating with hands-on sessions to gain practical experience." +tags: [training-events, infrastructure] --- **We are pleased to announce the first online course on using the Norwegian e-infrastructure for Life Science ([NeLS](https://nels.bioinfo.no/)) and the national supported Galaxy ([usegalaxy.no](https://usegalaxy.no/)). The course will consist of lessons covering the necessary topics alternating with hands-on sessions to gain practical experience.** diff --git a/src/content/news/2021/online-course-data-management-planning-december-6-7/index.mdx b/src/content/news/2021/online-course-data-management-planning-december-6-7/index.mdx index 8a78eec5..8f165da4 100644 --- a/src/content/news/2021/online-course-data-management-planning-december-6-7/index.mdx +++ b/src/content/news/2021/online-course-data-management-planning-december-6-7/index.mdx @@ -4,6 +4,7 @@ variant: "article" title: "Online course: Data Management Planning December 6.-7." date: "Nov 4, 2021" summary: "ELIXIR Norway and the Centre for Digital Life Norway is organizing a Data Management Planning workshop for Life Science Projects" +tags: [training-events, data-management] --- **ELIXIR Norway and the Centre for Digital Life Norway is organizing a Data Management Planning workshop for Life Science Projects** diff --git a/src/content/news/2021/online-course-data-management-planning-june-15-16/index.mdx b/src/content/news/2021/online-course-data-management-planning-june-15-16/index.mdx index 16cdc4bc..0a200438 100644 --- a/src/content/news/2021/online-course-data-management-planning-june-15-16/index.mdx +++ b/src/content/news/2021/online-course-data-management-planning-june-15-16/index.mdx @@ -4,6 +4,7 @@ variant: "article" title: "Online course: Data Management Planning June 15-16" date: "May 19, 2021" summary: "ELIXIR Norway and Digital Life Norway is organizing a Data Management Planning workshop for Life Science Projects recently funded by RCN" +tags: [training-events, data-management] --- **ELIXIR Norway and Digital Life Norway is organizing a Data Management Planning workshop for Life Science Projects recently funded by RCN** diff --git a/src/content/news/2021/online-course-data-management-planning-september-7-8/index.mdx b/src/content/news/2021/online-course-data-management-planning-september-7-8/index.mdx index c7dafd5f..e5bc25f2 100644 --- a/src/content/news/2021/online-course-data-management-planning-september-7-8/index.mdx +++ b/src/content/news/2021/online-course-data-management-planning-september-7-8/index.mdx @@ -4,6 +4,7 @@ variant: "article" title: "Online course: Data Management Planning September 7-8" date: "Aug 20, 2021" summary: "ELIXIR Norway and Digital Life Norway is organizing a Data Management Planning workshop for Life Science Projects recently funded by RCN" +tags: [training-events, data-management] --- **ELIXIR Norway and Digital Life Norway is organizing a Data Management Planning workshop for Life Science Projects recently funded by RCN** diff --git a/src/content/news/2021/online-course-genome-assembly-and-annotation/index.mdx b/src/content/news/2021/online-course-genome-assembly-and-annotation/index.mdx index 8089b5dc..57155f91 100644 --- a/src/content/news/2021/online-course-genome-assembly-and-annotation/index.mdx +++ b/src/content/news/2021/online-course-genome-assembly-and-annotation/index.mdx @@ -4,6 +4,7 @@ variant: "article" title: "Online course: Genome assembly and annotation" date: "Mar 29, 2021" summary: "ELIXIR in collaboration with NORBIS are pleased to announce an advanced online course about genome assembly and annotation. The course is aimed at researchers interested in learning more about genome assembly and annotation." +tags: [training-events] --- **ELIXIR in collaboration with NORBIS are pleased to announce an advanced online course about genome assembly and annotation. The course is aimed at researchers interested in learning more about genome assembly and annotation.** diff --git a/src/content/news/2021/open-access-week-2021/index.mdx b/src/content/news/2021/open-access-week-2021/index.mdx index 1680a84c..5c10f741 100644 --- a/src/content/news/2021/open-access-week-2021/index.mdx +++ b/src/content/news/2021/open-access-week-2021/index.mdx @@ -4,6 +4,7 @@ variant: "article" title: "Open Access Week 2021" date: "Oct 1, 2021" summary: "The Open Access Week is taking place25th-29thof October 2021.The webinars before lunch are part of a collaboration betweenUiB, UiT, HVL, UiS, NTNU, USN, INN, UiO, RDA Norway and ELIXIR Norway and you can find more information and sign up for the individual webinars below or here. ELIXIR Norway contributes with a series of webinars." +tags: [training-events, open-science] --- The Open Access Week is taking place **25th-29th of October 2021**. diff --git a/src/content/news/2021/open-data-a-driving-force-for-innovation-in-the-life-sciences/index.mdx b/src/content/news/2021/open-data-a-driving-force-for-innovation-in-the-life-sciences/index.mdx index 0dcfd7002..b60b6c7f 100644 --- a/src/content/news/2021/open-data-a-driving-force-for-innovation-in-the-life-sciences/index.mdx +++ b/src/content/news/2021/open-data-a-driving-force-for-innovation-in-the-life-sciences/index.mdx @@ -6,6 +6,7 @@ cover: source: ./cover.png date: "Aug 23, 2021" summary: "No summary found" +tags: [open-science] --- Open access life science resources such as data and software, are fundamental for breakthrough discoveries, scientific excellence and entrepreneurial endeavours. ELIXIR’s latest report is an up-to-date analysis on the benefit of open data to industry and innovation, with an extensive survey, testimonials, and analysis of the hotspots of European innovation. diff --git a/src/content/news/2021/program-for-elixir-norway-all-hands-19-21-october/index.mdx b/src/content/news/2021/program-for-elixir-norway-all-hands-19-21-october/index.mdx index 1340044f..45b51453 100644 --- a/src/content/news/2021/program-for-elixir-norway-all-hands-19-21-october/index.mdx +++ b/src/content/news/2021/program-for-elixir-norway-all-hands-19-21-october/index.mdx @@ -4,6 +4,7 @@ variant: "article" title: "Program for ELIXIR Norway All hands 19-21 October" date: "Oct 4, 2021" summary: "The program for our upcoming All hands meeting is beginning to come together, please have a lookhere." +tags: [meetings] --- **The program for our upcoming All hands meeting is beginning to come together, please have a look [here](https://docs.google.com/document/d/1iquQ7Pm9amzpuGkesbMIwzYHq7J0XrfAfiAooQWWenM/edit?usp=sharing).** diff --git a/src/content/news/2021/rdmkit-tool-assembly-contentathons-biohackathon-2021/index.mdx b/src/content/news/2021/rdmkit-tool-assembly-contentathons-biohackathon-2021/index.mdx index 11aa9e1b..9546fd12 100644 --- a/src/content/news/2021/rdmkit-tool-assembly-contentathons-biohackathon-2021/index.mdx +++ b/src/content/news/2021/rdmkit-tool-assembly-contentathons-biohackathon-2021/index.mdx @@ -6,6 +6,7 @@ date: "Jun 24, 2021" cover: source: ./cover.png summary: "No summary found" +tags: [data-management, training-events] --- In the context of [CONVERGE](https://elixir-europe.org/about-us/how-funded/eu-projects/converge), ELIXIR-Norway organized two contentathon to extend the [RDMkit](https://rdmkit.elixir-europe.org/) with tool assemblies - carefully curated and selected set of tools to facilitate research data management in the Life Science domains with a focus on local availability or need of a specific domain. During 4 days in May and June 2021 over 30 research data management experts from all over Europe compiled several tool assemblies for Data Stewards and Researchers. diff --git a/src/content/news/2021/register-for-the-elixir-norway-all-hands-meeting-in-bergen/index.mdx b/src/content/news/2021/register-for-the-elixir-norway-all-hands-meeting-in-bergen/index.mdx index ffca13e9..8aab9e26 100644 --- a/src/content/news/2021/register-for-the-elixir-norway-all-hands-meeting-in-bergen/index.mdx +++ b/src/content/news/2021/register-for-the-elixir-norway-all-hands-meeting-in-bergen/index.mdx @@ -4,6 +4,7 @@ variant: "article" title: "Register for the ELIXIR Norway All hands meeting in Bergen!" date: "Sep 7, 2021" summary: "After almost a lifetime of zoom, we will finally try to meet face to face again for the ELIXIR Norway All hands, and hope that you will join us in Bergen on 19-21 October!" +tags: [meetings] --- **After almost a lifetime of zoom, we will finally try to meet face to face again for the ELIXIR Norway All hands, and hope that you will join us in Bergen on 19-21 October!** diff --git a/src/content/news/2021/research-data-management-now-made-simpler-by-the-rdmkit/index.mdx b/src/content/news/2021/research-data-management-now-made-simpler-by-the-rdmkit/index.mdx index 78daf627..82633a26 100644 --- a/src/content/news/2021/research-data-management-now-made-simpler-by-the-rdmkit/index.mdx +++ b/src/content/news/2021/research-data-management-now-made-simpler-by-the-rdmkit/index.mdx @@ -6,6 +6,7 @@ date: "Apr 6, 2021" cover: source: ./cover.png summary: "The ELIXIR-CONVERGE project has just released one of its main outputs — the RDMkit. Developed and managed by those who work daily with life science data, this research data management kit provides a comprehensive guide with best practices applicable to projects from start to end.Go to the RDMkithere" +tags: [data-management, infrastructure] --- The ELIXIR-CONVERGE project has just released one of its main outputs—the RDMkit. Developed and managed by those who work daily with life science data, this research data management kit provides a comprehensive guide with best practices applicable to projects from start to end. diff --git a/src/content/news/2021/successful-webinar-on-data-management-requirements/index.mdx b/src/content/news/2021/successful-webinar-on-data-management-requirements/index.mdx index f9d293b6..dbc0ecb2 100644 --- a/src/content/news/2021/successful-webinar-on-data-management-requirements/index.mdx +++ b/src/content/news/2021/successful-webinar-on-data-management-requirements/index.mdx @@ -4,6 +4,7 @@ variant: "article" title: "Successful webinar on Data Management requirements" date: "Feb 9, 2021" summary: "On February 5th Korbinian Bösl (ELIXIR Norway, BioMedData & Centre for Digital Life Norway) gave a webinar with the topic Data Management requirements" +tags: [training-events, data-management] --- **On February 5th [Korbinian Bösl](https://www4.uib.no/finn-ansatte/Korbinian.B%C3%B6sl) (ELIXIR Norway, BioMedData & Centre for Digital Life Norway) gave a webinar with the topic Data Management requirements** diff --git a/src/content/news/2022/biomeddata-face2face-meeting/index.mdx b/src/content/news/2022/biomeddata-face2face-meeting/index.mdx index 0ebb8be6..93026bb7 100644 --- a/src/content/news/2022/biomeddata-face2face-meeting/index.mdx +++ b/src/content/news/2022/biomeddata-face2face-meeting/index.mdx @@ -6,6 +6,7 @@ date: "May 30, 2022" cover: source: ./cover.png summary: "After 2 years of online meetings, the project affiliation liaisons (PALs) from the participating life-science data producing infrastructures inBioMedDatafinally, for the first time, met in person!" +tags: [meetings, data-management] --- **After 2 years of online meetings, the project affiliation liaisons (PALs) from the participating life-science data producing infrastructures in [BioMedData](/services/bio-med-data) finally, for the first time, met in person!** diff --git a/src/content/news/2022/data-management-in-practice-with-fairdom-seek/index.mdx b/src/content/news/2022/data-management-in-practice-with-fairdom-seek/index.mdx index 99be092c..3c542b8c 100644 --- a/src/content/news/2022/data-management-in-practice-with-fairdom-seek/index.mdx +++ b/src/content/news/2022/data-management-in-practice-with-fairdom-seek/index.mdx @@ -6,6 +6,7 @@ date: "Apr 20, 2022" cover: source: ./cover.png summary: "No summary found" +tags: [training-events, data-management] --- It has been a while since the FAIRDOM community got together to exchange ideas and share our FAIRDOM-SEEK related experiences. We’re therefore very excited to announce a new series of FAIRDOM user meetings, with the first meeting scheduled for **Monday, 9th of May 2022 at 14:00 CEST (Online)**. diff --git a/src/content/news/2022/elixir-norway-data-management-workshop/index.mdx b/src/content/news/2022/elixir-norway-data-management-workshop/index.mdx index a8d52433..d9ebe272 100644 --- a/src/content/news/2022/elixir-norway-data-management-workshop/index.mdx +++ b/src/content/news/2022/elixir-norway-data-management-workshop/index.mdx @@ -4,6 +4,7 @@ variant: "article" title: "ELIXIR Norway and the Centre for Digital Life Norway is organizing a Data Management Planning workshop for Life Science Projects" date: "Feb 23, 2022" summary: "We are pleased to announce the Data Management planning workshop for Life Scientists in Norway by ELIXIR Norway and Digital Life Norway." +tags: [training-events, data-management] --- **We are pleased to announce the Data Management planning workshop for Life Scientists in Norway by ELIXIR Norway and Digital Life Norway.** diff --git a/src/content/news/2022/elixir-norway-has-signed-the-federated-ega-collaboration-agreement/index.mdx b/src/content/news/2022/elixir-norway-has-signed-the-federated-ega-collaboration-agreement/index.mdx index 3da4ddd4..a3269904 100644 --- a/src/content/news/2022/elixir-norway-has-signed-the-federated-ega-collaboration-agreement/index.mdx +++ b/src/content/news/2022/elixir-norway-has-signed-the-federated-ega-collaboration-agreement/index.mdx @@ -6,6 +6,7 @@ date: "May 23, 2022" cover: source: ./cover.png summary: "Upon completing the signing of the Federated European Genome-phenome Archive (EGA) Collaboration Agreement end of last week, ELIXIR Norway formally joined the Federated EGA collaboration, and were warmly welcomed and greeted as the first Federated EGA node to join the FEGA network!" +tags: [infrastructure, genomic-data] --- **Upon completing the signing of the Federated European Genome-phenome Archive diff --git a/src/content/news/2022/fair-data-management-in-life-sciences-14-16-june-2022/index.mdx b/src/content/news/2022/fair-data-management-in-life-sciences-14-16-june-2022/index.mdx index e130667b..141dd037 100644 --- a/src/content/news/2022/fair-data-management-in-life-sciences-14-16-june-2022/index.mdx +++ b/src/content/news/2022/fair-data-management-in-life-sciences-14-16-june-2022/index.mdx @@ -6,6 +6,7 @@ date: "May 11, 2022" cover: source: ./cover.png summary: "Join the first FAIR Data Management in Life Sciences course, organized by ELIXIR Norway 14-16 June 2022!" +tags: [training-events, fair-data] --- Join the first FAIR Data Management in Life Sciences course, organized by ELIXIR Norway 14-16 June 2022!** diff --git a/src/content/news/2022/federico-bianchini-elected-as-board-member-of-the-uio-data-managers-network/index.mdx b/src/content/news/2022/federico-bianchini-elected-as-board-member-of-the-uio-data-managers-network/index.mdx index bc3fbdfd..eaa64667 100644 --- a/src/content/news/2022/federico-bianchini-elected-as-board-member-of-the-uio-data-managers-network/index.mdx +++ b/src/content/news/2022/federico-bianchini-elected-as-board-member-of-the-uio-data-managers-network/index.mdx @@ -4,6 +4,7 @@ variant: "article" title: "Federico Bianchini elected as board member of the UiO Data Managers Network" date: "Sep 2, 2022" summary: "Federico Bianchini(ELIXIR-NO) has been elected as a board member of theUiO Data Managers Network." +tags: [data-management] --- **[Federico Bianchini](https://www.mn.uio.no/kjemi/english/people/aca/fredebi/) (ELIXIR-NO) has been elected as a board member of the [UiO Data Managers Network](https://www.ub.uio.no/english/libraries/dsc/data-managers-network/).** diff --git a/src/content/news/2022/genomic-data-infrastructure-eu-launch-no/index.mdx b/src/content/news/2022/genomic-data-infrastructure-eu-launch-no/index.mdx index acc5543b..7614ecf0 100644 --- a/src/content/news/2022/genomic-data-infrastructure-eu-launch-no/index.mdx +++ b/src/content/news/2022/genomic-data-infrastructure-eu-launch-no/index.mdx @@ -6,6 +6,7 @@ date: "Nov 17, 2022" cover: source: ./gdi-logo.svg summary: "I dag lanseresGenomic Data Infrastructure (GDI), som er et stort nytt europeisk prosjekt for bedret tilgjengelighet til humane genomiske og kliniske data på tvers av europeiske landegrenser på en sikker måte." +tags: [funding, infrastructure, genomic-data] --- I dag lanseres [Genomic Data Infrastructure (GDI)](https://gdi.onemilliongenomes.eu/), som er et stort nytt europeisk prosjekt for bedret tilgjengelighet til humane genomiske og kliniske data på tvers av europeiske landegrenser på en sikker måte.** diff --git a/src/content/news/2022/genomic-data-infrastructure-eu-launch/index.mdx b/src/content/news/2022/genomic-data-infrastructure-eu-launch/index.mdx index 3dbc9206..9fb881bc 100644 --- a/src/content/news/2022/genomic-data-infrastructure-eu-launch/index.mdx +++ b/src/content/news/2022/genomic-data-infrastructure-eu-launch/index.mdx @@ -6,6 +6,7 @@ date: "Nov 17, 2022" cover: source: ./gdi-logo.svg summary: "Today,the European Genomic Data Infrastructure (GDI) projectkicks-off in Brussels, Belgium. The new €40 million GDI project, coordinated by ELIXIR, is jointly funded by the European Commission underthe Digital Europe Programmeand through co-funding from participating Member States. In the area of health, the Digital Europe Programme aims to support the creation of elements of the European Health Data Space." +tags: [funding, infrastructure, genomic-data] --- **Today, [the European Genomic Data Infrastructure (GDI) project](https://gdi.onemilliongenomes.eu/) kicks-off in Brussels, Belgium. The new €40 million GDI project, coordinated by ELIXIR, is jointly funded by the European Commission under [the Digital Europe Programme](https://digital-strategy.ec.europa.eu/en/activities/work-programmes-digital) and through co-funding from participating Member States. In the area of health, the Digital Europe Programme aims to support the creation of elements of the European Health Data Space.** diff --git a/src/content/news/2022/global-biodata-coalition-announces-the-first-set-of-global-core-biodata-resources/index.mdx b/src/content/news/2022/global-biodata-coalition-announces-the-first-set-of-global-core-biodata-resources/index.mdx index 64504e9b..0f40a905 100644 --- a/src/content/news/2022/global-biodata-coalition-announces-the-first-set-of-global-core-biodata-resources/index.mdx +++ b/src/content/news/2022/global-biodata-coalition-announces-the-first-set-of-global-core-biodata-resources/index.mdx @@ -6,6 +6,7 @@ date: "Dec 15, 2022" cover: source: ./cover.png summary: "The Global Biodata Coalition (GBC) today announces the first list of Global Core Biodata Resources (GCBRs)—a collection of 37 resources whose long-term funding and sustainability is critical to life science and biomedical research worldwide.Explore the list here:Global Core Biodata Resources(GCBRs)" +tags: [funding, open-science] --- **The Global Biodata Coalition (GBC) today announces the first list of diff --git a/src/content/news/2022/job-opportunity-postdoc-linked-with-the-norwegian-part-of-the-earth-biogenome-project/index.mdx b/src/content/news/2022/job-opportunity-postdoc-linked-with-the-norwegian-part-of-the-earth-biogenome-project/index.mdx index 9035eb38..e616496f 100644 --- a/src/content/news/2022/job-opportunity-postdoc-linked-with-the-norwegian-part-of-the-earth-biogenome-project/index.mdx +++ b/src/content/news/2022/job-opportunity-postdoc-linked-with-the-norwegian-part-of-the-earth-biogenome-project/index.mdx @@ -4,6 +4,7 @@ variant: "article" title: "Job opportunity: Postdoc linked with the Norwegian part of the Earth Biogenome Project" date: "Jan 7, 2022" summary: "Exciting Postdoctoral opportunity linked with the Norwegianof the Earth Biogenome Project and ELIXIR Norway!" +tags: [genomic-data] --- **Exciting Postdoctoral opportunity linked with the Norwegian of the Earth diff --git a/src/content/news/2022/life-science-data-management-planning-workshop-sep-26-sep-27/index.mdx b/src/content/news/2022/life-science-data-management-planning-workshop-sep-26-sep-27/index.mdx index 8499b294..abde1805 100644 --- a/src/content/news/2022/life-science-data-management-planning-workshop-sep-26-sep-27/index.mdx +++ b/src/content/news/2022/life-science-data-management-planning-workshop-sep-26-sep-27/index.mdx @@ -6,6 +6,7 @@ date: "Sep 14, 2022" cover: source: ./cover.png summary: "No summary found" +tags: [training-events, data-management] --- We are pleased to announce the Data Management planning workshop diff --git a/src/content/news/2022/life-science-einfra-training-nov/index.mdx b/src/content/news/2022/life-science-einfra-training-nov/index.mdx index 8dc2c80d..2adb1a1a 100644 --- a/src/content/news/2022/life-science-einfra-training-nov/index.mdx +++ b/src/content/news/2022/life-science-einfra-training-nov/index.mdx @@ -4,6 +4,7 @@ variant: "article" title: "Course: Using the Norwegian e-infrastructure for Life Science (NeLS) and usegalaxy.no 28.-29.11." date: "Oct 21, 2022" summary: "No summary found" +tags: [training-events, infrastructure] --- Online course on using the Norwegian e-infrastructure for Life Science (NeLS) and the national supported Galaxy (usegalaxy.no). The course will consist of lessons covering the necessary topics alternating with hands-on sessions to gain practical experience. diff --git a/src/content/news/2022/nordic-train-the-trainer-course-may-10-13/index.mdx b/src/content/news/2022/nordic-train-the-trainer-course-may-10-13/index.mdx index 91f52f19..65e0aa29 100644 --- a/src/content/news/2022/nordic-train-the-trainer-course-may-10-13/index.mdx +++ b/src/content/news/2022/nordic-train-the-trainer-course-may-10-13/index.mdx @@ -4,6 +4,7 @@ variant: "article" title: "Nordic Train the Trainer course May 10-13" date: "Mar 2, 2022" summary: "The Nordic ELIXIR nodes are organizing a Train the Trainer course in May. This course is suited for whoever is interested in becoming a trainer/instructor, or improving their training skills." +tags: [training-events] --- **The Nordic ELIXIR nodes are organizing a Train the Trainer course diff --git a/src/content/news/2022/please-contact-us-under-support-at-elixir-no/index.mdx b/src/content/news/2022/please-contact-us-under-support-at-elixir-no/index.mdx index 2d7e1562..6c44ff25 100644 --- a/src/content/news/2022/please-contact-us-under-support-at-elixir-no/index.mdx +++ b/src/content/news/2022/please-contact-us-under-support-at-elixir-no/index.mdx @@ -4,6 +4,7 @@ variant: "article" title: "Please contact us under: support@elixir.no" date: "Nov 11, 2022" summary: "No summary found" +tags: [infrastructure] --- Our request tracker service through [contact@bioinfo.no](mailto:contact@bioinfo.no) is unfortunately out of order. diff --git a/src/content/news/2022/the-new-service-immuneml-uses-patterns-among-our-immune-receptors-to-diagnose-diseases/index.mdx b/src/content/news/2022/the-new-service-immuneml-uses-patterns-among-our-immune-receptors-to-diagnose-diseases/index.mdx index a798e25f..432d188a 100644 --- a/src/content/news/2022/the-new-service-immuneml-uses-patterns-among-our-immune-receptors-to-diagnose-diseases/index.mdx +++ b/src/content/news/2022/the-new-service-immuneml-uses-patterns-among-our-immune-receptors-to-diagnose-diseases/index.mdx @@ -6,6 +6,7 @@ date: "Jan 20, 2022" cover: source: ./cover.png summary: "Read the exciting story abouthow the new service immuneML uses AI to diagnose diseasesin the University of Oslo science newspaper Titan (Norwegian)." +tags: [services] --- Read the exciting story about [how the new service immuneML uses AI to diagnose diseases](https://titan.uio.no/medisin-informatikk/2022/fra-bare-en-blodprove-kan-kunstig-intelligens-gi-diagnose-for-mange-ulike-sykdommer) in the University of Oslo science newspaper Titan (Norwegian). diff --git a/src/content/news/2022/virtual-meeting-handling-pandemic-omics-data-in-the-nordics/index.mdx b/src/content/news/2022/virtual-meeting-handling-pandemic-omics-data-in-the-nordics/index.mdx index d581c315..83261584 100644 --- a/src/content/news/2022/virtual-meeting-handling-pandemic-omics-data-in-the-nordics/index.mdx +++ b/src/content/news/2022/virtual-meeting-handling-pandemic-omics-data-in-the-nordics/index.mdx @@ -4,6 +4,7 @@ variant: "article" title: "Virtual meeting: Handling Pandemic Omics Data in the Nordics" date: "Apr 7, 2022" summary: "A two-days online meeting that will bring perspectives on Nordic infrastructures and approaches used to handle SARS-Cov-2 sequencing data. The event will take place on 18-19 May 2022 from 09:00-13:00 CEST (Central European Summer). The meeting is organised by members of ELIXIR Norway, ELIXIR Estonia, and SciLifeLab Data Centre." +tags: [meetings, covid-19] --- **A two-days online meeting that will bring perspectives on Nordic infrastructures and approaches used to handle SARS-Cov-2 sequencing data. The event will take place on 18-19 May 2022 from 09:00-13:00 CEST (Central European Summer Time). The meeting is organised by members of ELIXIR Norway, ELIXIR Estonia, and SciLifeLab Data Centre.** diff --git a/src/content/news/2022/webinar-new-feature-in-the-data-stewardship-wizard/index.mdx b/src/content/news/2022/webinar-new-feature-in-the-data-stewardship-wizard/index.mdx index f915b49d..2dd1b99a 100644 --- a/src/content/news/2022/webinar-new-feature-in-the-data-stewardship-wizard/index.mdx +++ b/src/content/news/2022/webinar-new-feature-in-the-data-stewardship-wizard/index.mdx @@ -4,6 +4,7 @@ variant: "article" title: "Webinar: New feature in the Data Stewardship Wizard" date: "Mar 8, 2022" summary: "BioMedData coordinators are organizing a webinar about a new feature in the Data Stewardship Wizard (DSW) for Norway Friday, 08 April 2022 @ 09:00 - 11:00" +tags: [training-events, data-management] --- **BioMedData coordinators are organizing a webinar about a new feature in the Data Stewardship Wizard (DSW) for Norway Friday, 08 April 2022 @ 09:00 - 11:00** diff --git a/src/content/news/2023/elixir-norway-engineer-positions-bergen/index.mdx b/src/content/news/2023/elixir-norway-engineer-positions-bergen/index.mdx index 91c587f2..fc614f92 100644 --- a/src/content/news/2023/elixir-norway-engineer-positions-bergen/index.mdx +++ b/src/content/news/2023/elixir-norway-engineer-positions-bergen/index.mdx @@ -4,6 +4,7 @@ variant: "article" title: "Job vacancies: Permanent positions as Senior Engineer/ Chief Engineer (System Developer) in ELIXIR-Norway in Bergen" date: "Aug 30, 2023" summary: "No summary found" +tags: [infrastructure] --- ### About the Department of Informatics diff --git a/src/content/news/2023/job-vacancy-senior-engineer-bioinformatician-at-oslo-university-hospital/index.mdx b/src/content/news/2023/job-vacancy-senior-engineer-bioinformatician-at-oslo-university-hospital/index.mdx index 26a51020..cb460c7f 100644 --- a/src/content/news/2023/job-vacancy-senior-engineer-bioinformatician-at-oslo-university-hospital/index.mdx +++ b/src/content/news/2023/job-vacancy-senior-engineer-bioinformatician-at-oslo-university-hospital/index.mdx @@ -4,6 +4,7 @@ variant: "article" title: "Job vacany: Senior Engineer/Bioinformatician at Oslo University Hospital" date: "Aug 30, 2023" summary: "No summary found" +tags: [infrastructure] --- **Are you a bioinformatician looking for a multifaceted position? Do you enjoy connecting with people, looking for variation in daily tasks, and having a service minded-attitude? Come and join the Bioinformatics Core Facility as our senior bioinformatician/coordinator. We have an open 3-years position with the possibility of extension in a competent and interdisciplinary research environment.** diff --git a/src/content/news/2023/life-science-data-management-planning-workshop/index.mdx b/src/content/news/2023/life-science-data-management-planning-workshop/index.mdx index 9f2baa67..9fe6ac26 100644 --- a/src/content/news/2023/life-science-data-management-planning-workshop/index.mdx +++ b/src/content/news/2023/life-science-data-management-planning-workshop/index.mdx @@ -4,6 +4,7 @@ variant: "article" title: "Life Science Data Management: Planning workshop" date: "Jul 6, 2023" summary: "We are pleased to announce the Data Management planning workshop for Life Scientists in Norway byELIXIR Norway and Digital Life Norway.All Norwegian universities require a DMP for all projects. All projects that receive funding from the Norwegian RCN are required to submit a data management plan as soon as possible after the contract with the RCN has been signed. This workshop focuses on how-to generate a data management plan for a Life Science research project that will meet both requirements." +tags: [training-events, data-management] --- **We are pleased to announce the Data Management planning workshop for Life Scientists in Norway byELIXIR Norway and Digital Life Norway.** diff --git a/src/content/news/2023/national-stakeholder-meeting-on-life-science-data-management-in-norway/index.mdx b/src/content/news/2023/national-stakeholder-meeting-on-life-science-data-management-in-norway/index.mdx index ff5cc46b..06ec30f2 100644 --- a/src/content/news/2023/national-stakeholder-meeting-on-life-science-data-management-in-norway/index.mdx +++ b/src/content/news/2023/national-stakeholder-meeting-on-life-science-data-management-in-norway/index.mdx @@ -4,6 +4,7 @@ variant: "article" title: "National Stakeholder Meeting on Life Science Data Management in Norway" date: "Oct 26, 2023" summary: "" +tags: [meetings, data-management] --- On behalf of BioMedData and ELIXIR Norway, we would are delighted to diff --git a/src/content/news/2023/norwegian-life-science-data-agreement/index.mdx b/src/content/news/2023/norwegian-life-science-data-agreement/index.mdx index 598f438d..0fccad2b 100644 --- a/src/content/news/2023/norwegian-life-science-data-agreement/index.mdx +++ b/src/content/news/2023/norwegian-life-science-data-agreement/index.mdx @@ -7,6 +7,7 @@ cover: caption: "Sushma Grellscheid HoN (right) and Korbinian Bösl (left) DM coordinator (Picture: Randi Eilertsen)" date: "Nov 13, 2023" summary: "Today, nine Life Science Research Infrastructure programs in Norway signed an agreement for establishing a long-term collaboration aiming to revolutionise the management and exchange of life science data in Norway." +tags: [data-management, funding] --- **Today, nine Life Science Research Infrastructure programs in Norway signed an agreement for establishing a long-term collaboration aiming to revolutionise the management and exchange of life science data in Norway.** diff --git a/src/content/news/2023/postdoctoral-position-in-comparative-cancer-genetics-in-dogs/index.mdx b/src/content/news/2023/postdoctoral-position-in-comparative-cancer-genetics-in-dogs/index.mdx index c9c2e391..82d6371b 100644 --- a/src/content/news/2023/postdoctoral-position-in-comparative-cancer-genetics-in-dogs/index.mdx +++ b/src/content/news/2023/postdoctoral-position-in-comparative-cancer-genetics-in-dogs/index.mdx @@ -4,6 +4,7 @@ variant: "article" title: "Postdoctoral position in comparative cancer genetics in dogs" date: "Mar 1, 2023" summary: "The Norwegian University of Life Sciences (NMBU), Faculty of Veterinary Medicine has a vacant 3-year Postdoctoral fellow position in comparative cancer genetic research (mammary gland/breast cancer) in dogs. The project work will be in the research group of medical genetics." +tags: [genomic-data] --- **The Norwegian University of Life Sciences (NMBU), Faculty of Veterinary Medicine has a vacant 3-year Postdoctoral fellow position in comparative cancer genetic research (mammary gland/breast cancer) in dogs. The project work will be in the research group of medical genetics.** diff --git a/src/content/news/2023/sweden-adds-a-national-pathogens-portal-to-the-network/index.mdx b/src/content/news/2023/sweden-adds-a-national-pathogens-portal-to-the-network/index.mdx index d6518fc1..8cb18bc0 100644 --- a/src/content/news/2023/sweden-adds-a-national-pathogens-portal-to-the-network/index.mdx +++ b/src/content/news/2023/sweden-adds-a-national-pathogens-portal-to-the-network/index.mdx @@ -7,6 +7,7 @@ cover: caption: "Credit: EMBL-EBI" date: "Nov 24, 2023" summary: "Sweden adds a National Pathogens Portal to the network" +tags: [covid-19, infrastructure] --- Sweden and SciLifeLab has launched a National Pathogen Portal to facilitate sharing of data related to pathogens and facilitate future pandemic preparedness. ELIXIR Norway has applied for national funding from the [Norwegian Research Council](https://www.forskningsradet.no/en/) to build a Norwegian Pathogen Portal. diff --git a/src/content/news/2023/webinar-open-data-requirements-for-life-science-projects/index.mdx b/src/content/news/2023/webinar-open-data-requirements-for-life-science-projects/index.mdx index f0921f5d..fa4110b5 100644 --- a/src/content/news/2023/webinar-open-data-requirements-for-life-science-projects/index.mdx +++ b/src/content/news/2023/webinar-open-data-requirements-for-life-science-projects/index.mdx @@ -6,6 +6,7 @@ date: "Jan 13, 2023" cover: source: ./cover.png summary: "Be ready to receive funding! Why is Open Data and Data Management important for my application?" +tags: [training-events, open-science] --- **Be ready to receive funding! Why is Open Data and Data Management important for my application?** diff --git a/src/content/news/2024/elixir4-celebration/index.mdx b/src/content/news/2024/elixir4-celebration/index.mdx index 13ad4684..9a0244b7 100644 --- a/src/content/news/2024/elixir4-celebration/index.mdx +++ b/src/content/news/2024/elixir4-celebration/index.mdx @@ -4,6 +4,7 @@ variant: "article" title: "ELIXIR4 Grant Secured for ELIXIR Norway" date: "Sep 27, 2024" summary: "Great news from the Research Council of Norway! The ELIXIR4 Open Life Science project, led by Professor Sushma Grellscheid at CBU, has been approved for funding under the RCN Infrastructure program. This grant marks the fourth in a series of investments that provide foundational support for Norway’s node in the European research infrastructure ELIXIR, dedicated to biological data." +tags: [funding] --- Great news from the Research Council of Norway! The ELIXIR4 Open Life Science project, led by **Professor Sushma Grellscheid at CBU**, has been [approved for funding under the RCN Infrastructure program](https://www.forskningsradet.no/nyheter/2024/13-milliardar-forskingsinfrastruktur/). This grant marks the fourth in a series of investments that provide foundational support for Norway’s node in the European research infrastructure ELIXIR, dedicated to biological data. diff --git a/src/content/news/2024/first-datasets-from-norway-are-now-in-the-federated-ega-network/index.mdx b/src/content/news/2024/first-datasets-from-norway-are-now-in-the-federated-ega-network/index.mdx index 53b79872..6e166124 100644 --- a/src/content/news/2024/first-datasets-from-norway-are-now-in-the-federated-ega-network/index.mdx +++ b/src/content/news/2024/first-datasets-from-norway-are-now-in-the-federated-ega-network/index.mdx @@ -6,6 +6,7 @@ cover: source: ./cover.png date: "Mar 4, 2024" summary: "No summary found" +tags: [genomic-data, fair-data] --- In February 2024, a great milestone was reached for the human omics data community: the first datasets are now available in the Federated European Genome-phenome Archive (FEGA). These datasets - hosted by national nodes in Poland, Norway, and Sweden - are discoverable in the EGA portal and accessible according to national laws. diff --git a/src/content/news/2024/life-science-rdm-group-event-the-data-steward-job-role-in-the-norwegian-public-sector/index.mdx b/src/content/news/2024/life-science-rdm-group-event-the-data-steward-job-role-in-the-norwegian-public-sector/index.mdx index 6f8674ce..3fead19f 100644 --- a/src/content/news/2024/life-science-rdm-group-event-the-data-steward-job-role-in-the-norwegian-public-sector/index.mdx +++ b/src/content/news/2024/life-science-rdm-group-event-the-data-steward-job-role-in-the-norwegian-public-sector/index.mdx @@ -4,6 +4,7 @@ variant: "article" title: "Life Science RDM Group event: The Data Steward job role in the Norwegian public sector" date: "Apr 24, 2024" summary: "No summary found" +tags: [data-management, training-events] --- **Date**: 7th of May 2024 09:00 - 10:30 diff --git a/src/content/news/2024/the-data-steward-job-role-in-the-norwegian-public-sector/index.mdx b/src/content/news/2024/the-data-steward-job-role-in-the-norwegian-public-sector/index.mdx index 2d93afbb..97479292 100644 --- a/src/content/news/2024/the-data-steward-job-role-in-the-norwegian-public-sector/index.mdx +++ b/src/content/news/2024/the-data-steward-job-role-in-the-norwegian-public-sector/index.mdx @@ -6,6 +6,7 @@ cover: source: ./life-science-rdm-no-logo.png date: "Apr 24, 2024" summary: "No summary found" +tags: [data-management, training-events] --- | Info | Description | diff --git a/src/content/news/2024/workpackage-2-face-2-face-2024/index.mdx b/src/content/news/2024/workpackage-2-face-2-face-2024/index.mdx index fbc920f7..b32538a4 100644 --- a/src/content/news/2024/workpackage-2-face-2-face-2024/index.mdx +++ b/src/content/news/2024/workpackage-2-face-2-face-2024/index.mdx @@ -6,6 +6,7 @@ date: "Oct 3, 2024" cover: source: ./cover.jpg summary: "The technical work package of ELIXIR Norway (WP2) had its yearly face-to-face meeting on 16-17 Sept 2024 in Trondheim" +tags: [meetings] --- The technical work package of ELIXIR Norway (WP2) had its yearly face-to-face meeting on 16-17 Sept 2024 in Trondheim. diff --git a/src/content/news/2025/ahm-europe/index.mdx b/src/content/news/2025/ahm-europe/index.mdx index 2427311f..88436919 100644 --- a/src/content/news/2025/ahm-europe/index.mdx +++ b/src/content/news/2025/ahm-europe/index.mdx @@ -6,6 +6,7 @@ date: "June 2, 2025" cover: source: ./ah2025.jpeg summary: "ELIXIR Norway was well represented at the 11th ELIXIR All Hands meeting, which took place in Thessaloniki 2-5 June." +tags: [meetings, training-events] --- * **Erik Hjerde** and **Espen Åberg** were co-leading a workshop on "Mobilising microbial data", focusing on metadata harmonisation and standardisation for pathogen data. This was a collaboration between the Microbiome community and the Pathogen Focus Group, and was very well visited. * **Eivind Hovig** was co-leading a workshop on "Trends in Services for Cancer Research: Fostering Interoperability and Data Sharing" that addressed the challenges and opportunities in cancer research data management and analysis. diff --git a/src/content/news/2025/call-for-services/index.mdx b/src/content/news/2025/call-for-services/index.mdx index 67025cf6..0251020d 100644 --- a/src/content/news/2025/call-for-services/index.mdx +++ b/src/content/news/2025/call-for-services/index.mdx @@ -3,9 +3,10 @@ layout: "../../../../layouts/page.astro" variant: "article" title: "Call for ELIXIR Norway services 2025: Enhance Your Bioinformatics Tools' Impact" date: "Feb 10, 2025" -summary: "Are you interested in showcasing your bioinformatics tools and resources on a larger stage? - ELIXIR Norway invites you to propose your service for inclusion in the recognized ELIXIR network. +summary: "Are you interested in showcasing your bioinformatics tools and resources on a larger stage? + ELIXIR Norway invites you to propose your service for inclusion in the recognized ELIXIR network. This is a great opportunity to increase the visibility and reach of your work, both nationally and internationally." +tags: [services] --- ## Who does my tool profit from being an ELIXIR service? diff --git a/src/content/news/2025/charm-eu-open-science-recognition-award/index.mdx b/src/content/news/2025/charm-eu-open-science-recognition-award/index.mdx index 2415208e..edfc0ea6 100644 --- a/src/content/news/2025/charm-eu-open-science-recognition-award/index.mdx +++ b/src/content/news/2025/charm-eu-open-science-recognition-award/index.mdx @@ -6,6 +6,7 @@ date: "Octotber 06, 2025" cover: source: ./charm-eu-award.jpg summary: "Congratulations to Korbinian Bösl who has won the 2025 CHARM-EU Open Science Recognition Award" +tags: [open-science] --- We congratulate Korbinian Bösl for winning the [2025 CHARM-EU Open Science Recognition Award](https://charm-eu.eu/bosl-and-opensytems-receive-the-charm-eu-open-science-recognition-award-2025/) diff --git a/src/content/news/2025/elitma/index.mdx b/src/content/news/2025/elitma/index.mdx index 83936874..7ab37de1 100644 --- a/src/content/news/2025/elitma/index.mdx +++ b/src/content/news/2025/elitma/index.mdx @@ -6,6 +6,7 @@ date: "May 21, 2025" cover: source: ./1747769992926.jpeg summary: "ELIXIR's second ELITMa module focuses on developing and strengthening Node-level data management strategies, with a specific emphasis on aligning with the ELIXIR-wide approach to FAIR data and interoperability." +tags: [data-management, training-events] --- Ingeborg Winge (Node coordinator, UiB) and Federico Bianchini (UiO) partake in ELIXIR ELITMa's module on research data management. diff --git a/src/content/news/2025/elixir-industry-engagement-day/index.mdx b/src/content/news/2025/elixir-industry-engagement-day/index.mdx index a24fd056..9ea24469 100644 --- a/src/content/news/2025/elixir-industry-engagement-day/index.mdx +++ b/src/content/news/2025/elixir-industry-engagement-day/index.mdx @@ -6,6 +6,7 @@ date: "October 20, 2025" cover: source: ./photos.png summary: "We were delighted to host the ELIXIR Industry Engagement Day 2025 in Oslo, bringing together 47 participants from leading aquaculture companies and research institutes to explore how open genomic data can drive innovation in salmon breeding and production." +tags: [genomic-data, open-science] --- ELIXIR Norway hosted a successful Industry Engagement Day in Oslo, Norway, on 20 October 2025, bringing together 47 participants from across academia, industry, and funding organisations to explore how open genomic data can drive innovation in salmon-based aquaculture. diff --git a/src/content/news/2025/eosc-entrust-workshop/index.mdx b/src/content/news/2025/eosc-entrust-workshop/index.mdx index 96e0852d..1c5ff7e2 100644 --- a/src/content/news/2025/eosc-entrust-workshop/index.mdx +++ b/src/content/news/2025/eosc-entrust-workshop/index.mdx @@ -6,6 +6,7 @@ date: "September 17, 2025" cover: source: ./2025-09-17-eosc-entrust-workshop-group.jpeg summary: "ELIXIR Norway hosted the 2nd Evaluation and Adoption workshop of EOSC-ENTRUST in Bergen." +tags: [infrastructure, meetings] --- Pål Sætrom [(ELIXIR-NTNU)](../about/trondheim/) and Miikka Kallberg ([ELIXIR-CSC](https://csc.fi/en/researchinfrastructure/elixir/)) co-led the 2nd Evaluation and Adoption Workshop, dedicated to advancing the architecture of the TRE Blueprint. The event brought together approximately 30 stakeholders from across the work packages—encompassing providers, drivers, workflows, AAAI, and the architecture group—who gathered to explore ways to strengthen the network of Trusted Research Environments (TREs) across Europe and beyond. diff --git a/src/content/news/2025/nels-scheduled-maintenance-november/index.mdx b/src/content/news/2025/nels-scheduled-maintenance-november/index.mdx index 3114fe62..6bbc4e8e 100644 --- a/src/content/news/2025/nels-scheduled-maintenance-november/index.mdx +++ b/src/content/news/2025/nels-scheduled-maintenance-november/index.mdx @@ -6,6 +6,7 @@ date: "October 27, 2025" cover: source: ./cover-nels-maint.png summary: "The NeLS system is continously improved and we are replacing our front end servers on November 4-5" +tags: [infrastructure] --- The Norwegian e-infrastructure for Life Science (NeLS) is ELIXIR Norway's main services for researchers to manage their life science data, and is a core system we are continuosly working to enhance and improve. diff --git a/src/content/news/2026/jaspar-cdr/index.mdx b/src/content/news/2026/jaspar-cdr/index.mdx index 58c5ab28..79c1860f 100644 --- a/src/content/news/2026/jaspar-cdr/index.mdx +++ b/src/content/news/2026/jaspar-cdr/index.mdx @@ -6,6 +6,7 @@ date: "Jan 12, 2026" cover: source: ./jaspar-cdr.png summary: "JASPAR, the long-standing and widely used database for transcription factor binding profiles, is now recognised as an ELXIR Core Data Resource. The work behind this service is led by Anthony Mathelier, Associate Director and Group Leader of the Computational Biology & Gene Regulation group at the Norwegian Centre for Molecular Biosciences and Medicine (NCMBM) at the University of Oslo. ELIXIR Norway's personnel play an essential role in JASPAR's maintenance, development, and operation." +tags: [services, infrastructure, open-science] --- ELIXIR has announced the life science data resources selected in the latest round of its Core Data Resources and Deposition Databases. Among the six newly approved Core Data Resources is JASPAR, a long-standing and widely used database for transcription factor binding profiles, with the work behind the resource currently led by Anthony Mathelier, Associate Director and Group Leader of the Computational Biology & Gene Regulation group at the Norwegian Centre for Molecular Biosciences and Medicine (NCMBM) at the University of Oslo, Norway. diff --git a/src/content/services/carve-me/index.mdx b/src/content/services/carve-me/index.mdx index 67e6b12e..7945d5ec 100644 --- a/src/content/services/carve-me/index.mdx +++ b/src/content/services/carve-me/index.mdx @@ -9,16 +9,16 @@ tags: ["analysis", "biotechnology"] ## Introduction -CarveMe is a Python-based software tool for the automated generation of genome-scale metabolic models. This tool enables genome-scale metabolic model reconstruction in Python. By simple command lines, you can build models from your model file, using a FASTA file or your DNA sequence. CarveMe predicts the uptake and secretion capabilities of an organism only from genetic evidence and can produce a simulation-ready model without gap-filling for any media. CarveMe also enables the generation of microbial community models from single-species models. CarveME is an official service of ELIXIR Norway. +CarveMe is a Python-based tool for the automated generation of genome-scale metabolic models from bacterial genomes. Given a FASTA file or DNA sequence, CarveMe predicts the uptake and secretion capabilities of an organism from genetic evidence alone and produces simulation-ready models without gap-filling for any media. It also supports the generation of microbial community models from single-species models. CarveMe is an official service of ELIXIR Norway. -## About this service +## Key Features -CarveMe, provided by ELIXIR Norway, is a powerful tool for generating genome-scale metabolic models from bacterial genomes. It produces standardised draft models, supporting a wide range of applications in biotechnology and microbiology. CarveMe helps researchers understand the metabolic capabilities of different bacterial species, facilitating advanced metabolic research. The tool integrates various data sources to create comprehensive metabolic models, promoting efficient and accurate analysis. +- **Automated model reconstruction** — build genome-scale metabolic models directly from FASTA files via simple command-line invocations +- **Simulation-ready output** — produces standardised models that can run without manual gap-filling +- **Community modelling** — generate multi-species community models from individual organism models +- **Broad applicability** — supports diverse applications in biotechnology, microbiology, and systems biology +- **Python-based** — integrates easily into existing bioinformatics pipelines and scripting workflows -## Why use this service? +## Getting Started -CarveMe is an essential tool for microbiologists, bioinformaticians, and life scientists studying microbial metabolism. It facilitates the creation and analysis of metabolic networks, enabling researchers to explore bacterial metabolic capabilities efficiently. CarveMe's standardised models and comprehensive support make it a valuable tool for metabolic research. By using CarveMe, researchers can enhance their understanding of microbial metabolism, overcoming obstacles and accelerating their research projects. - -## How to get started - -Researchers can download CarveMe today to convert their genomic data into detailed metabolic models. Visit [CarveMe](https://bio.tools/carveme) to start generating and analysing metabolic models. +Install CarveMe via pip and provide a genome (FASTA format) to generate your first metabolic model. Detailed documentation and source code are available on the [CarveMe bio.tools page](https://bio.tools/carveme). diff --git a/src/content/services/chop-chop/index.mdx b/src/content/services/chop-chop/index.mdx index 40e47931..afd069ae 100644 --- a/src/content/services/chop-chop/index.mdx +++ b/src/content/services/chop-chop/index.mdx @@ -7,4 +7,18 @@ summary: "CHOPCHOP is a web tool for identifying CRISPR–Cas sgRNA targets, sup tags: ["functional-genomics", "crispr"] --- -CHOPCHOP is a web tool for identifying CRISPR–Cas single guide RNA (sgRNA) targets. Just select your target gene, sequence or chromosome coordinates, your organism and the desired CRISPR mode and find matching target sites! CHOPCHOP incorporates the latest Cas9, Cpf1 and TALEN findings into CHOPCHOP's algorithm for scoring and ranking potential target sites. Select between default and advanced options to tailor your experience after needs and experience, directly in the website. This tool is managed by ELIXIR Norway. +## Introduction + +CHOPCHOP is a web-based tool for identifying optimal CRISPR-Cas single guide RNA (sgRNA) target sites. Given a target gene, genomic sequence, or chromosome coordinates, CHOPCHOP scores and ranks potential target sites using up-to-date algorithms. The tool supports multiple CRISPR systems and is managed by ELIXIR Norway. + +## Key Features + +- **Multi-system support** — works with Cas9, Cpf1, and TALEN targeting systems +- **Flexible input** — accepts gene names, genomic sequences, or chromosome coordinates across many organisms +- **Ranked results** — scores and ranks candidate target sites based on predicted efficiency and specificity +- **Configurable parameters** — default mode for quick results, advanced mode for fine-tuned control over scoring and filtering +- **Web-based** — no software installation required; runs entirely in the browser + +## Getting Started + +Navigate to the CHOPCHOP web interface, select your organism and CRISPR mode, and enter your target gene or coordinates. Results are displayed with ranked sgRNA candidates ready for experimental design. diff --git a/src/content/services/covid-19-data-portal-norway/index.mdx b/src/content/services/covid-19-data-portal-norway/index.mdx index 69247504..9d88af17 100644 --- a/src/content/services/covid-19-data-portal-norway/index.mdx +++ b/src/content/services/covid-19-data-portal-norway/index.mdx @@ -9,16 +9,16 @@ tags: ["data-platform"] ## Introduction -COVID-19 Data Portal Norway is a portal to Norwegian research efforts against COVID-19, with guidelines, tools, databases and services to support Norwegian COVID-19 researchers. ELIXIR Norway developed this data portal to enable Norwegian scientists to share and access research data on the coronavirus disease (COVID-19). +COVID-19 Data Portal Norway is a centralised platform developed by ELIXIR Norway to enable Norwegian scientists to share and access research data on the coronavirus disease (COVID-19). The portal aggregates guidelines, tools, databases, and services to support the Norwegian research community's pandemic response efforts. -## About this service +## Key Features -Developed by ELIXIR Norway, the COVID-19 Data Portal Norway facilitates the sharing and access of research data related to the coronavirus disease (COVID-19). The portal includes guidelines, tools, databases, and services to support Norwegian COVID-19 researchers. It aims to enhance collaboration and data sharing among scientists, enabling a more effective response to the pandemic through integrated data resources and research support. +- **Centralised data access** — a single entry point for Norwegian COVID-19 research data, tools, and databases +- **Data sharing infrastructure** — enables researchers to deposit and retrieve datasets in compliance with open science principles +- **Guidelines and best practices** — provides data management guidance tailored to COVID-19 research +- **Cross-institutional collaboration** — connects researchers, epidemiologists, and public health officials across Norway +- **Integrated resources** — links to international COVID-19 data portals and related ELIXIR services -## Why use this service +## Getting Started -This portal is indispensable for COVID-19 researchers, epidemiologists, and public health officials in Norway. It centralises essential data and tools, promoting collaboration and accelerating research efforts. Using the COVID-19 Data Portal, researchers can access up-to-date data and resources, driving innovations in understanding and combating the virus. - -## How to get started - -Visit this website to access the data portal. Once you have gained access, you can find and share COVID-19-related data through this portal. Start utilising and contributing to this service to join us in the battle against COVID-19. +Visit the COVID-19 Data Portal Norway to browse available datasets, access analytical tools, and contribute your own research data to the national collection. diff --git a/src/content/services/dsw/index.mdx b/src/content/services/dsw/index.mdx index b36d9c52..1577011e 100644 --- a/src/content/services/dsw/index.mdx +++ b/src/content/services/dsw/index.mdx @@ -9,27 +9,17 @@ tags: ["research-data-management", "e-infrastructure"] ## Introduction -The Data Stewardship Wizard (DSW) is an international project led by ELIXIR-CZ and ELIXIR-NL to help researchers -and data stewards with building smart Data Management Plans (DMPs) for FAIR Science. -ELIXIR Norway offers a dedicated instance for life scientists in Norway with tailored guidance. +The Data Stewardship Wizard (DSW) is an international project led by ELIXIR-CZ and ELIXIR-NL that helps researchers and data stewards create smart Data Management Plans (DMPs) aligned with FAIR principles. ELIXIR Norway operates a dedicated instance tailored for life scientists in Norway, providing localised guidance and knowledge models. -## About this service +## Key Features -DSW helps researchers and data stewards build effective DMPs. This international project -offers a dedicated instance for life scientists in Norway, providing tailored -guidance and resources to ensure data management aligns with FAIR principles. -DSW simplifies the creation of comprehensive DMPs, facilitating efficient -and compliant data handling. +- **Guided DMP creation** — step-by-step questionnaires that translate research context into comprehensive data management plans +- **FAIR by design** — built around the FAIR principles (Findable, Accessible, Interoperable, Reusable) from the ground up +- **Norwegian instance** — a dedicated deployment with tailored guidance for Norwegian life science researchers +- **Collaborative editing** — multiple team members can contribute to the same DMP simultaneously +- **Export flexibility** — generate DMPs in multiple formats suitable for funder requirements and institutional policies +- **Knowledge models** — curated question sets covering domain-specific data management concerns -## Why use this service +## Getting Started -DSW is essential for researchers and data stewards aiming -to improve their data management practices. It supports the creation of robust -DMPs, ensuring data is findable, accessible, interoperable, and reusable (FAIR). -The tailored guidance for life scientists in Norway enhances data quality -and compliance, promoting best practices in research data management. - -## How to get started - -Researchers can access the DSW instance through its dedicated portal. -Visit [Data Stewardship Wizard](https://norway.dsw.elixir-europe.org/) to start building an effective DMP with tailored support. +Access the Norwegian DSW instance at [norway.dsw.elixir-europe.org](https://norway.dsw.elixir-europe.org/). Log in, select a knowledge model relevant to your research domain, and follow the guided questionnaire to build your DMP. diff --git a/src/content/services/edam/index.mdx b/src/content/services/edam/index.mdx index 339c50f3..18441ede 100644 --- a/src/content/services/edam/index.mdx +++ b/src/content/services/edam/index.mdx @@ -9,17 +9,17 @@ tags: ["research-data-management"] ## Introduction -EDAM, provided in tight collaboration with ELIXIR France, is a comprehensive ontology of well-established, familiar concepts that are prevalent within bioinformatics and computational biology, including types of data and data identifiers, data formats, operations and topics. EDAM provides a set of concepts with preferred terms and synonyms, definitions, and some additional information, organised into a simple and intuitive hierarchy for convenient use. +EDAM is a comprehensive ontology of well-established concepts in bioinformatics and computational biology. Developed in tight collaboration with ELIXIR France, it covers data types, data identifiers, data formats, operations, and topics. Each concept includes preferred terms, synonyms, and definitions, organised into a simple and intuitive hierarchy. -## About this service +## Key Features -EDAM, provided in collaboration with ELIXIR France, is a comprehensive ontology encompassing well-established concepts in bioinformatics and computational biology. It includes data types, data identifiers, formats, operations, and topics, organised into a simple and intuitive hierarchy. EDAM provides preferred terms, synonyms, definitions, and additional information, facilitating consistent and precise communication within the bioinformatics community. +- **Structured vocabulary** — standardised terms for data types, identifiers, formats, operations, and topics in bioinformatics +- **Synonym support** — maps alternative terms to preferred concepts, reducing ambiguity across tools and publications +- **Hierarchical organisation** — intuitive parent-child relationships make it easy to navigate from broad topics to specific concepts +- **Interoperability enabler** — widely adopted by bio.tools, Galaxy, and other ELIXIR services for consistent annotation +- **Community-driven** — maintained through open contributions with regular releases reflecting evolving bioinformatics practice -## Why use this service +## Getting Started -EDAM is crucial for bioinformaticians, computational biologists, and researchers requiring a standardised vocabulary for their work. It ensures consistent terminology, enhancing communication, data annotation, and interoperability. By using EDAM, researchers can accurately describe their data and analyses, promoting clarity and reproducibility in bioinformatics research. - -## How to get started - -Researchers can access and utilise EDAM’s ontology by visiting its website. Visit [EDAM](https://edamontology.org/) to explore its structured vocabulary and integrate it into your bioinformatics work. +Browse the ontology and access documentation at [edamontology.org](https://edamontology.org/). EDAM is available in OWL format for integration into tools, registries, and annotation pipelines. diff --git a/src/content/services/fair-tracks/index.mdx b/src/content/services/fair-tracks/index.mdx index c260aa2e..9c852879 100644 --- a/src/content/services/fair-tracks/index.mdx +++ b/src/content/services/fair-tracks/index.mdx @@ -8,12 +8,22 @@ tags: ["service", "format"] --- -FAIRtracks is an ecosystem for gathering, curating, validating, integrating, and indexing the metadata of genomic track datasets. In the spirit of Open Science, the FAIRtracks ecosystem provides technical solutions for the abundance of genome browser track files ("genomic tracks") to become "Findable, Accessible, Interoperable, and Reusable (FAIR)" in new research contexts. This ecosystem provides support through all the data life cycle and contains materials, services, and community building towards bridging the data gaps. FAIRtracks enables the discovery of genomic datasets through indexing and search of harmonised track metadata. +## Introduction -## What are genomic tracks? +FAIRtracks is an ecosystem for gathering, curating, validating, integrating, and indexing the metadata of genomic track datasets. Provided by ELIXIR Norway and ELIXIR Spain, it is endorsed by ELIXIR Europe as a **Recommended Interoperability Resource (RIR)**. The ecosystem provides technical solutions to make the abundance of genome browser track files discoverable and reusable in new research contexts, following FAIR principles (Findable, Accessible, Interoperable, Reusable). -Genomic tracks are condensed data files which are routinely generated through standardised data processing workflows when novel genomic datasets are published. +## What Are Genomic Tracks? -This ecosystem aims to mobilise the power of genomic tracks by connecting data providers, biocurators, tool developers, researchers, analysts, the FAIR community and everyone else interested. FAIRtracks is provided by ELIXIR Norway and ELIXIR Spain and is endorsed by ELIXIR Europe as a Recommended Interoperability Resource (RIR) +Genomic tracks are condensed data files routinely generated through standardised data processing workflows when novel genomic datasets are published. They are central to genome browsers and comparative analyses, yet their metadata often lacks the standardisation needed for cross-dataset discovery. -Find out more on the [FAIRtracks website](https://fairtracks.net/) +## Key Features + +- **Metadata harmonisation** — standardised schemas for describing genomic track datasets consistently across repositories +- **Validation services** — automated validation of track metadata against the FAIRtracks standard +- **Search and discovery** — indexing of harmonised metadata enables cross-repository search for genomic tracks +- **Full data lifecycle support** — tools and guidance from data generation through curation to publication and reuse +- **Community-driven** — connects data providers, biocurators, tool developers, and researchers to bridge data gaps + +## Getting Started + +Explore the FAIRtracks standard, tools, and community resources on the [FAIRtracks website](https://fairtracks.net/). diff --git a/src/content/services/fega-norway/index.mdx b/src/content/services/fega-norway/index.mdx index ecd1fc72..e99a98f6 100644 --- a/src/content/services/fega-norway/index.mdx +++ b/src/content/services/fega-norway/index.mdx @@ -9,17 +9,18 @@ tags: ["data-platform", "human-data", "e-infrastructure"] ## Introduction -The Norwegian Federated Node of EGA, the European Genome-Phenome Archive, is a repository for personally identifiable genetic and phenotypic data from biomedical research projects. The Federated EGA is a distributed solution for sharing and exchange of human-omics data across national borders. The federated instance collects metadata of omics data collections stored in national or regional archives and makes them available for search through the main EGA portal. This repository enables you to safely deposit, search and retrieve health and genomics data as well as manage the data access. Norwegian FEGA is hosted by the University of Oslo, ELIXIR Norway. +FEGA-Norway is the Norwegian Federated Node of the European Genome-Phenome Archive (EGA). It provides a secure repository for personally identifiable genetic and phenotypic data from biomedical research projects. As part of the Federated EGA network, it enables cross-border sharing of human omics data while keeping data stored within national infrastructure. FEGA-Norway is hosted by the University of Oslo and operated by ELIXIR Norway. -## About this service +## Key Features -FEGA-Norway, hosted by the University of Oslo and ELIXIR Norway, is part of the Federated European Genome-Phenome Archive. It offers a distributed solution for sharing and exchanging human omics data across national borders. The federated instance collects metadata of omics data collections stored in national or regional archives, making them available for search through the main EGA portal. FEGA-Norway enables researchers to safely deposit, search, and retrieve health and genomics data while managing data access securely. +- **Secure data deposition** — safely deposit personally identifiable genetic and phenotypic data with controlled access management +- **Federated architecture** — data remains in Norwegian infrastructure while metadata is discoverable through the central EGA portal +- **Cross-border sharing** — enables international collaboration on human omics data within a governed framework +- **Access control** — fine-grained data access management ensures compliance with privacy regulations and consent conditions +- **Search and retrieval** — discover and request access to datasets through the main EGA portal or the local Norwegian node +- **Standards compliance** — aligned with European data protection requirements and ELIXIR interoperability standards -## Why use this service +## Getting Started -FEGA-Norway is crucial for biomedical researchers and clinicians who handle personally identifiable genetic and phenotypic data. It ensures data privacy and security while facilitating international collaboration and data sharing. By using FEGA-Norway, researchers can contribute to and benefit from a vast repository of omics data, accelerating discoveries in genomics and personalised medicine. - -## How to get started - -To utilise FEGA-Norway, you can deposit and access data through the main EGA portal. Visit [FEGA-Norway](https://ega.elixir.no/) for more information on how to get started and contribute to this essential resource. +Visit [ega.elixir.no](https://ega.elixir.no/) to learn about the submission process and access policies. Data can be deposited and retrieved through the FEGA-Norway portal or the main EGA portal. diff --git a/src/content/services/galaxy/index.mdx b/src/content/services/galaxy/index.mdx index c330c14a..5b049a26 100644 --- a/src/content/services/galaxy/index.mdx +++ b/src/content/services/galaxy/index.mdx @@ -7,21 +7,22 @@ summary: "A web-based platform offering tools and workflows for performing compl tags: ["e-infrastructure", "analysis"] --- -# UseGalaxy - ## Introduction -Galaxy is an open, web-based analysis platform for accessible, reproducible, and transparent computational life science research. The usegalaxy.no platform offers DIY bioinformatics analysis with pre-made workflows and almost 2000 tools available. The Galaxy data analysis platform is maintained by ELIXIR Norway to support life science professionals across industry and academia. Research in Galaxy is supported by 3 pillars: data, tools, and workflows. Import and modify your data, run tools to process and visualise data without concern for processing power and recreate analyses with galaxy workflows. By utilising our infrastructure, your research will be less impacted by a lack of computer processing power or reproducibility in workflows. Data analysis performed in usegalaxy.no, together with the results from the analysis, can easily be shared with collaborators. - -## About this service +Galaxy is an open, web-based platform for accessible, reproducible, and transparent computational life science research. The Norwegian instance at [usegalaxy.no](https://usegalaxy.no/) is maintained by ELIXIR Norway and provides nearly 2000 bioinformatics tools and pre-made workflows for researchers across industry and academia. All analyses run on shared infrastructure, removing the need for local compute resources. -Galaxy, maintained by ELIXIR Norway, is a web-based analysis platform designed to support computational life science research. It offers a wide array of tools and workflows for performing complex bioinformatics analyses without requiring advanced computing resources. Galaxy ensures that analyses are reproducible and transparent, supporting data import, modification, processing, and visualisation. The platform is designed to be user-friendly, making advanced bioinformatics accessible to all researchers. +## Key Features -## Why use this service +- **No-code bioinformatics** — run complex analyses through a graphical web interface without programming or command-line skills +- **Nearly 2000 tools** — covering genomics, transcriptomics, proteomics, metabolomics, and more +- **Pre-built workflows** — reusable analysis pipelines that ensure reproducibility across experiments and collaborators +- **Reproducible research** — every analysis step is tracked with full provenance, making results transparent and shareable +- **Collaborative sharing** — datasets, workflows, and results can be shared directly with collaborators on the platform +- **Scalable compute** — analyses run on ELIXIR Norway infrastructure, independent of local hardware limitations -Galaxy is perfect for bioinformaticians, life scientists, and data analysts who need a user-friendly platform for computational analyses. It democratizes access to bioinformatics tools, allowing researchers to conduct advanced analyses regardless of their computational expertise. Galaxy's extensive toolset and reproducibility features make it a valuable asset for any research project. The platform's flexibility and wide range of tools help streamline research workflows and improve data analysis efficiency. +## Getting Started -## How to get started +- **Academic users:** log in via FEIDE if your institution is connected to the NeLS portal +- **Industry and international collaborators:** apply for a NeLS ID to gain access (extensive industrial use is charged based on CPU hours) -To access Galaxy, users can log in via FEIDE if their institution is connected to the NeLS portal. For industry and international collaborators without FEIDE access, a NeLS ID can be obtained. Visit [Galaxy](https://usegalaxy.no/) to start exploring its powerful analytical capabilities. -To access this service, log in to FEIDE with your institution if it is connected to the NeLS portal. Users from the industry sector and international research collaborators who do not have FEIDE access can apply for a NeLS ID to get access. Extensive use by the industrial sector will have to be charged based on CPU hours. +Visit [usegalaxy.no](https://usegalaxy.no/) to create an account and start your first analysis. diff --git a/src/content/services/gsuite-hyperbrowser/index.mdx b/src/content/services/gsuite-hyperbrowser/index.mdx index 5c2c1ace..60a3e734 100644 --- a/src/content/services/gsuite-hyperbrowser/index.mdx +++ b/src/content/services/gsuite-hyperbrowser/index.mdx @@ -9,16 +9,23 @@ tags: ["functional-genomics"] ## Introduction -The HyperBrowser, also called GSuite HyperBrowser, is an open-ended web server for analysis of large-scale genomic and epigenomic tracks, built on Galaxy. It offers an easy and straightforward way to manage and analyse collections of genomic tracks. Suite HyperBrowser includes tools to handle acquisition, processing and analysis of collections of genomic tracks, represented in a simple tabular format, GSuite. The Suite HyperBrowser is a part of the Genomic HyperBrowser service, provided by ELIXIR Norway. The service offers both an advanced and a basic user mode, giving you the best experience to reach your goals with these tools. +The GSuite HyperBrowser is an open-ended web server for analysis of large-scale genomic and epigenomic tracks, built on the **Galaxy** platform. It provides tools for acquisition, processing, and statistical analysis of collections of genomic tracks represented in a simple tabular format called **GSuite**. The service is provided by ELIXIR Norway and offers both an advanced and a basic user mode. -## About this service +## Key Features -HyperBrowser, provided by ELIXIR Norway, is a sophisticated platform for statistical analysis of genomic data. It offers a wide range of tools and workflows designed to perform complex statistical tests and analyses, supporting researchers in uncovering significant insights from their genomic data. HyperBrowser integrates a user-friendly interface with powerful analytical capabilities, making it an essential tool for genomic research. +- **Large-scale track analysis** — perform complex statistical tests on genomic and epigenomic track collections +- **GSuite format** — manage track collections in a simple, standardized tabular format +- **Galaxy integration** — leverage the Galaxy ecosystem for reproducible workflows +- **Dual user modes** — basic mode for straightforward analyses, advanced mode for custom statistical testing +- **Hypothesis testing** — identify statistically significant patterns and relationships within genomic datasets -## Why use this service +## Getting Started -HyperBrowser is ideal for life scientists, geneticists, and bioinformaticians who require advanced statistical tools for genomic data analysis. The platform supports the identification of significant patterns and relationships within genomic datasets, enhancing the depth and accuracy of research findings. HyperBrowser’s comprehensive suite of tools and user-friendly interface make it accessible for researchers with varying levels of expertise, promoting robust and reproducible analyses. +1. Visit the [HyperBrowser web server](https://hyperbrowser.uio.no/) +2. Select basic or advanced user mode depending on your analysis needs +3. Upload or import your genomic tracks +4. Use the GSuite tools to organize, process, and analyse your track collections -## How to get started +## Links -Access HyperBrowser today to begin performing advanced statistical analyses on their genomic data. Visit [HyperBrowser](https://hyperbrowser.uio.no/) to start leveraging its powerful analytical tools and enhance your genomic research. +- [HyperBrowser](https://hyperbrowser.uio.no/) — web server diff --git a/src/content/services/hunt-cloud/index.mdx b/src/content/services/hunt-cloud/index.mdx index 31a2f631..117bd6ec 100644 --- a/src/content/services/hunt-cloud/index.mdx +++ b/src/content/services/hunt-cloud/index.mdx @@ -7,20 +7,24 @@ summary: "HUNT Cloud is a secure solution for sharing, analysing and storing pot tags: ["data-platform", "human-data"] --- -![](./hunt-cloud.png) - ## Introduction -The HUNT Study has handled sensitive digital information since 1984. HUNT Cloud was established in 2013 to elevate the collection, accessibility and exploration of large-scale information. HUNT Cloud is owned by NTNU and operated by HUNT Research Centre at the Department of Public Health and Nursing at the Faculty of Medicine and Health Sciences. +HUNT Cloud is a secure cloud platform for storing, sharing, and analysing **potentially identifiable human data**. Established in 2013 and building on the HUNT Study's experience handling sensitive digital information since 1984, the platform is owned by NTNU and operated by HUNT Research Centre at the Department of Public Health and Nursing, Faculty of Medicine and Health Sciences. HUNT Cloud is part of the ELIXIR Norway infrastructure. -## About this service +## Key Features -HUNT Cloud, operated by the HUNT Research Centre at NTNU and part of ELIXIR Norway, is a secure platform for storing, sharing, and analysing potentially identifiable human data. Established in 2013, HUNT Cloud leverages the HUNT Study's expertise in handling sensitive digital information to support a wide range of research projects. The platform ensures high standards of data security and compliance, making it suitable for handling sensitive human data. HUNT Cloud facilitates efficient data management and collaboration in human research studies. +- **Sensitive data handling** — purpose-built for potentially identifiable human data with strict security and compliance measures +- **Secure compute environment** — analyse data in place without moving it outside controlled infrastructure +- **Collaboration support** — share data securely across research groups and institutions +- **Regulatory compliance** — meets Norwegian and European data protection requirements +- **Decades of expertise** — backed by HUNT's 40+ years of experience managing sensitive health information -## Why use this service +## Getting Started -HUNT Cloud provides an essential service for researchers working with human data that requires a secure and reliable platform for data management and analysis. It is particularly useful for life scientists, epidemiologists, and data analysts who need to protect the confidentiality of their research data while enabling comprehensive analysis and collaboration. The platform supports robust data security measures, ensuring compliance with regulatory standards. By using HUNT Cloud, researchers can enhance their data management practices and collaboration capabilities. +1. Visit [HUNT Cloud](https://about.hdc.ntnu.no/) to review service agreements and data access procedures +2. Apply for a lab environment through the HUNT Cloud onboarding process +3. Upload and manage your sensitive datasets within the secure infrastructure -## How to get started +## Links -You can access HUNT Cloud through ELIXIR Norway to securely manage sensitive data. Visit [HUNT Cloud](https://about.hdc.ntnu.no/) to explore its features and enhance your research capabilities. +- [HUNT Cloud](https://about.hdc.ntnu.no/) — service documentation and onboarding diff --git a/src/content/services/immune-ml/index.mdx b/src/content/services/immune-ml/index.mdx index bead4e86..7fa8f707 100644 --- a/src/content/services/immune-ml/index.mdx +++ b/src/content/services/immune-ml/index.mdx @@ -9,16 +9,24 @@ tags: ["human-data", "analysis"] ## Introduction -immuneML is a machine learning framework to predict adaptive immune response and disease, as initially described in Pavlovic et al. immuneML is a platform for machine learning-based analysis and classification of adaptive immune receptors and repertoires (AIRR). ImmuneML can be used in training machine learning models for repertoire classification (e.g. disease prediction) or receptor sequence classification (e.g. antigen binding prediction), and applying them to new datasets with unknown class labels. It can also be used for simulating datasets for machine learning model benchmarking, performing exploratory analysis of datasets such as statistical analyses, dimensionality reduction or clustering to gain deeper insight into the data. +immuneML is a machine learning framework for the analysis and classification of **adaptive immune receptors and repertoires (AIRR)**, as initially described in Pavlovic et al. Developed by ELIXIR Norway, immuneML enables researchers to train ML models, apply them to new datasets, simulate benchmarking data, and perform exploratory analyses of immune receptor data. -## About this service +## Key Features -immuneML is a powerful platform developed by ELIXIR Norway for the machine learning-based analysis and classification of adaptive immune receptors and repertoires (AIRR). This service allows researchers to train machine learning models for repertoire classification, such as disease prediction, and receptor sequence classification, like antigen binding prediction. It also supports the simulation of datasets for benchmarking machine learning models and performing exploratory analyses, including statistical analyses, dimensionality reduction, and clustering, to gain deeper insights into the data. +- **Repertoire classification** — train models for disease prediction based on immune repertoire data +- **Receptor sequence classification** — predict antigen binding and other receptor-level properties +- **Dataset simulation** — generate synthetic AIRR datasets for ML model benchmarking +- **Exploratory analysis** — statistical analyses, dimensionality reduction, and clustering for deeper insight into immune data +- **Reproducible workflows** — YAML-based specification of complete analysis pipelines +- **Broad applications** — supports research in immunotherapy, vaccine development, and disease diagnostics -## Why use this service +## Getting Started -immuneML is invaluable for immunologists, bioinformaticians, and data scientists focused on understanding and predicting immune responses. By leveraging machine learning, it provides sophisticated tools to analyse complex immune data, facilitating advancements in immunotherapy, vaccine development, and disease diagnostics. The platform’s comprehensive capabilities and user-friendly design make it an essential resource for cutting-edge immune research. +1. Visit [immuneML](https://immuneml.uio.no/) to access the web interface +2. Follow the Quickstart tutorial to set up your first analysis +3. Define your analysis using YAML specifications or use the provided templates +4. Train, evaluate, and apply models to your AIRR datasets -## How to get started +## Links -Start using immuneML today by accessing the Quickstart tutorial available on the immuneML website. Visit [immuneML](https://immuneml.uio.no/) to begin exploring its powerful features and enhance your immune research. +- [immuneML](https://immuneml.uio.no/) — web platform and documentation diff --git a/src/content/services/jaspar/index.mdx b/src/content/services/jaspar/index.mdx index fe7e22c3..ed5cbc64 100644 --- a/src/content/services/jaspar/index.mdx +++ b/src/content/services/jaspar/index.mdx @@ -9,16 +9,23 @@ tags: ["data-platform", "functional-genomics"] ## Introduction -[JASPAR](https://jaspar.elixir.no/) is an open-access database of manually curated non-redundant transcription factor (TF) binding profiles. The JASPAR core database contains a curated, non-redundant set of profiles, derived from published collections of experimentally defined transcription factor binding sites for eukaryotes. The prime difference to similar resources (TRANSFAC, etc.) consists of the open data access, non-redundancy and quality. This database is especially helpful when you seek models for specific factors or structural classes, or if experimental evidence is paramount. Search directly for organism, gene or protein, browse in 6 taxonomic groups or participate in the Q and A forum directly from the JASPAR website. You can also access the JASPAR database programmatically with RESTful API or run the Pythonic interface pyJASPAR. +[JASPAR](https://jaspar.elixir.no/) is an open-access database of manually curated, non-redundant **transcription factor (TF) binding profiles** for eukaryotes. Supported by ELIXIR Norway, the database contains profiles derived from published collections of experimentally defined TF binding sites. Its key differentiators from similar resources (such as TRANSFAC) are **open data access**, **non-redundancy**, and **quality**. -## About this service +## Key Features -JASPAR, supported by ELIXIR Norway, is a comprehensive database of manually curated, non-redundant transcription factor (TF) binding profiles. The core database includes experimentally defined binding sites, offering models for specific factors or structural classes. Unlike similar resources, JASPAR provides open data access and high-quality, non-redundant profiles, making it a valuable tool for researchers studying gene regulation and transcription factor interactions. +- **Curated binding profiles** — manually verified, non-redundant TF binding site models backed by experimental evidence +- **Multi-level search** — search by organism, gene, or protein, or browse across 6 taxonomic groups +- **Programmatic access** — RESTful API and **pyJASPAR** Python interface for automated queries and integration +- **Community forum** — Q&A forum for discussion and support directly on the JASPAR website +- **Open access** — all data freely available with no registration required -## Why use this service +## Getting Started -JASPAR is ideal for geneticists, molecular biologists, and bioinformaticians requiring accurate TF binding profiles. The database supports various research needs, from identifying binding sites to understanding gene regulation mechanisms. Its open access and extensive data make it a preferred choice for researchers seeking reliable and high-quality TF binding information. +1. Visit [JASPAR](https://jaspar.elixir.no/) to search or browse TF binding profiles +2. Use the search function to find profiles by organism, gene name, or protein +3. For programmatic access, use the [RESTful API](https://jaspar.elixir.no/api/) or install pyJASPAR via pip -## How to get started +## Links -Researchers can access JASPAR through its website to search for TF binding profiles, browse taxonomic groups, or use the RESTful API for programmatic access. Visit [JASPAR](https://jaspar.elixir.no/) to start exploring its resources and integrating TF data into your research. +- [JASPAR](https://jaspar.elixir.no/) — database and search interface +- [JASPAR API](https://jaspar.elixir.no/api/) — programmatic access diff --git a/src/content/services/lice-base/index.mdx b/src/content/services/lice-base/index.mdx index a01a6cb4..babfaff6 100644 --- a/src/content/services/lice-base/index.mdx +++ b/src/content/services/lice-base/index.mdx @@ -9,16 +9,19 @@ tags: ["data-platform"] ## Introduction -LiceBase is a model organism database collecting genomic information and annotation of the Atlantic salmon louse, a major fish parasite with an impact on global ecology and aquaculture economy. LiceBase is the sister database of Salmobase and maintained by ELIXIR Norway. This database facilitates searching through genes and sequences related to salmon lice, through the search function, searching for blast results or bulk sequence retrieval. LiceBase also contains in-situ images uploaded by users, helpful for image comparison, an RNAi database and a collaborative forum for discussions, questions and answers on the topic of salmon lice. +LiceBase is a model organism database for the **Atlantic salmon louse** (*Lepeophtheirus salmonis*), a major fish parasite with significant impact on global aquaculture and marine ecology. Maintained by ELIXIR Norway as a sister database to Salmobase, LiceBase collects genomic information and annotation to support research into the biology and management of salmon lice. -## About this service +## Key Features -LiceBase is a specialized genomic database maintained by ELIXIR Norway, focusing on salmon lice (Lepeophtheirus salmonis). This platform provides detailed genomic and transcriptomic data, aiding in the study and management of this significant marine parasite. LiceBase integrates a range of resources and tools to support researchers in understanding the biology, genetics, and impact of salmon lice on aquaculture and marine ecosystems. +- **Gene and sequence search** — search and retrieve genes and sequences related to salmon lice, including BLAST searches and bulk sequence retrieval +- **Genomic and transcriptomic data** — comprehensive annotation of the salmon louse genome +- **In-situ image database** — user-uploaded images for morphological comparison and reference +- **RNAi database** — RNA interference experiment data for functional genomics studies +- **Community forum** — collaborative discussions, questions, and answers on salmon lice research -## Why use this service +## Getting Started -LiceBase is essential for marine biologists, parasitologists, and researchers in aquaculture who need comprehensive data on salmon lice. The platform facilitates in-depth genomic research, contributing to better management and control strategies for salmon lice infestations. By using LiceBase, researchers can access high-quality data and tools that enhance their understanding of the parasite’s biology and genetics. This can lead to significant advancements in managing the impact of salmon lice on fish populations and aquaculture. - -## How to get started - -To start using LiceBase, researchers can access its extensive genomic and transcriptomic datasets. Visit [LiceBase](link here) to explore its resources and tools, and begin your research on salmon lice. +1. Visit the LiceBase website to access the database +2. Use the search function to find genes, sequences, or BLAST results +3. Browse the in-situ image collection or RNAi database for experimental data +4. Join the community forum to discuss findings with other researchers diff --git a/src/content/services/marine-metagenomics-portal/index.mdx b/src/content/services/marine-metagenomics-portal/index.mdx index 00f43ad3..ad7287d0 100644 --- a/src/content/services/marine-metagenomics-portal/index.mdx +++ b/src/content/services/marine-metagenomics-portal/index.mdx @@ -7,56 +7,27 @@ summary: "The Marine Metagenomics Portal provides high-quality databases for mar tags: ["biodiversity", "analysis"] --- -# Introduction - -The Marine Metagenomics Portal provides access to high-quality curated -and freely accessible marine microbial genomics and metagenomics -resources. It includes the MAR databases, a collection of richly -annotated and manually curated contextual and sequence databases, -and MetaPipe, a complete workflow for the analysis of marine -metagenomic data. - -The Marine Metagenomics Portal provides freely accessible -microbial genomics and metagenomics reference databases that -include MarRef, MarDB, and MarCat. The MMP also includes a -search engine that you can use to query all three databases at -once. - -This service is run by the University of Tromsø, ELIXIR -Norway, as one of three service offered under the ELIXIR Microbiome -community. The goals of this community is to develop -standards for FAIR microbiome analyses, providing support -in data, tools, workflows and federated computation. They -also aim to Represent the Microbiome Community in its complexity -and build capacity in [microbiome analyses](https://elixir-europe.org/communities/microbiome). - -# About this service - -The Marine Metagenomics Portal (MMP), managed by the University -of Tromsø and ELIXIR Norway, provides high-quality, curated -databases for marine microbial genomics and metagenomics research. - -It includes resources like MarRef, MarDB, and MarCat, which are -essential for analyzing marine metagenomic data. MMP supports -the ELIXIR Microbiome community's goal of developing standards -for FAIR microbiome analyzes. The portal offers a range -of tools and databases to facilitate marine microbial -research and data management. - -# Why use this service? - -MMP is invaluable for marine biologists, microbiologists, -and bioinformaticians focusing on marine microbial genomics. -It offers comprehensive resources for analyzing and interpreting -marine metagenomic data. The portal's high-quality curated -databases ensure accurate and reliable data analysis, -promoting scientific discovery. By using MMP, researchers -can access a wealth of information and tools to support -their marine microbial research projects. - -# How to get started? - -Access the Marine Metagenomics Portal today to start utilizing -its databases and analytical tools. Visit [Marine Metagenomics -Portal](link here) to start exploring and analyzing -marine microbial data. +## Introduction + +The Marine Metagenomics Portal (MMP) provides access to high-quality, curated, and freely accessible **marine microbial genomics and metagenomics** resources. Run by UiT The Arctic University of Norway as part of ELIXIR Norway, MMP is one of the services offered under the [ELIXIR Microbiome community](https://elixir-europe.org/communities/microbiome), which develops standards for FAIR microbiome analyses. + +## Key Features + +- **MAR databases** — richly annotated and manually curated sequence databases: + - **MarRef** — reference genomes for marine prokaryotes + - **MarDB** — non-reference marine prokaryotic genomes + - **MarCat** — metagenome-assembled genomes from marine environments +- **Unified search** — query all three MAR databases simultaneously through a single search engine +- **MetaPipe** — complete workflow for the analysis of marine metagenomic data +- **FAIR standards** — data and workflows aligned with FAIR principles for microbiome research +- **Open access** — all databases and tools freely available + +## Getting Started + +1. Visit the Marine Metagenomics Portal to access the MAR databases +2. Use the unified search engine to query MarRef, MarDB, and MarCat +3. Run MetaPipe for end-to-end analysis of marine metagenomic datasets + +## Links + +- [ELIXIR Microbiome community](https://elixir-europe.org/communities/microbiome) — community goals and resources diff --git a/src/content/services/mir-gene-db/index.mdx b/src/content/services/mir-gene-db/index.mdx index 9b909fcd..aa464bda 100644 --- a/src/content/services/mir-gene-db/index.mdx +++ b/src/content/services/mir-gene-db/index.mdx @@ -9,18 +9,23 @@ tags: ["functional-genomics"] ## Introduction -MirGeneDB is a database of manually curated microRNA genes that have been validated and annotated as initially described in Fromm et al. 2015. MirGeneDB 2.1 includes more than 16,000 microRNA gene entries representing more than 1,500 miRNA families from 75 metazoan species. All microRNAs can be browsed, searched and downloaded. Among the features MirGeneDB provides, are an overview page where all data is shown in summary representation, simple navigation through gene- and specie-rich sites and visual representation of a normalized expression heatmap (RPM) of all samples on the browse-section for each species (now with downloadable count matrix). +MirGeneDB is a database of manually curated **microRNA genes** that have been validated and annotated, as initially described in Fromm et al. 2015. Maintained by ELIXIR Norway, MirGeneDB 2.1 includes more than **16,000 microRNA gene entries** representing over 1,500 miRNA families from 75 metazoan species. -https://academic.oup.com/nar/article/50/D1/D204/6439665?login=true +## Key Features -## About this service +- **Curated and validated** — all entries are manually curated with consistent annotation standards +- **Broad taxonomic coverage** — 75 metazoan species across more than 1,500 miRNA families +- **Browse, search, and download** — full access to all microRNA gene data +- **Expression heatmaps** — normalized expression visualization (RPM) for each species with downloadable count matrices +- **Overview page** — summary representation of all data with simple navigation through gene- and species-rich sections +- **Applications** — supports research in gene regulation, evolutionary biology, and disease mechanisms -MirGeneDB, described in Fromm et al. 2015 and maintained by ELIXIR Norway, offers a meticulously curated collection of microRNA genes. MirGeneDB 2.1 includes over 16,000 gene entries representing more than 1,500 miRNA families from 75 metazoan species. The database allows for browsing, searching, and downloading microRNA data, featuring an overview page for summary representation and visual representation of normalized expression heatmaps for each species. +## Getting Started -## Why use this service +1. Visit the MirGeneDB website to browse miRNA genes by species or family +2. Use the search function to find specific microRNA genes +3. Download count matrices and expression data for your analyses -MirGeneDB is essential for researchers in molecular biology, genomics, and bioinformatics focusing on microRNA studies. It provides reliable, curated data, facilitating research on gene regulation, evolutionary biology, and disease mechanisms. The database’s extensive collection and user-friendly interface make it a valuable resource for in-depth microRNA research. +## Links -## How to get started - -Researchers can browse, search, and download data from MirGeneDB by visiting its website. Access MirGeneDB to start utilizing its comprehensive microRNA resources for your research. +- [MirGeneDB publication](https://academic.oup.com/nar/article/50/D1/D204/6439665) — Nucleic Acids Research database article diff --git a/src/content/services/nels/index.mdx b/src/content/services/nels/index.mdx index 58e71e0a..3c427026 100644 --- a/src/content/services/nels/index.mdx +++ b/src/content/services/nels/index.mdx @@ -9,17 +9,23 @@ tags: ["data-platform", "e-infrastructure"] ## Introduction -The Norwegian e-infrastructure for life sciences (NeLS), is a unique national portal for sharing, analysis and midterm storage of non-sensitive molecular life science data. Coordinated and developed by the Bergen node. NeLS is the Norwegian e-infrastructure for life sciences created for analysis, sharing, and storage of high throughput genomics data. In NeLS researchers can safely store and share scientific data, also with collaborators residing outside of Norway. Towards the mission of open science data and facilitating data sharing, NeLS is an e-infrastructure providing scientists a platform to handle, store and share their non-sensitive life science data. +The Norwegian e-Infrastructure for Life Sciences (NeLS) is a national portal for **analysis, sharing, and midterm storage** of non-sensitive molecular life science data. Coordinated and developed by the ELIXIR Norway Bergen node, NeLS provides researchers with a platform to safely store and share scientific data with collaborators both within and outside Norway, supporting the mission of open science. -## About this service +## Key Features -The Norwegian e-infrastructure for life sciences (NeLS) is a comprehensive platform coordinated by the Bergen node, designed to support the analysis, sharing, and midterm storage of high-throughput genomics data. NeLS provides a secure environment for researchers to manage their non-sensitive molecular life science data. It promotes open science and facilitates both national and international data sharing. NeLS integrates various tools and resources to ensure robust and efficient data management practices. +- **Midterm data storage** — secure storage for non-sensitive high-throughput genomics and other life science data +- **Data sharing** — share datasets with national and international collaborators +- **Analysis tools** — integrated tools and Galaxy integration for genomic data analysis +- **Open science** — designed to facilitate FAIR data practices and open data sharing +- **Project management** — organize data by projects and connect with collaborators through the portal -## Why use this service +## Getting Started -NeLS is ideal for life scientists, geneticists, and bioinformaticians who require a reliable platform for storing, sharing, and analyzing genomic data. The platform enhances collaborative efforts and supports robust data management practices, ensuring that research data is efficiently shared and utilized within the scientific community. NeLS helps streamline workflows and provides a secure environment for managing valuable research data. By using NeLS, researchers can ensure their data is well-organized and accessible for future studies. +1. Visit [NeLS](https://nels.elixir.no/nels-web/#/) and log in with your institutional credentials +2. Create a project and upload your datasets +3. Share data with collaborators by granting project access +4. Use integrated analysis tools or connect to Galaxy for workflows -## How to get started - -Log in to our NeLS portal to explore its features and see how it can solve your data needs. The platform allows users to connect with collaborators and discover existing research projects. Visit [NeLS](https://nels.elixir.no/nels-web/#/) to get started and enhance your data management capabilities. +## Links +- [NeLS portal](https://nels.elixir.no/nels-web/#/) — log in and manage your data diff --git a/src/content/services/rdm-kit/index.mdx b/src/content/services/rdm-kit/index.mdx index 61da0b3d..f1d64cf7 100644 --- a/src/content/services/rdm-kit/index.mdx +++ b/src/content/services/rdm-kit/index.mdx @@ -9,16 +9,27 @@ tags: ["research-data-management"] ## Introduction -The RDMkit is a resouce initiated by ELIXIR Converge under involvement of ELIXIR Norway. It empowers researchers struggling to manage their research data by offering dedicated guidance on the research data life cycle stages, the user’s role, the research domain, the data management problem, the tools and resources needed and includes practical examples for tools assemblies. +RDMkit is a community-driven resource initiated by [ELIXIR Converge](https://elixir-europe.org/about-us/how-funded/eu-projects/converge) with involvement from ELIXIR Norway. It provides practical, structured guidance on research data management (RDM) across the entire data lifecycle — from planning and collecting to sharing and preserving data. -## About this service +The resource is designed for researchers, data stewards, and support staff who need actionable advice rather than abstract policy documents. -RDMkit, initiated by ELIXIR Converge with involvement from ELIXIR Norway, provides dedicated guidance on the research data lifecycle. It covers various aspects such as user roles, research domains, data management problems, and required tools and resources. RDMkit includes practical examples and tool assemblies, empowering researchers to manage their data efficiently and effectively. +## Key Features -## Why use this service +- **Lifecycle guidance** — step-by-step recommendations for each stage of the research data lifecycle +- **Domain-specific pages** — tailored advice for life sciences sub-domains including genomics, proteomics, and structural biology +- **Role-based navigation** — content organized by user role (researcher, data steward, principal investigator) +- **Tool assemblies** — practical examples showing how to combine tools and services to solve common data management problems +- **FAIR principles** — guidance aligned with making data Findable, Accessible, Interoperable, and Reusable +- **National resources** — country-specific pages with local regulations, infrastructure, and support contacts -RDMkit is vital for researchers, data managers, and anyone involved in research data management. It offers comprehensive, practical guidance tailored to specific needs, ensuring efficient data management throughout the research lifecycle. By using RDMkit, researchers can enhance data quality, compliance, and reusability, supporting FAIR data principles. +## Getting Started -## How to get started +1. Visit [RDMkit](https://rdmkit.elixir-europe.org/) to browse the resource +2. Navigate by **lifecycle stage**, **your role**, or **research domain** to find relevant guidance +3. Use the tool assembly pages for practical workflows combining multiple services +4. Contribute improvements or domain-specific content via the [GitHub repository](https://github.com/elixir-europe/rdmkit) -Researchers can explore RDMkit’s resources and guidance by visiting its website. Access [RDMkit](link here) to start managing your research data effectively with tailored support and practical tools. +## Links + +- [RDMkit](https://rdmkit.elixir-europe.org/) +- [ELIXIR Converge](https://elixir-europe.org/about-us/how-funded/eu-projects/converge) diff --git a/src/content/services/safe/index.mdx b/src/content/services/safe/index.mdx index 582404c2..0f8faa83 100644 --- a/src/content/services/safe/index.mdx +++ b/src/content/services/safe/index.mdx @@ -9,18 +9,27 @@ tags: ["data-platform", "human-data"] ## Introduction -SAFE (secure access to research data and e-infrastructure) is a solution for secure processing of sensitive personal data in research, developed by the UT division at the University of Bergen. is a secure solution for sharing, analyzing and storing potentially identifiable human data. Access to SAFE is provided by ELIXIR Norway. +SAFE (Secure Access to Research Data and e-Infrastructure) is a platform for secure processing, sharing, and analysis of sensitive personal data in research. Developed by the IT division at the University of Bergen and provided through ELIXIR Norway, SAFE enables researchers to work with potentially identifiable human data in a compliant, controlled environment. -SAFE enables your team to work on science projects in a secure way across the globe. Work safely from anywhere on your computer, knowing the team has secure access to the same data and needed pieces of software. All you need is Wi-Fi to transfer research data from the instruments to SAFE and work with the data from there. +The platform supports distributed collaboration — team members anywhere in the world can securely access the same datasets and software tools. Research data can be transferred directly from instruments into SAFE, and all subsequent work happens within the secure environment. -## About this service +## Key Features -SAFE (Secure Access to Research Data and e-infrastructure), developed by the University of Bergen and provided by ELIXIR Norway, offers a secure solution for processing, sharing, and analyzing sensitive personal data in research. This platform supports global collaboration by ensuring that data and necessary software are accessible securely via the internet. SAFE provides a robust infrastructure for managing sensitive information, ensuring compliance with security standards. The platform is designed to facilitate efficient and secure research workflows. +- **Secure remote access** — work with sensitive data from any location with an internet connection +- **Shared project environments** — team members access the same data and pre-installed software within isolated project areas +- **Data transfer from instruments** — connect lab instruments directly to SAFE for secure ingestion +- **Compliance** — designed to meet Norwegian and EU regulations for handling sensitive personal data +- **Collaboration across institutions** — securely share data and analysis environments with external collaborators +- **ELIXIR Norway integration** — access provided and supported through ELIXIR Norway -## Why use this service +## Getting Started -SAFE is an ideal service for researchers working with sensitive personal data who require a secure environment for data analysis and sharing. It benefits life scientists, bioinformaticians, and data analysts by providing a robust infrastructure for managing sensitive information securely and efficiently. SAFE facilitates compliant and effective research workflows, promoting collaboration across institutions. By using SAFE, researchers can ensure their sensitive data is protected and handled according to best practices. +1. Contact [ELIXIR Norway](https://elixir.no/contact) to request access to SAFE +2. Once approved, set up your project area and invite collaborators +3. Transfer research data from your instruments into the secure environment +4. Access your project from any computer with an internet connection -## How to get started +## Links -Researchers and data analysts can connect their instruments to SAFE and access their data securely from any location with internet access. Visit [SAFE](link here) to begin using this secure platform for your sensitive research data. +- [SAFE at the University of Bergen](https://www.uib.no/en/it/131011/safe-secure-access-research-data-and-e-infrastructure) +- [ELIXIR Norway contact](https://elixir.no/contact) diff --git a/src/content/services/salmo-base/index.mdx b/src/content/services/salmo-base/index.mdx index 57d1d13a..5c192b1e 100644 --- a/src/content/services/salmo-base/index.mdx +++ b/src/content/services/salmo-base/index.mdx @@ -9,19 +9,28 @@ tags: ["functional-genomics"] ## Introduction -SalmoBase is a comprehensive data resource for Atlantic salmon and other salmonid genome information. The service provides access to browse through salmonid species genomes, specific gene assemblies and search for genetic data. Through SalmoBase, molecular genomic resources for salmonid species are continuously made publically available in a framework of visualisations and analytic tools. JBrowse, BLAST and SalMotifDB are sub tools provided to facilitate utilisation of the genomic salmonid data. Salmobase is the sister database of LiceBase. +SalmoBase is a comprehensive genomic data resource for Atlantic salmon and other salmonid species. It provides genome browsers, gene assemblies, and search tools, making molecular genomic resources for salmonids publicly available through integrated visualization and analysis frameworks. SalmoBase is the sister database of [LiceBase](https://licebase.org/). -Salmonids are ray-finned fishes which constitute 11 genera and at least 70 species including Atlantic salmon, whitefishes, graylings, rainbow trout, and char. The common ancestor of all Salmonidae experienced a whole genome duplication (WGD) ~80 million years ago, resulting in an autotetraploid genome. Genomic rediplodization is still going on in salmonid species, providing an unique system for studying evolutionary consequences of whole genome duplication. In recent years, high quality genome sequences of Atlantic salmon and Rainbow trout has been established, due to their scientific and commercial values. +Salmonids encompass 11 genera and at least 70 species, including Atlantic salmon, rainbow trout, whitefishes, graylings, and char. Their common ancestor experienced a whole genome duplication (WGD) approximately 80 million years ago, resulting in an autotetraploid genome. Ongoing genomic rediploidization makes salmonids a unique system for studying the evolutionary consequences of WGD. -## About this service +## Key Features -SalmoBase is a dedicated platform for accessing and analyzing genomic information on Atlantic salmon and other salmonid species. It offers a variety of tools and data, including genome browsers, specific gene assemblies, and genetic data searches. SalmoBase supports research on the evolutionary consequences of whole genome duplication in salmonids. The platform provides comprehensive resources for studying salmonid genomics, facilitating advanced research and analysis. +- **Genome browser** — browse salmonid species genomes interactively via [JBrowse](https://jbrowse.org/) +- **BLAST search** — query salmonid genomic and protein sequences against reference databases +- **SalMotifDB** — access transcription factor binding motifs specific to salmonid species +- **Gene assemblies** — explore specific gene assemblies across multiple salmonid species +- **High-quality references** — includes established genome sequences for Atlantic salmon and rainbow trout +- **Continuous updates** — new genomic resources are added as they become publicly available -## Why use this service +## Getting Started -SalmoBase is ideal for geneticists, evolutionary biologists, and bioinformaticians researching salmonid species. The platform provides extensive genomic data and tools for in-depth analysis, supporting a wide range of research applications. SalmoBase promotes collaboration and data sharing within the scientific community, enhancing research outcomes. By utilizing SalmoBase, researchers can access valuable genomic information and tools to advance their studies. +1. Visit [SalmoBase](https://salmobase.org/) to explore available species and datasets +2. Use the **genome browser** to navigate chromosomal regions of interest +3. Run **BLAST** searches to find homologous sequences across salmonid genomes +4. Access **SalMotifDB** for transcription factor binding site data -## How to get started +## Links -Researchers can explore SalmoBase to access genomic data and tools for salmonid research. Visit [SalmoBase](https://salmobase.org/) to begin leveraging its resources for your research projects. +- [SalmoBase](https://salmobase.org/) +- [LiceBase](https://licebase.org/) — sister database for salmon lice genomics diff --git a/src/content/services/sars-cov2-db/index.mdx b/src/content/services/sars-cov2-db/index.mdx index 2f883d18..1dab62a3 100644 --- a/src/content/services/sars-cov2-db/index.mdx +++ b/src/content/services/sars-cov2-db/index.mdx @@ -9,16 +9,26 @@ tags: ["data-platform"] ## Introduction -SARS-CoV2 DB is a database with high-quality curated and freely accessible SARS-CoV-2 genomics- and contextual resources. This manually curated database and portal currently includes 865 SARS-CoV-2 genomes, each with 44 metadata fields. The portal is provided by ELIXIR Norway, and also contains links to visualization and bioinformatics tools and data resources provided freely by ELIXIR Norway and ELIXIR members. +SARS-CoV2 DB is a manually curated, freely accessible database of SARS-CoV-2 genomic and contextual data, provided by ELIXIR Norway. The portal contains high-quality curated genomes with rich metadata, alongside links to visualization and bioinformatics tools from ELIXIR Norway and other ELIXIR member nodes. -## About this service +The database was established to support reproducible and transparent research on SARS-CoV-2 by providing consistently annotated genomic records with standardized metadata. -SARS-CoV2 DB, provided by ELIXIR Norway, is a manually curated database and portal containing high-quality SARS-CoV-2 genomic data and associated metadata. Currently, it includes 865 SARS-CoV-2 genomes, each with 44 metadata fields. The portal also provides links to visualization and bioinformatics tools and data resources available freely from ELIXIR Norway and its members, supporting extensive research on the virus. +## Key Features -## Why use this service +- **Curated genomes** — 865 SARS-CoV-2 genomes, each annotated with 44 metadata fields +- **Manual curation** — every record is reviewed for quality and consistency, ensuring high data reliability +- **Standardized metadata** — uniform annotation across all entries enables comparative analysis +- **Linked tools** — direct links to visualization and bioinformatics resources from ELIXIR Norway and partner nodes +- **Open access** — all data and resources are freely available without registration barriers -This database is essential for virologists, epidemiologists, and researchers focused on SARS-CoV-2 and COVID-19. It offers a rich collection of curated genomic data, facilitating detailed analyses and research. By leveraging SARS-CoV2 DB, scientists can access accurate and comprehensive data, enhancing their ability to study the virus’s behavior, mutations, and impact. +## Getting Started -## How to get started +1. Visit the [SARS-CoV2 DB portal](https://covid19.sfb.uit.no/) to browse available genomes +2. Filter and search genomes by metadata fields relevant to your research +3. Access linked bioinformatics tools for downstream analysis and visualization +4. Download datasets for integration into your own analysis pipelines -To begin using SARS-CoV2 DB, researchers can explore the database and its resources. Visit [SARS-CoV2 DB](link here) to access high-quality SARS-CoV-2 data and tools for your research needs. +## Links + +- [SARS-CoV2 DB](https://covid19.sfb.uit.no/) +- [ELIXIR Norway](https://elixir.no/) diff --git a/src/content/services/tsd/index.mdx b/src/content/services/tsd/index.mdx index 4443d02f..742b78bd 100644 --- a/src/content/services/tsd/index.mdx +++ b/src/content/services/tsd/index.mdx @@ -9,16 +9,28 @@ tags: ["data-platform", "human-data"] ## Introduction -Norwegian platform for sensitive data services. TSD serves as a foundation for managing sensitive data. The platform enables collection, storage and analysis of sensitive research data in a secure environment. Provided by the University of Oslo, Centre for Information Technology (USIT), with ELIXIR Norway as long-standing collaborator. ELIXIR Norway can provide storage quotas on TSD. The TDS platform provides integrated solutions for sensitive data collections (online surveys). Using TDS you will have a secure area for your projects that can be accessed from anywhere in the world. +TSD (Services for Sensitive Data) is a national platform for collecting, storing, and analyzing sensitive research data in a secure environment. The platform is provided by the University of Oslo's Centre for Information Technology (USIT), with ELIXIR Norway as a long-standing collaborator. ELIXIR Norway can provide storage quotas on TSD for life science projects. -## About this service +TSD gives each project an isolated secure area accessible from anywhere in the world, meeting Norwegian and EU requirements for handling sensitive personal data in research. -The Services for Sensitive Data (TSD) platform, managed by the University of Oslo's Centre for Information Technology (USIT) in collaboration with ELIXIR Norway, provides a secure environment for the collection, storage, and analysis of sensitive research data. TSD ensures compliance with strict security standards, making it essential for handling sensitive information. It offers comprehensive solutions for securely managing data throughout its lifecycle. TSD supports various research needs, including secure data sharing and collaboration across institutions. +## Key Features -## Why use this service +- **Secure project areas** — isolated environments for each research project with controlled access +- **Data collection** — integrated tools for secure online surveys and data capture +- **Storage and compute** — scalable storage and computing resources within the secure environment +- **Global access** — authorized users can reach their project area from any location +- **Compliance** — meets strict Norwegian and EU security and privacy regulations for sensitive data +- **Collaboration support** — share data and analysis environments securely with collaborators at other institutions +- **ELIXIR Norway storage quotas** — additional storage for life science research projects available through ELIXIR Norway -TSD is crucial for researchers dealing with sensitive personal data, offering a secure and compliant environment for data management. It is particularly useful for life scientists, medical researchers, and data analysts who need to protect the confidentiality and integrity of their data. TSD supports global collaboration by providing secure access to sensitive data from anywhere in the world. Using TSD ensures that sensitive data is handled with the utmost care and security, meeting all regulatory requirements. +## Getting Started -## How to get started +1. Visit [TSD](https://www.uio.no/english/services/it/research/sensitive-data/) to review the platform's capabilities and policies +2. Apply for a TSD project through the University of Oslo +3. Contact [ELIXIR Norway](https://elixir.no/contact) to request additional storage quotas for life science projects +4. Once approved, invite collaborators and begin transferring data into your secure project area -To get started with TSD, you can access integrated solutions for collecting and managing sensitive data. The platform offers tools for secure online surveys and data analysis. Visit [TSD](link here) to learn more about securing your sensitive research data. +## Links + +- [TSD at the University of Oslo](https://www.uio.no/english/services/it/research/sensitive-data/) +- [ELIXIR Norway contact](https://elixir.no/contact) diff --git a/src/content/services/uni-bind/index.mdx b/src/content/services/uni-bind/index.mdx index 30bd0ad3..92e8ed24 100644 --- a/src/content/services/uni-bind/index.mdx +++ b/src/content/services/uni-bind/index.mdx @@ -9,20 +9,28 @@ tags: ["functional-genomics", "data-platform"] ## Introduction -UniBind is a portal to access a database storing collections of direct interactions between transcription factors and DNA (also called transcription factor binding sites) in nine species. This portal provides a comprehensive map of direct interactions between transcription factor (TFs) and DNA. High confidence TF binding site predictions were obtained from uniform processing of thousands of ChIP-seq data sets using the ChIP-eat software. This service is hosted by the University of Oslo, ELIXIR Norway. +UniBind is a database of direct interactions between transcription factors (TFs) and DNA across nine species, hosted by the University of Oslo and ELIXIR Norway. The portal provides a comprehensive map of transcription factor binding sites (TFBSs) derived from uniform processing of thousands of ChIP-seq datasets using the [ChIP-eat](https://bitbucket.org/CBGR/chip-eat/) software. -Datasets in UniBind are separated into robust and permissive collections based on two quality control metrics. First, we filtered out datasets where the DAMO-optimized TF binding motif was not similar to the expected canonical motif. Second, we filtered out datasets where TFBSs are not enriched around their summits. Datasets satisfying both criteria were classified as part as the robust collection, while the rest were classified as part of the permissive collection. +Datasets in UniBind are separated into **robust** and **permissive** collections based on two quality control metrics: similarity of the DAMO-optimized TF binding motif to the expected canonical motif, and enrichment of TFBSs around ChIP-seq peak summits. Datasets satisfying both criteria are classified as robust; the remainder as permissive. -https://unibind.uio.no/about/ +## Key Features -## About this service +- **Nine species** — TF binding site data across human, mouse, rat, and six other species +- **Thousands of ChIP-seq datasets** — uniformly processed for consistency and comparability +- **Robust and permissive collections** — quality-tiered datasets so users can choose the confidence level appropriate for their analysis +- **High-confidence predictions** — binding site calls validated against canonical motifs and peak summit enrichment +- **ChIP-eat pipeline** — standardized processing ensures reproducibility across all datasets +- **Open access** — all data freely available through the web portal and for bulk download -UniBind, hosted by the University of Oslo and ELIXIR Norway, offers a detailed map of direct interactions between transcription factors (TFs) and DNA across nine species. The portal includes high-confidence TF binding site predictions obtained from uniform processing of thousands of ChIP-seq datasets using the ChIP-eat software. Datasets are categorized into robust and permissive collections based on quality control metrics, ensuring high data reliability. +## Getting Started -## Why use this service +1. Visit [UniBind](https://unibind.uio.no/) to browse available species and transcription factors +2. Select a species and TF of interest to view binding site predictions +3. Choose between **robust** and **permissive** collections based on your confidence requirements +4. Download datasets for integration with your own genomic analyses -UniBind is invaluable for researchers studying gene regulation, transcription factors, and DNA interactions. It provides high-quality, validated data, enhancing the understanding of transcriptional regulation mechanisms. The portal’s comprehensive and accessible data make it a critical resource for genetic and genomic research. +## Links -## How to get started - -Researchers can explore UniBind’s datasets and resources by visiting its portal. Start using UniBind to access high-confidence TF-DNA interaction data for your research projects. +- [UniBind](https://unibind.uio.no/) +- [About UniBind](https://unibind.uio.no/about/) +- [ChIP-eat software](https://bitbucket.org/CBGR/chip-eat/) diff --git a/src/content/services/web-nma/index.mdx b/src/content/services/web-nma/index.mdx index 03f69daa..be3c988b 100644 --- a/src/content/services/web-nma/index.mdx +++ b/src/content/services/web-nma/index.mdx @@ -9,30 +9,27 @@ tags: ["analysis"] ## Introduction -WEBnma is a tool to predict flexibility in protein structures. -This tool is a part of the ELIXIR Norway infrastructure services. -The WEBnma is a consortium member of the Protein Data -Bank in Europe—Knowledge Base (PDBe-KB). +WEBnma is a web-based tool for predicting and analyzing flexibility in protein structures using Normal Mode Analysis (NMA). It is part of the ELIXIR Norway infrastructure services and a consortium member of the [Protein Data Bank in Europe — Knowledge Base (PDBe-KB)](https://www.ebi.ac.uk/pdbe/pdbe-kb/). -## About this service +Normal Mode Analysis provides a computationally efficient way to study large-scale conformational motions in biomolecules, making it valuable for understanding protein function, dynamics, and interactions without requiring expensive molecular dynamics simulations. -WEBnma, part of the ELIXIR Norway infrastructure services, -predicts flexibility in protein structures. As a consortium member -of the Protein Data Bank in Europe – Knowledge Base (PDBe-KB), -WEBnma provides tools for analyzing and visualizing protein dynamics, helping researchers understand the structural flexibility and function of proteins. +## Key Features -## Why use this service +- **Normal Mode Analysis** — compute low-frequency vibrational modes to identify functionally relevant motions in protein structures +- **Flexibility prediction** — identify flexible and rigid regions within a protein chain +- **Comparative analysis** — compare the dynamics of multiple protein structures side by side +- **Visualization** — interactive visualization of normal modes and predicted motions +- **PDB integration** — load structures directly from the Protein Data Bank by ID +- **PDBe-KB consortium member** — results are integrated into the PDBe-KB aggregated views for PDB entries -WEBnma is essential for structural biologists, -bioinformaticians, and researchers studying protein dynamics. -It offers advanced tools for predicting and visualizing -protein flexibility, aiding in the understanding of protein -function and interaction. The platform’s integration with -PDBe-KB ensures access to high-quality data and resources. +## Getting Started -## How to get started +1. Visit [WEBnma](http://apps.cbu.uib.no/webnma3/) to access the analysis tool +2. Upload a PDB file or enter a PDB identifier to load a protein structure +3. Run the Normal Mode Analysis and explore the computed flexibility profiles +4. Use the comparative mode to analyze dynamics across related structures -To start using WEBnma, researchers can visit the portal and -access its predictive tools. Visit [WEBnma](link here) to -begin analyzing protein structure flexibility for -your research. +## Links + +- [WEBnma](http://apps.cbu.uib.no/webnma3/) +- [PDBe-KB](https://www.ebi.ac.uk/pdbe/pdbe-kb/) diff --git a/src/pages/events/index.astro b/src/pages/events/index.astro index 226a944d..3302e0a8 100644 --- a/src/pages/events/index.astro +++ b/src/pages/events/index.astro @@ -1,42 +1,167 @@ --- import Page from "../../layouts/page.astro"; import { getCollection } from "astro:content"; -import CardV2 from "../../components/card.v2"; import { idToSlug, resolveContentAsset } from "../../lib/utils"; -// Function to normalize the date +const BASE = import.meta.env.BASE_URL.replace(/\/$/, ''); + function parseDate(dateString: string): number { - // Try to create a date using the Date constructor - const parsedDate = new Date(Date.parse(dateString)); - // If the date is invalid, return a default timestamp (0 represents the epoch) - if (isNaN(parsedDate.getTime())) { - return new Date(0).getTime(); // Return the default date's timestamp - } - return parsedDate.getTime(); // Return the timestamp of the parsed date + const parsed = new Date(Date.parse(dateString)); + return isNaN(parsed.getTime()) ? 0 : parsed.getTime(); } +const now = Date.now(); const events = await getCollection("events"); events.sort((a, b) => parseDate(b.data.date) - parseDate(a.data.date)); + +const upcoming = events.filter(e => parseDate(e.data.date) >= now); +const past = events.filter(e => parseDate(e.data.date) < now); + +function formatDate(dateString: string): string { + const d = new Date(Date.parse(dateString)); + if (isNaN(d.getTime())) return dateString; + return d.toLocaleDateString('en-GB', { day: 'numeric', month: 'long', year: 'numeric' }); +} --- - -
      - { - events.map((entry) => { - return ( - - ); - }) - } -
    + + + +
    +

    Events

    +

    + Workshops, seminars, and community gatherings +

    +

    + Join ELIXIR Norway at events across the country — from hands-on bioinformatics + workshops to international conferences and public panel debates. +

    +
    + + + {upcoming.length > 0 && ( +
    +
    + + + Upcoming + +

    Upcoming events

    +
    +
    + {upcoming.map((event) => { + const slug = idToSlug(event.id); + const cover = event.data?.cover?.source + ? resolveContentAsset(`${event.collection}/${event.id}`, event.data.cover.source) + : null; + return ( + + {cover ? ( +
    + {event.data.title} +
    + ) : ( +
    + +
    + )} +
    + +

    + {event.data.title} +

    +

    + {event.data.summary} +

    +
    + View details + +
    +
    +
    + ); + })} +
    +
    + )} + + + {past.length > 0 && ( +
    0 ? "mt-16" : "mt-12"}> +

    Past events

    +
    + {past.map((event) => { + const slug = idToSlug(event.id); + const cover = event.data?.cover?.source + ? resolveContentAsset(`${event.collection}/${event.id}`, event.data.cover.source) + : null; + return ( + + {cover ? ( +
    + {event.data.title} +
    + ) : ( +
    + +
    + )} +
    + +

    + {event.data.title} +

    +

    + {event.data.summary} +

    +
    + View details + +
    +
    +
    + ); + })} +
    +
    + )} + + + {events.length === 0 && ( +
    + +

    No events scheduled at this time.

    +
    + )} +
    diff --git a/src/pages/funding-and-projects/index.astro b/src/pages/funding-and-projects/index.astro index 77367fb1..e01d5eb4 100644 --- a/src/pages/funding-and-projects/index.astro +++ b/src/pages/funding-and-projects/index.astro @@ -1,181 +1,315 @@ --- -import ProjectCard from "../../components/project-card"; -import {getCollection} from 'astro:content'; -import {slugToTitleCase, sortStringsByLength, idToSlug} from "../../lib/utils"; +import { getCollection } from "astro:content"; import Page from "../../layouts/page.astro"; -import MetadataFilter from "../../components/metadata-filter"; - -const extractKeywords = (items: any) => { - return sortStringsByLength([ - ...new Set( - items - .map((item: any) => (item.data?.keywords ?? [])) - .reduce((pv: any, cv: any) => pv.concat(cv), []) as string[] - ) - ]).map((keyword) => ({ - id: keyword, - value: keyword, - label: slugToTitleCase(keyword), - })); -}; - -const extractCategories = (items) => { - return sortStringsByLength([ - ...new Set( - items - .map((item: any) => item.data?.category) - .filter(Boolean) as string[] - ) - ]).map((category) => ({ - id: category, - value: category, - label: slugToTitleCase(category), - })); -}; +import ProjectFilters from "../../components/project-filters"; +import { slugToTitleCase, idToSlug } from "../../lib/utils"; -const extractStatuses = (items: any) => { - return sortStringsByLength([ - ...new Set( - items - .map((item: any) => item.data?.status) - .filter(Boolean) as string[] - ) - ]).map((status) => ({ - id: status, - value: status, - label: slugToTitleCase(status), - })); -}; +const BASE = import.meta.env.BASE_URL.replace(/\/$/, ''); -const extractAllMetadata = (items) => { - return { - keywords: extractKeywords(items), - categories: extractCategories(items), - statuses: extractStatuses(items), - }; -}; +const projects = (await getCollection('funding-and-projects') as any[]) + .filter((item: any) => !item.data.draft) + .sort((a, b) => { + // Ongoing first, then by title + if (a.data.status === 'ongoing' && b.data.status !== 'ongoing') return -1; + if (a.data.status !== 'ongoing' && b.data.status === 'ongoing') return 1; + return a.data.title.localeCompare(b.data.title); + }); -const projects = - (await getCollection('funding-and-projects') as any[]) - .filter((item: any) => !item.data.draft); +// Build filter groups with counts +function buildOptions(field: string): { id: string; label: string; count: number }[] { + const counts = new Map(); + projects.forEach(p => { + const val = p.data[field]; + if (val && val !== 'unknown') counts.set(val, (counts.get(val) ?? 0) + 1); + }); + return [...counts.entries()] + .sort((a, b) => b[1] - a[1]) + .map(([id, count]) => ({ id, label: slugToTitleCase(id), count })); +} -const _projects = projects.map( - ({id, data}) => ({id, ...data}) -); +function buildKeywordOptions(): { id: string; label: string; count: number }[] { + const counts = new Map(); + projects.forEach(p => { + (p.data.keywords ?? []).forEach((k: string) => counts.set(k, (counts.get(k) ?? 0) + 1)); + }); + return [...counts.entries()] + .sort((a, b) => b[1] - a[1]) + .map(([id, count]) => ({ id, label: slugToTitleCase(id), count })); +} -const _filters = [ +const filterGroups = [ + { key: 'status', label: 'Status', options: buildOptions('status') }, + { key: 'category', label: 'Category', options: buildOptions('category') }, + { key: 'keywords', label: 'Topics', options: buildKeywordOptions() }, +]; - { - name: "category", - values: extractCategories(projects) +const statusColors: Record = { + ongoing: { + bg: 'bg-green-100 dark:bg-green-900/20', + text: 'text-green-700 dark:text-green-400', + dot: 'bg-green-500 dark:bg-green-400', }, - { - name: "status", - values: extractStatuses(projects) + completed: { + bg: 'bg-gray-100 dark:bg-gray-800/40', + text: 'text-gray-600 dark:text-gray-400', + dot: 'bg-gray-400 dark:bg-gray-500', }, - { - name: "keywords", - values: extractKeywords(projects) - }, -]; +}; + +const categoryColors: Record = { + european: 'bg-blue-100 dark:bg-blue-900/20 text-blue-700 dark:text-blue-400', + elixir: 'bg-brand-secondary/10 text-brand-secondary', + norwegian: 'bg-red-100 dark:bg-red-900/20 text-red-700 dark:text-red-400', + global: 'bg-purple-100 dark:bg-purple-900/20 text-purple-700 dark:text-purple-400', +}; --- - -
    -
    -

    Refine your search

    + + + +
    +

    Funding & Projects

    +

    + Research projects and funding initiatives +

    +

    + ELIXIR Norway participates in European and national research projects + building infrastructure for life science data management, FAIR data, and genomics. +

    +
    + + +
    + + + + + +
    + +

    + {projects.length} projects +

    + + +
    + {projects.map((project) => { + const slug = idToSlug(project.id); + const status = project.data.status ?? 'unknown'; + const category = project.data.category ?? 'unknown'; + const keywords = project.data.keywords ?? []; + const sc = statusColors[status] ?? statusColors.completed; + const cc = categoryColors[category] ?? 'bg-gray-100 dark:bg-gray-800/40 text-gray-600 dark:text-gray-400'; + + return ( + + {/* Top row: badges */} +
    + + + {slugToTitleCase(status)} + + {category !== 'unknown' && ( + + {slugToTitleCase(category)} + + )} +
    + + {/* Title */} +

    + {project.data.title} +

    + + {/* Summary */} + {project.data.summary && ( +

    + {project.data.summary} +

    + )} + + {/* Metadata row */} +
    + {project.data.period && ( + + + {project.data.period} + + )} + {project.data.funder?.name && ( + + + {project.data.funder.name} + + )} +
    + + {/* Keywords */} + {keywords.length > 0 && ( +
    + {keywords.map((kw: string) => ( + + {slugToTitleCase(kw)} + + ))} +
    + )} + + {/* Arrow */} +
    + View project + +
    +
    + ); + })} +
    + + +
    - - -
    -
    -
      - {_projects.map((project) => { - return ( - - {project.summary} - - ); - })} -
    -
    - - + if (noResults) { + noResults.style.display = visibleCount === 0 && hasConstraints ? 'block' : 'none'; + } + if (countEl) { + var total = cards.length; + countEl.textContent = hasConstraints + ? visibleCount + ' of ' + total + ' projects' + : total + ' projects'; + } + } + + // Listen for filter changes from React component + window.addEventListener('filters-changed', function(e) { + _currentFilters = e.detail; + applyAll(); + }); + + // Search input + document.addEventListener('DOMContentLoaded', function() { + var input = document.getElementById('project-search'); + if (input) { + input.addEventListener('input', function() { + _currentQuery = input.value; + applyAll(); + }); + } + + // Handle initial URL params + var params = new URLSearchParams(window.location.search); + var hasFilters = false; + var filters = {}; + ['status', 'category', 'keywords'].forEach(function(key) { + var vals = params.getAll(key); + if (vals.length) { + filters[key] = new Set(vals); + hasFilters = true; + } + }); + if (hasFilters) { + _currentFilters = filters; + applyAll(); + } + }); + +
    diff --git a/src/pages/news/index.astro b/src/pages/news/index.astro index fd116d2b..528c9129 100644 --- a/src/pages/news/index.astro +++ b/src/pages/news/index.astro @@ -1,38 +1,281 @@ --- import { getCollection } from 'astro:content'; import Page from "../../layouts/page.astro"; -import CardV2 from "../../components/card.v2"; -import { idToSlug, resolveContentAsset } from "../../lib/utils"; +import { idToSlug, resolveContentAsset, slugToTitleCase } from "../../lib/utils"; + +const BASE = import.meta.env.BASE_URL.replace(/\/$/, ''); -// Function to normalize the date function parseDate(dateString: string): number { - // Try to create a date using the Date constructor - const parsedDate = new Date(Date.parse(dateString)); - // If the date is invalid, return a default timestamp (0 represents the epoch) - if (isNaN(parsedDate.getTime())) { - return new Date(0).getTime(); // Return the default date's timestamp - } - return parsedDate.getTime(); // Return the timestamp of the parsed date + const parsed = new Date(Date.parse(dateString)); + return isNaN(parsed.getTime()) ? 0 : parsed.getTime(); +} + +function formatDate(dateString: string): string { + const d = new Date(Date.parse(dateString)); + if (isNaN(d.getTime())) return dateString; + return d.toLocaleDateString('en-GB', { day: 'numeric', month: 'long', year: 'numeric' }); } const news = await getCollection('news'); news.sort((a, b) => parseDate(b.data.date) - parseDate(a.data.date)); + +// Build year list with counts (newest first) +const yearCounts = new Map(); +news.forEach(n => { + const d = new Date(Date.parse(n.data.date)); + if (!isNaN(d.getTime())) { + const y = String(d.getFullYear()); + yearCounts.set(y, (yearCounts.get(y) ?? 0) + 1); + } +}); +const years = [...yearCounts.entries()].sort((a, b) => Number(b[0]) - Number(a[0])); + +// Build tag list with counts +const tagCounts = new Map(); +news.forEach(n => (n.data.tags ?? []).forEach((t: string) => tagCounts.set(t, (tagCounts.get(t) ?? 0) + 1))); +const tags = [...tagCounts.entries()].sort((a, b) => b[1] - a[1]); + +function getYear(dateString: string): string { + const d = new Date(Date.parse(dateString)); + return isNaN(d.getTime()) ? '' : String(d.getFullYear()); +} + +const INITIAL_COUNT = 18; --- - -
      - {news.map((entry) => { + + + +
      +

      News

      +

      + Latest from ELIXIR Norway +

      +

      + Updates on projects, publications, events, and developments across the + Norwegian bioinformatics infrastructure. +

      +
      + + +
      + + {years.map(([year, count]) => ( + + ))} +
      + + + {tags.length > 0 && ( +
      + {tags.map(([tag, count]) => ( + + ))} +
      + )} + + +
      + {news.map((entry, i) => { + const slug = idToSlug(entry.id); + const cover = entry.data?.cover?.source + ? resolveContentAsset(`${entry.collection}/${entry.id}`, entry.data.cover.source) + : null; + const isHidden = i >= INITIAL_COUNT; + return ( - - ) + + {cover ? ( +
      + {entry.data.title} +
      + ) : ( +
      + +
      + )} +
      + +

      + {entry.data.title} +

      +

      + {entry.data.summary} +

      + {(entry.data.tags ?? []).length > 0 && ( +
      + {(entry.data.tags ?? []).map((tag: string) => ( + + {slugToTitleCase(tag)} + + ))} +
      + )} +
      + Read more + +
      +
      +
      + ); })} -
    +
    + + + {news.length > INITIAL_COUNT && ( +
    + +
    + )} + + + + diff --git a/src/pages/research-support.astro b/src/pages/research-support.astro index 6ab7dc7d..b224197d 100644 --- a/src/pages/research-support.astro +++ b/src/pages/research-support.astro @@ -1,51 +1,208 @@ --- -import Content from "../content/research-support/index.mdx"; -import { components } from "../components/elements"; -import SidebarList from "../components/sidebar-list"; import Page from "../layouts/page.astro"; +import Pricing from "../components/pricing.tsx"; +import Callout from "../components/callout.tsx"; --- - + - + +
    +

    Research Support

    +

    + Expert bioinformatics help for your research +

    +

    + From quick consultations to long-term collaborations — our team across five universities + helps you design experiments, analyse data, and manage your research outputs. +

    + +
    -
    - - - + +
    + + When a request is submitted, it is broadcast to all members of the Helpdesk. + The request is then picked up by the member with the most expertise on the topic. + We typically reply within 1 working day. +
    - + +
    +

    What we offer

    +

    Expertise across bioinformatics, data management, and life science research.

    + +
    + +
    +
    + +
    +

    Support types

    +
      + {["General advice & experimental design", "Programming & scripting assistance", "Data analysis & interpretation", "Data management & archiving"].map(item => ( +
    • + + {item} +
    • + ))} +
    +
    + + +
    +
    + +
    +

    Data types

    +
      + {["High-throughput sequence data (DNA/RNA)", "Proteomics & structural data", "ChIP-seq & epigenomics", "Metagenomics & microbiome"].map(item => ( +
    • + + {item} +
    • + ))} +
    +
    + + +
    +
    + +
    +

    Fields of expertise

    +
      + {["Genome & transcriptome assembly", "Variant calling & annotation", "Gene expression & epigenetics", "Statistical genomics & network analysis", "Cancer, health & marine biology"].map(item => ( +
    • + + {item} +
    • + ))} +
    +
    +
    +
    + + +
    +

    Support model

    +
    +

    + Projects that can be solved within a working day are free of charge, + enabled by funding from the Research Council of Norway. For more demanding projects, an hourly rate applies and + you will need to enter an agreement with ELIXIR Norway. +

    +

    + Projects beyond technical assistance may be set up as a research collaboration, + e.g. by providing funding for a percentage of the position of a helpdesk member. +

    +
    + + +
    +
    + +

    The Service Agreement

    +
    +

    + For requests requiring more than a working day, an agreement between the client and the platform + must be made covering service type and cost. If applicable, the agreement should include a plan for + publication and + co-authorship. + Regardless of contribution type, we expect to be included in the + acknowledgements of resulting publications. +

    +
    +
    + + +
    +

    Pricing

    +

    Transparent pricing based on project scope and duration.

    + + +
    + + diff --git a/src/pages/services/index.astro b/src/pages/services/index.astro index ad6c16de..46df5be3 100644 --- a/src/pages/services/index.astro +++ b/src/pages/services/index.astro @@ -1,85 +1,128 @@ --- import { getCollection } from "astro:content"; import Page from "../../layouts/page.astro"; -import ServicesList from "../../components/services-list.astro"; -import { P } from "../../components/elements"; import TagsFilter from "../../components/tags-filter"; -import { slugToTitleCase, sortStringsByLength } from "../../lib/utils"; +import { slugToTitleCase, idToSlug, resolveContentAsset } from "../../lib/utils"; -const services = await getCollection("services"); +const BASE = import.meta.env.BASE_URL.replace(/\/$/, ''); +const services = (await getCollection("services")).sort((a, b) => a.data.title.localeCompare(b.data.title)); -const tags = sortStringsByLength([ - ...new Set( - services - .map((s) => s.data?.tags ?? []) - .reduce((pv, cv) => pv.concat(cv), []) as string[], - ), -]).map((tag) => { - return { - id: tag, - value: tag, - label: slugToTitleCase(tag), - }; -}); - -const _services = services.map(({ id, collection, data }) => ({ id, collection, ...data })); +// Build tag list with counts +const tagCounts = new Map(); +services.forEach(s => (s.data.tags ?? []).forEach(t => tagCounts.set(t, (tagCounts.get(t) ?? 0) + 1))); +const tags = [...tagCounts.entries()] + .sort((a, b) => b[1] - a[1]) + .map(([id, count]) => ({ id, label: slugToTitleCase(id), count })); --- - -
    -
    -

    Refine your search

    -
    - - -
    -

    ELIXIR Norway offers services and infrastructure for life science, - including software tools and workflows, databases and storage. In - addition ELIXIR Norway provides support through its national helpdesk - and offers trainings. Moreover, ELIXIR Norway provides services to the - international research community. -

    - + } + + // Listen for React tag filter changes + window.addEventListener('tags-changed', (e) => filterCards(e.detail)); + + // Handle initial load with URL params + document.addEventListener('DOMContentLoaded', () => { + const params = new URLSearchParams(window.location.search); + const tags = params.getAll('tags'); + if (tags.length) filterCards(tags); + }); + +
    diff --git a/src/pages/training/index.astro b/src/pages/training/index.astro index c96fa15a..f1e6c869 100644 --- a/src/pages/training/index.astro +++ b/src/pages/training/index.astro @@ -1,22 +1,359 @@ --- -import MainContent from "../../content/training/index.mdx"; -import { components } from "../../components/elements"; import Page from "../../layouts/page.astro"; -import NavigationList from "../../components/navigation-list.astro"; + +const BASE = import.meta.env.BASE_URL.replace(/\/$/, ''); --- - + + + + -
    - + +
    +

    Training

    +

    + Bioinformatics training for every level +

    +

    + From introductory workshops to advanced domain-specific courses, ELIXIR Norway + provides open-access training to support life science researchers across Norway and internationally. +

    - + +
    +

    Types of training

    +
    + + +
    +
    +
    + +
    +

    Research Data Management

    +
    +

    + General RDM courses covering data collection, metadata management, sensitive data regulations, and FAIR data handling best practices. +

    +
    + + +
    +
    +
    + +
    +

    Tool-Specific Courses

    +
    +

    + Hands-on training for NeLS, UseGalaxy, Data Stewardship Wizard, FEGA-Norway, and other tools in the ELIXIR ecosystem. +

    +
    + + +
    +
    +
    + +
    +

    Domain-Specific Courses

    +
    +

    + Specialised training in single-cell sequencing, microbiome analysis, biodiversity studies, genome assembly, and more. +

    +
    + + +
    +
    +
    + +
    +

    Train-the-Trainer

    +
    +

    + Part of the ELIXIR-GOBLET TtT programme — learn teaching techniques for productive learner engagement and effective course design. +

    +
    + +
    +
    + + +
    +

    Find courses and materials

    +

    + Browse our catalogue of available courses, categorised by topic and proficiency level. + All training materials are open-access. +

    + +
    + + +
    +
    + + + Live + +

    Upcoming training

    +
    +
    +
    + +
    +
    + + +
    +

    Training materials

    +
    +
    +
    +
    + + +
    +

    Past training events

    +
    +
    +
    +
    + + + + + + +