Crystal

repo: veelenga/awesome-crystal
category: Programming Languages related: Ruby


SWUbanner

<p align="center"><img src="logo/logotype_horizontal.jpg" alt="awesome-crystal"></p>

Awesome Crystal

Awesome

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 shards at shards.info for more.

Contributions are welcome. Please take a quick look at the contribution guidelines first.

Algorithms and Data structures

Blockchain

C bindings

Caching

  • cache - A key/value store where pairs can expire after a specified interval
  • crystal-memcached - Implementation of a memcached client

CLI Builders

  • admiral - A robust DSL for writing command line interfaces
  • Athena Console - Allows for the creation of CLI based commands
  • clicr - A simple declarative command line interface builder
  • clim - Slim command line interface builder
  • Cling - A modular, non-macro-based command line interface library
  • 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
  • coin - Command-line application that performs currency conversion via the Fixer API
  • cride - A light CLI text editor/IDE
  • git-repository - A git cli wrapper querying and cloning remote repositories with minimal data transfer
  • hetzner-k3s - A CLI tool to quickly create and manage Kubernetes clusters in Hetzner Cloud
  • lff - Simple and straightforward large files finder utility in command line
  • meet - Start a jitsi meeting quickly from the comfort of your 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
  • cruml - A tool that provides an UML class diagram generator for any Crystal projects
  • 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
  • crunits - Tool for converting units of measure (miles to kilometers, celsius to fahrenheit etc)
  • money - Handling money and currency conversion with ease (almost complete port of RubyMoney)
  • sass.cr - Compile SASS/SCSS to CSS (libsass binding)
  • tssc.cr - Time::Span String Converter (incl. JSON & YAML support)

Cryptography

  • cmac - Crystal implementation of Cipher-based Message Authentication Code (CMAC)
  • ed25519 - the Ed25519 elliptic curve public-key signature system described in [RFC 8032]
  • monocypher.cr - Crystal wrapper for the Monocypher crypto 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
  • 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)
  • jmespath.cr - Crystal implementation of JMESPath, a query language for JSON
  • JSON - parsing and generating JSON documents (Crystal stdlib)
  • json-schema - convert JSON serializable classes into a JSON Schema representation
  • JSON::OnSteroids - handle and mutate JSON document easily
  • maxminddb.cr - MaxMindDB reader
  • toml.cr - TOML parser
  • toon-crystal - TOON (Token-Oriented Object Notation) 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

Debugging

  • backtracer.cr - Shard aiming to assist with parsing backtraces into a structured form
  • debug.cr - debug!(…) 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

Examples and funny stuff

Framework Components

Game Development

GUI Development

HTML Builders

  • blueprint - Write reusable and testable HTML templates in plain Crystal
  • form_builder.cr - Dead simple HTML form builder for Crystal with built-in support for many popular UI libraries such as Bootstrap
  • to_html - The fastest HTML builder engine for Crystal
  • Water - A library for writing HTML in plain Crystal

HTML/XML Parsing

HTTP

Image processing

  • celestine - Create SVG images using a DSL
  • ffmpeg - FFmpeg bindings that works with StumpyPNG to extract frames
  • Pluto - A fast and convenient image processing library
  • stumpy_png - Read and write PNG images

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
  • novika - A free-form, moldable, interpreted programming language
  • runic-lang - In-design toy language

Internationalization

  • crystal-i18n - An internationalization library inspired by Ruby-I18n
  • i18n.cr - Internationalization shard
  • Lens - A multiformat internationalization (i18n) shard for Crystal. Supports Gettext, Ruby YAML, etc.
  • Rosetta - A blazing fast internationalization (i18n) library with compile-time key lookup supporting YAML and JSON formats

Logging and monitoring

  • crafana - A Grafana library to help autogenerate dashboards
  • fiber_metrics.cr - Track run time, wait time, or memory allocations per [Fiber](/@harrisonqian/awesome/wiki/back-end-development/fiber), method or block
  • Log - logging utility (Crystal stdlib)
  • statsd.cr - Statsd client library

