Awesome Crystal
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 or follow announcements Crystal [ANN] for more.
Contributions are welcome. Please take a quick look at the contribution guidelines first.
- Awesome Crystal
- Algorithms and Data structures
- Blockchain
- C Bindings
- Caching
- CLI Builders
- CLI Utils
- Code Analysis and Metrics
- Compression
- Configuration
- Converters
- Cryptography
- Data Formats
- Data Generators
- Database Drivers/Clients
- Database Tools
- Debugging
- Dependency Injection
- Environment Management
- Examples and funny stuff
- Framework Components
- Game Development
- GUI Development
- HTML Builders
- HTML/XML parsing
- HTTP
- Image Processing
- Implementations/Compilers
- Internationalization
- Logging and monitoring
- Machine Learning
- Markdown/Text Processors
- Misc
- Network Protocols
- Networking
- ORM/ODM Extensions
- Package Management
- Processes and Threads
- Project Generators
- Queues and Messaging
- Routing
- Scheduling
- Science and Data analysis
- Search
- Serverless Computing
- System
- Task management
- Template Engine
- Testing
- Third-party APIs
- Validation
- Web Frameworks
- Community
- Resources
- Services and Apps
- Tools
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
- 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
- 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
Blockchain
- Axentro - A custom blockchain platform
- Cocol - A minimal blockchain testbed
- secp256k1.cr - Elliptic curve used in the public-private-key cryptography
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
wasmer
WebAssembly runtime - win32cr - Bindings for Win32 API
- x_do.cr - Bindings for libxdo (
xdotool
)
Caching
- 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
- 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)
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