Courses & TutorialsProgramming

Awesome Crystal – Massive Collection of Resources

A curated list of awesome Crystal code and resources.
The goal is to have projects mostly stable and useful for the community.

Search Crystal Shards or follow announcements Crystal [ANN] for more.

Algorithms and Data structures

  • bisect – Inserting values into a sorted array
  • blurhash.crBlurHash 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
  • edits.cr – Collection of edit distance algorithms
  • fzy – A Crystal port of awesome Fzy project fuzzy finder algorithm
  • graphlb – Collection of graph datastructure and algorithms
  • haversine – An Implementation of the Haversine formula
  • 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
  • qr-code – QR Code generator
  • radix – Radix Tree implementation
  • ternary_search_tree – Ternary Search Tree

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
  • clicr – A simple declarative command line interface builder
  • clim – Slim command line interface builder
  • 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
  • cride – A light CLI text editor/IDE
  • lff – Simple and straightforward large files finder utility in 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
  • money – Handling money and currency conversion with ease (almost complete port of RubyMoney)
  • sass.cr – Compile SASS/SCSS to CSS (libsass binding)
  • wkhtmltopdf-crystal – Bindings / wrapper for libwkhtmltox (HTML to PDF / image converter)

Cryptography

  • cmac – Crystal implementation of Cipher-based Message Authentication Code (CMAC)
  • sodium.cr – Crystal wrapper for the libsodium crypto API

Data Formats

  • 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 tools – An implementation of JSON Patch and Pointer RFC’s
  • 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

Database Tools

  • migrate – A simpler database migration tool with transactions
  • queryit – A setupless terminal based SQL query runner.

Debugging

  • debug.crdebug!(…) macro for pp-style debugging

Dependency Injection

  • Athena Dependency Injection – Robust dependency injection service container framework
  • Crystal-DI – Lightweight DI Container
  • HardWire – A compile-time non-intrusive dependency injection system.
  • syringe – A simple and basic dependency injection shard for crystal

Email

Environment Management

  • asdf-crystal – Plugin for asdf version manager
  • crenv – Crystal version manager
  • rcm.cr – Redis Cluster Manager

Examples and funny stuff

Framework Components

  • Athena Event Dispatcher – A Mediator and Observer pattern event 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-crystalGraphQL 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

  • form_builder.cr – Dead simple HTML form builder for Crystal with built-in support for many popular UI libraries such as Bootstrap

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)
  • ntlm – NTLM authentication
  • proxy-fetcher.cr – Proxy lists fetching & validating library
  • sse.crServer-Sent Events client

Image processing

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
  • runic-lang – In-design toy language

Logging and monitoring

Machine Learning

Markdown/Text Processors

  • 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
  • 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
  • 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
  • emoji.cr – Emoji library
  • gphoto2-web.cr – Web API for libgphoto2
  • i18n.cr – Internationalization shard
  • immutable – Implementation of thread-safe, persistent, immutable collections
  • iterm2 – Display images within the terminal using the ITerm2 Inline Images Protocol
  • message_verifier.cr – Verify and generate Rails ActiveSupport::MessageVerifier signed tokens
  • monads – Monad implementation
  • 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
  • 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

  • ipaddress.cr – Library to handle IPv4 and IPv6 addresses

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
  • onyx-sql – DB-agnostic SQL ORM with beautiful DSL and type-safe Query builder
  • 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
  • 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

  • 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
  • soegen – Elasticsearch client for Crystal similar to the stretcher gem for ruby

Serverless Computing

  • crystal_openfaas – Template to enable crystal as first class citizens in OpenFaaS
  • FaaStRuby – Serverless Software Development Platform for Ruby and Crystal.
  • 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

  • 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)
  • Jbuilder – Generate JSON objects with a Builder-style DSL, inspired by jbuilder
  • Kilt – Abstraction layer for template engines
  • Slang – Lightweight, terse, templating language inspired by Ruby’s Slim
  • teeplate – A library for rendering multiple template files
  • Water – A library for writing HTML in plain Crystal

Testing

  • crotest – A tiny and simple test framework
  • 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)
  • 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
  • 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

Community

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
  • crystalshards.herokuapp.com, crystalshards.xyz – Web services that list all available Crystal shards
  • Crystular – Regular expression tester
  • 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
  • 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

Tools

DevOps

  • ansible-crystal – Ansible playbook for installing crystal
  • DPPM – An easy, universal way to install and manage applications as packages (mostly Linux)

Editor Plugins

Shell plugins

  • crun – Crystal Run : shebang wrapper for Crystal
  • crystal-zsh – .oh-my-zsh plugin

Related Articles

Leave a Reply

Your email address will not be published. Required fields are marked *

Back to top button