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.
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/
.
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 [email protected]: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 runDevelMain.update
It uses Yesod and an MVC organization.
- HL.Model.* -- models
- HL.View.* -- views
- HL.Controller.* -- controllers
Templates are written in Lucid. There is presently no database.
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 |