Kemal is the Fast, Effective, Simple Web Framework for the Crystal. It's perfect for building Web Applications and APIs with minimal code.
- 🚀 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
-
First, make sure you have Crystal installed.
-
Add Kemal to your project's
shard.yml
:
dependencies:
kemal:
github: kemalcr/kemal
- 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
- Run your application:
crystal run src/your_app.cr
- Visit http://localhost:3000 - That's it! 🎉
- ✅ 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
We love contributions! If you'd like to contribute:
- Fork it (https://github.com/kemalcr/kemal/fork)
- Create your feature branch (git checkout -b my-new-feature)
- Commit your changes (git commit -am 'Add some feature')
- Push to the branch (git push origin my-new-feature)
- Create a new Pull Request
Special thanks to Manas for their work on Frank.
Kemal is released under the MIT License.