
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 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
- cruml - A tool that
provides an UML class diagram generator for any Crystal projects
- 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
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
- sentry -
Build/Runs your crystal application, watches files, and
rebuilds/restarts app on file changes.
- 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
- amqp-client.cr -
AMQP 0-9.1, a messaging protocol, implemented by eg. RabbitMQ
- connect-proxy
- Connect method style of HTTP tunnelling / HTTP proxy
- cr-xmpp -
XMPP/Jabber Library
- Crirc - IRC protocol
implementation (Client, Server, Bots)
- crystal-bacnet
- BACnet protocol implementation with BACnet/IP client
- crystal-json-socket
- JSON-socket client & server implementation. Inspired by and
compatible with node-json-socket
and ruby-json-socket
- crystal-mqtt -
A MQTT client
- crystal-snmp -
An SNMP implementation with version 1, 2c and 3 support
- dns - DNS
protocol implementation and resolver
- fast_irc.cr - Fast
IRC parser/generator
- jwt -
Implementation of JWT (JSON Web Token)
- knx - KNX
protocol implementation supporting multicast, unicast and TCP/IP
tunnelling
- mDNS - DNS
Service Discovery and multicast DNS
- mqtt-client.cr - A
fast and lightweight MQTT client
- msgpack-crystal
- MessagePack library
- OAuth - OAuth
consumer (Crystal stdlib)
- OAuth2 -
OAuth2 client (Crystal stdlib)
- OpenSSL -
bindings to libssl (Crystal stdlib)
- simple_rpc - RPC
Server and Client for Crystal. Implements msgpack-rpc protocol
- stomp - STOMP
protocol
- telnet.cr
- Telnet protocol
- transfer_more
- Clone of transfer.sh to uploads files
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
- 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
crystal.md
Github