haskell-lang.org website
HTML Haskell JavaScript CSS Dockerfile Shell
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.



Build Status


This repository contains the code powering the haskell-lang.org web site. This website is a community driven website for the Haskell programming language. Its primary motivators are:

  • A destination that Haskellers can happily send non-Haskellers to in order to discover Haskell and get started with modern best practices
  • A source of information for existing Haskellers to discover up-to-date information
  • A collection of links to various online communities
  • A hub for sharing and hosting documentation for all levels of Haskellers

This list is not meant to be exclusive. If there are other ideas people have for content on this website, feel free to raise it in the issue tracker, on Reddit, or on Twitter.

Contributing content

We're going to make a more straight-forward story for contributing content changes that should simply involve editing markdown files under static/markdown/ or static/tutorial/.

Writing tutorials

This site supports both package-specific tutorials, as well as general purpose tutorials. The content for both of these lives in static/tutorial/. For package-specific tutorials, the base filename should be package-<packagename>. For example, to write a Markdown file with content on the vector package, you would edit the file static/tutorial/package-vector.md. The following file extensions are supported:

  • .md for local Markdown content. For non-package tutorials, please be sure to include a title on the first line, e.g.: # My Awesome Tutorial
  • .url for Markdown content hosted elsewhere. The content of this file will be a URL where external content can be downloaded.

If this seems overly complex, just check out the existing examples in that directory.

Please feel free at any time to contribute pull requests to improve this content.

If you would like to write a new tutorial, please follow this procedure to "claim" a tutorial and avoid multiple people working on the same content at once:

  • Fork the project
  • Create a new branch with a dummy Markdown file for the new content
  • Open a pull request titled "Adding tutorial for package foo"
  • Add your content on your branch
  • When you're done writing content, add a comment to the pull request indicating that it's ready for review

Before starting on new content, you should make sure that no pull request already exists for that topic.


Run these steps:

  • Clone the repo: $ git clone git@github.com:haskell-lang/haskell-lang.git
  • Install dependencies and build: $ stack build


It runs at: http://localhost:1990/

  • Manually running the binary: $ stack exec haskell-lang
  • Running from inside GHCi: Load DevelMain and run DevelMain.update


It uses Yesod and an MVC organization.

Templates are written in Lucid. There is presently no database.

Continuous Integration

In addition to builds on Travis CI, certain branches are automatically deployed to live websites:

Branch Site
master ci.haskell-lang.org
prod (protected) haskell-lang.org