Table of Content
You can define the basePath
and contentPath
through the theme options.
// gatsby-config.js
module.exports = {
plugins: [
{
resolve: `gatsby-theme-musician`,
options: {
// Default is `/`
basePath: `my-band`,
// Default is `content`
contentPath: `data`,
},
},
],
}
Configuration files are located in src/gatsby-theme-musician/config
. They use the YAML format.
config
├── artist.yml # Artist data
├── navigation.yml # Site navigation links
└── text_labels.yml # Site text labels
This file contains data about the artist, which are displayed in the UI (header, banner, social links) and used in various site metadata. Add pound sign (#) and a space before a line to disable/comment it out; remove them to enable.
artist:
# Band or solo artist name (only this field is required)
name: Your Awesome Band
# Tagline displayed in banner
tagline: Short information about your group, new album, etc
# SEO and contact fields (disabled by default)
# seo_title:
# seo_description:
# contact_twitter_username:
# contact_phone:
# contact_email:
# Social links displayed in banner, footer, and in metadata
social:
- name: Facebook
url: https://facebook.com
- name: Instagram
url: https://instagram.com
- name: Twitter
url: https://twitter.com
- name: Youtube
url: https://youtube.com
- name: Spotify
url: https://spotify.com
# Site language for SEO metadata
site_language: en
You can use seo_title
and seo_description
to tailor the copy text into something more descriptive for search engines and external (social) sharing. If seo_title
and seo_description
are not provided, artist name
and tagline
are used instead. If contact-related data are not provided, they are omitted from the metadata.
-
seo_title
Used in
<title>
, OpenGraphog:title
meta tag, Twittertwitter:title
meta tag -
seo_description
Used in
description
meta tag, OpenGraphog:description
meta tag, Twittertwitter:description
meta tag -
contact_twitter_username
Used in
twitter:site
andtwitter:creator
meta tags. Do NOT include the@
sign. -
contact_phone
andcontact_email
Used in the JSON-LD structured data as the
contactPoint
Learn more:
- OpenGraph markup — Facebook Webmasters
- Twitter card markup — Twitter Developer
- Structured data — Google Search Guides
This file contains items for the site navigation displayed in the header.
navigation:
- text: Shows
url: "#shows"
- text: Releases
url: "#releases"
- text: Contact
url: "#contact"
# You can add any link, including external links
- text: Patreon
url: "https://patreon.com/some-account"
Note:
url
values for#shows
and#releases
refer to the anchor in the theme’s components. If you use the theme’s Releases and Shows sections, do not change theurl
. (You can still change thetext
as you wish!)⚠️ Do NOT leave this file blank. If you don’t want any navigation link, you can either leave it like below OR (recommended) shadow theheader
component. If you delete the file, theme default will be used.
navigation:
- text:
url: ""
This file contains text labels used in the site.
section_releases_title: Releases
section_shows_title: Shows
For example, if you want to call the section Discography instead of Releases, or Tour Dates instead of Shows, this is the place to do it.
- ️
⚠️ Do NOT leave this file blank. If you delete the file, theme default will be used.
Content files are located in content
, unless you specify a different path in the theme options. This is where you are going to add any additional files and folders for your site content. By default, this folder contains three text files and an image folder.
content
├── artist-landing-page.mdx
├── images
│ ├── favicon.png
│ └── placeholder.png
├── releases.yml
└── shows.yml
This is the landing page template automatically created by the theme. You can add, remove, reorder any content in this page beyond the <!-- Start editing here -->
line.
This page uses the MDX format, a new format that enables JSX in Markdown. As such, you can write regular text as well as any valid JSX (both native HTML elements and React components).
<!-- Start editing here -->
You can write regular text. Standard Markdown formatting such as **bold**, _italic_, or [hyperlink](https://github.com/ekafyi/gatsby-theme-musician) is supported.
Since native HTML elements are valid JSX, you <em>can</em> use them here. However do note JSX-specific gotchas such as <span style={{ padding: 10, background: 'lightblue' }}>using style object</span> for inlining CSS styles.
<Container>
This theme has some components you can use out-of-the-box, such as `<Container>` and `<Youtube>`. You can see them in action in the default landing page.
</Container>
You can use any other React components by installing (if using external package) and importing them yourself.
To learn more about using Components in this theme, go to the Components page.
This file contains entries for the “Releases” section. Each entry consists of the following:
- title: Your Album/Single Title
# Release date in yyyy-mm-dd format
date: 2019-01-01
# Release type (Album, EP, Single, etc)
release_type: Album
# Cover image path (relative to your content folder)
image: "./images/placeholder.png"
# Links to listen/buy/stream the release
links:
- name: Spotify
url: https://open.spotify.com/album/some-id
- name: Apple
url: https://music.apple.com/us/album/some-title
Notes:
- The day and month part of
date
is not displayed but is used to sort the releases (newest first—regardless of the order you write them in the file). If you don’t have another release from the same year, any date and month is fine as long as they use the correct format, eg.2019-01-01
. - For the
image
field, add the release artwork image to yourcontent
folder.- You may add your image anywhere in the folder; in root
content
folder or any subdirectory. Just don’t forget to refer to your image accordingly, eg.image: "./artworks/image-file-name.png"
(if you have your image incontent/artworks
).
- You may add your image anywhere in the folder; in root
- Each
links
may consist of one or multiple items, such as streaming platforms, your record label’s website, or any other place people can listen to or buy that release. At the moment, at least ONE entry in this file must have at least onelinks
item.
⚠️ Do not delete this file or leave it blank. If you don't want to display this section, remove it fromartist-landing-page.mdx
.
This file contains entries for the “Shows” section.
- name: Aliquam erat volutpat with Etiam Egestas
# Show date in yyyy-mm-dd format
date: 2019-08-10
# Show venue
location: Inner Alehouse, 2545 Parrish Avenue, Rocky Creek
# Link to page containing more info, RSVP, ticketing, etc
info_url: https://some-website.com
# Link to location map
map_url: https://maps.google.com
Notes:
- At the moment, at least ONE entry in this file must have
info_url
andmap_url
. Other fields are required for all entries. ⚠️ Do not delete this file or leave it blank. If you don't want to display this section, remove it fromartist-landing-page.mdx
.
Optionally, you may add the following images to your content folder.
File name | Extension | Description | Specifications |
---|---|---|---|
artist-banner | png, jpg | Displayed in banner as background image | Landscape orientation, any aspect ratio. Minimum width 1366 px. |
artist-logotype | png, jpg | Displayed in header in place of artist name | Landscape or square orientation, any aspect ratio. No size requirement but will be resized to 48 px height. |
artist-social | png, jpg | Used in metadata for social share thumbnail | Landscape orientation, aspect ratio 2:1. Minimum width 400 px. |
favicon | png | Displayed in browser title bar and desktop/mobile home screen | Square. Minimum 512x512 px. |
Notes:
- You may upload images of any ratio or orientation, but they will be cropped to the specs above.
⚠️ If you deploy to Netlify, avoid large images > 1MB as they may break the build process.
You may add custom pages by creating a MDX file in src/pages
. For example, if you create press.mdx
, the page will be created at http://localhost:8000/press.
🔮 In progress: You will be able to add pages in the content
folder so they are all in one place.