core

Module System

Enhance site functionality with add-on modules.
After Dark uses Theme Components and Fetch Injection to provide a plug-in system for enhancing site functionality using optional add-on modules. View the list of available modules.

Online Help

Complete self-hosted help guide and example website.
After Dark includes an extensive online help manual and example website. View help docs locally by navigating to http://localhost:1414 following a Quick Install or after running the Upgrade Script. Internet connection not required. If help is not running you may start it anytime via script: cd flying-toasters && \ ./themes/after-dark/bin/help Or simply create an alias and serve docs with live-reload: alias hs='hugo serve --navigateToChanged' && \ hs --port 1414 --source themes/after-dark/docs Help is included within the After Dark source code.

Quick Install

One command is all you need to start a new website.

After Dark includes a portable installation script for quick set-up:

themes/after-dark/bin/install
Expand to view script
  1#!/bin/sh
  2
  3validate_hugo () {
  4   # Exit with error if hugo is not installed
  5   if ! hash hugo 2>/dev/null ; then
  6     echo "Error: After Dark requires Hugo version 0.44 or greater" >&2; exit 1
  7   fi
  8
  9   # Exit with error if not minimum required hugo version
 10   re="v(0\d*\.([4-9][4-9]|[5-9])|[1-9]).*"
 11   if ! hugo version | grep -qE "$re" ; then
 12      echo "Error: After Dark requires Hugo version 0.44 or greater" >&2; exit 1
 13   fi
 14}
 15
 16create_site_dir () {
 17   SITE_DIR="flying-toasters"
 18   if [ "$1" != "" ] ; then
 19      SITE_DIR="$1"
 20   fi
 21
 22   SITE_DIR_ABS="$PWD/$SITE_DIR"
 23   mkdir -p "$SITE_DIR"
 24}
 25
 26create_site () {
 27   echo "Creating a new Hugo site ..."
 28   hugo new site "$SITE_DIR" 1>/dev/null
 29   cd "$SITE_DIR" || exit 1
 30}
 31
 32download_theme () {
 33   echo "Downloading the latest version of After Dark ..."
 34   LATEST_META=$(wget -qO - https://registry.npmjs.org/after-dark/latest)
 35   vers=$(echo "$LATEST_META" | egrep -o "\"version\".*[^,]*," | cut -d ',' -f1 | cut -d ':' -f2 | tr -d '" ')
 36   mkdir -p themes/after-dark
 37   wget -qO - https://registry.npmjs.org/after-dark/-/after-dark-"$vers".tgz | tar --strip-components=1 -xz -C themes/after-dark
 38   echo "Version $vers downloaded to $SITE_DIR/themes/after-dark"
 39}
 40
 41download_module () {
 42   [ -z "$1" ] && { echo "Error: Attempt to download undefined module" >&2; exit 1; }
 43   echo "Downloading $1 module for After Dark ..."
 44   meta=$(wget -qO - https://registry.npmjs.org/"$1"/latest)
 45   vers=$(echo "$meta" | egrep -o "\"version\".*[^,]*," | cut -d ',' -f1 | cut -d ':' -f2 | tr -d '" ')
 46   mkdir -p themes/"$1"
 47   wget -qO - https://registry.npmjs.org/"$1"/-/"$1"-"$vers".tgz | tar --strip-components=1 -xz -C themes/"$1"
 48   echo "Version $vers downloaded to $SITE_DIR/themes/$1"
 49}
 50
 51configure_theme () {
 52   echo "Configuring basic After Dark theme settings ..."
 53   tee "config.toml" > /dev/null <<TOML
 54baseurl = "https://domain.example" # Controls base URL sitewide
 55languageCode = "en-US" # Controls site language
 56title = "After Dark" # Homepage title and page title suffix
 57paginate = 11 # Number of posts to show before paginating
 58
 59# Controls default theme and theme components
 60theme = [
 61  "fractal-forest",
 62  "after-dark"
 63]
 64
 65disableLiveReload = false # Optional, set true to disable live reload
 66enableRobotsTXT = true # Suggested, enable robots.txt file
 67
 68pygmentsCodefences = true # Suggested, highlight fenced code blocks
 69pygmentsUseClasses = true # Required for custom syntax highlighting
 70
 71sectionPagesMenu = "main" # Enable menu system for lazy bloggers
 72footnoteReturnLinkContents = "↩" # Provides a nicer footnote return link
 73
 74[params]
 75  description = "" # Suggested, controls default description meta
 76  author = "" # Optional, controls author name display on posts
 77  hide_author = false # Optional, set true to hide author name on posts
 78  has_cookies = false # Optional, set true to disable cookie disclaimer
 79  disable_csp = false # Optional, set true to disable content security policy
 80  images = [
 81    "https://source.unsplash.com/collection/983219/2000x1322"
 82  ] # Suggested, controls default Open Graph images
 83
 84[params.layout.menu.main]
 85  hidden = true # Optional, set false or remove to show section menu
 86
 87[params.modules.fractal_forest]
 88  enabled = true # Optional, set false to disable module
 89  decoders = ["bpgdec8a"] # Optional, 8-bit javascript decoder with animation
 90TOML
 91}
 92
 93update_archetypes () {
 94   echo "Updating the default content archetype ..."
 95   rm -f archetypes/default.md
 96   cp themes/after-dark/archetypes/default.md archetypes
 97}
 98
 99create_welcome_post () {
100   echo "Creating welcome post ..."
101   hugo new post/welcome.md 1>/dev/null
102}
103
104serve_site () {
105   echo "Starting site server ..."
106   hugo serve --buildDrafts --navigateToChanged --port 1313 1>/dev/null &
107}
108
109generate_help_docs () {
110   echo "Generating help documentation ..."
111   THEME_PATH=themes/after-dark
112   meta_path="$THEME_PATH"/data/npm
113   mkdir -p "$meta_path" && echo "$LATEST_META" | tr '\r\n' ' ' > "$meta_path"/latest.json
114   cd "$THEME_PATH"/docs && mkdir themes && ln -s ../.. "$THEME_PATH"
115   hugo new validate.md --kind validate 1>/dev/null
116}
117
118serve_help () {
119   echo "Starting help server ..."
120   hugo serve --disableLiveReload --port 1414 1>/dev/null &
121}
122
123set -e
124
125echo "Welcome to the After Dark quick installer. Press CTRL-C at any time to abort."
126
127validate_hugo
128create_site_dir "$1"
129create_site
130download_theme
131update_archetypes
132download_module "fractal-forest"
133configure_theme
134create_welcome_post
135serve_site
136generate_help_docs
137serve_help
138
139YELLOW='\033[0;33m'
140NC='\033[0m'
141
142printf "${YELLOW}Installation successful!${NC}\n"
143echo "Site created in $SITE_DIR_ABS"
144echo "Site server started at http://localhost:1313/"
145echo "To stop it run \"kill \$(ps aux | awk '/[h]ugo.*1313/ {print \$2}')\"."
146echo "Help server started at http://localhost:1414/"
147echo "To stop and restart it run \"./themes/after-dark/bin/help\"."
148echo "Thank you for choosing After Dark."

Please install Hugo 0.44 or greater before running the script.

Upgrade Script

Check for After Dark updates and upgrade effortlessly.
To check for updates and automatically upgrade After Dark to the latest version simply run the upgrade script from your site directory: cd flying toasters && \ ./themes/after-dark/bin/upgrade If you’re already using the latest version the script will let you know: Did not upgrade after-dark. Already using latest version. If an update is available the script will download and install it automatically: Starting upgrade from 6.7.6 to 6.8.0 ...