

Awesome Crystal

A curated list of awesome Crystal code and resources. Inspired by awesome
and awesome-awesomeness
.
The goal is to have projects mostly stable and useful for the community.
Search shards at shards.info or follow announcements Crystal [ANN] for more.
Contributions are welcome. Please take a quick look at the contribution guidelines
first.
Algorithms and Data structures
-
bisect
- Inserting values into a sorted array
-
blurhash.cr
- BlurHash
implementation
-
crie
- Compile-time Trie
-
CrOTP
- HOTP and TOTP implementation for two factor authentication
-
crystal-linked-list
- Implementation of Linked List
-
crystaledge
- A pure Vector Math library
-
crystalg
- A Generic Algorithm Library
-
crystalline
- A collection of containers and algorithms
-
csuuid
- A Chronologically Sortable UUID
-
edits.cr
- Collection of edit distance algorithms
-
fzy
- A Crystal port of awesome Fzy project fuzzy finder algorithm
-
Goban
- A fast and efficient QR Code implementation
-
graphlb
- Collection of graph datastructure and algorithms
-
haversine
- An Implementation of the Haversine formula
-
HKDF
- HMAC-based Extract-and-Expand Key Derivation Function rfc5869
-
kd_tree
- An implementation of “K-Dimensional Tree” and “N-Nearest Neighbors”
-
ksuid.cr
- K-Sortable Globally Unique IDs
-
markov
- Build Markov Chains and run Markov Processes
-
multiset.cr
- Implementation of a multiset
-
named_information
- Naming Things with Hashes rfc6920
-
qr-code
- QR Code generator
-
radix
- Radix Tree implementation
-
s2_cells
- S2 Geometry for spatial indexing
-
secure-remote-password
- SRP-6a protocol for authentication over an insecure network
-
SPAKE2+
- Password Authenticated Key Exchange (PAKE) protocol, comparable to SRP-6a
-
splay_tree_map
- Splay Tree implementation that conforms to the Hash ducktype
-
verhoeff
- Implementation of the Verhoeff checksum algorithm
Blockchain
-
Axentro
- A custom blockchain platform
-
Cocol
- A minimal blockchain testbed
-
secp256k1.cr
- Elliptic curve used in the public-private-key cryptography
C bindings
Caching
CLI Builders
-
admiral
- A robust DSL for writing command line interfaces
-
Athena Console
- Allows for the creation of CLI based commands
-
clicr
- A simple declarative command line interface builder
-
clim
- Slim command line interface builder
-
Cling
- A modular, non-macro-based command line interface library
-
commander
- Command-line interface builder
-
Keimeno
- A lightweight text user interface library in Crystal
-
OptionParser - command-line options processing (Crystal stdlib)
-
Phreak
- A highly flexible Crystal CLI builder in the style of OptionParser
CLI Utils
-
climate
- Tiny tool to make your CLI output 🌈 coloured
-
coin
- Command-line application that performs currency conversion via the Fixer API
-
cride
- A light CLI text editor/IDE
-
git-repository
- A git cli wrapper querying and cloning remote repositories with minimal data transfer
-
hetzner-k3s
- A CLI tool to quickly create and manage Kubernetes clusters in Hetzner Cloud
-
lff
- Simple and straightforward large files finder utility in command line
-
meet
- Start a jitsi meeting quickly from the comfort of your command line
-
oq
- A performant, and portable jq wrapper to facilitate the consumption and output of formats other than JSON; using jq
filters to transform the data
-
progress_bar.cr
- A simple and customizable progress bar
-
tablo
- A flexible terminal table generator
-
tallboy
- Generate ASCII character tables with support for spanning cells over multiple columns
Code Analysis and Metrics
-
ameba
- A static code analysis tool
-
linguist.cr
- Using multiple ways to find programming language used in files, based on Github’s Linguist
Compression
-
Crystar
- Readers and writers of Tar archive format
-
Gzip - readers and writers of gzip format (Crystal stdlib)
-
polylines.cr
— compression of series of coordinates
-
snappy
- Snappy compression format reader/writer for Crystal
-
Zip - readers and writers of zip format (Crystal stdlib)
-
Zlib - readers and writers of zlib format (Crystal stdlib)
-
zstd.cr
- Bindings for Zstandard
compression library
Configuration
-
cr-dotenv
- Loads .env file
-
Envy
- Load environment variables from YAML
-
envyable
- A simple YAML to ENV config loader
-
habitat
- Type safe configuration for your classes and modules
-
totem
- Load and parse a configuration in JSON, YAML, dotenv formats
Converters
-
base62.cr
- Base62 encoder/decoder, well suited for url-shortening
-
crunits
- Tool for converting units of measure (miles to kilometers, celsius to fahrenheit etc)
-
money
- Handling money and currency conversion with ease (almost complete port of RubyMoney
)
-
sass.cr
- Compile SASS/SCSS to CSS (libsass
binding)
Cryptography
-
cmac
- Crystal implementation of Cipher-based Message Authentication Code (CMAC)
-
ed25519
- the Ed25519 elliptic curve public-key signature system
described in [RFC 8032]
-
monocypher.cr
- Crystal wrapper for the Monocypher crypto library
-
sodium.cr
- Crystal wrapper for the libsodium crypto API
-
BinData
- Binary data parser helper with an ASN.1 parser
-
config.cr
- Easy to use configuration format parser
-
crinder
- Class based json renderer
-
Crystalizer
- (De)serialize any Crystal object; supporting JSON, YAML, and Byte formats out of the box
-
CSV - parsing and generating for comma-separated values (Crystal stdlib)
-
front_matter.cr
- Separates a files front matter from its content
-
geoip2.cr
- GeoIP2 reader
-
HAR
- HAR (HTTP Archive) parser
-
INI - INI file parser (Crystal stdlib)
-
JSON - parsing and generating JSON documents (Crystal stdlib)
-
json-schema
- convert JSON serializable classes into a JSON Schema representation
-
JSON::OnSteroids
- handle and mutate JSON document easily
-
maxminddb.cr
- MaxMindDB reader
-
toml.cr
- TOML parser
-
XML - parsing and generating XML documents (Crystal stdlib)
-
YAML - parsing and generating YAML documents (Crystal stdlib)
Data Generators
-
faker
- A library for generating fake data
-
hashids.cr
- A library to generate YouTube-like ids from one or many numbers
-
prime
- A prime number generator
Database Drivers/Clients
-
migrate
- A simpler database migration tool with transactions
Debugging
-
backtracer.cr
- Shard aiming to assist with parsing backtraces into a structured form
-
debug.cr
- debug!(…)
macro for pp
-style debugging
Dependency Injection
Email
Environment Management
Examples and funny stuff
Framework Components
-
Athena Event Dispatcher
- A Mediator and Observer pattern event library
-
Athena Negotiation
- Framework agnostic content negotiation library
-
device_detector
- Shard for detect device by user agent string
-
Exception Page
- An exceptional exception page for Crystal web libraries and frameworks
-
graphql
- Type-safe GraphQL server implementation
-
graphql-crystal
- GraphQL implementation
-
kemal-session
- Session handler for Kemal
-
mochi
- Authentication shard inspired by Devise supporting: Authenticable, Confirmable, Invitable & more
-
motion.cr
- Object oriented frontend library for Amber
-
multi-auth
- Standardized multi-provider OAuth2 authentication (inspired by omniauth)
-
praetorian
- Minimalist authorization library inspired by Pundit
-
Shield
- Comprehensive security for Lucky framework
-
shrine.cr
- File Attachment toolkit for Crystal applications. Heavily inspired by Shrine for Ruby
-
tourmaline
- Telegram bot framework with an API loosely based on telegraf.js
Game Development
GUI Development
HTML Builders
-
blueprint
- Write reusable and testable HTML templates in plain Crystal
-
form_builder.cr
- Dead simple HTML form builder for Crystal with built-in support for many popular UI libraries such as Bootstrap
-
to_html
- The fastest HTML builder engine for Crystal
-
Water
- A library for writing HTML in plain Crystal
HTML/XML Parsing
HTTP
-
Cable
- An ActionCable “port” to Crystal, framework agnostic, 100% compatible with the ActionCable JS Client
-
cossack
- Simple flexible HTTP client
-
crest
- Simple HTTP and REST client, inspired by the Ruby’s RestClient gem
-
crul
- Command line HTTP client
-
digest-auth
- Digest authentication
-
halite
- Crystal HTTP Requests with a chainable REST API, built-in sessions and loggers
-
http-multiserver.cr
- Mounting multiple servers via routes (a.k.a. URL mapping)
-
http-params-serializable
- HTTP params (de)serialization, applicable to URL queries and URL-encoded forms
-
http-protection
- Protection against typical web attacks
-
http2
- HTTP/2 Protocol Implementation
-
HTTP::Client - HTTP client (Crystal stdlib)
-
HTTP::Server - HTTP server (Crystal stdlib)
-
HTTP::WebSocket - HTTP WebSocket client (Crystal stdlib)
-
link-header
- HTTP Link Header Parser
-
ntlm
- NTLM authentication
-
proxy-fetcher.cr
- Proxy lists fetching & validating library
-
sse.cr
- Server-Sent Events client
Image processing
-
celestine
- Create SVG images using a DSL
-
ffmpeg
- FFmpeg bindings that works with StumpyPNG to extract frames
-
Pluto
- A fast and convenient image processing library
-
stumpy_png
- Read and write PNG images
Implementations/Compilers
-
charly - Charly Programming Language
-
cltk
- A crystal port of the Ruby Language Toolkit
-
crisp
- Lisp dialect implemented with Crystal
-
LinCAS-lang - A programming language for scientific computation
-
mint-lang
- A refreshing programming language for the front-end web
-
myst-lang - A practical, dynamic language designed to be written and understood as easily and efficiently as possible
-
novika
- A free-form, moldable, interpreted programming language
-
runic-lang - In-design toy language
Internationalization
-
crystal-i18n
- An internationalization library inspired by Ruby-I18n
-
i18n.cr
- Internationalization shard
-
Lens
- A multiformat internationalization (i18n) shard for Crystal. Supports Gettext, Ruby YAML, etc.
-
Rosetta
- A blazing fast internationalization (i18n) library with compile-time key lookup supporting YAML and JSON formats
Logging and monitoring
Machine Learning
-
ai4cr
- Artificial Intelligence (based on https://github.com/SergioFierens/ai4r)
-
Cadmium
- NLP library based heavily on natural
-
crystal-fann
- FANN (Fast Artifical Neural Network) binding
-
mxnet.cr
- Bindings for MXNet
-
shainet
- SHAInet (Neural Network in pure crystal)
Markdown/Text Processors
-
cr-cmark-gfm
- Crystal C bindings for cmark-gfm to work with Commonmark and Github Flavored Markdown
-
markd
- Yet another markdown parser built for speed, Compliant to CommonMark specification
Misc
-
aasm.cr
- Easy to use finite state machine for Crystal classes
-
any_hash.cr
- Recursive Hash with better JSON::Any included
-
anyolite
- Full mruby interpreter with simple bindings, allowing for easy scripting support in projects
-
burocracia.cr
- burocracia.cr the dependecyless shard to validate, generate and format Brazilian burocracias such as CPF, CNPJ and CEP
-
callbacks
- Expressive callbacks module
-
circuit_breaker
- Implementation of the circuit breaker pattern
-
CrSignals
- Signals/slots notification library
-
crystal-binary_parser
- Binary parser
-
crystal-web-framework-stars
- Web frameworks for Crystal, most starred on Github
-
crz
- Functional programming library
-
defined
- macros for conditional compilation based on constant definitions, version requirements, or environment variable settings
-
emoji.cr
- Emoji library
-
gphoto2-web.cr
- Web API for libgphoto2
-
immutable
- Implementation of thread-safe, persistent, immutable collections
-
iterm2
- Display images within the terminal using the ITerm2 Inline Images Protocol
-
monads
- Monad implementation
-
observable
- Implementation of the observer pattern
-
pinger
- Ping IP addresses and DNS entries without requiring sudo
-
port_midi
- Crystal C bindings for the PortMIDI cross-platform MIDI I/O library
-
retriable.cr
- Simple DSL to retry failed code blocks
-
serf-handler.cr
- Framework for building Serf handlers, with a suite of useful builtin capabilities
-
simple_retry
- Simple tool for retrying failed code blocks
-
sslscan.cr
- Crystal shard wrapping the rbsec/sslscan utility
-
version_tools
- Version-dependent behaviour, specified at compile-time
-
wafalyzer
- Web Application Firewall (WAF) Detector - shard + cli
-
zaru_crystal
- Filename sanitization
Network Protocols
Networking
ORM/ODM Extensions
-
avram
- A database wrapper for reading, writing, and migrating Postgres databases
-
clear
- ORM specialized to PostgreSQL only but with advanced features
-
crecto
- Database wrapper, based on Ecto
-
granite
- ORM for Postgres, Mysql, Sqlite
-
jennifer.cr
- Active Record pattern implementation with flexible query chainable builder and migration system
-
rethinkdb-orm
- ORM for RethinkDB / RebirthDB
Package Management
-
shards
- Dependency manager for the Crystal
Processes and Threads
-
await_async
- Add keywords await & async in Crystal Lang
-
concurrent.cr
- Simplified concurrency using streams/pipelines, waitgroups, semaphores, smores and more
-
neph
- A modern command line job processor that can execute jobs concurrently
-
promise
- A Promise implementation with type inference
-
werk
- Dead simple task runner with concurrent support, ideal for local CI
Project Generators
-
crystal_lib
- Automatic binding generator for native libraries
-
fez
- A Kemal application generator
-
libgen
- Automatic bindings generator configured using JSON/YAML files
Queues and Messaging
-
crafka
- Apache Kafka library utilizing librdkafka
-
mosquito
- Redis backed periodic and ad hoc job processing
-
NATS.io
- NATS client
-
sidekiq.cr
- Simple, efficient job processing
Routing
-
orion
- A minimal, rails-esque routing library
-
router.cr
- Minimum but powerful http router for HTTP::Server
Scheduling
-
crystime - Advanced time, calendar, schedule, and remind library
-
schedule.cr
- Run periodic tasks
-
tasker
- A high precision scheduler including timezone aware cron jobs
Science and Data analysis
-
alea
- Repeatable sampling, CDF and other utilities to work with probability distributions
-
ishi
- Graph plotting package with a small API and sensible defaults powered by gnuplot
-
linalg
- Linear algebra library inspired by MATLAB and SciPy.linalg
-
num.cr
- Numerical computing library supporting N-Dimensional data
-
predict.cr
- Satellite prediction library using the sgp4 model
-
quartz
- Modeling and simulation framework
Search
-
hermes
- Data Mapper pattern implementation for ElastiSearch
Serverless Computing
-
crystal_openfaas
- Template to enable crystal as first class citizens in OpenFaaS
-
secrets-env
- Extends ENV module to read values injected by docker / kubernetes secrets and other orchestration tools
System
-
baked_file_system
- Virtual file system implementation
-
hardware
- Get CPU, Memory and Network informations of the running OS and its processes
Task management
-
cake
- Production-ready Make-like utility tool
-
sam
- Another one Rake-like task manager with namespacing and arguments system
Template Engine
Testing
-
Athena Spec
- Common/helpful Spec compliant testing utilities
-
crotest
- A tiny and simple test framework
-
crytic
- Mutation testing framework
-
hashr
- A tiny class makes test on JSON response easier
-
LuckyFlow
- Automated browser tests similar to Capybara
-
mass-spec
- Web API testing library
-
microtest
- Small opinionated testing library focusing on power asserts
-
minitest.cr
- Library for unit tests and assertions
-
mocks.cr
- Mocking library for Crystal
-
selenium.cr
- Selenium client for interacting with web pages for browser automation
-
Spec - spec framework (Crystal stdlib)
-
spectator - Feature rich spec framework that uses the modern expect syntax
-
timecop.cr
- Library for mocking with Time.now
. Inspired by the timecop ruby gem
-
vcr
- A HTTP capture and replay implementation for crystal
-
webdriver_pump
- Page Object library. Inspired by Ruby’s WatirPump
-
webmock.cr
- Library for stubbing HTTP::Client
requests
Third-party APIs
Validation
Web Frameworks
-
amber
- Open source efficient and cohesive web application framework
-
Athena
- A web framework comprised of reusable, independent components
-
grip
- The microframework for writing powerful web applications
-
kemal
- Lightning Fast, Super Simple web framework. Inspired by Sinatra
-
lucky
- Catch bugs early, forget about most performance issues, and spend more time on code instead of debugging and writing tests
-
marten
- A web framework that makes building web applications easy, productive, and fun
-
runcobo
- An api framework with simple, intuitive and consistent DSL, using jbuilder to render json
-
Shivneri
- Component based MVC web framework for crystal targeting good code structures, modularity & performance
-
spider-gazelle
- A Rails esque web framework with a focus on speed and extensibility
Unofficial
Resources
Official Documentation Translations
Services and Apps
-
carc.in - A web service that runs your code and displays the result
-
Crank
- A Procfile-based application manager (like Foreman)
-
cry
- Ability to execute crystal code in a fashion similar to Ruby’s pry edit
-
Crystal [ANN] - Announce new project, blog post, version update or any other Crystal work
-
DeBot
- IRC bot written in Crystal
-
icr
- Interactive console for Crystal (like IRB for Ruby)
-
Invidious
- Invidious is an alternative front-end to YouTube
-
mpngin
- A URL shortener with simple stats
-
procodile
- Run processes in the background (and foreground) on Mac & Linux from a Procfile (for production and/or development environments)
-
quicktype - Generate models and serializers from JSON, JSON Schema, GraphQL, and TypeScript
-
shards.info - Web service that lists all repositories on GitHub that have Crystal code in them. The sources are available on GitHub
DevOps
-
ansible-crystal
- Ansible playbook for installing crystal
-
DPPM
- An easy, universal way to install and manage applications as packages (mostly Linux)
Editor Plugins
- Acme:
- Atom
- Emacs
- Geany
- IntelliJ IDEA
- Lite-XL
- Spacemacs
- Sublime
- TextMate
-
Crystal.tmbundle
- Crystal syntax highlighting, compile, format command, snippets
- Vim
-
vim-crystal
- Vim filetype support for Crystal
-
vim-slang
- Vim filetype support for Slang Templating Engine
- Visual Studio Code
LSP Language Server Protocol Implementations
-
crystalline
- Crystalline is an implementation of the Language Server Protocol written in and for the Crystal Language
-
scry
- Code analysis server for Crystal implementing the Language Server Protocol
Shell plugins
-
crun
- Crystal Run : shebang wrapper for Crystal
-
crystal-zsh
- .oh-my-zsh plugin