awesome-crystal

:gem: A collection of awesome Crystal libraries, tools, frameworks and software

Github stars Tracking Chart

Awesome Crystal

Awesome
Build Status

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.

Algorithms and Data structures

  • bisect - Inserting values into a sorted array
  • crie - Compile-time Trie
  • 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
  • edits.cr - Collection of edit distance algorithms
  • graphlb - Collection of graph datastructure and algorithms
  • hash_ring - An Implementation of Consistent Hash Ring
  • 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
  • oak - A flexible Radix Tree implementation
  • radix - Radix Tree implementation
  • ternary_search_tree - Ternary Search Tree

Api Builders

Blockchain

  • Cocol - A minimal blockchain testbed
  • secp256k1.cr - Elliptic curve used in the public-private-key cryptography
  • SushiChain - A custom blockchain platform

C bindings

Caching

CLI Builders

  • 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
  • optarg - Yet another library for parsing command-line options and arguments
  • OptionParser - command-line options processing (Crystal stdlib)
  • Phreak - A highly flexible Crystal CLI builder in the style of OptionParser

CLI Utils

  • cride - A light CLI text editor/IDE
  • 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
  • terminal_table.cr - Simple ASCII table generator
  • terminimal - A tiny CLI toolkit for building terminal apps for humans
  • todo - Todo list working in command line

Code Analysis and Metrics

  • ameba - A static code analysis tool

Compression

  • Crystar - Readers and writers of Tar archive format
  • Gzip - readers and writers of gzip format (Crystal stdlib)
  • 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
  • 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)
  • 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)

Cryptography

  • cmac - Crystal implementation of Cipher-based Message Authentication Code (CMAC)
  • openssl.cr - This library provides binding for OpenSSL library
  • 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
  • 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

Database Drivers/Clients

Database Tools

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

Debugging

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

Dependency Injection

  • Crystal-DI - Lightweight DI Container
  • syringe - A simple and basic dependency injection shard for crystal

Development Tools

  • kemal-watcher - Kemal plugin to watch files and live-reload the browser
  • 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

Examples and funny stuff

Feature Flipping

  • can_use - It is a minimalist feature toggle/flag for crystal based on yaml
  • flipper - Feature flipping/flags/rollouts. Supports multiple backends

Framework Components

  • 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-session - Session handler for Kemal
  • 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.)
  • 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

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_builder - DSL for creating HTML

HTML/XML Parsing

  • 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

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
  • 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-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)
  • keyer_cr - Adds HTTP GET/POST parameter parsing as a Hash-like object
  • proxy-fetcher.cr - Proxy lists fetching & validating library
  • resp-crystal - Lightweight RESP client
  • sse.cr - Server-Sent Events client

Image processing

Implementations/Compilers

  • charly - Charly Programming Language
  • 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
  • runic-lang - In-design toy language

Logging and monitoring

Machine Learning

Markdown/Text Processors

  • html-pipeline - HTML processing filters and utilities
  • 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
  • containerregistry.cr - Library for working with container registries
  • CrSerializer - Extensible annotation based serialization/deserialization library
  • 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
  • hoop - Building native OSX apps
  • 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
  • message_verifier.cr - Verify and generate Rails ActiveSupport::MessageVerifier signed tokens
  • monads - Monad implementation
  • pangu.cr - Paranoid text spacing in Crystal
  • 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
  • tren - Give your SQL some love
  • ulid - Universally Unique Lexicographically Sortable Identifier (ULID)
  • zaru_crystal - Filename sanitization

Network Protocols

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
  • ohm-crystal - Object-hash mapping library for Redis
  • onyx-sql - DB-agnostic SQL ORM with beautiful DSL and type-safe Query builder
  • redis-tsv.cr - Import and export data from Redis in TSV format
  • rethinkdb-orm - ORM for RethinkDB / RebirthDB
  • stal-crystal - Set algebra solver for Redis
  • topaz - A simple and useful db wrapper

Package Management

  • shards - Dependency manager for the Crystal

Processes and Threads

  • 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

Project Generators

  • 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

Queues and Messaging

  • dispatch - In memory asynchronous job processing
  • 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
  • toro - Tree Oriented Routing

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

  • 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
  • stats - An expressive implementation of statistical distributions
  • hermes - Data Mapper pattern implementation for ElastiSearch
  • query-builder - Sql Query Builder library
  • 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.
  • gcf.cr - Managed execution of Crystal in Google Cloud Functions

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

  • 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

  • accord - Shareable validation library for Crystal Objects
  • assert - Extensible annotation based object validation library
  • denetmen - Micro check library that patches Crystal stdlib
  • validations - Validations mixin

Web Frameworks

  • amber - Open source efficient and cohesive web application framework
  • athena - Modular, annotation based, API oriented framework with built in param conversion
  • grip - Class oriented fork of the Kemal framework based on a JSON request/response model
  • 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
  • spider-gazelle - A Rails esque web framework with a focus on speed and extensibility

Web Servers

  • serve - Command line static HTTP server

Community

Unofficial

Resources

Official Documentation Translations

Services and Apps

  • 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
  • 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

Tools

DevOps

  • ansible-crystal - Ansible playbook for installing crystal
  • crystal-cookbook - Chef cookbook 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

Main metrics

Overview
Name With Ownerveelenga/awesome-crystal
Primary LanguageCrystal
Program languageCrystal (Language Count: 1)
Platform
License:MIT License
所有者活动
Created At2015-06-18 22:10:11
Pushed At2025-04-29 18:25:21
Last Commit At2025-04-29 20:25:21
Release Count0
用户参与
Stargazers Count3.4k
Watchers Count117
Fork Count317
Commits Count839
Has Issues Enabled
Issues Count41
Issue Open Count0
Pull Requests Count544
Pull Requests Open Count1
Pull Requests Close Count58
项目设置
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private