Machine Learning

Markdown/Text Processors

Misc

  • aasm.cr - Easy to use finite state machine for Crystal classes
  • any_hash.cr - Recursive Hash with better JSON::Any included
  • anyolite - Full mruby interpreter with simple bindings, allowing for easy scripting support in projects
  • 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
  • cpf_cnpj - Provide utilities for validating and formatting CPF and CNPJ identifiers
  • 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
  • defined - macros for conditional compilation based on constant definitions, version requirements, or environment variable settings
  • emoji.cr - Emoji library
  • gphoto2-web.cr - Web API for libgphoto2
  • immutable - Implementation of thread-safe, persistent, immutable collections
  • iterm2 - Display images within the terminal using the ITerm2 Inline Images Protocol
  • lua.cr - Bindings to liblua and a wrapper around it
  • luajit.cr - LuaJIT bindings for Crystal
  • monads - Monad implementation
  • observable - Implementation of the observer pattern
  • 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
  • sentry - Build/Runs your crystal application, watches files, and rebuilds/restarts app on file changes.
  • serf-handler.cr - Framework for building Serf handlers, with a suite of useful builtin capabilities
  • 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

  • amqp-client.cr - AMQP 0-9.1, a messaging protocol, implemented by eg. RabbitMQ
  • connect-proxy - Connect method style of HTTP tunnelling / HTTP proxy
  • cr-xmpp - XMPP/Jabber Library
  • Crirc - IRC protocol implementation (Client, Server, Bots)
  • crystal-bacnet - BACnet protocol implementation with BACnet/IP client
  • [crystal-json-socket](https://github.com/foi/crystal-json-socket) - JSON-socket client & server implementation. Inspired by and compatible with node-json-socket and ruby-json-socket
  • crystal-mqtt - A MQTT client
  • crystal-snmp - An SNMP implementation with version 1, 2c and 3 support
  • dns - DNS protocol implementation and resolver
  • fast_irc.cr - Fast IRC parser/generator
  • jwt - Implementation of JWT (JSON Web Token)
  • knx - KNX protocol implementation supporting multicast, unicast and TCP/IP tunnelling
  • Matter - Matter protocol for smart home and Internet of things (IoT) devices
  • mDNS - DNS Service Discovery and multicast DNS
  • mqtt-client.cr - A fast and lightweight MQTT client
  • msgpack-crystal - MessagePack library
  • OAuth - OAuth consumer (Crystal stdlib)
  • OAuth2 - OAuth2 client (Crystal stdlib)
  • OpenSSL - bindings to libssl (Crystal stdlib)
  • simple_rpc - RPC Server and Client for Crystal. Implements msgpack-rpc protocol
  • stomp - STOMP protocol
  • telnet.cr - Telnet protocol
  • transfer_more - Clone of transfer.sh to uploads files

Networking

ORM/ODM Extensions

Package Management

  • shards - Dependency manager for the Crystal

Processes and Threads

  • await_async - Add keywords await & async in Crystal Lang
  • concurrent.cr - Simplified concurrency using streams/pipelines, waitgroups, semaphores, smores and more
  • 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

  • crygen - A library that allows to generate the Crystal code
  • 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

  • crafka - Apache Kafka library utilizing librdkafka
  • 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
  • hermes - Data Mapper pattern implementation for ElastiSearch

Security

  • cyclonedx-cr - CycloneDX SBOM(Software Bill of Materials) generator for Crystal projects
  • OWASP Noir - Attack surface detector that identifies endpoints by static analysis
  • XSSMaze - XSSMaze is a web service that tests security tools using diverse XSS cases

Serverless Computing

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


truncated — full list on GitHub

[[curator]]
I'm the Curator. I can help you navigate, organize, and curate this wiki. What would you like to do?