Web site of typelevel.scala
CSS HTML Scala JavaScript Other
Switch branches/tags
Nothing to show
Latest commit 8df53b3 Dec 16, 2017 @larsrh larsrh Boston: Call for Speakers
Failed to load latest commit information.
.bundle fix inexplicable Liquid warnings Oct 9, 2016
_data replace some lost pictures Dec 16, 2017
_events Boston: Call for Speakers Dec 16, 2017
_includes Fix Haskell Now! link May 20, 2017
_layouts use trailing slashes in links Aug 19, 2017
_projects HTTP → HTTPS in links Aug 19, 2017
_scss use Jekyll's SASS compiler Feb 1, 2016
blog solution for license in every RSS item description Mar 5, 2017
css consistent file names Dec 4, 2016
events increase content width on some pages Oct 15, 2016
img prominent display of 2018 events on homepage Dec 15, 2017
js Commented out schedule, sponsor logos now with height attribute. Feb 8, 2016
posts Use permalink to @jbgi's Java-newtype-modules gist. Sep 4, 2017
project tut powered blog Oct 9, 2016
projects add fragment IDs for each project to support deep links Apr 13, 2017
resources add slides Apr 17, 2016
src/main/scala overwrite existing files Oct 12, 2016
.gitignore updates & cleanups Apr 30, 2017
.travis.yml tweaked deploy script Apr 4, 2017
Gemfile updates & cleanups Apr 30, 2017
LICENSE clarify license situation Oct 10, 2016
README.md HTTP → HTTPS in links Aug 19, 2017
_config.yml HTTP → HTTPS in links Aug 19, 2017
about.html prominent display of 2018 events on homepage Dec 15, 2017
build.sbt Well, we can do it... Mar 1, 2017
conduct.md new website Jan 16, 2016
contributors.md Added myself to the contributors list. Sorting the contributor list Oct 10, 2016
deploy.sh tweaked deploy script Apr 4, 2017
index.html prominent display of 2018 events on homepage Dec 15, 2017


typelevel website

This is the website of typelevel.scala. It is built on Jekyll and served at typelevel.org.

Important notice

📢 The blog post workflow has changed:

  • The default branch is now development. master is the target for automated commits from Travis. Please git checkout development for doing anything.
  • Posts go into posts instead of _posts. Run sbt run to have them copied over.
  • You can use tut in posts. See posts/2016-09-30-subtype-typeclasses.md for an example.

Getting Started (the short version)

If you just want to add a blog post or fix a typo in the content, here's how to get started.

Creating a blog post

  1. Create a new file in the posts directory or copy an existing post. Its name should have the format YYYY-MM-DD-short_title.md.
  2. Set the title (short title of the post, appears as the HTML <title>) and author (your GitHub user name) in the front matter. MathJax is available via mathjax: true inside the front matter.
  3. If this is your first blog post, please indicate if you want your name and a profile picture to appear on the post. If not, you can remove the author field from the front matter. Add your details in _data/authors.yml.
  4. Write your content using Markdown. For code highlighting, use the usual GitHub syntax:
def yourCode: Here

If you haven't written a post before, please add yourself to _data/authors.yml.

That's it, we'll take care of the rest. If you wish, you can also submit just a plain Markdown file and we'll be happy to integrate it.

Previewing your changes

To preview your changes, you have to install Ruby, Bundler and SBT first. Once you've done that, you can start the Jekyll server like this:

sbt run
bundle install
bundle exec jekyll serve --baseurl ''

This will first preprocess the blog posts and then start a local web server on port 4000 where you can browse the site. For automatic site rebuild, run the following two commands in different terminals:

sbt ~run
bundle exec jekyll serve --incremental --baseurl ''

This will trigger a recompile and rebuild if you change the source files.


Two different licenses apply:



The stylesheets are written in SASS, and can be found in the css and _scss directories. It is being processed/compiled into regular CSS by Jekyll.

├── css/
│   ├── main.scss # Custom CSS, brings all stylesheets together
├── _scss/
│   ├── _fonts.scss # @font-face embedding.
│   ├── _mixins.scss # SASS mixins
│   ├── _reset.scss # Normalize stylesheet
│   ├── _syntax.scss # Syntax highlighting by Pygments
│   ├── _variables.scss # SASS variables (colors, fonts, etc.)


Javascript can be found in the js/ folder, which also includes its dependencies.


All templates/layouts can be found in the _layouts folder, except the blog layout, which is located inside its own subfolder blog/.


Images for styling purposes are located inside img/, photos inside img/media/.

Adding a project

There are three types of projects: core/featured projects, regular projecs, and macros.

To add a regular project, create a new markdown file in the _projects folder with the following front matter:

layout: post
title: "Cats"
category: "Functional Programming"
description: "An experimental library intended to provide abstractions for functional programming in Scala, leveraging its unique features. Design goals are approachability, modularity, documentation and efficiency."
permalink: "https://non.github.io/cats/"
github: "https://github.com/non/cats"

Right now nothing more than the correct front matter is required.

Do the same for a core/featured project, but also add core: true. To add companions or extensions to these projects, use the front matter, too:

  - title: "Dogs"
    description: "Functional data structures"
    github: "https://github.com/stew/dogs"
  - title: "Alleycats"
    description: "Lawless classes & illegal instances"
    github: "https://github.com/non/alleycats"

Macros are created a little differently. They are located in _data/macros.yml and look like this:

- title: "imp"
  description: "Summoning implicit values"
  github: "https://github.com/non/imp"

Adding a page

To add a page, create a HTML or Markdown file in the root of the project. The site navgation is not fully dynamic for simplification purposes. It can be changed in the default layout (_layouts/default.html).

Sample front matter for a page:

layout: page
title: "Code of Conduct"