Skip to content
Amethyst is a Rails inspired web-framework for Crystal language
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
spec Add a create method to Amethyst module May 5, 2017
src Remove duplicated message of running server Aug 20, 2017
.gitignore Updated documentation to include new Github repo paths and copyright Feb 10, 2018
.travis.yml test against Crystal nightly on Travis Oct 21, 2015
Projectfile Fix travis.yml, removed unnecessary deps from Projectfile Jun 12, 2015 Updated documentation to include new Github repo paths and copyright Feb 10, 2018
shard.lock Revert to main mime branch Apr 25, 2017
shard.yml Updated documentation to include new Github repo paths and copyright Feb 10, 2018


⚠️ Amethyst is currently undergoing a re-write from the ground up. We'll be releasing the public roadmap soon.

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.

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

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 "crystal-on-rails/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 = HelloWorldApp

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

Start your application:

crystal deps
crystal build src/

Go to http://localhost:8080/.


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


You can’t perform that action at this time.