{"id":46824261,"url":"https://github.com/wellcomecollection/wellcomecollection.org","last_synced_at":"2026-03-10T09:38:47.206Z","repository":{"id":36950363,"uuid":"69954837","full_name":"wellcomecollection/wellcomecollection.org","owner":"wellcomecollection","description":"🪟 Wellcome Collection's website and services that support it","archived":false,"fork":false,"pushed_at":"2026-03-03T17:44:32.000Z","size":105518,"stargazers_count":42,"open_issues_count":186,"forks_count":4,"subscribers_count":17,"default_branch":"main","last_synced_at":"2026-03-03T21:11:57.647Z","etag":null,"topics":["catalogue","frontend","library","monorepo","museum","museums","nodejs","sass","wellcome-collection"],"latest_commit_sha":null,"homepage":"https://wellcomecollection.org","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/wellcomecollection.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2016-10-04T10:29:50.000Z","updated_at":"2026-03-03T16:38:18.000Z","dependencies_parsed_at":"2024-01-22T11:26:33.574Z","dependency_job_id":"7d0231b5-1f8a-4c40-b01b-137569d755cc","html_url":"https://github.com/wellcomecollection/wellcomecollection.org","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/wellcomecollection/wellcomecollection.org","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wellcomecollection%2Fwellcomecollection.org","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wellcomecollection%2Fwellcomecollection.org/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wellcomecollection%2Fwellcomecollection.org/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wellcomecollection%2Fwellcomecollection.org/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wellcomecollection","download_url":"https://codeload.github.com/wellcomecollection/wellcomecollection.org/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wellcomecollection%2Fwellcomecollection.org/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30328862,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-10T05:25:20.737Z","status":"ssl_error","status_checked_at":"2026-03-10T05:25:17.430Z","response_time":106,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["catalogue","frontend","library","monorepo","museum","museums","nodejs","sass","wellcome-collection"],"created_at":"2026-03-10T09:38:46.009Z","updated_at":"2026-03-10T09:38:47.179Z","avatar_url":"https://github.com/wellcomecollection.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Wellcome Collection\n\nWellcome Collection web applications.\n\n[![Build status](https://badge.buildkite.com/0ca819db1215b66ecb17019d8ee5331d8e537094d051141219.svg?branch=main)](https://buildkite.com/wellcomecollection/experience) [![Deployment status](https://img.shields.io/buildkite/35f01a7d794772ab5d19c8cb992751d18a87b54d8e6feb3ca4/main.svg?label=deployment)](https://buildkite.com/wellcomecollection/experience-deployment) [![e2e](https://img.shields.io/buildkite/cbb157a7255a4022f64a56252b99b0ebca088fb2eded1489be/main.svg?label=e2e%20tests)](https://buildkite.com/wellcomecollection/experience-e2e)\n\nWe all work in the **open** and **open source** where we can and where it makes sense\n\nWe put **users** **at the centre** of all decisions. We use **evidence and insight** to inform these decisions at all stages of the product cycle\n\nWe create **simple**, **well considered experiences**, frequently incorporating **user feedback**\n\nWe have **inclusive processes** that create **accessible products**\n\nWe build products that **deliver value**, **solve real problems**, and are a **delight to use**\n\n## Visual design\n\nVisual designs for the experience are created and shared in [Figma](https://figma.com).\n\nTo get a login, ask a friendly experience team member near you.\n\n## Core parts\n\n### [Content](https://wellcomecollection.org/stories)\n\n- A collection of content from a wide range of authors to challenge the\n  ways people think and feel about health by connecting science, medicine,\n  life and art [`code`](./content).\n\n- Giving people the ability to partake in or inform themselves on\n  Wellcome Collection's events, exhibitions, talks,\n  discussions, and more.\n\n### [Catalogue](https://wellcomecollection.org/works)\n\n- Tools to allow people to browse and dig deeper into our catalogue.\n  [`code`](./content).\n\n### [Cardigan](https://cardigan.wellcomecollection.org)\n\n- Wellcome Collection's design system. [`code`](./cardigan).\n\n## Local development\n\nYou can run `./scripts/setup.sh` from the root of this project to install what you need to get started.\n\nWe use [Yarn](https://yarnpkg.com/lang/en/) to manage our external dependencies.\n\nWe then use [Yarn Workspaces](https://yarnpkg.com/lang/en/docs/workspaces/) to manage our [local, common dependencies](https://github.com/wellcomecollection/wellcomecollection.org/tree/main/common).\n\nTo run a project, from the root directory:\n```bash\nyarn install\n# yarn {appName = content|identity}\n# e.g.\nyarn content\n```\n### Running the app with local APIs\n\nTo run the app using a local copy of the concept, content, and/or catalogue APIs you can run:\n\n```bash\nyarn config-local-apis\n```\n\nConfigure the content \u0026 identity app to use the local APIs under `https://api-dev.wellcomecollection.org/`\nby adding the following to the `.env` file in both `./content/webapp` and `./identity/webapp`:\n\n```\nNEXT_PUBLIC_API_ENV_OVERRIDE=\"dev\"\n```\n\nThis will configure the local version of nginx to proxy requests to the local APIs, \nsee [scripts/configure-local-apis](./scripts/configure-local-apis) for more information.\n\n\n#### Choosing specific APIs\n\nYou can choose which APIs the content app uses locally by setting the following environment variables in the `.env` file:\n\n```\nNEXT_PUBLIC_CONTENT_API_ENV_OVERRIDE=\"dev\"\nNEXT_PUBLIC_CONCEPTS_API_ENV_OVERRIDE=\"stage\"\nNEXT_PUBLIC_CATALOGUE_API_ENV_OVERRIDE=\"prod\"\n```\n\nAPI environment is specified in the following order of precedence:\n\n1. `toggles?.stagingApi` is unset, all APIs are set to `prod`\n1. `toggles?.stagingApi` is true, then all APIs are set to `stage`\n1. `NEXT_PUBLIC_API_ENV_OVERRIDE` is set, then all APIs are set to the value of `NEXT_PUBLIC_API_ENV_OVERRIDE`\n1. `NEXT_PUBLIC_CONTENT_API_ENV_OVERRIDE`, `NEXT_PUBLIC_CONCEPTS_API_ENV_OVERRIDE`, or `NEXT_PUBLIC_CATALOGUE_API_ENV_OVERRIDE` are set, then the respective API is set to the value of the environment variable.\n\n#### Using www-dev.wellcomecollection.org\n\nAdding the local API confguration allows you to use the `www-dev.wellcomecollection.org` domain to access the website on your local machine.\n\nThis allows content and identity to behave correctly when running locally, as paths between the two apps are relative to the domain.\n\n**Note:** [Fast refresh](https://nextjs.org/docs/architecture/fast-refresh) is not available when using the `www-dev.wellcomecollection.org` domain.\n\n### Running content \u0026 identity together\n\nYou can run both apps together with the following command:\n\n```bash\n(yarn content \u0026 yarn identity)\n```\n\n**Note:** both apps should have the same `NEXT_PUBLIC_API_ENV_OVERRIDE` value in their `.env` files.\n\n### Running CI steps locally\n\nIn order to reproduce a build step locally you can run the same `docker compose` command that [Buildkite](https://buildkite.com/wellcomecollection/experience) runs.\n\nSee an example for `edge_lambdas` below. This example presumes you have an AWS credentials file set up to allow you to assume the CI role.\n\nYour AWS configuration in `$HOME/.aws/credentials` might include the following (with the default profile containing your primary credentials).\n\n```\n[ci-agent]\nregion=eu-west-1\nrole_arn=arn:aws:iam::760097843905:role/ci-agent\nsource_profile=default\n\n[experience-ci]\nregion=eu-west-1\nrole_arn=arn:aws:iam::130871440101:role/experience-ci\nsource_profile=ci-agent\n```\n\nIf in [`pipeline.yml`](.buildkite/pipeline.yml) you have:\n\n```yaml\n- label: \"deploy edge_lambdas\"\n  if: build.branch == \"main\"\n  plugins:\n    - wellcomecollection/aws-assume-role#v0.2.2:\n        role: \"arn:aws:iam::130871440101:role/experience-ci\"\n    - ecr#v2.1.1:\n        login: true\n    - docker-compose#v3.5.0:\n        run: edge_lambdas\n        command: [ \"yarn\", \"deploy\" ]\n        env:\n          - AWS_ACCESS_KEY_ID\n          - AWS_SECRET_ACCESS_KEY\n          - AWS_SESSION_TOKEN\n```\n\nYou should update [`docker-compose.yml`](docker-compose.yml) to look as follows.\n\n```yaml\nservices:\n  edge_lambdas:\n    build:\n      context: ./cache/edge_lambdas\n    command: [ \"yarn\", \"deploy\" ]\n    volumes:\n      - /my/home/folder/.aws:/root/.aws:ro\n    environment:\n      - AWS_PROFILE=experience-ci\n```\n\nYou will need to add a `command`, `volumes` and `environment` block to specify the required command and mount your AWS credentials in the running container.\n\nYou can then run `docker compose` commands as would occur in the CI environment.\n\n```shell script\ndocker compose edge_lambdas build\ndocker compose edge_lambdas run\n```\n\n## Linting\n\nWe use [`ESLint`](https://eslint.org/) to lint the project. [The config is global](./eslintrc.js).\n\nWe use [`stylelint`](https://stylelint.io/) to lint styled-components.  [The config is global](./.stylelintrc.js).\n\nWe extend a few configs, including prettier, [which we configure separately](./prettierrs.js).\n\n### VSCode setup\n\nIt's easiest to use [Dirk Baumer's VSCode plugin](https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint).\n\nIf you have prettier (`esbenp.prettier-vscode`) set as default formatter, we'll get conflicts.\n\nLinting does not happen in CI, so to enable linting on save, you can add this to your workspace settings:\n```JSON\n{\n  \"editor.codeActionsOnSave\": {\n    \"source.fixAll.eslint\": true\n  },\n  \"stylelint.validate\": [\"typescriptreact\"],\n}\n```\n\n## Other pieces of the Wellcome Collection puzzle\n\n[Wellcome Collection Digital Platform](https://github.com/wellcomecollection/platform).\n\n[Stacks](https://stacks.wellcomecollection.org/), Wellcome Collection's musings on digital developments.\n\n[Catalogue API documentation](https://developers.wellcomecollection.org).\n\n## Thanks\n\n\u003ca href=\"https://www.chromatic.com/\"\u003e\u003cimg src=\"https://user-images.githubusercontent.com/321738/84662277-e3db4f80-af1b-11ea-88f5-91d67a5e59f6.png\" width=\"153\" height=\"30\" alt=\"Chromatic\" /\u003e\u003c/a\u003e\n\nThanks to [Chromatic](https://www.chromatic.com/) for providing the visual testing platform that helps us review UI changes and catch visual regressions.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwellcomecollection%2Fwellcomecollection.org","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwellcomecollection%2Fwellcomecollection.org","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwellcomecollection%2Fwellcomecollection.org/lists"}