Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

awesome-crystal

A collection of awesome Crystal libraries, tools, frameworks and software
https://github.com/eric-erki/awesome-crystal

Last synced: about 15 hours ago
JSON representation

  • 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

    • asound-cr - Bindings for ALSA/libasound
    • cairo-cr - Bindings for [Cairo](https://cairographics.org/) graphics library
    • clang.cr - Libclang bindings
    • crt.cr - Bindings for libncursesw and crt
    • crystal-gsl - GNU Scientific Library bindings
    • crystal-hunspell - Bindings for [Hunspell](https://hunspell.github.io/)
    • curl-crystal - Bindings for [libcurl](https://curl.haxx.se/libcurl/)
    • duktape.cr - Bindings for the [Duktape](https://github.com/svaarala/duktape) javascript engine
    • gphoto2.cr - Bindings for the [libgphoto2](http://www.gphoto.org/) library
    • icu.cr - Bindings for the [ICU](http://site.icu-project.org/) library
    • libnotify.cr - Bindings for Libnotify
    • pcap.cr - Bindings for libpcap
    • pledge.cr - Bindings for OpenBSD's `pledge(2)`
    • soundfile - Bindings for [libsndfile](http://www.mega-nerd.com/libsndfile/) library
    • ssh2.cr - Bindings for libssh2 library
    • syslog.cr - Bindings for `syslog`
    • x11-cr - X11 bindings
    • x_do.cr - Bindings for libxdo ([`xdotool`](https://github.com/jordansissel/xdotool))
  • 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
    • Phreak - A highly flexible Crystal CLI builder in the style of OptionParser
    • OptionParser - command-line options processing (Crystal stdlib)
    • OptionParser - command-line options processing (Crystal stdlib)
    • OptionParser - command-line options processing (Crystal stdlib)
  • 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](https://github.com/stedolan/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
    • snappy - Snappy compression format reader/writer for Crystal
    • zstd.cr - Bindings for [Zstandard](https://github.com/facebook/zstd) compression library
    • Gzip - readers and writers of gzip format (Crystal stdlib)
    • Zlib - readers and writers of zlib format (Crystal stdlib)
    • Gzip - readers and writers of gzip format (Crystal stdlib)
    • Zip - readers and writers of zip format (Crystal stdlib)
  • 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](https://github.com/RubyMoney/money))
    • ms - Library to easily convert various time formats to milliseconds and milliseconds to human readable format
    • sass.cr - Compile SASS/SCSS to CSS ([libsass](https://github.com/sass/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)
    • sodium.cr - Crystal wrapper for the libsodium crypto API
    • openssl.cr - This library provides binding for OpenSSL library
  • Data Formats

    • BinData - Binary data parser helper with an [ASN.1](https://en.wikipedia.org/wiki/Abstract_Syntax_Notation_One) parser
    • config.cr - Easy to use configuration format parser
    • crinder - Class based json renderer
    • front_matter.cr - Separates a files front matter from its content
    • geoip2.cr - GeoIP2 reader
    • HAR - HAR (HTTP Archive) parser
    • 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
    • CSV - parsing and generating for comma-separated values (Crystal stdlib)
    • INI - INI file parser (Crystal stdlib)
    • JSON - parsing and generating JSON documents (Crystal stdlib)
    • XML - parsing and generating XML documents (Crystal stdlib)
    • YAML - parsing and generating YAML documents (Crystal stdlib)
    • CSV - parsing and generating for comma-separated values (Crystal stdlib)
    • INI - INI file parser (Crystal stdlib)
    • JSON - parsing and generating JSON documents (Crystal stdlib)
    • XML - parsing and generating XML documents (Crystal stdlib)
    • YAML - parsing and generating YAML documents (Crystal stdlib)
    • CSV - parsing and generating for comma-separated values (Crystal stdlib)
    • INI - INI file parser (Crystal stdlib)
    • JSON - parsing and generating JSON documents (Crystal stdlib)
    • 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](http://graphql.org) 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](https://telegraf.js.org/)
  • Game Development

    • CrSFML - Bindings to [SFML](https://www.sfml-dev.org/) multimedia/game library
    • crystal-chipmunk - Bindings for [Chipmunk](http://chipmunk-physics.net/), a fast and lightweight 2D game physics library
    • glove - A library for gaming 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](https://github.com/google/gumbo-parser), 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
    • 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](https://www.w3.org/TR/2009/WD-eventsource-20090421) client
    • HTTP::Client - HTTP client (Crystal stdlib)
    • HTTP::Server - HTTP server (Crystal stdlib)
    • HTTP::WebSocket - HTTP WebSocket client (Crystal stdlib)
    • HTTP::Client - HTTP client (Crystal stdlib)
    • HTTP::Server - HTTP server (Crystal stdlib)
    • HTTP::WebSocket - HTTP WebSocket client (Crystal stdlib)
    • HTTP::Client - HTTP client (Crystal stdlib)
    • HTTP::Server - HTTP server (Crystal stdlib)
    • HTTP::WebSocket - HTTP WebSocket client (Crystal stdlib)
  • Image processing

    • libpixel.cr
    • magickwand-crystal - Bindings for [MagickWand](https://www.imagemagick.org/script/magick-wand.php), the C interface for ImageMagick processing libraries
    • stumpy_png - Read and write PNG images
  • Implementations/Compilers

    • 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](https://flow.org/)
    • mint-lang - A refreshing programming language for the front-end web
    • charly - Charly Programming Language
    • LinCAS-lang - A programming language for scientific computation
    • 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

    • crafana - A [Grafana](https://grafana.com/) library to help autogenerate dashboards
    • crometheus - A [Prometheus](https://prometheus.io/) client library
    • crylog - Flexible logging framework based on Monolog
    • fluent-logger-crystal - A structured logger for [Fluentd](https://www.fluentd.org/)
    • statsd.cr - [Statsd](https://github.com/etsy/statsd) client library
    • syslog.cr - Implementation of Syslog client
  • Machine Learning

    • ai4cr - Artificial Intelligence (based on https://github.com/SergioFierens/ai4r)
    • Cadmium - NLP library based heavily on [natural](https://github.com/NaturalNode/natural)
    • crystal-fann - FANN (Fast Artifical Neural Network) binding
    • shainet - SHAInet (Neural Network in pure crystal)
    • tensorflow.cr - Bindings for [TensorFlow](https://github.com/tensorflow/tensorflow)
  • 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
    • 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

    • bson.cr - Native BSON implementation
    • connect-proxy - Connect method style of HTTP tunnelling / HTTP proxy
    • cr-xmpp - XMPP/Jabber Library
    • Crirc - IRC protocol implementation (Client, Server, Bots)
    • crystal-json-socket - JSON-socket client & server implementation. Inspired by and compatible with [node-json-socket](https://github.com/sebastianseilund/node-json-socket/) and [ruby-json-socket](https://github.com/foi/ruby-json-socket)
    • crystal-snmp - An SNMP implementation with version 1, 2c and 3 support
    • fast_irc.cr - Fast IRC parser/generator
    • gopher.cr - Gopher server toolkit
    • jwt - Implementation of JWT (JSON Web Token)
    • msgpack-crystal - MessagePack library
    • telnet.cr - Telnet protocol
    • transfer_more - Clone of transfer.sh to uploads files
    • OAuth - OAuth consumer (Crystal stdlib)
    • OAuth2 - OAuth2 client (Crystal stdlib)
    • OpenSSL - bindings to libssl (Crystal stdlib)
    • OAuth - OAuth consumer (Crystal stdlib)
    • OAuth2 - OAuth2 client (Crystal stdlib)
    • OpenSSL - bindings to libssl (Crystal stdlib)
    • OAuth - OAuth consumer (Crystal stdlib)
    • OAuth2 - OAuth2 client (Crystal stdlib)
    • OpenSSL - bindings to libssl (Crystal stdlib)
  • 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
    • gcf.cr - Managed execution of Crystal in Google Cloud Functions
    • FaaStRuby - Serverless Software Development Platform for Ruby and Crystal.
  • 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](http://jinja.pocoo.org/)
    • crustache - [{{Mustache}}](https://mustache.github.io) for Crystal
    • 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
    • ECR (Embedded Crystal) - compile time template language which uses plain crystal expressions (Crystal stdlib)
    • ECR (Embedded Crystal) - compile time template language which uses plain crystal expressions (Crystal stdlib)
    • ECR (Embedded Crystal) - compile time template language which uses plain crystal expressions (Crystal stdlib)
  • 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
    • 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](https://github.com/travisjeffery/timecop)
    • vcr - A HTTP capture and replay implementation for crystal
    • webdriver_pump - Page Object library. Inspired by Ruby's [WatirPump](https://github.com/bwilczek/watir_pump)
    • webmock.cr - Library for stubbing `HTTP::Client` requests
    • Spec - spec framework (Crystal stdlib)
    • Spec - spec framework (Crystal stdlib)
    • Spec - spec framework (Crystal stdlib)
  • 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
    • 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
    • grip - Class oriented fork of the Kemal framework based on a JSON request/response model
  • Web Servers

    • serve - Command line static HTTP server
    • IRC - #crystal-lang on Freenode
    • Google Group
    • IRC - #crystal-lang on Freenode
    • Reddit
    • Stackoverflow
    • IRC - #crystal-lang on Freenode
    • IRC - #crystal-lang on Freenode
    • IRC - #crystal-lang on Freenode
    • IRC - #crystal-lang on Freenode
    • IRC - #crystal-lang on Freenode
    • IRC - #crystal-lang on Freenode
    • IRC - #crystal-lang on Freenode
    • IRC - #crystal-lang on Freenode
    • IRC - #crystal-lang on Freenode
    • IRC - #crystal-lang on Freenode
    • IRC - #crystal-lang on Freenode
    • IRC - #crystal-lang on Freenode
    • IRC - #crystal-lang on Freenode
    • IRC - #crystal-lang on Freenode
  • Unofficial

  • Official Documentation Translations

Sub Categories