fun> Fun - Website Documentation (fun-lang.xyz)
Documentation for the fun-lang.xyz website in the `./web/` directory.
Table of contents
This document describes the structure and maintenance of the website for the Fun programming language, located in the ./web/ directory. The website is hosted at https://fun-lang.xyz.
Technology Stack
The website is built using Jekyll, a static site generator written in Ruby.
- Markdown Engine: kramdown (configured for GFM)
- Syntax Highlighting: Rouge
- Plugins:
jekyll-paginatejekyll-sitemapjekyll-tocjekyll-seo-tag(available in Gemfile)
Directory Structure
The ./web/ directory follows the standard Jekyll structure:
_config.yml: Main configuration file for Jekyll._data/: YAML/JSON data files used by the site._includes/: Reusable HTML snippets (headers, footers, etc.)._layouts/: Page templates (e.g.,page,post)._posts/: Blog posts and news updates._sass/: SCSS files for styling._site/: The generated static website (usually excluded from version control).assets/: Images, JavaScript, and CSS (if not in_sass).css/,js/,images/,fonts/: Static assets.about/,community/,faq/,documentation/, etc.: Static pages and subdirectories.Gemfile: Ruby dependencies for building the site.
Makefile Targets
The ./web/ directory contains a Makefile to simplify common tasks:
make build: Builds the static site using Jekyll (bundle exec jekyll build --incremental).make clean: Removes the generated_site/directory content.make run: Runs the Jekyll development server with drafts and incremental build enabled.make runreload: Same asrun, but with live reload enabled.make minify: Minifies HTML, CSS, and XML files in the_site/directory using theminifytool.make sync: Deploys the_site/directory to the production server usingrsync.make release: A full release cycle:build,minify, andsync.make local: Performs aclean,build, andminifyfor local testing.
Local Development
To run the website locally for development:
- Prerequisites: Ensure you have Ruby, Bundler, and optionally the
minifytool installed. - Install dependencies:
cd web/ bundle install - Run the development server:
Using the Makefile:
make runOr with live reload:
make runreloadThe website will be available at
http://localhost:4000.
Content Management
- Blog Posts: Add new
.mdfiles to_posts/following theYYYY-MM-DD-title.mdnaming convention. - Pages: Create new
.mdor.htmlfiles in the root of the./web/directory or in subdirectories. - Configuration: Update
_config.ymlfor site-wide settings, navigation, or social media links.
Deployment
The website can be deployed using the Makefile:
cd web/ make release
The release target builds the site, minifies the assets, and syncs the files to fun-lang.xyz via rsync. Ensure you have the necessary SSH permissions for the sync to succeed.

