Code Monkey home page Code Monkey logo

website-1's Introduction

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.

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, run:

npm install

Running a local server

Ok, you're ready! To run the website locally, just start astro dev mode:

npm run dev

You should then be able to access the website in your browser at http://localhost:4321/.

File structure

We follow Astro's file structure for the website. The main files are:

  • 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 src/content/events/ with the following frontmatter:

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)
locationName: "Name of the location" # (optional)
locationURL: "URL to the location or to the section in the text with location description (e.g. `#gather-town`)" # (optional)
locationLatLng: [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 src/content/blog/ with the following frontmatter:

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 announcement banner

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

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 and cached markdown

Much of the site is powered by the JSON files in /public and the cached markdown files (from the pipeline docs) in /.cache.

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 GITHUB_TOKEN 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 public_repo permission).

npm run build-pipeline-json
npm run build-component-json
npm run build-cache-force

Tools API docs

Tools docs are built using GitHub Actions on the nf-core/tools repo using Sphinx. These actions sync the built HTML files via FTP.

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 src/content/blog/ directory. In this file, include the following frontmatter at the beginning:

---
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:

<!-- end of excerpt -->

or for MDX

/* end of excerpt */

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 Hörtenhuber (@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.

website-1's People

Contributors

mashehu avatar ewels avatar nf-core-bot avatar jfy133 avatar renbot-bio avatar franbonath avatar apeltzer avatar christopher-hakkaart avatar maxulysse avatar ggabernet avatar friederikehanssen avatar drpatelh avatar mribeirodantas avatar edmundmiller avatar joseespinosa avatar mahesh-panchal avatar mirpedrol avatar louislenezet avatar medulka avatar renovate[bot] avatar sven1103 avatar lescai avatar alneberg avatar elinkronander avatar bjlang avatar priyanka-surana avatar chriswyatt1 avatar nvnieuwk avatar joaquimgamero avatar alvaromartmart avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.