Project format

This commit is contained in:
2025-02-11 00:58:57 +00:00
parent e614806eac
commit 82110e99eb
9 changed files with 315 additions and 340 deletions

View File

@@ -27,195 +27,195 @@ services:
labels: labels:
- "io.containers.autoupdate=registry" - "io.containers.autoupdate=registry"
invenio-rdm: invenio-rdm:
image: ghcr.io/front-matter/invenio-rdm-starter:latest image: ghcr.io/front-matter/invenio-rdm-starter:latest
networks: networks:
- am-d-model-network - am-d-model-network
pull_policy: if_not_present pull_policy: if_not_present
volumes: volumes:
- uploaded_data:/opt/invenio/var/instance/data - uploaded_data:/opt/invenio/var/instance/data
- archived_data:/opt/invenio/var/instance/archive - archived_data:/opt/invenio/var/instance/archive
environment: environment:
# Flask # Flask
- INVENIO_APP_ALLOWED_HOSTS=${INVENIO_APP_ALLOWED_HOSTS:-['0.0.0.0', 'localhost', '127.0.0.1']} - INVENIO_APP_ALLOWED_HOSTS=${INVENIO_APP_ALLOWED_HOSTS:-['0.0.0.0', 'localhost', '127.0.0.1']}
# Flask-SQLAlchemy # Flask-SQLAlchemy
- INVENIO_SQLALCHEMY_DATABASE_URI=postgresql+psycopg2://${POSTGRES_USER:-inveniordm}:${POSTGRES_PASSWORD:-inveniordm}@db/${POSTGRES_DB:-inveniordm} - INVENIO_SQLALCHEMY_DATABASE_URI=postgresql+psycopg2://${POSTGRES_USER:-inveniordm}:${POSTGRES_PASSWORD:-inveniordm}@db/${POSTGRES_DB:-inveniordm}
# Flask-Babel # Flask-Babel
- INVENIO_BABEL_DEFAULT_LOCALE=${INVENIO_BABEL_DEFAULT_LOCALE:-en} - INVENIO_BABEL_DEFAULT_LOCALE=${INVENIO_BABEL_DEFAULT_LOCALE:-en}
- INVENIO_BABEL_DEFAULT_TIMEZONE=${INVENIO_BABEL_DEFAULT_TIMEZONE:-UTC} - INVENIO_BABEL_DEFAULT_TIMEZONE=${INVENIO_BABEL_DEFAULT_TIMEZONE:-UTC}
# Invenio-App # Invenio-App
- INVENIO_CACHE_TYPE=${INVENIO_CACHE_TYPE:-redis} - INVENIO_CACHE_TYPE=${INVENIO_CACHE_TYPE:-redis}
- INVENIO_CACHE_REDIS_URL=${INVENIO_CACHE_REDIS_URL:-redis://cache:6379/0} - INVENIO_CACHE_REDIS_URL=${INVENIO_CACHE_REDIS_URL:-redis://cache:6379/0}
- INVENIO_ACCOUNTS_SESSION_REDIS_URL=${INVENIO_ACCOUNTS_SESSION_REDIS_URL:-redis://cache:6379/1} - INVENIO_ACCOUNTS_SESSION_REDIS_URL=${INVENIO_ACCOUNTS_SESSION_REDIS_URL:-redis://cache:6379/1}
- INVENIO_CELERY_RESULT_BACKEND=${INVENIO_CELERY_RESULT_BACKEND:-redis://cache:6379/2} - INVENIO_CELERY_RESULT_BACKEND=${INVENIO_CELERY_RESULT_BACKEND:-redis://cache:6379/2}
- INVENIO_RATELIMIT_STORAGE_URL=${INVENIO_RATELIMIT_STORAGE_URL:-redis://cache:6379/3} - INVENIO_RATELIMIT_STORAGE_URL=${INVENIO_RATELIMIT_STORAGE_URL:-redis://cache:6379/3}
- INVENIO_COMMUNITIES_IDENTITIES_CACHE_REDIS_URL=${INVENIO_COMMUNITIES_IDENTITIES_CACHE_REDIS_URL:-redis://cache:6379/4} - INVENIO_COMMUNITIES_IDENTITIES_CACHE_REDIS_URL=${INVENIO_COMMUNITIES_IDENTITIES_CACHE_REDIS_URL:-redis://cache:6379/4}
- INVENIO_BROKER_URL=${INVENIO_BROKER_URL:-redis://cache:6379/5} - INVENIO_BROKER_URL=${INVENIO_BROKER_URL:-redis://cache:6379/5}
- INVENIO_CELERY_BROKER_URL=${INVENIO_BROKER_URL:-redis://cache:6379/5} - INVENIO_CELERY_BROKER_URL=${INVENIO_BROKER_URL:-redis://cache:6379/5}
- INVENIO_WSGI_PROXIES=4 - INVENIO_WSGI_PROXIES=4
- INVENIO_SECRET_KEY=${INVENIO_SECRET_KEY:-changeme} - INVENIO_SECRET_KEY=${INVENIO_SECRET_KEY:-changeme}
# Invenio-I18N # Invenio-I18N
# TODO: fix tuple parsing # TODO: fix tuple parsing
# - INVENIO_I18N_LANGUAGES=${INVENIO_I18N_LANGUAGES:-'[("de", _("German"))]'} # - INVENIO_I18N_LANGUAGES=${INVENIO_I18N_LANGUAGES:-'[("de", _("German"))]'}
# Invenio-Theme # Invenio-Theme
- INVENIO_THEME_LOGO=${INVENIO_THEME_LOGO:-images/invenio-rdm-white.svg} - INVENIO_THEME_LOGO=${INVENIO_THEME_LOGO:-images/invenio-rdm-white.svg}
- INVENIO_THEME_SITENAME=${INVENIO_THEME_SITENAME:-InvenioRDM Starter} - INVENIO_THEME_SITENAME=${INVENIO_THEME_SITENAME:-InvenioRDM Starter}
- INVENIO_THEME_FRONTPAGE_TITLE=${INVENIO_THEME_FRONTPAGE_TITLE:-InvenioRDM Starter} - INVENIO_THEME_FRONTPAGE_TITLE=${INVENIO_THEME_FRONTPAGE_TITLE:-InvenioRDM Starter}
- INVENIO_THEME_FRONTPAGE_SUBTITLE=${INVENIO_THEME_FRONTPAGE_SUBTITLE:-A starter project for the turn-key research data management repository.} - INVENIO_THEME_FRONTPAGE_SUBTITLE=${INVENIO_THEME_FRONTPAGE_SUBTITLE:-A starter project for the turn-key research data management repository.}
- INVENIO_THEME_SHOW_FRONTPAGE_INTRO_SECTION=False - INVENIO_THEME_SHOW_FRONTPAGE_INTRO_SECTION=False
# Invenio-Records-Resources # Invenio-Records-Resources
- INVENIO_SITE_UI_URL=${INVENIO_SITE_UI_URL:-https://localhost} - INVENIO_SITE_UI_URL=${INVENIO_SITE_UI_URL:-https://localhost}
- INVENIO_SITE_API_URL=${INVENIO_SITE_API_URL:-https://localhost/api} - INVENIO_SITE_API_URL=${INVENIO_SITE_API_URL:-https://localhost/api}
# Invenio-RDM-Records # Invenio-RDM-Records
- INVENIO_DATACITE_ENABLED=${INVENIO_DATACITE_ENABLED:-False} - INVENIO_DATACITE_ENABLED=${INVENIO_DATACITE_ENABLED:-False}
- INVENIO_DATACITE_USERNAME=${INVENIO_DATACITE_USERNAME:-} - INVENIO_DATACITE_USERNAME=${INVENIO_DATACITE_USERNAME:-}
- INVENIO_DATACITE_PASSWORD=${INVENIO_DATACITE_PASSWORD:-} - INVENIO_DATACITE_PASSWORD=${INVENIO_DATACITE_PASSWORD:-}
- INVENIO_DATACITE_PREFIX=${INVENIO_DATACITE_PREFIX:-} - INVENIO_DATACITE_PREFIX=${INVENIO_DATACITE_PREFIX:-}
- INVENIO_DATACITE_TEST_MODE=${INVENIO_DATACITE_TEST_MODE:-True} - INVENIO_DATACITE_TEST_MODE=${INVENIO_DATACITE_TEST_MODE:-True}
- INVENIO_DATACITE_DATACENTER_SYMBOL=${INVENIO_DATACITE_DATACENTER_SYMBOL:-} - INVENIO_DATACITE_DATACENTER_SYMBOL=${INVENIO_DATACITE_DATACENTER_SYMBOL:-}
- INVENIO_RDM_ALLOW_METADATA_ONLY_RECORDS=${INVENIO_RDM_ALLOW_METADATA_ONLY_RECORDS:-True} - INVENIO_RDM_ALLOW_METADATA_ONLY_RECORDS=${INVENIO_RDM_ALLOW_METADATA_ONLY_RECORDS:-True}
- INVENIO_RDM_ALLOW_RESTRICTED_RECORDS=${INVENIO_RDM_ALLOW_RESTRICTED_RECORDS:-True} - INVENIO_RDM_ALLOW_RESTRICTED_RECORDS=${INVENIO_RDM_ALLOW_RESTRICTED_RECORDS:-True}
- INVENIO_RDM_ALLOW_EXTERNAL_DOI_VERSIONING=${INVENIO_RDM_ALLOW_EXTERNAL_DOI_VERSIONING:-True} - INVENIO_RDM_ALLOW_EXTERNAL_DOI_VERSIONING=${INVENIO_RDM_ALLOW_EXTERNAL_DOI_VERSIONING:-True}
- INVENIO_RDM_CITATION_STYLES_DEFAULT=${INVENIO_RDM_CITATION_STYLES_DEFAULT:-apa} - INVENIO_RDM_CITATION_STYLES_DEFAULT=${INVENIO_RDM_CITATION_STYLES_DEFAULT:-apa}
- INVENIO_SECURITY_EMAIL_SENDER=${INVENIO_SECURITY_EMAIL_SENDER:-} - INVENIO_SECURITY_EMAIL_SENDER=${INVENIO_SECURITY_EMAIL_SENDER:-}
# TODO: fix tuple parsing # TODO: fix tuple parsing
# - INVENIO_RDM_CITATION_STYLES=${INVENIO_RDM_CITATION_STYLES:-"[('apa', 'APA'), ('chicago-note-bibliography', 'Chicago'), ('harvard-cite-them-right', 'Harvard')]"} # - INVENIO_RDM_CITATION_STYLES=${INVENIO_RDM_CITATION_STYLES:-"[('apa', 'APA'), ('chicago-note-bibliography', 'Chicago'), ('harvard-cite-them-right', 'Harvard')]"}
# Invenio-Accounts # Invenio-Accounts
- INVENIO_ACCOUNTS_LOCAL_LOGIN_ENABLED=${INVENIO_ACCOUNTS_LOCAL_LOGIN_ENABLED:-True} - INVENIO_ACCOUNTS_LOCAL_LOGIN_ENABLED=${INVENIO_ACCOUNTS_LOCAL_LOGIN_ENABLED:-True}
- INVENIO_GITHUB_APP_CREDENTIALS=${INVENIO_GITHUB_APP_CREDENTIALS:-} - INVENIO_GITHUB_APP_CREDENTIALS=${INVENIO_GITHUB_APP_CREDENTIALS:-}
# OAI-PMH # OAI-PMH
- INVENIO_OAISERVER_ID_PREFIX=${OAISERVER_ID_PREFIX:-invenio-rdm} - INVENIO_OAISERVER_ID_PREFIX=${OAISERVER_ID_PREFIX:-invenio-rdm}
# Invenio-Files-REST # Invenio-Files-REST
- INVENIO_FILES_REST_STORAGE_FACTORY=invenio_s3.s3fs_storage_factory - INVENIO_FILES_REST_STORAGE_FACTORY=invenio_s3.s3fs_storage_factory
# Invenio-S3 # Invenio-S3
- INVENIO_S3_ENDPOINT_URL=${INVENIO_S3_ENDPOINT_URL:-} - INVENIO_S3_ENDPOINT_URL=${INVENIO_S3_ENDPOINT_URL:-}
- INVENIO_S3_ACCESS_KEY_ID=${INVENIO_S3_ACCESS_KEY_ID:-} - INVENIO_S3_ACCESS_KEY_ID=${INVENIO_S3_ACCESS_KEY_ID:-}
- INVENIO_S3_SECRET_ACCESS_KEY=${INVENIO_S3_SECRET_ACCESS_KEY:-} - INVENIO_S3_SECRET_ACCESS_KEY=${INVENIO_S3_SECRET_ACCESS_KEY:-}
- INVENIO_S3_BUCKET_NAME=${INVENIO_S3_BUCKET_NAME:-} - INVENIO_S3_BUCKET_NAME=${INVENIO_S3_BUCKET_NAME:-}
# Invenio-Search # Invenio-Search
- INVENIO_SEARCH_HOSTS=${INVENIO_SEARCH_HOSTS:-['search:9200']} - INVENIO_SEARCH_HOSTS=${INVENIO_SEARCH_HOSTS:-['search:9200']}
- INVENIO_SEARCH_INDEX_PREFIX=${INVENIO_SEARCH_INDEX_PREFIX:-invenio-rdm-} - INVENIO_SEARCH_INDEX_PREFIX=${INVENIO_SEARCH_INDEX_PREFIX:-invenio-rdm-}
# Logging # Logging
- INVENIO_LOGGING_CONSOLE_LEVEL=${INVENIO_LOGGING_CONSOLE_LEVEL:-WARNING} - INVENIO_LOGGING_CONSOLE_LEVEL=${INVENIO_LOGGING_CONSOLE_LEVEL:-WARNING}
depends_on: depends_on:
search: search:
condition: service_started condition: service_started
cache: cache:
condition: service_started condition: service_started
db: db:
condition: service_started condition: service_started
worker: worker:
command: "celery -A invenio_app.celery worker --beat --events --loglevel=WARNING" command: "celery -A invenio_app.celery worker --beat --events --loglevel=WARNING"
networks: networks:
- am-d-model-network - am-d-model-network
image: ghcr.io/front-matter/invenio-rdm-starter:latest image: ghcr.io/front-matter/invenio-rdm-starter:latest
pull_policy: if_not_present pull_policy: if_not_present
volumes: volumes:
- uploaded_data:/opt/invenio/var/instance/data - uploaded_data:/opt/invenio/var/instance/data
environment: environment:
- INVENIO_SQLALCHEMY_DATABASE_URI=postgresql+psycopg2://${POSTGRES_USER:-inveniordm}:${POSTGRES_PASSWORD:-inveniordm}@db/${POSTGRES_DB:-inveniordm} - INVENIO_SQLALCHEMY_DATABASE_URI=postgresql+psycopg2://${POSTGRES_USER:-inveniordm}:${POSTGRES_PASSWORD:-inveniordm}@db/${POSTGRES_DB:-inveniordm}
- INVENIO_SEARCH_HOSTS=${INVENIO_SEARCH_HOSTS:-['search:9200']} - INVENIO_SEARCH_HOSTS=${INVENIO_SEARCH_HOSTS:-['search:9200']}
- INVENIO_SEARCH_INDEX_PREFIX=${INVENIO_SEARCH_INDEX_PREFIX:-invenio-rdm-} - INVENIO_SEARCH_INDEX_PREFIX=${INVENIO_SEARCH_INDEX_PREFIX:-invenio-rdm-}
- INVENIO_CACHE_TYPE=${INVENIO_CACHE_TYPE:-redis} - INVENIO_CACHE_TYPE=${INVENIO_CACHE_TYPE:-redis}
- INVENIO_CACHE_REDIS_URL=${INVENIO_CACHE_REDIS_URL:-redis://cache:6379/0} - INVENIO_CACHE_REDIS_URL=${INVENIO_CACHE_REDIS_URL:-redis://cache:6379/0}
- INVENIO_ACCOUNTS_SESSION_REDIS_URL=${INVENIO_ACCOUNTS_SESSION_REDIS_URL:-redis://cache:6379/1} - INVENIO_ACCOUNTS_SESSION_REDIS_URL=${INVENIO_ACCOUNTS_SESSION_REDIS_URL:-redis://cache:6379/1}
- INVENIO_CELERY_RESULT_BACKEND=${INVENIO_CELERY_RESULT_BACKEND:-redis://cache:6379/2} - INVENIO_CELERY_RESULT_BACKEND=${INVENIO_CELERY_RESULT_BACKEND:-redis://cache:6379/2}
- INVENIO_RATELIMIT_STORAGE_URL=${INVENIO_RATELIMIT_STORAGE_URL:-redis://cache:6379/3} - INVENIO_RATELIMIT_STORAGE_URL=${INVENIO_RATELIMIT_STORAGE_URL:-redis://cache:6379/3}
- INVENIO_COMMUNITIES_IDENTITIES_CACHE_REDIS_URL=${INVENIO_COMMUNITIES_IDENTITIES_CACHE_REDIS_URL:-redis://cache:6379/4} - INVENIO_COMMUNITIES_IDENTITIES_CACHE_REDIS_URL=${INVENIO_COMMUNITIES_IDENTITIES_CACHE_REDIS_URL:-redis://cache:6379/4}
- INVENIO_BROKER_URL=${INVENIO_BROKER_URL:-redis://cache:6379/5} - INVENIO_BROKER_URL=${INVENIO_BROKER_URL:-redis://cache:6379/5}
- INVENIO_CELERY_BROKER_URL=${INVENIO_BROKER_URL:-redis://cache:6379/5} - INVENIO_CELERY_BROKER_URL=${INVENIO_BROKER_URL:-redis://cache:6379/5}
- INVENIO_MAIL_SUPPRESS_SEND=${INVENIO_MAIL_SUPPRESS_SEND:-True} - INVENIO_MAIL_SUPPRESS_SEND=${INVENIO_MAIL_SUPPRESS_SEND:-True}
- INVENIO_MAIL_SERVER=${INVENIO_MAIL_SERVER:-smtp.gmail.com} - INVENIO_MAIL_SERVER=${INVENIO_MAIL_SERVER:-smtp.gmail.com}
- INVENIO_MAIL_PORT=${INVENIO_MAIL_PORT:-465} - INVENIO_MAIL_PORT=${INVENIO_MAIL_PORT:-465}
- INVENIO_MAIL_USERNAME=${INVENIO_MAIL_USERNAME:-info} - INVENIO_MAIL_USERNAME=${INVENIO_MAIL_USERNAME:-info}
- INVENIO_MAIL_PASSWORD=${INVENIO_MAIL_PASSWORD:-changeme} - INVENIO_MAIL_PASSWORD=${INVENIO_MAIL_PASSWORD:-changeme}
- INVENIO_MAIL_USE_SSL=${INVENIO_MAIL_USE_SSL:-True} - INVENIO_MAIL_USE_SSL=${INVENIO_MAIL_USE_SSL:-True}
# Invenio-Files-REST # Invenio-Files-REST
- INVENIO_FILES_REST_STORAGE_FACTORY=${INVENIO_FILES_REST_STORAGE_FACTORY:-invenio_s3.s3fs_storage_factory} - INVENIO_FILES_REST_STORAGE_FACTORY=${INVENIO_FILES_REST_STORAGE_FACTORY:-invenio_s3.s3fs_storage_factory}
# Invenio-S3 # Invenio-S3
- INVENIO_S3_ENDPOINT_URL=${INVENIO_S3_ENDPOINT_URL:-} - INVENIO_S3_ENDPOINT_URL=${INVENIO_S3_ENDPOINT_URL:-}
- INVENIO_S3_ACCESS_KEY_ID=${INVENIO_S3_ACCESS_KEY_ID:-} - INVENIO_S3_ACCESS_KEY_ID=${INVENIO_S3_ACCESS_KEY_ID:-}
- INVENIO_S3_SECRET_ACCESS_KEY=${INVENIO_S3_SECRET_ACCESS_KEY:-} - INVENIO_S3_SECRET_ACCESS_KEY=${INVENIO_S3_SECRET_ACCESS_KEY:-}
- INVENIO_S3_BUCKET_NAME=${INVENIO_S3_BUCKET_NAME:-} - INVENIO_S3_BUCKET_NAME=${INVENIO_S3_BUCKET_NAME:-}
depends_on: depends_on:
search: search:
condition: service_started condition: service_started
cache: cache:
condition: service_started condition: service_started
db: db:
condition: service_started condition: service_started
cache: cache:
image: valkey/valkey:7.2.5-bookworm image: valkey/valkey:7.2.5-bookworm
networks: networks:
- am-d-model-network - am-d-model-network
restart: "unless-stopped" restart: "unless-stopped"
volumes: volumes:
- "valkey_data:/data" - "valkey_data:/data"
ports: ports:
- "6379:6379" - "6379:6379"
db: db:
image: postgres:16.4-bookworm image: postgres:16.4-bookworm
networks: networks:
- am-d-model-network - am-d-model-network
restart: "unless-stopped" restart: "unless-stopped"
environment: environment:
- POSTGRES_USER=${POSTGRES_USER:-inveniordm} - POSTGRES_USER=${POSTGRES_USER:-inveniordm}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-inveniordm} - POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-inveniordm}
- POSTGRES_DB=${POSTGRES_DB:-inveniordm} - POSTGRES_DB=${POSTGRES_DB:-inveniordm}
volumes: volumes:
- "postgres_data:/var/lib/postgresql/data" - "postgres_data:/var/lib/postgresql/data"
ports: ports:
- 5432:5432 - 5432:5432
search: search:
image: opensearchproject/opensearch:2.12.0 image: opensearchproject/opensearch:2.12.0
networks: networks:
- am-d-model-network - am-d-model-network
restart: "unless-stopped" restart: "unless-stopped"
environment: environment:
- bootstrap.memory_lock=true - bootstrap.memory_lock=true
- OPENSEARCH_JAVA_OPTS=-Xms256m -Xmx256m - OPENSEARCH_JAVA_OPTS=-Xms256m -Xmx256m
- DISABLE_INSTALL_DEMO_CONFIG=true - DISABLE_INSTALL_DEMO_CONFIG=true
- DISABLE_SECURITY_PLUGIN=true - DISABLE_SECURITY_PLUGIN=true
- discovery.type=single-node - discovery.type=single-node
ulimits: ulimits:
memlock: memlock:
soft: -1 soft: -1
hard: -1 hard: -1
nofile: nofile:
soft: 65536 soft: 65536
hard: 65536 hard: 65536
mem_limit: 1g mem_limit: 1g
ports: ports:
- "9200:9200" - "9200:9200"
- "9600:9600" - "9600:9600"
networks: networks:
am-d-model-network: am-d-model-network:
name: am-d-model-network name: am-d-model-network
volumes: volumes:
app_data: app_data:
uploaded_data: uploaded_data:
archived_data: archived_data:
postgres_data: postgres_data:
valkey_data: valkey_data:
caddy_data: caddy_data:

View File

@@ -4,11 +4,7 @@
export let hotkey = ""; export let hotkey = "";
function handleKeypress(event) { function handleKeypress(event) {
if ( if (event.key === hotkey || event.key === "Enter" || event.key === " ") {
event.key === hotkey ||
event.key === "Enter" ||
event.key === " "
) {
event.preventDefault(); event.preventDefault();
redirectFunc(); redirectFunc();
} }

View File

@@ -5,7 +5,9 @@ export const navigation = {
toHome: () => goto("/"), toHome: () => goto("/"),
toAbout: () => goto("/about"), toAbout: () => goto("/about"),
toContact: () => goto("/contact"), toContact: () => goto("/contact"),
toRepository: () => { window.location.href = "https://invenio.am-d-model.eu/" }, toRepository: () => {
window.location.href = "https://invenio.am-d-model.eu/";
},
to404: () => { to404: () => {
throw error(404, "Page not found"); throw error(404, "Page not found");
}, },

View File

@@ -1,96 +1,96 @@
.navigation-footer { .navigation-footer {
display: flex; display: flex;
flex-direction: row; flex-direction: row;
flex-wrap: wrap; flex-wrap: wrap;
justify-content: space-between; justify-content: space-between;
background: #ffffff; background: #ffffff;
width: 100%; width: 100%;
height: 240px; height: 240px;
} }
.navigation-footer-column { .navigation-footer-column {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
flex-wrap: wrap; flex-wrap: wrap;
position: relative; position: relative;
height: 100%; height: 100%;
width: 33%; width: 33%;
padding: 32px; padding: 32px;
justify-content: center; justify-content: center;
} }
.navigation-footer-logo-link { .navigation-footer-logo-link {
max-width: 180px; max-width: 180px;
padding-left: 24px; padding-left: 24px;
} }
.navigation-footer-logo { .navigation-footer-logo {
height: 180px; height: 180px;
max-width: 180px; max-width: 180px;
width: auto; width: auto;
} }
.navigation-footer-column-left { .navigation-footer-column-left {
@extend .navigation-footer-column; @extend .navigation-footer-column;
justify-content: space-between; justify-content: space-between;
} }
.navigation-footer-column-mid { .navigation-footer-column-mid {
@extend .navigation-footer-column; @extend .navigation-footer-column;
align-items: center; align-items: center;
} }
.navigation-footer-column-right { .navigation-footer-column-right {
@extend .navigation-footer-column; @extend .navigation-footer-column;
align-items: center; align-items: center;
} }
.navigation-footer-site-name { .navigation-footer-site-name {
color: #000000; color: #000000;
text-align: left; text-align: left;
font-family: "Assistant", sans-serif; font-family: "Assistant", sans-serif;
font-size: 24px; font-size: 24px;
position: relative; position: relative;
padding: 8px; padding: 8px;
} }
.navigation-footer-topic-column { .navigation-footer-topic-column {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
flex-wrap: wrap; flex-wrap: wrap;
position: relative; position: relative;
} }
.navigation-footer-topic { .navigation-footer-topic {
color: #000000; color: #000000;
font-family: "Assistant", sans-serif; font-family: "Assistant", sans-serif;
font-size: 28px; font-size: 28px;
font-weight: 600; font-weight: 600;
position: relative; position: relative;
} }
.navigation-footer-link { .navigation-footer-link {
color: #454545; color: #454545;
font-family: "Assistant", sans-serif; font-family: "Assistant", sans-serif;
font-size: 24px; font-size: 24px;
text-decoration: underline; text-decoration: underline;
position: relative; position: relative;
} }
.navigation-footer-social-icon { .navigation-footer-social-icon {
width: 24px; width: 24px;
height: 24px; height: 24px;
position: relative; position: relative;
} }
.navigation-footer-social-media { .navigation-footer-social-media {
// display: flex; # temporarily disable // display: flex; # temporarily disable
display: none; display: none;
flex-direction: row; flex-direction: row;
gap: var(--spacing-xs, 8px); gap: var(--spacing-xs, 8px);
align-items: flex-start; align-items: flex-start;
justify-content: flex-start; justify-content: flex-start;
position: relative; position: relative;
} }
.navigation-footer-buttons-icon { .navigation-footer-buttons-icon {

View File

@@ -1,88 +1,88 @@
.navigation-header { .navigation-header {
display: flex; display: flex;
flex-direction: row-reverse; flex-direction: row-reverse;
width: 100%; width: 100%;
justify-content: space-between; justify-content: space-between;
} }
.navigation-header { .navigation-header {
position: relative; position: relative;
height: 128px; height: 128px;
width: 100%; width: 100%;
padding-bottom: 120px; padding-bottom: 120px;
} }
.navigation-header-items { .navigation-header-items {
gap: 48px; gap: 48px;
align-items: center; align-items: center;
position: relative; position: relative;
padding-top: 28px; padding-top: 28px;
padding-right: 96px; padding-right: 96px;
padding-left: 32px; padding-left: 32px;
} }
.navigation-header-link { .navigation-header-link {
color: #000000; color: #000000;
font-family: var(--navigation-header-font-family); font-family: var(--navigation-header-font-family);
text-align: left; text-align: left;
font-size: var(--navigation-header-font-size); font-size: var(--navigation-header-font-size);
position: relative; position: relative;
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: flex-start; justify-content: flex-start;
} }
.navigation-header-button { .navigation-header-button {
background: #000000; background: #000000;
border-radius: 8px; border-radius: 8px;
padding: 14px 24px 14px 24px; padding: 14px 24px 14px 24px;
display: flex; display: flex;
flex-direction: row; flex-direction: row;
gap: 8px; gap: 8px;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
flex-shrink: 0; flex-shrink: 0;
position: relative; position: relative;
box-shadow: var(--button-shadow-box-shadow, 0px 1px 2px 0px rgba(0, 0, 0, 0.05)); box-shadow: var(--button-shadow-box-shadow, 0px 1px 2px 0px rgba(0, 0, 0, 0.05));
} }
.navigation-header-button-text { .navigation-header-button-text {
@extend .navigation-header-link; @extend .navigation-header-link;
color: var(--cpalettecomplimentary); color: var(--cpalettecomplimentary);
text-decoration: none; text-decoration: none;
} }
.navigation-header-logo-link { .navigation-header-logo-link {
@extend .navigation-header-items; @extend .navigation-header-items;
min-width: 128px; min-width: 128px;
} }
.navigation-header-logo { .navigation-header-logo {
height: 128px; height: 128px;
width: auto; width: auto;
max-width: 128px; max-width: 128px;
} }
.navigation-header-logo { .navigation-header-logo {
height: 128px; height: 128px;
width: auto; width: auto;
padding-left: 28px; padding-left: 28px;
} }
.flexrow-right { .flexrow-right {
display: flex; display: flex;
flex-direction: row; flex-direction: row;
flex-wrap: wrap; flex-wrap: wrap;
justify-content: flex-end; justify-content: flex-end;
} }
.flexrow-left { .flexrow-left {
@extend .flexrow-right; @extend .flexrow-right;
justify-content: flex-start; justify-content: flex-start;
} }
@media (max-width: 750px) { @media (max-width: 750px) {
.navigation-header-items { .navigation-header-items {
display: none; display: none;
} }
} }

View File

@@ -25,11 +25,11 @@ ul {
list-style-position: inside; list-style-position: inside;
margin: 0; margin: 0;
padding: 0; padding: 0;
font-size: 18pt font-size: 18pt;
} }
li { li {
padding-bottom: 24px padding-bottom: 24px;
} }
h1 { h1 {
@@ -51,7 +51,7 @@ label {
h3 { h3 {
font-family: "Assistant"; font-family: "Assistant";
font-style: italic; font-style: italic;
color: #B6B6B6; color: #b6b6b6;
font-size: 24pt; font-size: 24pt;
padding-bottom: 2px; padding-bottom: 2px;
line-height: 1.5; line-height: 1.5;

View File

@@ -18,25 +18,22 @@
<div class="infscr-subcol"> <div class="infscr-subcol">
<div class="infscr-subtitle">Experienced Research Teams</div> <div class="infscr-subtitle">Experienced Research Teams</div>
<div class="infscr-body"> <div class="infscr-body">
Our collaboration is comprised of expert L-PBF researchers Our collaboration is comprised of expert L-PBF researchers with years of
with years of experience in the field. experience in the field.
</div> </div>
</div> </div>
<div class="infscr-subcol"> <div class="infscr-subcol">
<div class="infscr-subtitle">International Excellence</div> <div class="infscr-subtitle">International Excellence</div>
<div class="infscr-body"> <div class="infscr-body">
AM-D-Model contributors include scientists and engineers AM-D-Model contributors include scientists and engineers from respected research
from respected research institutions across Europe. institutions across Europe.
</div> </div>
</div> </div>
<div class="infscr-subcol"> <div class="infscr-subcol">
<div class="infscr-subtitle"> <div class="infscr-subtitle">Backed by Research Associations</div>
Backed by Research Associations
</div>
<div class="infscr-body"> <div class="infscr-body">
AM-D-Model is supported and funded by ESAFORM, a globally AM-D-Model is supported and funded by ESAFORM, a globally recognized association
recognized association of research leaders in additive of research leaders in additive manufacturing.
manufacturing.
</div> </div>
</div> </div>
</div> </div>
@@ -54,28 +51,22 @@
<div class="infscr-subcol"> <div class="infscr-subcol">
<div class="infscr-subtitle">Building the Future of L-PBF</div> <div class="infscr-subtitle">Building the Future of L-PBF</div>
<div class="infscr-body"> <div class="infscr-body">
AM-D-Model aims to provide a key cornerstone for the future AM-D-Model aims to provide a key cornerstone for the future of L-PBF research: a
of L-PBF research: a universal benchmark for process universal benchmark for process modelling.
modelling.
</div> </div>
</div> </div>
<div class="infscr-subcol"> <div class="infscr-subcol">
<div class="infscr-subtitle"> <div class="infscr-subtitle">Community Focused Data Management</div>
Community Focused Data Management
</div>
<div class="infscr-body"> <div class="infscr-body">
We aim to provide a blueprint for future big data AM We aim to provide a blueprint for future big data AM projects, working with
projects, working with contributors to ensure this contributors to ensure this benchmarking dataset is managed responsibly.
benchmarking dataset is managed responsibly.
</div> </div>
</div> </div>
<div class="infscr-subcol"> <div class="infscr-subcol">
<div class="infscr-subtitle"> <div class="infscr-subtitle">Data Science, as a Core Discipline</div>
Data Science, as a Core Discipline
</div>
<div class="infscr-body"> <div class="infscr-body">
Our team includes expert data scientists, responsible for Our team includes expert data scientists, responsible for managing data
managing data contributions and maximizing data impact. contributions and maximizing data impact.
</div> </div>
</div> </div>
</div> </div>
@@ -93,28 +84,23 @@
<div class="infscr-subcol"> <div class="infscr-subcol">
<div class="infscr-subtitle">FAIR, Transparent, and Open</div> <div class="infscr-subtitle">FAIR, Transparent, and Open</div>
<div class="infscr-body"> <div class="infscr-body">
The AM-D-Model benchmark project is designed with open The AM-D-Model benchmark project is designed with open science in mind,
science in mind, following FAIR principles of transparency following FAIR principles of transparency and openness.
and openness.
</div> </div>
</div> </div>
<div class="infscr-subcol"> <div class="infscr-subcol">
<div class="infscr-subtitle"> <div class="infscr-subtitle">Visibility, Accessibility and Impact</div>
Visibility, Accessibility and Impact
</div>
<div class="infscr-body"> <div class="infscr-body">
By making these results open, we believe that visibility and By making these results open, we believe that visibility and accessibility will
accessibility will maximize their impact on the L-PBF field. maximize their impact on the L-PBF field.
</div> </div>
</div> </div>
<div class="infscr-subcol"> <div class="infscr-subcol">
<div class="infscr-subtitle"> <div class="infscr-subtitle">Serving the Research Community</div>
Serving the Research Community
</div>
<div class="infscr-body"> <div class="infscr-body">
We aim to contribute to the L-PBF research community by We aim to contribute to the L-PBF research community by providing a universally
providing a universally accessible benchmark similar to accessible benchmark similar to those driving other cutting-edge research
those driving other cutting-edge research fields. fields.
</div> </div>
</div> </div>
</div> </div>

View File

@@ -7,19 +7,15 @@
<div class="splash"> <div class="splash">
<div class="splash-copy"> <div class="splash-copy">
<div class="splash-title"> <div class="splash-title">Benchmarking the future of metal 3d printing</div>
Benchmarking the future of metal 3d printing
</div>
<div class="splash-body"> <div class="splash-body">
AM-D-Model is an ESAFORM benchmark project aiming to create the data AM-D-Model is an ESAFORM benchmark project aiming to create the data that will drive the
that will drive the future of Laser Powder-Bed-Fusion (L-PBF) future of Laser Powder-Bed-Fusion (L-PBF) research and innovation. By connecting an
research and innovation. By connecting an international network of international network of collaborators AM-D-Model will create a comprehensive, open
collaborators AM-D-Model will create a comprehensive, open L-PBF L-PBF benchmark dataset. As part of our commitment to open science, this dataset will be
benchmark dataset. As part of our commitment to open science, this openly shared with the research community. Our goal is to create a universal benchmark
dataset will be openly shared with the research community. Our goal for the L-PBF community, sparking the collaboration and innovation that will build the
is to create a universal benchmark for the L-PBF community, sparking future of this technology.
the collaboration and innovation that will build the future of this
technology.
</div> </div>
<Button <Button
class="splash-button" class="splash-button"

View File

@@ -6,8 +6,7 @@
import { CDN } from "$lib/constants"; import { CDN } from "$lib/constants";
const EMAIL_ENDPOINT = const EMAIL_ENDPOINT = "https://bst564m4ws3ouxg27nqrpfqv5a0jbhxi.lambda-url.eu-west-1.on.aws/";
"https://bst564m4ws3ouxg27nqrpfqv5a0jbhxi.lambda-url.eu-west-1.on.aws/";
</script> </script>
<div class="contact-page"> <div class="contact-page">
@@ -17,16 +16,12 @@
<h1>Contact Us</h1> <h1>Contact Us</h1>
<h2>We look forward to hearing from you!</h2> <h2>We look forward to hearing from you!</h2>
<p> <p>
Interested in contributing, collaborating, or otherwise getting Interested in contributing, collaborating, or otherwise getting in touch with the
in touch with the AM-D-Model team? We are always looking for AM-D-Model team? We are always looking for input on our project from others in the
input on our project from others in the wider L-PBF research wider L-PBF research community. Please use the form below to email our corresponding
community. Please use the form below to email our corresponding
researcher and they will reply as soon as they are able. researcher and they will reply as soon as they are able.
</p> </p>
<ContactForm <ContactForm class="contact-form" emailEndpointApi={EMAIL_ENDPOINT} />
class="contact-form"
emailEndpointApi={EMAIL_ENDPOINT}
/>
</div> </div>
<div class="contact-image-column"> <div class="contact-image-column">
<div class="contact-image-pane hover:bg-blue-200"> <div class="contact-image-pane hover:bg-blue-200">