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 Crystal Shards or follow announcements Crystal [ANN] for more.
Contributions are welcome. Please take a quick look at the contribution guidelines first.
- Awesome Crystal
- Algorithms and Data structures
- Api Builders
- Blockchain
- C Bindings
- Caching
- CLI Builders
- CLI Utils
- Code Analysis and Metrics
- Configuration
- Converters
- Data Formats
- Data Generators
- Database Drivers/Clients
- Database Tools
- Development Tools
- Environment Management
- Examples and funny stuff
- Feature Flipping
- Framework Components
- Game Development
- GUI library
- HTML/XML parsing
- HTTP
- Image Processing
- Implementations/Compilers
- Logging and monitoring
- Machine Learning
- Markdown/Text Processors
- Misc
- Network Protocols
- Networking
- ORM/ODM Extensions
- Package Management
- Processes and Threads
- Project Generators
- Queues and Messaging
- Routing
- Scheduling
- Science and Data analysis
- Search
- Serverless Computing
- System
- Task management
- Template Engine
- Testing
- Third-party APIs
- Validation
- Web Frameworks
- Web Servers
- Community
- Resources
- Services and Apps
- Tools
- aho_corasick - AhoCorasick algorithm
- bisect - Inserting values into a sorted array
- CrOTP - HOTP and TOTP implementation for two factor authentication
- crystal-diff - A Crystal sequence differencing implementation
- 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
- graphlb - Collection of graph datastructure and algorithms
- hash_ring - An Implementation of Consistent Hash Ring
- ksuid.cr - K-Sortable Globally Unique IDs
- markov - Build Markov Chains and run Markov Processes
- multiset.cr - Implementation of a multiset
- murmur3 - Implementation of Murmur3 hash algorithm used by Cassandra
- oak - A flexible Radix Tree implementation
- radix - Radix Tree implementation
- ternary_search_tree - Ternary Search Tree
- kemal-rest-api - A library to create RESTful API with Kemal
- SushiChain - A custom blockchain platform
- asound-cr - Bindings for ALSA/libasound
- cairo-cr - Bindings for Cairo graphics library
- clang.cr - Libclang bindings
- crass - Bindings for libsass
- crt.cr - Bindings for libncursesw and crt
- crystal-gsl - GNU Scientific Library bindings
- curl-crystal - Bindings for libcurl
- duktape.cr - Bindings for the Duktape javascript engine
- gphoto2.cr - Bindings for the libgphoto2 library
- icu.cr - Bindings for the ICU library
- libnotify.cr - Bindings for Libnotify
- pcap.cr - Bindings for libpcap
- pledge.cr - Bindings for OpenBSD's
pledge(2)
- posix - POSIX/C bindings
- soundfile - Bindings for libsndfile library
- ssh2.cr - Bindings for libssh2 library
- syslog.cr - Bindings for
syslog
- termbox-crystal - Bindings and extension library for termbox (terminal UI library)
- x11-cr - X11 bindings
- x_do.cr - Bindings for libxdo (
xdotool
)
- bloom_filter - Implementation of Bloom filter
- bojack - A non-reliable in-memory key-value store
- cache-hash - A key/value store where entries expire after a specified interval
- 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
- clicr - A simple declarative command line interface builder
- clim - Slim command line interface builder
- commander - Command-line interface builder
- completion - Easy command line completion engine
- optarg - Yet another library for parsing command-line options and arguments
- OptionParser - command-line options processing (Crystal stdlib)
- cride - A light CLI text editor/IDE
- progress_bar.cr - A simple and customizable progress bar
- terminal_table.cr - Simple ASCII table generator
- todo - Todo list working in command line
- cr-dotenv - Loads .env file
- 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
- base62.cr - Base62 encoder/decoder, well suited for url-shortening
- money - Handling money and currency conversion with ease (almost complete port of RubyMoney)
- 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
- sass.cr - Compile SASS/SCSS to CSS (libsass binding)
- time_format.cr - Convert time in human readable format with ease
- turkish-number - Turn integers into the Turkish words
- wkhtmltopdf-crystal - Bindings / wrapper for libwkhtmltox (HTML to PDF / image converter)
- config.cr - Easy to use configuration format parser
- crinder - Class based json renderer
- CSV - parsing and generating for comma-separated values (Crystal stdlib)
- front_matter.cr - Separates a files front matter from its content
- Gzip - readers and writers of gzip format (Crystal stdlib)
- INI - INI file parser (Crystal stdlib)
- JSON - parsing and generating JSON documents (Crystal stdlib)
- maxminddb.cr - parsing MaxMindDB files, including the GeoIP2
- toml.cr - TOML parser
- XML - parsing and generating XML documents (Crystal stdlib)
- YAML - parsing and generating YAML documents (Crystal stdlib)
- Zip - readers and writers of zip format (Crystal stdlib)
- Zlib - readers and writers of zlib format (Crystal stdlib)
- 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
- couchdb.cr - CouchDB client
- crystal-db - Common db api
- crystal-monetdb-libmapi - Bindings for MonetDB
- 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
- leveldb - Crystal bindings for LevelDB
- mongo.cr - Binding for MongoDB C driver
- rethinkdb.cr - RethinkDB Driver
- rocksdb.cr - RocksDB client
- tarantool-crystal - Tarantool driver
- crecto-admin - Admin dashboard for Crecto and your database
- micrate - Database migration tool
- migrate - A simpler database migration tool with transactions
- migro - A database migration tool that allows migrations to be specified in either YAML or raw SQL
- guardian - File change watcher for Crystal and Non-Crystal libs
- kemal-watcher - Kemal plugin to watch files and live-reload the browser
- sentry - 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
- carbon - Fun, testable, and adapter-based email library
- crystal-email - Simple e-mail sending library
- CrystalEmail - A RFC compliant Email validator
- devmail - A combined SMTP/POP3-server with volatile mail storage
- sendgrid.cr - Simple Sendgrid Client
- asdf-crystal - Plugin for asdf version manager
- crenv - Crystal version manager
- rcm.cr - Redis Cluster Manager
- battlesnake_crystal - Tron snake for battlesnake competition
- breakout.cr - Breakout game written using crsfml
- chuck-norris-holy-quotes - Chuck Norris holy quotes
- clamp - Clamp any Comparable
- crsfml-examples - Simple games made with CrSFML
- crystal-benchmarks-game - The Computer Language Benchmarks Game
- crystal-by-example - Crystal By Example
- Crystal-Maze - A* Path finding for PNG mazes
- crystal-mysql-crud-example - Crystal MySQL CRUD example
- crystal-patterns - Examples of GOF patters
- crystalized_ruby - Native Ruby extensions written in Crystal
- crystalworld - realworld.io back-end API implementation
- exercism-crystal - Exercism exercises
- jihantoro-cr-mysql - Crystal MySQL from scratch sample app
- jihantoro.sd - Crystal & Kemal version of Serdar Dogruyol blog
- kemal-chat - Build realtime applications with Kemal and WebSocket
- kemal-heroku-example - This repository shows, how you can publish your open source apps which powered kemal framework publish as heroku app in seconds
- kemal-mysql-blog - Blog written with Crystal, Kemal and MySQL
- kemal-react-chat - Build Realtime Web applications with Kemal and React
- kemal-vue-chat - Build Realtime Web applications with Kemal and Vue.js
- lattice-core-card-game - A demo web app for (WebSocket-based) lattice-core
- medley - A mixture of music related methods
- os-crystal - x86 Kernel implemented in Crystal
- realtime-todo-app - Realtime Todo application developed with Kemal, Websockets, React, ES2015 and PostgreSQL
- rocky - React Over Crystal Kemal and Yarn
- try.cr - Try monad
- flipper - Feature flipping/flags/rollouts. Supports multiple backends
- cr-melon - Class based Http APIs
- Crystal-DI - Lightweight DI Container
- crystal-mime - Mimetypes for Crystal
- device_detector - Shard for detect device by user agent string
- Exception Page - An exceptional exception page for Crystal web libraries and frameworks
- graphql-crystal - Graphql implementation
- kave - Kemal API Version Extension
- kemal-auth-token - Kemal middleware to authentication via HTTP header token using JWT
- kemal-monetdb - MonetDB Data connection for Kemal
- kemal-session - Session handler for Kemal
- mime-types.cr - A port of the Ruby MIME-types library
- multi-auth - Standardized multi-provider OAuth2 authentication (inspired by omniauth)
- praetorian - Minimalist authorization library inspired by Pundit
- 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
- cray - Bindings for raylib, an easy-to-use game development library
- CrSFML - Bindings to SFML multimedia/game library
- crystal-chipmunk - Bindings for Chipmunk, a fast and lightweight 2D game physics library
- glove - A library for gaming development
- inari - A collection of games using Glove as the game engine
- mos_game - Mini Offline Singleplayer game
- hedron - An extendable GUI library, with markup language capabilities
- libui.cr - Bindings for libui
- qt5.cr - Qt5 bindings for Crystal, based on Bindgen
- crystagiri - An Html Reader / parser like Nokogiri Ruby gem
- gumbo-crystal - Bindings for Gumbo, an HTML5 parsing library made by Google
- hq.cr - Simple wrapper for crystal-xml
- myhtml - Fast HTML5 Parser that includes CSS selectors
- cossack - Simple flexible HTTP client
- crest - Simple HTTP and REST client, inspired by the Ruby's RestClient gem
- crul - Command line HTTP client
- cryload - HTTP benchmarking tool
- halite - Crystal HTTP Requests with a chainable REST API, built-in sessions and loggers
- helmet - 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::Client - HTTP client (Crystal stdlib)
- HTTP::Server - HTTP server (Crystal stdlib)
- HTTP::WebSocket - HTTP WebSocket client (Crystal stdlib)
- keyer_cr - Adds HTTP GET/POST parameter parsing as a Hash-like object
- ngrok.cr - Ngrok wrapper
- params - The strongly-typed HTTP params parsing module
- resp-crystal - Lightweight RESP client
- magickwand-crystal - Bindings for MagickWand, the C interface for ImageMagick processing libraries
- stumpy_gif - Write (animated) GIF images
- stumpy_png - Read and write PNG images
- charly - Charly Programming Language
- cibyl - Lightweight curly-bracket language which compiles to Ruby and Crystal
- cltk - A crystal port of the Ruby Language Toolkit
- cppize - Crystal-to-C++ transpiler
- crisp - Lisp dialect implemented with Crystal
- crow - Transpile/compile Crystal to Flow
- 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
- NuummiteOS - An OS written in Crystal as a Proof of Concept
- runic-lang - In-design toy language
- crometheus - A Prometheus client library
- crystal-logreader - Tailing log file
- fluent-logger-crystal - A structured logger for Fluentd
- instana - A metrics and distributed trace collector for Instana
- katip - JSONbase logger
- Logger - logging utility (Crystal stdlib)
- statsd.cr - Statsd client library
- syslog.cr - Implementation of Syslog client
- ai4cr - Artificial Intelligence (based on https://github.com/SergioFierens/ai4r)
- crystal-fann - FANN (Fast Artifical Neural Network) binding
- crystal-learn - Sklearn-like machine-learning library
- shainet - SHAInet (Neural Network in pure crystal)
- tensorflow.cr - Bindings for TensorFlow
- html-pipeline - HTML processing filters and utilities
- markd - Yet another markdown parser built for speed, Compliant to CommonMark specification
- aasm.cr - Easy to use finite state machine for Crystal classes
- any_hash.cr - Recursive Hash with better JSON::Any included
- atomic_write.cr - Library for writing or apppending files atomically
- 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
- compiled_license - Compiles licenses into binary for complience with MIT when copying binary to system or container without the code
- crystal-binary_parser - Binary parser
- crz - Functional programming library
- emoji.cr - Emoji library
- hoop - Building native OSX apps
- html_builder - DSL for creating HTML
- i18n.cr - Internationalization shard
- immutable - 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
- message_verifier.cr - Verify and generate Rails
ActiveSupport::MessageVerifier
signed tokens - raytracer - CPU Raytracer with examples
- retriable.cr - Simple DSL to retry failed code blocks
- tren - Give your SQL some love
- ulid - Universally Unique Lexicographically Sortable Identifier (ULID)
- bson.cr - Native BSON implementation
- Crirc - IRC protocol implementation (Client, Server, Bots)
- crystal-json-socket - JSON-socket client & server implementation. Inspired by and compatible with node-json-socket and ruby-json-socket
- fast_irc.cr - Fast IRC parser/generator
- gopher.cr - Gopher server toolkit
- jwt - Implementation of JWT (JSON Web Token)
- msgpack-crystal - MessagePack library
- OAuth - OAuth consumer (Crystal stdlib)
- OAuth2 - OAuth2 client (Crystal stdlib)
- OpenSSL - bindings to libssl (Crystal stdlib)
- Socks - SOCKS proxy
- transfer_more - Clone of transfer.sh to uploads files
- ipaddress.cr - Library to handle IPv4 and IPv6 addresses
- clear - ORM specialized to PostgreSQL only but with advanced features
- core - Pure, transparent and efficient ORM
- 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
- ohm-crystal - Object-hash mapping library for Redis
- record - Type safe querying, saving and updating
- redis-tsv.cr - Import and export data from Redis in TSV format
- stal-crystal - Set algebra solver for Redis
- topaz - A simple and useful db wrapper
- CRelease - Version and git tag manager that makes shard releases easy
- shards - Dependency manager for the Crystal
- await_async - Add keywords await & async in Crystal Lang
- crystal-futures - Future type implementation
- neph - A modern command line job processor that can execute jobs concurrently
- promise - A Promise implementation with type inference
- bindgencr - Generator of bindings based on castxml output
- crystal_lib - Automatic binding generator for native libraries
- fez - 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 - Static Site Generator
- amqp.cr - AMQP 0.9.1 client with RabbitMQ extensions
- dispatch - In memory asynchronous job processing
- mosquito - Redis backed periodic and ad hoc job processing
- sidekiq.cr - Simple, efficient job processing
- crouter - A standalone router
- orion - A minimal, rails-esque routing library
- router.cr - Minimum but powerful http router for HTTP::Server
- toro - Tree Oriented Routing
- cron_scheduler - Job scheduler with crontab patterns
- crystime - Advanced time, calendar, schedule, and remind library
- schedule.cr - Run periodic tasks
- tasker - A high precision scheduler including timezone aware cron jobs
- linalg - Linear algebra library inspired by MATLAB and SciPy.linalg
- predict.cr - Satellite prediction library using the sgp4 model
- stats - An expressive implementation of statistical distributions
- hermes - Data Mapper pattern implementation for ElastiSearch
- query-builder - Sql Query Builder library
- query.cr - Query abstraction
- soegen - Elasticsearch client for Crystal similar to the stretcher gem for ruby
- crystal_openfaas - Template to enable crystal as first class citizens in OpenFaaS
- gcf.cr - Managed execution of Crystal in Google Cloud Functions
- baked_file_system - Virtual file system implementation
- hardware - Get CPU, Memory and Network informations of the running OS and its processes
- rcpu - A virtual machine emulator and assembler
- cake - Production-ready Make-like utility tool
- sam - Another one Rake-like task manager with namespacing and arguments system
- crinja - An implementation of the Jinja2 template engine
- crustache - {{Mustache}} for Crystal
- ECR (Embedded Crystal) - compile time template language which uses plain crystal expressions (Crystal stdlib)
- 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
- coverage – Generate cover report for your crystal code
- crotest - A tiny and simple test framework
- crystal-clear - Design by Contract Library
- crytic - Mutation testing framework
- 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
- Spec - spec framework (Crystal stdlib)
- timecop.cr - Library for mocking with
Time.now
. Inspired by the timecop ruby gem - webmock.cr - Library for stubbing
HTTP::Client
requests
- aws-signer.cr - This library signs your HTTP requests using AWS v4
- awscr-s3 - AWS S3 interface
- awscr-signer - Sign HTTP::Request objects and generate presigned post forms
- bugsnag.cr - Bugsnag exception notifier and sidekiq middleware
- crystal-darksky - Wrapper for the Dark Sky API
- crystal-github - Wrapper for the Github API
- crystal-monzo - A client for the Monzo API
- crystal-swapi - Star Wars API (SWAPI) wrapper
- crystal_slack - A tool that parses Slack slash commands or send incoming web hooks
- discordcr - A minimalist Discord API library
- GDAX - GDAX REST and WebSocket API Wrapper with request signing
- gitlab.cr - GitLab API wrapper
- google_maps_api - Google Maps API
- hncr - A Hacker News API wrapper
- mixpanel-crystal - A library for sending events to Mixpanel
- nexmo-crystal - Nexmo REST API client
- open_exchange_rates - A library to access Open Exchange Rates API
- pinboard.cr - Pinboard API
- raven.cr - Raven is a client for Sentry
- slack.cr - A Slack Real Time Messaging API WebSocket client library
- telegram_bot - A wrapper for the Telegram Bot API
- twitter-crystal - A library to access the Twitter API
- accord - Shareable validation library for Crystal Objects
- CrSerializer - Extensible annotation based serialization/deserialization/validation library
- denetmen - Micro check library that patches Crystal stdlib
- validations - Validations mixin
- amber - Open source efficient and cohesive web application framework
- kemal - Lightning Fast, Super Simple web framework. Inspired by Sinatra
- lattice-core - A WebSocket-first object-oriented framework (based on Kemal)
- lucky - Catch bugs early, forget about most performance issues, and spend more time on code instead of debugging and writing tests
- prism - Lightspeed web framework with typed params
- raze - Modular, light web framework
- spider-gazelle - A Rails esque web framework with a focus on speed and extensibility
- fast-http-server - Super fast, zero configuration command line HTTP Server
- prax.cr - Rack proxy server for development
- salt - A Human Friendly Interface for HTTP server
- serve - Command line static HTTP server
- Crystal weekly newsletters
- Gitter
- Google Group
- IRC - #crystal-lang on Freenode
- Metaruby - Crystal Forum on Metaruby
- Stackoverflow
- Russian-speaking Telegram Group - Добро пожаловать, товарищ!
- Crystal for Rubyists - Free book to bootstrap your Crystal journey
- Crystal Mastery - Screencasts for learning Crystal
- crystal-lang.org - Official language site
- devdocs.io - API Documentation Browser with Crystal support
- getgood.at - Learn Crystal in a Day
- Programming Crystal - PragProg book to start your Crystal journey
- 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
- 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
- crystalshards.herokuapp.com, crystalshards.xyz - Web services that list all available Crystal shards
- Crystular - Regular expression tester
- DeBot - IRC bot written in Crystal
- Fluence - WYSIWYG wiki using markdown and Git
- 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
- nes - A NES emulator
- 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
- wikicr - Wiki using git to manage revisions
- ast_helper - Helper tool to debug parser and formatter
- crystal-base - CentOS base docker image for Crystal development
- crystal-ctags - Ctags generator for Crystal
- crystal-dash-docset - Dash docset generator
- helptransl8 - Tool for document translators
- ansible-crystal - Ansible playbook for installing crystal
- capistrano-kemal - Capistrano Plugin for Kemal
- crystal-cookbook - Chef cookbook for installing crystal
- DPPM - An easy, universal way to install and manage applications as packages (mostly Linux)
- Atom
- crystal-tools - Enables built in tools in Crystal compiler
- language-crystal-actual - Crystal language support in Atom
- Emacs
- emacs-crystal-mode - Crystal language support for Emacs
- play-crystal.el - play.crystal-lang.org integration in Emacs
- scry - Code analysis server for Crystal implementing the Language Server Protocol
- Spacemacs
- crystal-spacemacs-layer - Spacemacs contribution layer for Crystal
- Sublime
- sublime-crystal - Crystal syntax highlighting for sublime Text
- TextMate
- Crystal.tmbundle - Crystal syntax highlighting, compile, format command, snippets
- Vim
- carcin.vim - Vim plugin to provide utility functions for carc.in
- 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
- vscode-crystal-lang - Formatter, linter and syntax highlighting for
cr
andecr
files
- crun - Crystal Run : shebang wrapper for Crystal
- crystal-zsh - .oh-my-zsh plugin