Skip to content

kemalcr/kemal

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Kemal

Kemal

Kemal is the Fast, Effective, Simple Web Framework for the Crystal. It's perfect for building Web Applications and APIs with minimal code.

CI Join the chat at https://gitter.im/sdogruyol/kemal

Why Kemal?

  • 🚀 Lightning Fast: Built on Crystal, known for C-like performance
  • 💡 Super Simple: Minimal code needed to get started
  • 🛠 Feature Rich: Everything you need for modern web development
  • 🔧 Flexible: Easy to extend with middleware support

Quick Start

  1. First, make sure you have Crystal installed.

  2. Add Kemal to your project's shard.yml:

dependencies:
  kemal:
    github: kemalcr/kemal
  1. Create your first Kemal app:
require "kemal"

# Basic route - responds to GET "http://localhost:3000/"
get "/" do
  "Hello World!"
end

# JSON API example
get "/api/status" do |env|
  env.response.content_type = "application/json"
  {"status": "ok"}.to_json
end

# WebSocket support
ws "/chat" do |socket|
  socket.send "Hello from Kemal WebSocket!"
end

Kemal.run
  1. Run your application:
crystal run src/your_app.cr
  1. Visit http://localhost:3000 - That's it! 🎉

Key Features

  • Full REST Support: Handle all HTTP verbs (GET, POST, PUT, DELETE, etc.)
  • 🔌 WebSocket Support: Real-time bidirectional communication
  • 📦 Built-in JSON Support: Native JSON handling
  • 🗄️ Static File Serving: Serve your static assets easily
  • 📝 Template Support: Built-in ECR template engine
  • 🔒 Middleware System: Add functionality with middleware
  • 🎯 Request/Response Context: Easy parameter and request handling

Learning Resources

Contributing

We love contributions! If you'd like to contribute:

  1. Fork it (https://github.com/kemalcr/kemal/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

Acknowledgments

Special thanks to Manas for their work on Frank.

License

Kemal is released under the MIT License.