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 users.
Contributions are welcome. Please take a quick look at the contribution guidelines first.
- Awesome Crystal
- Algorithms and Data structures
- Api Builders
- Caching
- Cli Builders
- Cli Utils
- Configuration
- Data Generators
- Database Drivers
- Database Tools
- Environment Management
- Examples and funny stuff
- Framework Components
- Game Development
- HTTP
- Implementations/Compilers
- Logging and monitoring
- Low level bindings
- Misc
- Networking
- ORM/ODM Extensions
- Package Management
- Project generators
- Queue
- Science and Data analysis
- Search
- Task management
- Template Engine
- Testing
- Third-party APIs
- Virtualization
- Web Frameworks
- Web Servers
- Community
- Resources
- Services and Apps
- Tools
- aho_corasick - AhoCorasick algorithm
- 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
- delimiter_tree - A tree structure that is built using a delimiter
- edits.cr - Collection of edit distance algorithms
- heap.cr - Implementation of heap data structure
- miller_rabin - Implements Miller-Rabin algorithm to check if a number is prime
- multiset.cr - Implementation of a multiset
- murmur3 - Implementation of Murmur3 hash algorithm used by Cassandra
- primes - Library for testing if a number is prime and finding its prime factorization
- radix - Radix Tree implementation
- ranger - Range object operation library
- crystal_api - Simple PostgreSQL REST API with Rails devise-like auth
- kemal-rest-api - A library to create RESTful API with Kemal
- Bloom Filter - Implementation of Bloom filter
- bojack - A non-reliable in-memory key-value store
- crystal-kiwi - A unified interface for key-value stores
- crystal-memcached - Implementation of a memcached client
- Nuummite - A tiny persistent embedded key-value store
- admiral - A robust DSL for writing command line interfaces
- cli - Library for building command-line interface applications
- commander - Command-line interface builder
- completion - Easy command line completion engine
- docopt - A docopt.org port
- optarg - Yet another library for parsing command-line options and arguments
- progress - [==..] Progress bar
- spinner - Terminal Spinner
- terminal_table.cr - Simple ASCII table generator
- ambience - Simple app configuration using
ENV
- cr-dotenv - Loads .env file
- crystal-toml - TOML parser
- dockerfile.cr - Dockerfile Parsing Library
- zq - Command-line ZPL processor
- faker - A library for generating fake data
- hashids.cr - A library to generate YouTube-like ids from one or many numbers
- crystal-db - Common db api
- crystal-leveldb - Crystal bindings for LevelDB
- crystal-monetdb-libmapi - Bindings for MonetDB
- crystal-mysql - Basic MySQL bindings
- crystal-mysql - MySQL connector for Crystal
- crystal-pg - A Postgres driver
- crystal-redis - Full featured Redis client
- crystal-sqlite3 - SQLite3 bindings
- eventql-crystal - EventQL driver
- influxdb.cr - InfluxDB driver
- mongo.cr - Binding for MongoDB C driver
- rethinkdb-crystal - RethinkDB Driver
- rocksdb.cr - RocksDB client
- micrate - Database migration tool
- CrystalEmail - A RFC compliant Email validator
- sendgrid.cr - Simple Sendgrid Client
- smtp.cr - Email SMTP client
- asdf-crystal - Plugin for asdf version manager
- crenv - Crystal version manager
- rcm.cr - Redis Cluster Manager
- crsfml-examples - Simple games made with CrSFML
- crystal-benchmarks-game - The Computer Language Benchmarks Game
- crystal-by-example - Crystal By Example
- crystal-patterns - Examples of GOF patters
- crystal_samples - Variety of Crystal samples
- crystalized_ruby - Native Ruby extensions written in Crystal
- docker-kemal - An example Dockerized Crystal Kemal project
- kemal-chat - Build realtime applications with Kemal and WebSocket
- kemal-monetdb-test - MonetDB Kemal test project
- kemal-pg-sample - Sample app to demonstrate kemal + postgresql usage
- kemal-react-chat - Build Realtime Web applications with Kemal and React
- kemal-react-pg-chat - Chat application developed with Kemal, React, ES2015 and PostgreSQL
- kemal-ws-pg-todo-app - Realtime Todo application developed with Kemal, Websockets, jQuery, ES2015 and PostgreSQL
- kemal-ws-react-pg-todo-app - Realtime Todo application developed with Kemal, Websockets, React, ES2015 and PostgreSQL
- kemal-ws-todo-app - Realtime Todo application developed with Kemal and Websockets
- kemal_elm_chat - Simple chat server written with Kemal and Elm
- lattice-core-card-game - A demo web app for (WebSocket-based) lattice-core
- medley - A mixture of music related methods
- try.cr - Try monad
- xcrystal - Exercism exercises
- artanis - Sinatra-like DSL (abusing macros)
- cr-melon - Class based Http APIs
- crouter - A standalone router
- crystal-mime - Mimetypes for Crystal
- kave - Kemal API Version Extension
- kemal-auth-token - Kemal middleware to authentication via HTTP header token using JWT
- kemal-comments - Simple comments for Kemal site
- kemal-flash - Temporary storage between actions in Kemal
- kemal-monetdb - MonetDB Data connection for Kemal
- kemal-mysql - Easily add MySQL database to Kemal
- kemal-pg - Easily add Postgresql database to Kemal
- kemal-redis - Easily add Redis to Kemal
- kemal-session - Session handler for Kemal
- kemalyst-i18n - i18n support for Kemalyst
- mime-types.cr - A port of the Ruby MIME-types library
- request_id - Middleware for generates / pick up a unique request ID for Crystal servers
- response_time - Response time for Crystal servers (pure http server, kemal, etc.)
- spec-kemal - Easy testing for Kemal
- toro - Tree Oriented Routing
- crystal-chipmunk - Bindings for Chipmunk, a fast and lightweight 2D game physics library
- flight-crusader - POC top down flight game
- glove - A library for gaming development
- inari - A game written in Crystal, using the Glove project as the game engine
- medico - Game about a medieval doctor
- mos_game - Mini Offline Singleplayer game
- beryl - Action-focused HTTP routing library
- crul - Command line HTTP client
- cryload - HTTP benchmarking tool
- crystal-cossack - Simple flexible HTTP client
- crystal-routing - Extensible library to deal with http request and string based routing
- helmet - Set security-related HTTP headers
- http2 - HTTP/2 Protocol Implementation
- http_distributor - HTTP server which allows sneaky http requests
- http_parser.cr - Wrapper for Http Parser lib
- multipart.cr - Adds multipart and multipart/form-data support to the crystal standard library
- resp-crystal - Lightweight RESP client
- router-simple.cr - Simple path router
- session - Cookie based sessions in Crystal HTTP applications
- charly - Charly Programming Language
- cppize - Crystal-to-C++ transpiler
- crisp - Lisp dialect implemented with Crystal
- crow - Transpile/compile Crystal to Flow
- crystal - Crystal itself is written in Crystal
- csmli - Mini-Lisp interpreter
- NuummiteOS - An OS written in Crystal as a Proof of Concept
- onix - ONYX Programming Language
- crometheus - A Prometheus client library
- crystal-logreader - Tailing log file
- gelf-crystal - A GELF logger
- syslog.cr - Implementation of Syslog client
- C14N - Bindings for C14N (libxml2)
- crsfml - Bindings for Simple and Fast Multimedia Library (through CSFML)
- crt.cr - Bindings for libncursesw and crt
- crystal-dbus - Bindings to D-Bus
- crystal-gsl - GNU Scientific Library bindings
- crystal-liblmdb - Bindings for the Symas LMDB database
- crystal-libpcap - Bindings for libpcap
- crystal-libtar - Bindings for libtar
- crystal_av - Bindings to ClamAV anti-virus
- curl-crystal - Bindings for libcurl
- curses - Bindings for the curses library
- duktape.cr - Bindings for the Duktape javascript engine
- glfw - GLFW bindings
- gphoto2.cr - Bindings for the libgphoto2 library
- gumbo-crystal - Bindings for Gumbo, an HTML5 parsing library made by Google
- java.cr - Java Native Interface (JNI) bindings (and generator)
- kt - Bindings for Kyoto Tycoon
- libmagic-crystal - Bindings for libmagic
- libnotify.cr - Bindings for Libnotify
- libui.cr - Bindings for libui
- magickwand-crystal - Bindings for MagickWand, the C interface for ImageMagick processing libraries
- myhtml - Bindings for lexborisov/myhtml
- nanomsg.cr - Bindings for nanomsg
- openssl.cr - Bindings for OpenSSL library
- pcap.cr - Bindings for libpcap
- posix - POSIX/C bindings
- serialport.cr - Bindings for libserialport library
- snappy-crystal - Bindings for Snappy library
- soundfile - Bindings for libsndfile library
- ssh2.cr - Bindings for libssh2 library
- termbox-crystal - Bindings and extension library for termbox (terminal UI library)
- wkhtmltopdf-crystal - Bindings / wrapper for libwkhtmltox (HTML to PDF / image converter)
- zeromq-crystal - Bindings for ZeroMQ
- zlib.cr - Bindings for ZLib library
- aasm.cr - Easy to use finite state machine for Crystal classes
- accord - Sharable validations for Crystal objects
- any_hash.cr - Recursive Hash with better JSON::Any included
- chalk-box - Terminal color toolbox, check support and colorized (without String monkey patch)
- circuit_breaker - Implementation of the circuit breaker pattern
- clamd.cr - Client for the clamd antivirus server
- cltk - A crystal port of the Ruby Language Toolkit
- crdoc - CLI tool to search and open documentation
- cron_scheduler - Job scheduler with crontab patterns
- crystagiri - An Html Reader / parser like Nokogiri Ruby gem
- crystal-binary_parser - Binary parser
- crystal-diff - A Crystal sequence differencing implementation
- crystal-futures - Future type implementation
- crystal-i18n - Internationalization library
- daemonize.cr - Crystal process daemonizer
- denetmen - Useful micro validator / check library
- emoji.cr - Emoji library
- etag - Library to generate HTTP ETags
- evented - A micro library to publish and subscribe for Crystal objects
- executable_path - Portable current executable's path
- guardian - File change watcher for Crystal and Non-Crystal libs
- haikunator - Heroku-like random name generator
- hoop - Building native OSX apps
- hq.cr - Simple wrapper for crystal-xml
- html_builder - DSL for creating HTML
- immutable - Implementation of thread-safe, persistent, immutable collections
- inflector.cr - Singularize, pluralize, camelize, etc (port from ActiveSupport)
- kreal - Model sharing & RPC library built on and works with Kemal seamlessly
- lambda.cr - Uniformed function call syntax
- lirith - Graphics engine
- manual-generator - Tool to generate PDF manuals from documentation sites
- metaclass - A library for manipulating class-level definitions
- moola - Library for dealing with money and conversion (inspired by RubyMoney)
- ms - Library to easily convert various time formats to milliseconds and milliseconds to human readable format
- observable - Implementation of the Observer pattern
- promise - A Promise Implementation
- quartz - Simple timer library
- ramlrenderer - HTLM doc builder for RAML 1.0
- raytracer-crystal - CPU Raytracer with examples
- sentry - Watches src files, rebuilds/reruns application on file changes
- shell.cr - Small simplistic helper class for executing shell commands
- statsd.cr - Statsd client library
- stumpy_gif - Write (animated) GIF images
- stumpy_png - Read and write PNG images
- syscall.cr - Raw syscall interface
- tren - Give your SQL some love
- turkish-number - Turn integers into the Turkish words
- ulid - Universally Unique Lexicographically Sortable Identifier (ULID)
- wire - A packet analyzer
- amqp.cr - AMQP 0.9.1 client with RabbitMQ extensions
- bson.cr - Native BSON implementation
- CrystalIrc - IRC implementation (Client, Server, Bots)
- fast_irc.cr - Fast IRC parser/generator
- ipaddress.cr - Library to handle IPv4 and IPv6 addresses
- jwt - Implementation of JWT (JSON Web Token)
- msgpack-crystal - MessagePack library
- sctp-crystal - SCTP networking library
- active_record.cr - Active Record pattern implementation
- crecto - Database wrapper, based on Ecto
- kemalyst-model - ORM Model for the Kemalyst Framework
- ohm-crystal - Object-hash mapping library for Redis
- redis-tsv.cr - Import and export data from Redis in TSV format
- selenite-db - A simple persistency-model based library
- stal-crystal - Set algebra solver for Redis
- topaz - A simple and useful db wrapper
- shards - Dependency manager for the Crystal
- bindgencr - Generator of bindings based on castxml output
- crystal_lib - Automatic binding generator for native libraries
- fez - A Kemal application generator
- generate - A tool for generating whole Crystal project structure, or any part of it during lifetime of project
- kgen - Kemalyst command line tool for console, init, generate (scaffolding), and watch.
- skaf - Scaffolding for Kemal
- crystal-resque-client - Simple Resque queue client
- dispatch - In memory asynchronous job processing
- disque-cr - Client for Disque queueing system
- sidekiq.cr - Simple, efficient job processing
- chizge - A Network (Graph) Analysis library, inspired by NetworkX
- machine - Simple machine learning algorithm
- predict.cr - Satellite prediction library using the sgp4 model
- stats - An expressive implementation of statistical distributions
- query-builder - Sql Query Builder library
- query.cr - Query abstraction
- soegen - Elasticsearch client for Crystal similar to the stretcher gem for ruby
- crake - Rake-like build utility library. It is just a library, so it does not provide CLI
- lake - Rake-like task management for Crystal programs
- Bunny - A simple HTML templating language for Crystal, same syntax as erb
- crustache - {{Mustache}} for Crystal
- Kilt - Abstraction layer for template engines
- Slang - Lightweight, terse, templating language inspired by Ruby's Slim
- teeplate - A library for rendering multiple template files
- temel - Extensible HTML::Builder alternative for Crystal, supports custom tag definitions
- crotest - A tiny and simple test framework
- matchi - Collection of expectation matchers
- minitest.cr - Library for unit tests and assertions
- mock - Mocking library, inspired by the API of rspec-mocks
- mocks.cr - Mocking library for Crystal
- power_assert.cr - Powerful assertion for Crystal
- spec2-mocks - An adapter of mocks.cr for spec2.cr
- spec2.cr - Enhanced testing library
- timecop.cr - Library for mocking with
Time.now
. Inspired by timecop ruby gem - webmock.cr - Library for stubbing
HTTP::Client
requests
- airbrake-crystal - A Crystal notifier for Airbrake
- AnyBar_cr - Simple crystal wrapper for AnyBar library
- aws-signer.cr - This library signs your HTTP requests using AWS v4
- awscr-signer - Sign HTTP::Request objects and generate presigned post forms
- bugsnag.cr - Bugsnag exception notifier and sidekiq middleware
- crystal-connpass - Wrapper for the Connpass API
- crystal-github - Wrapper for the Github API
- crystal-mondo - A client for the Mondo API
- crystal-newrelic - NewRelic API client
- crystal-qiita - A wrapper for the Qiita API
- crystal_brium - Access Brium's API using Crystal
- crystal_slack - A tool that parses Slack slash commands or send incoming web hooks
- crystalforce - Salesforce REST api
- docker.cr - Docker API client
- dotacr - Wrapper for Valve's DotA API
- fantasy_football_nerd_api - A library for the Fantasy Football Nerd API
- gitlab.cr - GitLab API wrapper
- glosbe - Client for Glosbe API
- google_maps_api - Google Maps API
- google_translate - Client for Google Translate
- gravatar.cr - A library to use Gravatar service
- hncr - A Hacker News API wrapper
- nexmo-crystal - Nexmo REST API client
- ocean_kit - Digital Ocean v2 API client
- open_exchange_rates - A library to access Open Exchange Rates API
- openweather.cr - A wrapper for the Openweather API
- pullword - A package to use pullword
- raven.cr - Raven is a client for Sentry
- shorturl.cr - A library to use URL shortening services
- slack.cr - A Slack Real Time Messaging API WebSocket client library
- soundcloud-crystal - A library to access the SoundCloud API
- spotify.cr - A library to access the Spotify API
- TelegramBot - A wrapper for the Telegram Bot API
- twitter-crystal - A library to access the Twitter API
- wit-crystal - Crystal SDK for wit.ai
- backed_file_system - Virtual file system implementation
- rcpu - A virtual machine emulator and assembler
- amatista - A web framework to create quick applications
- amethyst - A Rails inspired web-framework
- carbon-crystal - A framework with Rails in mind
- chocolate - Simple web framework and template engine
- frost - Full featured MVC Web Framework, largely inspired by Ruby on Rails
- iceberg - A full-stack web framework
- kemal - Lightning Fast, Super Simple web framework. Inspired by Sinatra
- kemalyst - A Rails like framework inspired by Kemal but includes the kitchen sink
- lattice-core - A WebSocket-first object-oriented framework (based on Kemal)
- moonshine - A minimal web framework
- mustafa - Simple MVC framework
- fast-http-server - Super fast, zero configuration command line HTTP Server
- kamber - Blog server based on Kemal
- prax.cr - Rack proxy server for development
- serve - Command line static HTTP server
- Crystal Shards on Twitter
- Crystal weekly newsletters
- Gitter
- Google Group
- IRC - #crystal-lang on Freenode
- Metaruby - Crystal Forum on Metaruby
- Slack Group
- Stackoverflow
- Crystal for Rubyists - free book to bootstrap your Crystal journey
- crystal-lang.org - Official language site
- br.crystal-lang.org - Brazilian
- ja.crystal-lang.org - Japanese
- kr.crystal-lang.org - Korean
- ru.crystal-lang.org - Russian
- tw.crystal-lang.org - Chinese Traditional
- carc.in - A web service that runs your code and displays the result
- Crank - A Procfile-based application manager (like Foreman)
- crystal-docs - A service for hosting Crystal Shard documentation
- crystalshards.herokuapp.com, crystalshards.xyz - Web services that list all available Crystal shards
- DeBot - IRC bot written in Crystal
- fikri - Simple CLI To-Do App
- icr - Interactive console for Crystal (like IRB for Ruby)
- nes - A NES emulator
- shards.rocks - Service that manages dependencies inspired by Gemnasium and David
- torrent - A BitTorrent client
- vicr - Vim-like Interactive CRystal
- crystal-ctags - Ctags generator for Crystal
- crystal-cookbook - Chef cookbook for installing crystal
- Atom
- crystal-tools - Enables built in tools in Crystal compiler
- language-crystal-actual - Crystal language support in Atom
- linter-crystal - Lint Crystal using the Crystal compiler in Atom
- Emacs
- emacs-crystal-mode - Crystal language support for Emacs
- Spacemacs
- crystal-spacemacs-layer - Spacemacs contribution layer for Crystal
- Sublime
- sublime-crystal - Crystal syntax highlighting for sublime Text
- Vim
- vim-crystal - Vim filetype support for Crystal
- vim-slang - Vim filetype support for Slang Templating Engine
- Visual Studio Code
- vscode-crystal - Crystal language support in VSCode
- vscode-crystal-ide - Crystal IDE powered by Language Server Protocol
- crystal-zsh - .oh-my-zsh plugin