website

Code and files for the main nf-core website.

https://github.com/nf-core/website

Science Score: 36.0%

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

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Committers with academic emails
    21 of 165 committers (12.7%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (16.1%) to scientific vocabulary

Keywords

nextflow nf-core website

Keywords from Contributors

pipelines workflows dsl2 nf-test taxonomic-profiling taxonomic-classification metagenomics microbiome rrna qiime2
Last synced: 6 months ago · JSON representation

Repository

Code and files for the main nf-core website.

Basic Info
  • Host: GitHub
  • Owner: nf-core
  • License: mit
  • Language: MDX
  • Default Branch: main
  • Homepage: https://nf-co.re
  • Size: 3.78 GB
Statistics
  • Stars: 77
  • Watchers: 167
  • Forks: 246
  • Open Issues: 111
  • Releases: 0
Topics
nextflow nf-core website
Created almost 8 years ago · Last pushed 6 months ago
Metadata Files
Readme Contributing License Code of conduct Citation Codeowners

README.md

nf-co.re

This repository contains code for the nf-core website: http://nf-co.re/

Packages used

Here's how the website is built:

  • Language: Javascript
  • Frameworks:
  • Tools:
    • npm (package manager)

Development

Getting the code

To make edits to the website, fork the repository to your own user on GitHub and then clone to your local system.

bash gh repo fork nf-core/website nf-core_website cd nf-core_website/

Installing dependencies

The website is built using Astro, a static site generator. To install the dependencies for all sub-sites, run:

bash npm install --workspaces

Running a local server

Ok, you're ready! The website is split up into sub-sites using npm workspaces (see blogpost). One usually works on just one sub-site, e.g., sites/main-site for blog posts, event pages and general code components, or sites/docs for changes to the documentation. To run the website locally, just start astro dev mode for the specific workspace,e.g.:

bash npm run dev --workspace sites/main-site

or

bash npm run dev --workspace sites/docs

For sub-sites (sites/pipelines, sites/pipeline-results, sites/configs, sites/modules-subworkflows) that are pulling data from GitHub API, you need to add a GITHUBTOKEN inside a .env file to avoid hitting API limits (too early). See instructions on how to get a GitHub OAuth token (the token only needs the `publicrepo` permission).

Add the .env file to the root of the repository with the following content:

bash GITHUB_TOKEN=your_github_token

and then symlink the .env file to the sub-site you are working on, e.g.:

bash ln -s .env sites/pipelines/.env

You should then be able to access the website in your browser at http://localhost:4321/. Some pages will not work when rendered using a specific dev server because the sub-sites are disjunct from each other, e.g., when starting the local server for sites/docs, http://localhost:4321/ the http://localhost:4321/pipelines pages will throw 404 errors.

In case you want to update pipelines.json or components.json you need to have a GitHub token with the admin:read, workflows:read, PRs:read, issues:read permissions. You can then run the following command to update the JSON files:

bash npm run build-pipeline-json npm run build-component-json

File structure

The website follows a mono-repo setup with sub-sites. The main sub-sites are:

  • sites/main-site - The main nf-core website, including components, events, blog posts
  • sites/configs - listing pages for nf-core configs
  • sites/docs - docs pages
  • sites/modules-subworkflows - modules and subworkflows pages
  • sites/pipelines - pipeline pages
  • sites/pipeline-results - AWS megatest result pages for each pipeline (split up from the rest to allow static generation of the main pipeline pages)

Each site has its own src directory with the following structure, typical for an Astro project:

  • src/pages/ - Astro pages
  • src/content/ - Astro content collections (markdown files for events, docs, blog)
  • src/components/ - Astro/Svelte components
  • src/layouts/ - HTML layouts
  • src/styles/ - (S)CSS stylesheets
  • public/ - Static files (images, json files etc)

Adding an event

To add an event, create a new markdown (or .mdx) file in sites/main-site/src/content/events/ with the following frontmatter:

yaml title: "Event Title" subtitle: "A brief overview of the event" type: "talk" # Can be "talk", "hackathon", "training", "bytesize" startDate: "YYYY-MM-DD" endDate: "YYYY-MM-DD" startTime: "HH:MM" endTime: "HH:MM" announcement: text: "Text on the announcement banner" # (optional) start: "YYYY-MM-DDTHH:MM:SS+HH:MM" # (required if announcement.text is used) end: "YYYY-MM-DDTHH:MM:SS+HH:MM" # (required if announcement.text is used) locations: # (optional) name: "Name of the location" # (optional) links: "URL(s) to the location or to the section in the text with location description (e.g. `#gather-town`)" # (optional) geoCoordinates: [48.2082, 16.3738] # Latitude and longitude of the location as an array " (optional) address: "Address of the location" #(optional) duration: "Duration of the event in days" (optional) embedAt: "in case this should be shown in the sidebar of a pipeline page (e.g. for a bytesize talk about the pipeline)" (optional) importTypeform: true # If true, the event will be imported from a Typeform (see below)

Adding a blog post

To add a blog post, create a new markdown (or mdx) file in sites/main-site/src/content/blog/ with the following frontmatter:

yaml title: "Your Blog Post Title" subtitle: "A brief overview of your post's content" headerImage: "Direct URL to an optional header image" (optional) headerImageAlt: "Descriptive alt text for the header image (mandatory if a header image is used)" pubDate: "Scheduled publication date and time (the post will go live post-website rebuild if the current date surpasses this timestamp). Format: YYYY-MM-DDTHH:MM:SS+HH:MM" (without quotes!) authors: ["Author's Name"] // Use a list format even if there is only one author. label: ["Category1", "Category2"] // This is optional and can include multiple categories. announcement: text: "Text on the announcement banner" # (optional) start: "YYYY-MM-DDTHH:MM:SS+HH:MM" # (required if announcement.text is used) end: "YYYY-MM-DDTHH:MM:SS+HH:MM" # (required if announcement.text is used)

Adding an advisory

To add an advisory to the website, create a new markdown (or mdx) file in sites/main-site/src/content/advisory with the following frontmatter:

```yaml

Required fields

title: "Advisory Title" subtitle: "Brief description of the issue" category: "pipelines" # Which part of the nf-core ecosystem this advisory affects # Options: ["pipelines", "modules", "subworkflows", "configuration"] # Can be single value or array for multi-category issues type: "knownregression" # What kind of issue this is - helps users understand impact # Options: ["knownregression", "incompatibility", "security", # "performance", "data_corruption", "other"] # Can be single value or array for issues with multiple aspects severity: "high" # How serious this issue is for users # Options: ["low", "medium", "high", "critical"] # Note: "critical" is only allowed for security issues publishedDate: "2024-01-15" # When this advisory was published (YYYY-MM-DD format)

Optional reporter information - who discovered and reported this issue

reporter: # Can be null, array of usernames, or array of objects with details - "username" # Simple GitHub username - name: "Full Name" # Object with full name and GitHub username github: "username"

Optional reviewer information - who reviewed and validated this advisory

reviewer: # Array of usernames or objects with reviewer details - "reviewer-username"

Category-specific fields - REQUIRED if the corresponding category is specified above

pipelines: # List of affected pipelines (required if category includes "pipelines") - "pipeline-name" # Simple list of pipeline names # OR specify affected versions: - name: "pipeline-name" # Pipeline name with specific version information versions: ["1.0.0", "1.1.0"] # Semantic version numbers of affected releases

modules: # List of affected modules (required if category includes "modules") - "module_name" - "another/module"

subworkflows: # List of affected subworkflows (required if category includes "subworkflows") - "subworkflow/name"

configuration: # Configuration aspects affected (required if category includes "configuration") - "config-item"

Optional details

nextflowVersions: # Specific Nextflow versions that exhibit this issue - "23.04.0" # Use semantic versioning format - "23.10.1"

nextflowExecutors: # Workflow execution environments where this issue occurs - "SLURM" # Specific executor names - "AWS Batch" - "Local"

softwareDependencies: # Container systems or package managers affected by this issue - "Docker" # Simple list of affected systems # OR specify affected versions: - name: "Singularity" # System name with version details versions: ["3.8.0", "3.9.0"] # Specific versions that have the issue # Available: ["Apptainer", "Charliecloud", "Docker", "Podman", "Sarus", # "Shifter", "Singularity", "Conda", "Spack", "Wave"]

Optional references - links to related information, bug reports, documentation

references: - title: "GitHub Issue" # Short title describing what this link is description: "Original bug report" # Longer explanation of what you'll find at this link url: "https://github.com/nf-core/pipeline/issues/123" # The actual URL - title: "Slack discussion" description: "Original reporting on the nf-core slack"

url: "https://nfcore.slack.com/archives/C03EZ806PFT/p1730391850337429"

```

Adding an announcement banner

You can show a short announcement banner on the website by adding additional information to the frontmatter of either a file inside sites/main-site/src/content/blog or sites/main-site/src/content/events. The following fields are available:

yaml announcement: text: "Your announcement text" start: YYYY-MM-DDTHH:MM:SS+HH:MM # Start date and time of the announcement (without quotes!) end: YYYY-MM-DDTHH:MM:SS+HH:MM # End date and time of the announcement. (without quotes!) This is an optional field for events, where the start date of the event is the end date of the announcement by default.

Updating the JSON files

Much of the site is powered by the JSON files in /public.

They come pre-built with the repository, but if you want to rebuild them then you'll need to run the following commands. Note that you need to add a GITHUBTOKEN inside a .env file to avoid hitting API limits (too early). See instructions on how to get a GitHub OAuth token (the token only needs the `publicrepo` permission).

bash npm run build-pipeline-json npm run build-component-json

Adding a new sub-site to the mono-repo

The following steps are necessary to add a new sub-site to the mono-repo:

  • [ ] Copy the sites/pipelines directory to a new directory with the name of the new sub-site, e.g. newsite.
  • [ ] Update the following files in the new directory:
    • [ ] astro.config.mjs
    • [ ] Update the assetsPrefix field to point to the new site's netlify URL, e.g. assetsPrefix: 'https://nf-core-website-newsite.netlify.app/'.
    • [ ] package.json - Update the name field to the new site name, e.g. "name": "newsite".
    • [ ] netlify.toml - Update the paths in the command and the ignore field to point to the new site's source directory, e.g.

toml command = "npm run build -w sites/newsite" ignore = "git diff --quiet $CACHED_COMMIT_REF $COMMIT_REF sites/main-site/src/components sites/main-site/src/layouts sites/newsite"

Tools API docs

nf-core/tools API reference docs are built using Sphinx via the add-tools-api-docs.yml GitHub Action and a webhook from the nf-core/tools repo.

Contribution guidelines

If you are looking forward to contribute to the website or add your institution to the official list of contributors, please have a look at the CONTRIBUTING.md.

Crafting a Blog Post

To publish a new blog post on the website, you'll need to create a Markdown file within the sites/main-site/src/content/blog/ directory. In this file, include the following frontmatter at the beginning:

```yaml

title: "Your Blog Post Title" subtitle: "A brief overview of your post's content" headerImage: "Direct URL to an optional header image" headerImageAlt: "Descriptive alt text for the header image (mandatory if a header image is used)" pubDate: "Scheduled publication date and time (the post will go live post-website rebuild if the current date surpasses this timestamp). Format: YYYY-MM-DDTHH:MM:SS.000+HH:MM" authors: ["Author's Name"] // Use a list format even if there is only one author.

label: ["Category1", "Category2"] // This is optional and can include multiple categories.

```

[!NOTE] The blog post will be visible on the website only if a rebuild of the site occurs after the date and time specified in the pubDate field.

By default the first paragraph of the blog post will be used as the preview text on the blog page. If you want to use a different paragraph, add the following comment after the paragraph you want to use:

markdown <!-- end of excerpt -->

or for MDX

mdx /* end of excerpt */ <!-- prettier-ignore-end -->

Community

If you have any questions or issues please send us a message on Slack.

Credits

Phil Ewels (@ewels) built the initial website, but there have been many contributors to the content and documentation. Matthias Hrtenhuber (@mashehu) worked on the concept and code for the new website rewrite.

See the repo contributors for more details.

Kudos to the excellent npm website, which provided inspiration for the design of the pipeline pages.

Owner

  • Name: nf-core
  • Login: nf-core
  • Kind: organization
  • Email: core@nf-co.re

A community effort to collect a curated set of analysis pipelines built using Nextflow.

Committers

Last synced: over 2 years ago

All Time
  • Total Commits: 4,304
  • Total Committers: 165
  • Avg Commits per committer: 26.085
  • Development Distribution Score (DDS): 0.772
Past Year
  • Commits: 1,216
  • Committers: 43
  • Avg Commits per committer: 28.279
  • Development Distribution Score (DDS): 0.35
Top Committers
Name Email Commits
mashehu m****3@g****m 983
Phil Ewels p****s@s****e 862
matthiasho m****r@k****e 282
James A. Fellows Yates j****3@g****m 231
Renuka Kudva 7****o 219
nf-core-bot c****e@n****e 153
Phil Ewels p****s@s****o 118
Franziska Bonath 4****h 108
christopher-hakkaart c****t@s****o 79
MaxUlysse m****a@g****m 74
ggabernet g****t@q****e 61
FranBonath f****h@s****e 60
FriederikeHanssen f****n@q****e 59
Alexander Peltzer a****r@g****m 56
Edmund Miller e****r@p****m 52
Phil Ewels p****l@s****o 46
Alexander Peltzer a****r 44
Hana Medova 5****a 41
Matthias Hörtenhuber m****u 34
elinkronander 3****r 28
chriswyatt1 c****t@h****m 26
Mahesh Binzer-Panchal m****l@n****e 25
drpatelh d****l@g****m 23
LouisBzh l****t@g****m 18
Johannes Alneberg a****g@k****e 18
JoseEspinosa k****u@g****m 18
Sven F s****r@q****e 18
ameynert a****t@i****k 18
mirpedrol m****a@g****m 18
Marcel Ribeiro-Dantas m****s@s****o 17
and 135 more...

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 160
  • Total pull requests: 1,336
  • Average time to close issues: 8 months
  • Average time to close pull requests: 13 days
  • Total issue authors: 86
  • Total pull request authors: 162
  • Average comments per issue: 0.94
  • Average comments per pull request: 1.54
  • Merged pull requests: 1,009
  • Bot issues: 1
  • Bot pull requests: 132
Past Year
  • Issues: 38
  • Pull requests: 634
  • Average time to close issues: 9 days
  • Average time to close pull requests: 3 days
  • Issue authors: 27
  • Pull request authors: 114
  • Average comments per issue: 0.66
  • Average comments per pull request: 1.56
  • Merged pull requests: 468
  • Bot issues: 0
  • Bot pull requests: 61
Top Authors
Issue Authors
  • ewels (22)
  • edmundmiller (10)
  • jfy133 (8)
  • mashehu (6)
  • maxulysse (5)
  • christopher-hakkaart (5)
  • FranBonath (4)
  • mahesh-panchal (4)
  • Emiller88 (4)
  • FriederikeHanssen (4)
  • kedhammar (3)
  • telatin (3)
  • jasmezz (3)
  • mirpedrol (2)
  • camlloyd (2)
Pull Request Authors
  • mashehu (321)
  • ewels (121)
  • FranBonath (102)
  • jfy133 (72)
  • renovate[bot] (59)
  • github-actions[bot] (49)
  • JoseEspinosa (45)
  • christopher-hakkaart (44)
  • maxulysse (42)
  • mirpedrol (29)
  • dependabot[bot] (24)
  • mribeirodantas (23)
  • edmundmiller (21)
  • FriederikeHanssen (17)
  • bjlang (17)
Top Labels
Issue Labels
bug (74) enhancement (44) documentation (24) infrastructure (12) hackathon (11) back-end (5) first-timers-only (4) front-end (3) pipeline-tools (2) automation (2) astro (2) high-priority (1) site-content (1) low-priority (1) 2023-new-site (1) awaiting-feedback (1)
Pull Request Labels
dependencies (24) javascript (20) WIP (15) hackathon (11) bug (7) 2023-new-site (6) nf-test (4) documentation (4) Ready for Review (3) enhancement (2) security (2) astro (2) high-priority (2) front-end (1) awaiting-feedback (1)

Dependencies

.github/workflows/build-json-files-and-md-cache.yml actions
  • actions/cache v3 composite
  • actions/checkout v3 composite
  • actions/setup-node v3 composite
  • peter-evans/create-pull-request v5 composite
.github/workflows/fix-linting.yml actions
  • actions/checkout v3 composite
  • actions/setup-python v3 composite
  • pre-commit/action v3.0.0 composite
.github/workflows/playwright.yml actions
  • actions/cache v3 composite
  • actions/checkout v3 composite
  • actions/setup-node v3 composite
  • actions/upload-artifact v3 composite
  • jakepartusch/wait-for-netlify-action v1.4 composite
.github/workflows/pre-commit.yml actions
  • actions/checkout v3 composite
  • actions/setup-python v3 composite
  • pre-commit/action v3.0.0 composite
.github/workflows/rich-codex.yml actions
  • actions/checkout v3 composite
  • actions/setup-python v3 composite
  • ewels/rich-codex main composite
  • nf-core/setup-nextflow v1 composite
package-lock.json npm
  • 1027 dependencies
package.json npm
  • @playwright/test ^1.37.1 development
  • @rollup/plugin-yaml ^4.1.1 development
  • @types/leaflet ^1.9.3 development
  • fontaine ^0.4.0 development
  • prettier ^2.8.8 development
  • prettier-plugin-astro ^0.10.0 development
  • prettier-plugin-svelte ^2.10.1 development
  • sass ^1.66.1 development
  • @astro-community/astro-embed-youtube ^0.4.1
  • @astrojs/mdx ^0.19.7
  • @astrojs/netlify ^2.6.0
  • @astrojs/partytown ^1.2.3
  • @astrojs/prefetch ^0.3.0
  • @astrojs/rss ^2.4.4
  • @astrojs/sitemap ^2.0.2
  • @astrojs/svelte ^3.1.1
  • @astropub/md ^0.2.0
  • @aws-sdk/client-s3 ^3.398.0
  • @aws-sdk/credential-provider-node ^3.398.0
  • @docsearch/js ^3.5.2
  • @fontsource-variable/inter ^5.0.8
  • @fontsource-variable/maven-pro ^5.0.8
  • @fontsource-variable/open-sans ^5.0.9
  • @nanostores/persistent ^0.9.1
  • astro ^2.10.14
  • astro-icon ^0.8.1
  • bootstrap ^5.3.1
  • bootstrap-print-css ^1.0.1
  • date-fns ^2.30.0
  • date-fns-tz ^2.0.0
  • datebook ^8.0.1
  • dotenv ^16.3.1
  • file-icons-js github:websemantics/file-icons-js
  • file-saver ^2.0.5
  • file-system-cache ^2.4.4
  • fuzzysort ^2.0.4
  • hast-util-to-string ^2.0.0
  • js-yaml ^4.1.0
  • leaflet ^1.9.4
  • mermaid ^10.3.1
  • nanostores ^0.9.3
  • octokit ^3.1.0
  • party-js ^2.2.0
  • pretty-bytes ^6.1.1
  • progress ^2.0.3
  • rehype-add-classes github:tycol7/rehype-add-classes
  • rehype-autolink-headings ^6.1.1
  • rehype-highlight ^6.0.0
  • rehype-katex ^6.0.3
  • rehype-pretty-code ^0.10.0
  • rehype-rewrite ^3.0.6
  • rehype-slug ^5.1.0
  • rehype-urls ^1.2.0
  • rehype-wrap-all ^1.1.0
  • remark-directive ^2.0.1
  • remark-emoji ^4.0.0
  • remark-gfm ^3.0.1
  • remark-math ^5.1.1
  • satori ^0.10.3
  • satori-html ^0.3.2
  • sharp ^0.32.5
  • shiki ^0.14.3
  • svelte ^4.2.0
  • svelte-confetti ^1.2.4
  • svelte-exmarkdown ^2.1.0
  • svelte-fast-marquee ^0.4.1
  • ts-dedent ^2.2.0
  • unist-util-visit ^5.0.0
  • vite ^4.4.9
  • yaml ^2.3.1
  • yoga-wasm-web ^0.3.3
  • youtube-player ^5.6.0