kemal-by-example
Kemal By Example
This repository collects practical projects built with Kemal, designed to show how productive, readable, and capable the framework can be in real applications.
Kemal stands out by making web development feel lightweight without sacrificing capability. It is easy to read, fast to iterate on, and powerful enough to support clean routes, server-rendered pages, straightforward project organization, sessions, file uploads, and realtime features with WebSockets. The goal of this repository is to present practical projects that show and demonstrate the power of Kemal through hands-on examples.
Shared Stack
- Web framework:
Kemal - Database:
SQLite - Templating:
ECRfor server-rendered HTML - Realtime transport:
WebSocketswhere realtime features are needed - Language:
Crystal
Why This Repository
- Showcase the simplicity of building web apps with
Kemal - Demonstrate a small and effective stack built around
Kemal,SQLite,ECR, andWebSockets - Provide practical example projects instead of isolated snippets
- Keep each application easy to read, extend, and learn from
Projects
Blog- A server-rendered blog with post CRUD, built withKemal,SQLite, andECR.E-commerce- A small storefront with authentication and cart flow, built withKemal,SQLite,ECR, andkemal-session.File Upload & Storage- A multipart upload manager with public file serving and metadata storage, built withKemal,SQLite, andECR.Todo app- A simple task manager with full todo CRUD, built withKemal,SQLite, andECR.URL shortener- A compact link shortener with redirect tracking, built withKemal,SQLite, andECR.
Realtime Projects (WebSockets)
Real-time Dashboard- A live monitoring panel for CPU and memory metrics, built withKemal,SQLite,ECR,WebSockets, and Crystal concurrency.Twitter clone- A lightweight Twitter clone with realtime updates, built withKemal,SQLite,ECR, andWebSockets.
Directory Structure
blog/ecommerce/file-upload-storage/real-time-dashboard/twitter-clone/todo-app/url-shortener/
Getting Started
Clone the repository first:
git clone https://github.com/sdogruyol/kemal-by-example
cd kemal-by-example
Then choose one of the example applications below and run it from its own directory.
Running The Projects
Each project is self-contained. Open a terminal, move into the project directory, install dependencies, and run the app with Crystal.
Blog
cd blog
shards install
crystal run src/blog.cr
Then open http://127.0.0.1:3000.
E-commerce
cd ecommerce
shards install
crystal run src/ecommerce.cr
Then open http://127.0.0.1:3000.
File Upload & Storage
cd file-upload-storage
shards install
crystal run src/file_upload_storage.cr
Then open http://127.0.0.1:3000.
Real-time Dashboard (WebSockets)
cd real-time-dashboard
shards install
crystal run src/real_time_dashboard.cr
Then open http://127.0.0.1:3000.
Todo App
cd todo-app
shards install
crystal run src/todo_app.cr
Then open http://127.0.0.1:3000.
URL Shortener
cd url-shortener
shards install
crystal run src/url_shortener.cr
Then open http://127.0.0.1:3000.
Twitter Clone (WebSockets)
cd twitter-clone
shards install
crystal run src/twitter_clone.cr
Then open http://127.0.0.1:3000.
kemal-by-example
- 1
- 0
- 0
- 0
- 0
- about 1 hour ago
- April 1, 2026
Thu, 02 Apr 2026 05:52:07 GMT