Static site server (basically blogs) with Crystal Language
Switch branches/tags
Nothing to show
Clone or download
f Merge pull request #5 from tommasop/master
kamber working with latest crystal and kemal
Latest commit ca43098 Mar 29, 2017

README.md

Kamber

Kamber

Kamber is a blog server based on Kemal.

Join the chat at https://gitter.im/f/kamber

This is not a static blog generator, it's a static blog server. It doesn't require any other HTTP servers. It uses Crystal and Kemal to generate HTML and also serve it.

Quickstart

Deploy on Heroku and start blogging in a minute!

Deploy

View an Heroku example

Features

  • Supports many post types:
    • Markdown Posts
    • GitHub Gist
    • Tweet Embeds
    • Video Embeds
    • Disqus Comments
  • Very fast, ~15x faster than other static site generators/servers, since it's based on Kemal. See Benchmarks
  • Easy to develop. Just add contents to posts.yml file.
  • Custom themes.

Getting Started

1. Install Crystal and Kamber

brew install crystal-lang
git clone https://github.com/f/kamber myblog
cd myblog
shards install

2. Add Contents

  • Edit kamber/config.cr and set your title.
  • Edit posts/posts.yml file and add some content.

3. Build and Run

crystal build --release src/kamber.cr
./kamber

To run in production, add -e production flag.

./kamber -e production

Themes

Kamber has theme support.

Theme GitHub
Kamber Default Theme f/kamber-theme-default
Kamber Dark Theme f/kamber-theme-dark

How to install themes

Writing Custom Themes

Kamber has a simple API to build your own themes. To start quickly, just fork the kamber-theme-default and start hacking it.

We are waiting for your themes!

Configuration

You can set your blog title from config.cr

$BLOG_TITLE = "My Awesome Blog"
$BLOG_DESC = "programming journal"
$GOOGLE_ANALYTICS = "UA-XXXXX-X"

# Activate Theme
require "kamber-theme-default"

Post Types

posts/posts.yml has multiple YAML documents, each represents a blog item (aka post type).

Post (Markdown)

type: post
title: Example Post
abstract: Lorem ipsum dolor sit amet, consectetur adipisicing elit
file: posts/example-post.md
disqus: true

Link

type: link
title: Example Link
url: "http://crystal-lang.org"

Video

Kamber supports Youtube and Vimeo videos. The main pattern of video is [video provider]/[video id]

type: video
title: Example Video
abstract:
video: youtube/YE3GkCB3t_0

If you will use Vimeo, change video key to

video: vimeo/147842467

Tweet

This type embeds Tweets to the index. The pattern is [username]/[tweet id]

type: tweet
title: Example Tweet
tweet: fkadev/673506301415194625

Gist

This type embeds GitHub Gists to the index. The pattern is [username]/[gist id]

type: gist
title: Example Gist
gist: f/c12af6b9e7d53bd9224d

Deploy to Heroku

Kamber uses custom buildpack to run in Heroku.

heroku create myblog --buildpack https://github.com/f/heroku-buildpack-kamber
git push heroku master

Screenshots

Screen 1

Screen 2

Contributing

  1. Fork it ( https://github.com/f/kamber/fork )
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request

Roadmap

  • Add base post types and make it run
  • Add page support

Contributors

  • f Fatih Kadir Akın - creator, maintainer

Kambersiz düğün olmaz.