awesome-crystal
:gem: A collection of awesome Crystal libraries, tools, frameworks and software
https://github.com/veelenga/awesome-crystal
Last synced: 18 days ago
JSON representation
Algorithms and Data structures
- bisect - Inserting values into a sorted array
- blurhash.cr - BlurHash implementation
- crie - Compile-time Trie
- CrOTP - HOTP and TOTP implementation for two factor authentication
- crystaledge - A pure Vector Math library
- crystalg - A Generic Algorithm Library
- crystalline - A collection of containers and algorithms
- csuuid - A Chronologically Sortable UUID
- edits.cr - Collection of edit distance algorithms
- fzy - A Crystal port of awesome Fzy project fuzzy finder algorithm
- Goban - A fast and efficient QR Code implementation
- graphlb - Collection of graph datastructure and algorithms
- haversine - An Implementation of the Haversine formula
- HKDF - HMAC-based Extract-and-Expand Key Derivation Function rfc5869
- 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
- named_information - Naming Things with Hashes rfc6920
- qr-code - QR Code generator
- radix - Radix Tree implementation
- s2_cells - S2 Geometry for spatial indexing
- secure-remote-password - SRP-6a protocol for authentication over an insecure network
- SPAKE2+ - Password Authenticated Key Exchange (PAKE) protocol, comparable to SRP-6a
- splay_tree_map - Splay Tree implementation that conforms to the Hash ducktype
- verhoeff - Implementation of the Verhoeff checksum algorithm
- crystal-linked-list - Implementation of Linked List
Blockchain
- Axentro - A custom blockchain platform
- Cocol - A minimal blockchain testbed
- secp256k1.cr - Elliptic curve used in the public-private-key cryptography
Caching
- crystal-memcached - Implementation of a memcached client
- cache - A key/value store where pairs can expire after a specified interval
- apt-larder - An HTTP caching proxy for APT package repositories
C bindings
- augeas.cr - Bindings for Augeas
- clang.cr - Libclang bindings
- crt.cr - Bindings for libncursesw and crt
- crystal-gsl - Bindings for GNU Scientific Library
- crystal-hunspell - Bindings for Hunspell
- duktape.cr - Bindings for the Duktape javascript engine
- fftw.cr - Bindings for FFTW library
- gphoto2.cr - Bindings for the libgphoto2 library
- gpio.cr - Bindings for the gpiod library (general purpose IO control and feedback)
- icu.cr - Bindings for the ICU library
- libnotify.cr - Bindings for Libnotify
- nlopt.cr - Bindings for NLOpt
- pcap.cr - Bindings for libpcap
-
pledge.cr
- Bindings for OpenBSD's
pledge(2) - ssh2.cr - Bindings for libssh2 library
-
syslog.cr
- Bindings for
syslog - v4l2.cr - Bindings for Video4Linux2
-
wasmer-crystal
- Bindings for the
wasmerWebAssembly runtime - win32cr - Bindings for Win32 API
-
x_do.cr
- Bindings for libxdo (
xdotool) - wgpu-cr - Bindings for wgpu-native (WebGPU)
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
- 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
- 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
- coin - Command-line application that performs currency conversion via the Fixer API
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
- cruml - A tool that provides an UML class diagram generator for any Crystal projects
Compression
- Crystar - Readers and writers of Tar archive format
- polylines.cr
- snappy - Snappy compression format reader/writer for Crystal
- zstd.cr - Bindings for Zstandard compression library
- Gzip - readers and writers of gzip format (Crystal stdlib)
- Zip - readers and writers of zip format (Crystal stdlib)
- Zlib - readers and writers of zlib format (Crystal stdlib)
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
- ucl.cr - Bindings to libucl, load, dump and validate UCL/JSON configuration
- typed_env_config - Load type-safe configuration from YAML/dotenv with ENV overrides
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::SpanString 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
- monocypher.cr - Crystal wrapper for the Monocypher crypto library
- sodium.cr - Crystal wrapper for the libsodium crypto API
Database Drivers/Clients
- couchdb.cr - CouchDB client
- cryomongo - MongoDB driver
- crystal-db - Common db api
- crystal-ldap - LDAP client
- crystal-mysql - MySQL connector for Crystal
- crystal-pg - A Postgres driver
- crystal-redis - Full featured Redis client
- crystal-rethinkdb - Driver for RethinkDB / RebirthDB
- crystal-sqlite3 - SQLite3 bindings
- leveldb - Crystal bindings for LevelDB
- rocksdb.cr - RocksDB client
- surrealdb.cr - Unoffical SurrealDB HTTP & Websocket Client
Database Tools
- migrate - A simpler database migration tool with transactions
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
- front_matter.cr - Separates a files front matter from its content
- geoip2.cr - GeoIP2 reader
- HAR - HAR (HTTP Archive) parser
- 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
- jmespath.cr - Crystal implementation of JMESPath, a query language for JSON
- toon-crystal - TOON (Token-Oriented Object Notation) parser
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
Debugging
- backtracer.cr - Shard aiming to assist with parsing backtraces into a structured form
-
debug.cr
-
debug!(…)macro forpp-style debugging
Dependency Injection
- Athena Dependency Injection - Robust dependency injection service container framework
- syringe - A simple and basic dependency injection shard for crystal
- Crystal-DI - Lightweight DI Container
DevOps
- ansible-crystal - Ansible playbook for installing crystal
- DPPM - An easy, universal way to install and manage applications as packages (mostly Linux)
Editor Plugins
- crystal-mode - Crystal language support for Emacs (crystal-lang-tools/emacs-crystal-mode)
- acmecrystal - Reformats crystal code in acme
- geany-crystal - Crystal support for the Geany editor
- intellij-crystal-lang - Crystal support for the JetBrains IDEs
- lite-plugin-crystal - Crystal support for the Lite-XL editor
- crystal-spacemacs-layer - Spacemacs contribution layer for Crystal
- sublime-crystal - Crystal syntax highlighting for sublime Text
- Crystal.tmbundle - Crystal syntax highlighting, compile, format command, snippets
- vim-crystal - Vim filetype support for Crystal
- vim-slang - Vim filetype support for Slang Templating Engine
-
vscode-crystal-lang
- Formatter, linter and syntax highlighting for
crandecrfiles
- CrystalEmail - A RFC compliant Email validator
- carbon - Fun, testable, and adapter-based email library
- crystal-email - Simple e-mail sending library
- sendgrid.cr - Simple Sendgrid Client
Environment Management
- vfox-crystal - Plugin for vfox version manager
- crenv - Crystal version manager
- rcm.cr - Redis Cluster Manager
- asdf-crystal - Plugin for asdf version manager
Examples and funny stuff
- blackjack-cr - Console Blackjack
- crystal-patterns - Examples of GOF patters
- crystalworld - realworld.io back-end API implementation
- exercism-crystal - Exercism exercises
- try.cr - Try monad
Framework Components
- Athena Event Dispatcher - A Mediator and Observer pattern event library
- Athena Negotiation - Framework agnostic content negotiation 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-crystal - GraphQL implementation
- kemal-session - Session handler for Kemal
- 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
- mochi - Authentication shard inspired by Devise supporting: Authenticable, Confirmable, Invitable & more
- rbacr - Role-Based Access Control system with a clean, type-safe DSL for roles, privileges, and authorization logic
- kemal-identity - Authentication and identity primitives with first-class Kemal integration
Game Development
- CrSFML - Bindings to SFML multimedia/game library
- crystal-chipmunk - Bindings to Chipmunk, a fast and lightweight 2D game physics library
- crystal-imgui-sfml - Bindings to integrate Dear ImGui into an SFML project
- entitas.cr - A Entity Component System Framework for Crystal
- MyECS - A Sparse Entity Component System Framework for Crystal
- Raylib-cr - Direct bindings to Raylib, which supports Linux, Windows, and Mac
- SDL-Crystal-Bindings - Direct (unsafe) bindings to SDL2, intended for writing own game libraries
GUI Development
- Ultimate GTK4 Crystal Guide - Learn how to create premium GTK4 apps in Crystal
- crystal-imgui - Bindings to Dear ImGui, an immediate-mode graphical UI library
- GTK4.cr - Bindings for GTK4 with Crystalized API
- Iu - UI framework based on the Fusion/libui.cr library, with custom elements and modified bindings from hedron-crystal/hedron
- CrymbleUI - A nice and fast GUI framework for Crystal. Declarative DSL, Reactive State, Performant, Rich Widget Set including VirtualMatrix and RecursiveGrid
HTML Builders
- 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
- blueprint - Write reusable and testable HTML templates in plain Crystal
HTML/XML Parsing
- docx_cr_converter - parse DOCX Word
- lexbor - 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
- 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