Awesome Crystal
A curated list of awesome Crystal code and resources. Inspired by awesome 68k 9k and awesome-awesomeness 20k 3k .
The goal is to have projects mostly stable and useful for the community.
Search Crystal Shards or follow announcements Crystal [ANN] for more.
Contributions are welcome. Please take a quick look at the contribution guidelines first.
Algorithms and Data structures
Api Builders
C bindings
Caching
- Implementation of Bloom filter
bojack 51 8 - A non-reliable in-memory key-value store
cache-hash - A key/value store where entries expire after a specified interval
crystal-memcached 25 7 - Implementation of a memcached client
Nuummite 4 1 - A tiny persistent embedded key-value store
Cli Builders
admiral 23 5 - A robust DSL for writing command line interfaces
cli 38 2 - Library for building command-line interface applications
clim - Slim command line interface builder
commander 36 4 - Command-line interface builder
completion 38 6 - Easy command line completion engine
optarg - Yet another library for parsing command-line options and arguments
Cli Utils
dl - Simple utility for download files by URLs from list
noteesh - Notes and Todo list in command line
progress 90 8 - [==..] Progress bar
progress_bar.cr - A simple and customizable progress bar
spinner 35 2 - Terminal Spinner
terminal_table.cr 10 2 - Simple ASCII table generator
todo - Todo list working in command line
Configuration
Converters
human_file_size.cr - JSON & YAML mapping converter for human file sizes in serialized data
moola - Library for dealing with money and conversion (inspired by RubyMoney 2k 516 )
ms - Library to easily convert various time formats to milliseconds and milliseconds to human readable format
sass.cr - Compile SASS/SCSS to CSS (libsass 4k 480 binding)
time_format.cr - Convert time in human readable format with ease
turkish-number - Turn integers into the Turkish words
wkhtmltopdf-crystal 3 1 - Bindings / wrapper for libwkhtmltox (HTML to PDF / image converter)
Data Generators
faker 59 2 - A library for generating fake data
hashids.cr 3 1 - A library to generate YouTube-like ids from one or many numbers
Database Drivers/Clients
Database Tools
crecto-admin 8 2 - Admin dashboard for Crecto and your database
micrate 49 5 - Database migration tool
migrate - A simpler database migration tool with transactions
Development Tools
guardian 374 36 - File change watcher for Crystal and Non-Crystal libs
kemal-watcher - Kemal plugin to watch files and live-reload the browser
sentry 57 5 - Watches src files, rebuilds/reruns application on file changes
sentry-run - Reload code changes using Sentry.run
Warden - Watches files, run command and a git command if succeed on file changes
watcher - Watch file changes using File.stat
Email
Environment Management
asdf-crystal 5 1 - Plugin for asdf version manager
crenv 56 3 - Crystal version manager
rcm.cr 7 3 - Redis Cluster Manager
Examples and funny stuff
Feature Flipping
flipper - Feature flipping/flags/rollouts. Supports multiple backends
Framework Components
Game Development
CrSFML 8 1 - Bindings to SFML multimedia/game library
crystal-chipmunk - Bindings for Chipmunk , a fast and lightweight 2D game physics library
glove 19 1 - A library for gaming development
inari - A collection of games using Glove as the game engine
mos_game - Mini Offline Singleplayer game
GUI library
HTML/XML Parsing
crystagiri 41 3 - An Html Reader / parser like Nokogiri 7k 1k Ruby gem
gumbo-crystal - Bindings for Gumbo 4k 646 , an HTML5 parsing library made by Google
hq.cr - Simple wrapper for crystal-xml
modest 21 1 - CSS selectors for HTML5 Parser myhtml
myhtml 17 6 - Fast HTML5 Parser
HTTP
- Simple flexible HTTP client
crest - Simple HTTP and REST client, inspired by the Ruby's RestClient gem
crul 87 10 - Command line HTTP client
cryload 69 5 - HTTP benchmarking tool
halite 10 1 - Yet another simple HTTP and REST client with a chainable API, built-in sessions and timeouts
helmet 12 5 - Set security-related HTTP headers
http-multiserver.cr - Mounting multiple servers via routes (a.k.a. URL mapping)
http-protection - Protection against typical web attacks
http2 - HTTP/2 Protocol Implementation
http_distributor - HTTP server which allows sneaky http requests
http_parser.cr 4 1 - Wrapper for Http Parser lib 1k 413
keyer_cr - Adds HTTP GET/POST parameter parsing as a Hash-like object
resp-crystal 4 2 - Lightweight RESP client
Image processing
Implementations/Compilers
charly - Charly Programming Language
cltk - A crystal port of the Ruby Language Toolkit
cppize 12 1 - Crystal-to-C++ transpiler
crisp 22 4 - Lisp dialect implemented with Crystal
crow 35 2 - Transpile/compile Crystal to Flow
myst-lang - A practical, dynamic language designed to be written and understood as easily and efficiently as possible
NuummiteOS 32 3 - An OS written in Crystal as a Proof of Concept
zir - Realizes to write macros in any scripts into any languages
Logging and monitoring
Machine Learning
Markdown/Text Processors
html-pipeline - HTML processing filters and utilities
markd 4 1 - Yet another markdown parser built for speed, Compliant to CommonMark specification
3 1 - GFM for Crystal
Misc
aasm.cr 17 3 - Easy to use finite state machine for Crystal classes
accord - Sharable validations for Crystal objects
any_hash.cr 4 1 - Recursive Hash with better JSON::Any included
circuit_breaker - Implementation of the circuit breaker pattern
crystal-binary_parser - Binary parser
crystal-futures 40 4 - Future type implementation
crz 22 2 - Functional programming library
denetmen 22 1 - Useful micro validator / check library
emoji.cr 13 2 - Emoji library
hoop 50 2 - Building native OSX apps
html_builder 20 8 - DSL for creating HTML
i18n.cr - Internationalization shard
immutable 107 5 - Implementation of thread-safe, persistent, immutable collections
inflector.cr - Singularize, pluralize, camelize, etc (port from ActiveSupport)
lirith - Graphics engine
m3u8 - Generate and parse m3u8 playlists for HTTP Live Streaming
manual-generator - Tool to generate PDF manuals from documentation sites
raytracer - CPU Raytracer with examples
syscall.cr - Raw syscall interface
tren 61 2 - Give your SQL some love
ulid 2 1 - Universally Unique Lexicographically Sortable Identifier (ULID)
wikicr - Wiki using git to manage revisions
Networking
amqp.cr 21 2 - AMQP 0.9.1 client with RabbitMQ extensions
bson.cr 13 4 - Native BSON implementation
Crirc - IRC protocol implementation (Client, Server, Bots)
fast_irc.cr 5 1 - Fast IRC parser/generator
ipaddress.cr - Library to handle IPv4 and IPv6 addresses
7 2 - Implementation of JWT (JSON Web Token)
- MessagePack library
transfer_more - Clone of transfer.sh to uploads files
ORM/ODM Extensions
active_record.cr 159 28 - Active Record pattern implementation
clear - ORM specialized to PostgreSQL only but with advanced features
core 7 2 - Pure, transparent and efficient ORM
crecto 81 14 - Database wrapper, based on Ecto
granite-orm 30 7 - ORM for Postgres, Mysql, Sqlite
jennifer.cr 110 21 - Active Record pattern implementation with flexible query chainable builder and migration system
ohm-crystal 37 4 - Object-hash mapping library for Redis
record 12 12 - Type safe querying, saving and updating
redis-tsv.cr 4 1 - Import and export data from Redis in TSV format
stal-crystal - Set algebra solver for Redis
topaz 34 7 - A simple and useful db wrapper
Package Management
CRelease - Version and git tag manager that makes shard releases easy
shards 199 24 - Dependency manager for the Crystal
Processes and Threads
neph 11 2 - A modern command line job processor that can execute jobs concurrently
promise - A Promise Implementation
Project Generators
bindgencr - Generator of bindings based on castxml output
crystal_lib - Automatic binding generator for native libraries
fez 29 4 - A Kemal application generator
kgen - Kemalyst command line tool for console, init, generate (scaffolding), and watch.
libgen - Automatic bindings generator configured using JSON/YAML files
wasp 4 1 - Static Site Generator
Queues and Messaging
dispatch - In memory asynchronous job processing
mosquito - Redis backed periodic and ad hoc job processing
sidekiq.cr 354 25 - Simple, efficient job processing
Routing
crouter 23 7 - A standalone router
orion 5 1 - A minimal, rails-esque routing library
router.cr 35 3 - Minimum but powerful http router for HTTP::Server
toro 59 10 - Tree Oriented Routing
Scheduling
Science and Data analysis
linalg - Linear algebra library inspired by MATLAB and SciPy.linalg
predict.cr - Satellite prediction library using the sgp4 model
scorystal - Scoring API for PMML - supports RF and GBM
stats - An expressive implementation of statistical distributions
Search
hermes - Data Mapper pattern implementation for ElastiSearch
query-builder 39 4 - Sql Query Builder library
query.cr 8 1 - Query abstraction
soegen 12 3 - Elasticsearch client for Crystal similar to the stretcher gem for ruby
Task management
cake - Production-ready Make-like utility tool
sam - Another one Rake-like task manager with namespacing and arguments system
Template Engine
crikey - Templating engine inspired by Hiccup 2k 145
crinja 1 1 - An implementation of the Jinja2 template engine
crustache 32 3 - {{Mustache}} for Crystal
Kilt 49 11 - Abstraction layer for template engines
Slang 86 21 - Lightweight, terse, templating language inspired by Ruby's Slim
teeplate 2 1 - A library for rendering multiple template files
temel 35 2 - Extensible HTML::Builder alternative for Crystal, supports custom tag definitions
Testing
crotest 16 2 - A tiny and simple test framework
microtest 5 1 - Small opinionated testing library focusing on power asserts
minitest.cr 47 6 - Library for unit tests and assertions
mocks.cr 19 8 - Mocking library for Crystal
spec2-mocks 5 1 - An adapter of mocks.cr for spec2.cr
spec2.cr 63 16 - Enhanced testing library
timecop.cr - Library for mocking with Time.now
. Inspired by timecop ruby gem 3k 172
webmock.cr 33 16 - Library for stubbing HTTP::Client
requests
Third-party APIs
Virtualization
baked_file_system 41 5 - Virtual file system implementation
rcpu 31 3 - A virtual machine emulator and assembler
Web Frameworks
amber 560 68 - Open source efficient and cohesive web application framework
kemal 884 81 - Lightning Fast, Super Simple web framework. Inspired by Sinatra
lattice-core 37 1 - A WebSocket-first object-oriented framework (based on Kemal)
lucky 199 15 - Catch bugs early, forget about most performance issues, and spend more time on code instead of debugging and writing tests
prism - Light, modular web framework
raze 54 6 - Modular, light web framework
spider-gazelle - A Rails esque web framework with a focus on speed and extensibility
Web Servers
fast-http-server 98 12 - Super fast, zero configuration command line HTTP Server
prax.cr 92 16 - Rack proxy server for development
serve - Command line static HTTP server
Community
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 2 4 - 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
crystalshards.herokuapp.com , crystalshards.xyz - Web services that list all available Crystal shards
DeBot 32 22 - IRC bot written in Crystal
Ficha - A super secret chat app, for any body who needs privacy
Firegrid - Click anywhere with only a few key strokes
75 16 - Interactive console for Crystal (like IRB for Ruby)
JSON to Crystal - Paste in a JSON object and get Crystal mappings in response
nes 27 4 - A NES emulator
shards.rocks - Service that manages dependencies inspired by Gemnasium and David
soundmemes.cr - Telegram Bot built on top of tele.cr
torrent 20 3 - A BitTorrent client
Tools
DevOps
Editor Plugins
Atom
Emacs
Spacemacs
Sublime
TextMate
Crystal.tmbundle - Crystal syntax highlighting, compile, format command, snippets
Vim
carcin.vim - Vim plugin to provide utility functions for carc.in
vim-crystal 175 24 - Vim filetype support for Crystal
vim-slang - Vim filetype support for Slang Templating Engine
Visual Studio Code
Shell plugins