Skip to content

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

License

Notifications You must be signed in to change notification settings

eric-erki/awesome-crystal

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

awesome-crystal

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

Search

  • 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

About

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

Resources

License

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published