Amethyst is a Rails inspired web-framework for Crystal language
Clone or download
Pull request Compare This branch is 78 commits behind amethyst-framework:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.

#Amethyst-logo Pledgie Build Status Join the chat at

Amethyst is a web framework written in the Crystal language. The goals of Amethyst are to be extremely fast and to provide agility in application development, much like Rails. Why did I call it "Amethyst"? Because Github uses a light purple color for the Crystal language similar to the amethyst gemstone.

Latest version - 0.1.7 Note that Amethyst is at it early stages, so it lacks for whole bunch of things. But you can give a hand with contributing.

Amethyst examples

For detailed information, see docs on our wiki below:

Here are some benchmarking results

For now, next things are implemented:

  • class-based controllers with method-based actions
  • views for actions (*.ecr)
  • filters for action
  • middleware support
  • simple REST routing
  • default routes for controller
  • path, GET and POST params inside actions
  • basic cookies support
  • static files serving
  • http logger and timer for developers
  • simple environments support
  • simple session support


Here is classic 'Hello World' in Amethyst

require "amethyst"

class WorldController < Base::Controller
  actions :hello

  view "hello", "#{__DIR__}/views"
  def hello
    @name = "World"
    respond_to do |format|
      format.html { render "hello" }

class HelloWorldApp < Base::App
  routes.draw do
    all "/",      "world#hello"
    get "/hello", "world#hello"
    register WorldController

app =

# /views/hello.ecr
Hello, <%= name %>

Using amethyst-bin to quickly generate your application

amethyst-bin is an executable shell script to help you quickly generate your Amethyst application.

It handles installing the base dependencies, views / controllers folder generation and main application file generation.

curl > amethyst && chmod +x amethyst
./amethyst sample

Voila! Your app is ready now you can run it

cd sample && crystal run src/


Feel free to fork project and make pull-requests.


I would be glad for any help with contributing.

  1. Fork it ( )
  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



Amethyst is not a commercial project,it is developed on pure enthusiasm, so if you want to support Amethyst developing, you can help with donating.