Awesome Crystal Overview
:gem: A collection of awesome Crystal libraries, tools, frameworks and software
🏠 Home · 🔥 Feed · 📮 Subscribe · ❤️ Sponsor · 😺 veelenga/awesome-crystal · ⭐ 3.3K · 🏷️ Programming Languages
Awesome Crystal
A curated list of awesome Crystal code and resources. Inspired by awesome (⭐312k) and awesome-awesomeness (⭐31k). 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 (⭐3.3k) 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 (⭐12) - Inserting values into a sorted array
- blurhash.cr (⭐23) - BlurHash (⭐15k) implementation
- crie (⭐12) - Compile-time Trie
- CrOTP (⭐63) - HOTP and TOTP implementation for two factor authentication
- crystal-linked-list (⭐13) - Implementation of Linked List
- crystaledge (⭐26) - A pure Vector Math library
- crystalg (⭐38) - A Generic Algorithm Library
- crystalline (⭐129) - A collection of containers and algorithms
- csuuid (⭐15) - A Chronologically Sortable UUID
- edits.cr (⭐16) - Collection of edit distance algorithms
- fzy (⭐45) - A Crystal port of awesome Fzy project fuzzy finder algorithm
- Goban (⭐25) - A fast and efficient QR Code implementation
- graphlb (⭐19) - Collection of graph datastructure and algorithms
- haversine (⭐16) - An Implementation of the Haversine formula
- HKDF (⭐1) - HMAC-based Extract-and-Expand Key Derivation Function rfc5869
- kd_tree (⭐16) - An implementation of "K-Dimensional Tree" and "N-Nearest Neighbors"
- ksuid.cr (⭐15) - K-Sortable Globally Unique IDs
- markov (⭐21) - Build Markov Chains and run Markov Processes
- multiset.cr (⭐4) - Implementation of a multiset
- named_information (⭐0) - Naming Things with Hashes rfc6920
- qr-code (⭐17) - QR Code generator
- radix (⭐102) - Radix Tree implementation
- s2_cells (⭐0) - S2 Geometry for spatial indexing
- secure-remote-password (⭐7) - SRP-6a protocol for authentication over an insecure network
- SPAKE2+ (⭐1) - Password Authenticated Key Exchange (PAKE) protocol, comparable to SRP-6a
- splay_tree_map (⭐14) - Splay Tree implementation that conforms to the Hash ducktype
- verhoeff (⭐0) - Implementation of the Verhoeff checksum algorithm
Blockchain
- Axentro (⭐193) - A custom blockchain platform
- Cocol (⭐19) - A minimal blockchain testbed
- secp256k1.cr (⭐48) - Elliptic curve used in the public-private-key cryptography
C bindings
- augeas.cr (⭐7) - Bindings for Augeas
- clang.cr (⭐47) - Libclang bindings
- crt.cr (⭐27) - Bindings for libncursesw and crt
- crystal-gsl (⭐3) - Bindings for GNU Scientific Library
- crystal-hunspell (⭐6) - Bindings for Hunspell
- duktape.cr (⭐136) - Bindings for the Duktape (⭐5.9k) javascript engine
- fftw.cr (⭐12) - Bindings for FFTW library
- gphoto2.cr (⭐16) - Bindings for the libgphoto2 library
- gpio.cr (⭐1) - Bindings for the gpiod library (general purpose IO control and feedback)
- icu.cr (⭐11) - Bindings for the ICU library
- libnotify.cr (⭐26) - Bindings for Libnotify
- nlopt.cr (⭐3) - Bindings for NLOpt
- pcap.cr (⭐25) - Bindings for libpcap
- pledge.cr (⭐8) - Bindings for OpenBSD's
pledge(2)
- ssh2.cr (⭐43) - Bindings for libssh2 library
- syslog.cr (⭐10) - Bindings for
syslog
- v4l2.cr (⭐5) - Bindings for Video4Linux2
- wasmer-crystal (⭐89) - Bindings for the
wasmer
WebAssembly runtime - win32cr (⭐14) - Bindings for Win32 API
- x_do.cr (⭐18) - Bindings for libxdo (
xdotool
)
Caching
- crystal-memcached (⭐35) - Implementation of a memcached client
CLI Builders
- admiral (⭐135) - A robust DSL for writing command line interfaces
- Athena Console (⭐16) - Allows for the creation of CLI based commands
- clicr (⭐29) - A simple declarative command line interface builder
- clim (⭐121) - Slim command line interface builder
- Cling (⭐23) - A modular, non-macro-based command line interface library
- commander (⭐126) - Command-line interface builder
- Keimeno (⭐14) - A lightweight text user interface library in Crystal
- OptionParser - command-line options processing (Crystal stdlib)
- Phreak (⭐32) - A highly flexible Crystal CLI builder in the style of OptionParser
CLI Utils
- climate (⭐14) - Tiny tool to make your CLI output 🌈 coloured
- coin (⭐6) - Command-line application that performs currency conversion via the Fixer API
- cride (⭐50) - A light CLI text editor/IDE
- git-repository (⭐2) - A git cli wrapper querying and cloning remote repositories with minimal data transfer
- hetzner-k3s (⭐1.6k) - A CLI tool to quickly create and manage Kubernetes clusters in Hetzner Cloud
- lff (⭐17) - Simple and straightforward large files finder utility in command line
- meet (⭐38) - Start a jitsi meeting quickly from the comfort of your command line
- oq (⭐190) - A performant, and portable jq wrapper to facilitate the consumption and output of formats other than JSON; using jq (⭐30k) filters to transform the data
- progress_bar.cr (⭐15) - A simple and customizable progress bar
- tablo (⭐28) - A flexible terminal table generator
- tallboy (⭐56) - Generate ASCII character tables with support for spanning cells over multiple columns
Code Analysis and Metrics
- ameba (⭐510) - A static code analysis tool
- linguist.cr (⭐8) - Using multiple ways to find programming language used in files, based on Github's Linguist
Compression
- Crystar (⭐38) - Readers and writers of Tar archive format
- Gzip - readers and writers of gzip format (Crystal stdlib)
- polylines.cr (⭐10) — compression of series of coordinates
- snappy (⭐18) - 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 (⭐41) - Bindings for Zstandard (⭐23k) compression library
Configuration
- cr-dotenv (⭐94) - Loads .env file
- Envy (⭐7) - Load environment variables from YAML
- envyable (⭐6) - A simple YAML to ENV config loader
- habitat (⭐83) - Type safe configuration for your classes and modules
- totem (⭐66) - Load and parse a configuration in JSON, YAML, dotenv formats
Converters
- base62.cr (⭐10) - Base62 encoder/decoder, well suited for url-shortening
- crunits (⭐6) - Tool for converting units of measure (miles to kilometers, celsius to fahrenheit etc)
- money (⭐31) - Handling money and currency conversion with ease (almost complete port of RubyMoney (⭐2.7k))
- sass.cr (⭐35) - Compile SASS/SCSS to CSS (libsass (⭐4.3k) binding)
Cryptography
- cmac (⭐5) - Crystal implementation of Cipher-based Message Authentication Code (CMAC)
- ed25519 (⭐7) - the Ed25519 elliptic curve public-key signature system described in [RFC 8032]
- monocypher.cr (⭐17) - Crystal wrapper for the Monocypher crypto library
- sodium.cr (⭐49) - Crystal wrapper for the libsodium crypto API
Data Formats
- BinData (⭐48) - Binary data parser helper with an ASN.1 parser
- config.cr (⭐14) - Easy to use configuration format parser
- crinder (⭐28) - Class based json renderer
- Crystalizer (⭐39) - (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 (⭐11) - Separates a files front matter from its content
- geoip2.cr (⭐17) - GeoIP2 reader
- HAR (⭐22) - HAR (HTTP Archive) parser
- INI - INI file parser (Crystal stdlib)
- JSON - parsing and generating JSON documents (Crystal stdlib)
- json-schema (⭐12) - convert JSON serializable classes into a JSON Schema representation
- JSON::OnSteroids (⭐24) - handle and mutate JSON document easily
- maxminddb.cr (⭐23) - MaxMindDB reader
- toml.cr (⭐58) - TOML parser
- XML - parsing and generating XML documents (Crystal stdlib)
- YAML - parsing and generating YAML documents (Crystal stdlib)
Data Generators
- faker (⭐147) - A library for generating fake data
- hashids.cr (⭐52) - A library to generate YouTube-like ids from one or many numbers
- prime (⭐1) - A prime number generator
Database Drivers/Clients
- couchdb.cr (⭐13) - CouchDB client
- cryomongo (⭐71) - MongoDB driver
- crystal-db (⭐299) - Common db api
- crystal-ldap (⭐17) - LDAP client
- crystal-mysql (⭐108) - MySQL connector for Crystal
- crystal-pg (⭐462) - A Postgres driver
- crystal-redis (⭐380) - Full featured Redis client
- crystal-rethinkdb (⭐22) - Driver for RethinkDB / RebirthDB
- crystal-sqlite3 (⭐136) - SQLite3 bindings
- leveldb (⭐39) - Crystal bindings for LevelDB
- rocksdb.cr (⭐38) - RocksDB client
- surrealdb.cr (⭐5) - Unoffical SurrealDB HTTP & Websocket Client
Database Tools
- migrate (⭐31) - A simpler database migration tool with transactions
Debugging
- backtracer.cr (⭐15) - Shard aiming to assist with parsing backtraces into a structured form
- debug.cr (⭐95) -
debug!(…)
macro forpp
-style debugging
Dependency Injection
- Athena Dependency Injection (⭐9) - Robust dependency injection service container framework
- Crystal-DI (⭐32) - Lightweight DI Container
- HardWire (⭐21) - A compile-time non-intrusive dependency injection system
- syringe (⭐6) - A simple and basic dependency injection shard for crystal
- carbon (⭐84) - Fun, testable, and adapter-based email library
- crystal-email (⭐111) - Simple e-mail sending library
- CrystalEmail - A RFC compliant Email validator
- sendgrid.cr (⭐16) - Simple Sendgrid Client
Environment Management
- asdf-crystal (⭐73) - Plugin for asdf version manager
- crenv (⭐238) - Crystal version manager
- rcm.cr (⭐45) - Redis Cluster Manager
- vfox-crystal (⭐5) - Plugin for vfox version manager
Examples and funny stuff
- blackjack-cr (⭐8) - Console Blackjack
- crystal-patterns (⭐294) - Examples of GOF patters
- crystalworld (⭐43) - realworld.io back-end API implementation
- exercism-crystal (⭐75) - Exercism exercises
- try.cr (⭐26) - Try monad
Framework Components
- Athena Event Dispatcher (⭐13) - A Mediator and Observer pattern event library
- Athena Negotiation (⭐4) - Framework agnostic content negotiation library
- device_detector (⭐22) - Shard for detect device by user agent string
- Exception Page (⭐64) - An exceptional exception page for Crystal web libraries and frameworks
- graphql (⭐134) - Type-safe GraphQL server implementation
- graphql-crystal (⭐215) - GraphQL implementation
- kemal-session (⭐53) - Session handler for Kemal
- mochi (⭐25) - Authentication shard inspired by Devise supporting: Authenticable, Confirmable, Invitable & more
- motion.cr (⭐54) - Object oriented frontend library for Amber
- multi-auth (⭐111) - Standardized multi-provider OAuth2 authentication (inspired by omniauth)
- praetorian (⭐59) - Minimalist authorization library inspired by Pundit
- Shield (⭐55) - Comprehensive security for Lucky framework
- shrine.cr (⭐74) - File Attachment toolkit for Crystal applications. Heavily inspired by Shrine for Ruby
- tourmaline (⭐157) - Telegram bot framework with an API loosely based on telegraf.js
Game Development
- CrSFML (⭐348) - Bindings to SFML multimedia/game library
- crystal-chipmunk (⭐43) - Bindings to Chipmunk, a fast and lightweight 2D game physics library
- crystal-imgui-sfml (⭐17) - Bindings to integrate Dear ImGui (⭐58k) into an SFML project
- entitas.cr (⭐37) - A Entity Component System Framework for Crystal
- MyECS (⭐21) - A Sparse Entity Component System Framework for Crystal
- Raylib-cr (⭐78) - Direct bindings to Raylib, which supports Linux, Windows, and Mac
- SDL-Crystal-Bindings (⭐6) - Direct (unsafe) bindings to SDL2, intended for writing own game libraries
GUI Development
- crystal-imgui (⭐67) - Bindings to Dear ImGui (⭐58k), an immediate-mode graphical UI library
- GTK4.cr (⭐99) - Bindings for GTK4 with Crystalized API
- Iu (⭐72) - UI framework based on the Fusion/libui.cr (⭐177) library, with custom elements and modified bindings from hedron-crystal/hedron (⭐86)
- Ultimate GTK4 Crystal Guide - Learn how to create premium GTK4 apps in Crystal
HTML Builders
- blueprint (⭐40) - Write reusable and testable HTML templates in plain Crystal
- form_builder.cr (⭐31) - Dead simple HTML form builder for Crystal with built-in support for many popular UI libraries such as Bootstrap
- to_html (⭐10) - The fastest HTML builder engine for Crystal
- Water (⭐27) - A library for writing HTML in plain Crystal
HTML/XML Parsing
- docx_cr_converter (⭐7) - parse DOCX Word
- myhtml (⭐154) - Fast HTML5 Parser that includes CSS selectors
HTTP
- Cable (⭐127) - An ActionCable "port" to Crystal, framework agnostic, 100% compatible with the ActionCable JS Client
- cossack (⭐106) - Simple flexible HTTP client
- crest (⭐234) - Simple HTTP and REST client, inspired by the Ruby's RestClient gem
- crul (⭐113) - Command line HTTP client
- digest-auth (⭐4) - Digest authentication
- halite (⭐173) - Crystal HTTP Requests with a chainable REST API, built-in sessions and loggers
- http-multiserver.cr (⭐23) - Mounting multiple servers via routes (a.k.a. URL mapping)
- http-params-serializable (⭐21) - HTTP params (de)serialization, applicable to URL queries and URL-encoded forms
- http-protection (⭐72) - Protection against typical web attacks
- http2 (⭐94) - HTTP/2 Protocol Implementation
- HTTP::Client - HTTP client (Crystal stdlib)
- HTTP::Server - HTTP server (Crystal stdlib)
- HTTP::WebSocket - HTTP WebSocket client (Crystal stdlib)
- link-header (⭐1) - HTTP Link Header Parser
- ntlm (⭐4) - NTLM authentication
- proxy-fetcher.cr (⭐9) - Proxy lists fetching & validating library
- sse.cr (⭐22) - Server-Sent Events client
Image processing
- celestine (⭐92) - Create SVG images using a DSL
- ffmpeg (⭐19) - FFmpeg bindings that works with StumpyPNG to extract frames
- Pluto (⭐67) - A fast and convenient image processing library
- stumpy_png (⭐106) - Read and write PNG images
Implementations/Compilers
- charly - Charly Programming Language
- cltk (⭐73) - A crystal port of the Ruby Language Toolkit
- crisp (⭐43) - Lisp dialect implemented with Crystal
- LinCAS-lang - A programming language for scientific computation
- mint-lang (⭐4k) - 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 (⭐15) - A free-form, moldable, interpreted programming language
- runic-lang - In-design toy language
Internationalization
- crystal-i18n (⭐24) - An internationalization library inspired by Ruby-I18n
- i18n.cr (⭐22) - Internationalization shard
- Lens (⭐16) - A multiformat internationalization (i18n) shard for Crystal. Supports Gettext, Ruby YAML, etc.
- Rosetta (⭐39) - A blazing fast internationalization (i18n) library with compile-time key lookup supporting YAML and JSON formats
Logging and monitoring
- crafana (⭐21) - A Grafana library to help autogenerate dashboards
- fiber_metrics.cr (⭐8) - Track run time, wait time, or memory allocations per
Fiber
, method or block - Log - logging utility (Crystal stdlib)
- statsd.cr (⭐33) - Statsd (⭐18k) client library
Machine Learning
- ai4cr (⭐28) - Artificial Intelligence (based on https://github.com/SergioFierens/ai4r (⭐713))
- Cadmium (⭐202) - NLP library based heavily on natural (⭐11k)
- crystal-fann (⭐83) - FANN (Fast Artifical Neural Network) binding
- mxnet.cr (⭐22) - Bindings for MXNet
- shainet (⭐181) - SHAInet (Neural Network in pure crystal)
Markdown/Text Processors
- cr-cmark-gfm (⭐20) - Crystal C bindings for cmark-gfm to work with Commonmark and Github Flavored Markdown
- markd (⭐109) - Yet another markdown parser built for speed, Compliant to CommonMark specification
Misc
- aasm.cr (⭐51) - Easy to use finite state machine for Crystal classes
- any_hash.cr (⭐35) - Recursive Hash with better JSON::Any included
- anyolite (⭐160) - Full mruby interpreter with simple bindings, allowing for easy scripting support in projects
- burocracia.cr (⭐20) - burocracia.cr the dependecyless shard to validate, generate and format Brazilian burocracias such as CPF, CNPJ and CEP
- callbacks (⭐12) - Expressive callbacks module
- circuit_breaker (⭐27) - Implementation of the circuit breaker pattern
- CrSignals (⭐10) - Signals/slots notification library
- crystal-binary_parser (⭐18) - Binary parser
- crystal-web-framework-stars (⭐70) - Web frameworks for Crystal, most starred on Github
- crz (⭐90) - Functional programming library
- defined (⭐17) - macros for conditional compilation based on constant definitions, version requirements, or environment variable settings
- emoji.cr (⭐47) - Emoji library
- gphoto2-web.cr (⭐11) - Web API for libgphoto2
- immutable (⭐203) - Implementation of thread-safe, persistent, immutable collections
- iterm2 (⭐6) - Display images within the terminal using the ITerm2 Inline Images Protocol
- monads (⭐46) - Monad implementation
- observable (⭐9) - Implementation of the observer pattern
- pinger (⭐11) - Ping IP addresses and DNS entries without requiring sudo
- port_midi (⭐6) - Crystal C bindings for the PortMIDI cross-platform MIDI I/O library
- retriable.cr (⭐41) - Simple DSL to retry failed code blocks
- serf-handler.cr (⭐1) - Framework for building Serf handlers, with a suite of useful builtin capabilities
- simple_retry (⭐6) - Simple tool for retrying failed code blocks
- sslscan.cr (⭐10) - Crystal shard wrapping the rbsec/sslscan utility
- version_tools (⭐8) - Version-dependent behaviour, specified at compile-time
- wafalyzer (⭐33) - Web Application Firewall (WAF) Detector - shard + cli
- zaru_crystal (⭐10) - Filename sanitization
Network Protocols
- amqp-client.cr (⭐69) - AMQP 0-9.1, a messaging protocol, implemented by eg. RabbitMQ
- connect-proxy (⭐6) - Connect method style of HTTP tunnelling / HTTP proxy
- cr-xmpp (⭐16) - XMPP/Jabber Library
- Crirc (⭐21) - IRC protocol implementation (Client, Server, Bots)
- crystal-bacnet (⭐0) - BACnet protocol implementation with BACnet/IP client
- crystal-dns - DNS protocol implementation and resolver
- crystal-json-socket (⭐13) - JSON-socket client & server implementation. Inspired by and compatible with node-json-socket (⭐154) and ruby-json-socket (⭐4)
- crystal-mqtt (⭐19) - A MQTT client
- crystal-snmp (⭐16) - An SNMP implementation with version 1, 2c and 3 support
- fast_irc.cr (⭐22) - Fast IRC parser/generator
- jwt (⭐205) - Implementation of JWT (JSON Web Token)
- knx (⭐2) - KNX protocol implementation supporting multicast, unicast and TCP/IP tunnelling
- mDNS (⭐8) - DNS Service Discovery and multicast DNS
- mqtt-client.cr (⭐3) - A fast and lightweight MQTT client
- msgpack-crystal (⭐134) - MessagePack library
- OAuth - OAuth consumer (Crystal stdlib)
- OAuth2 - OAuth2 client (Crystal stdlib)
- OpenSSL - bindings to libssl (Crystal stdlib)
- simple_rpc (⭐65) - RPC Server and Client for Crystal. Implements msgpack-rpc protocol
- stomp (⭐1) - STOMP protocol
- telnet.cr (⭐11) - Telnet protocol
- transfer_more - Clone of transfer.sh to uploads files
Networking
- ipaddress.cr (⭐43) - Library to handle IPv4 and IPv6 addresses
- mac-address (⭐2) - Library for working with MAC addresses
ORM/ODM Extensions
- avram (⭐165) - A database wrapper for reading, writing, and migrating Postgres databases
- clear (⭐268) - ORM specialized to PostgreSQL only but with advanced features
- crecto (⭐343) - Database wrapper, based on Ecto
- granite (⭐295) - ORM for Postgres, Mysql, Sqlite
- jennifer.cr (⭐415) - Active Record pattern implementation with flexible query chainable builder and migration system
- rethinkdb-orm (⭐24) - ORM for RethinkDB / RebirthDB
Package Management
- shards (⭐758) - Dependency manager for the Crystal
Processes and Threads
- await_async (⭐82) - Add keywords await & async in Crystal Lang
- concurrent.cr (⭐47) - Simplified concurrency using streams/pipelines, waitgroups, semaphores, smores and more
- neph (⭐203) - A modern command line job processor that can execute jobs concurrently
- promise (⭐40) - A Promise implementation with type inference
- werk (⭐26) - Dead simple task runner with concurrent support, ideal for local CI
Project Generators
- crystal_lib (⭐139) - Automatic binding generator for native libraries
- fez (⭐49) - A Kemal application generator
- libgen (⭐78) - Automatic bindings generator configured using JSON/YAML files
Queues and Messaging
- crafka (⭐17) - Apache Kafka library utilizing
librdkafka
- mosquito (⭐225) - Redis backed periodic and ad hoc job processing
- NATS.io (⭐44) - NATS client
- sidekiq.cr (⭐767) - Simple, efficient job processing
Routing
- orion (⭐124) - A minimal, rails-esque routing library
- router.cr (⭐263) - Minimum but powerful http router for HTTP::Server
Scheduling
- crystime - Advanced time, calendar, schedule, and remind library
- schedule.cr (⭐74) - Run periodic tasks
- tasker (⭐55) - A high precision scheduler including timezone aware cron jobs
Science and Data analysis
- alea (⭐12) - Repeatable sampling, CDF and other utilities to work with probability distributions
- ishi (⭐48) - Graph plotting package with a small API and sensible defaults powered by gnuplot
- linalg (⭐47) - Linear algebra library inspired by MATLAB and SciPy.linalg
- num.cr (⭐148) - Numerical computing library supporting N-Dimensional data
- predict.cr (⭐17) - Satellite prediction library using the sgp4 model
- quartz (⭐15) - Modeling and simulation framework
Search
- hermes (⭐37) - Data Mapper pattern implementation for ElastiSearch
Serverless Computing
- crystal_openfaas (⭐22) - Template to enable crystal as first class citizens in OpenFaaS
- secrets-env (⭐6) - Extends ENV module to read values injected by docker / kubernetes secrets and other orchestration tools
System
- baked_file_system (⭐177) - Virtual file system implementation
- hardware (⭐72) - Get CPU, Memory and Network informations of the running OS and its processes
Task management
- cake (⭐71) - Production-ready Make-like utility tool
- sam (⭐95) - Another one Rake-like task manager with namespacing and arguments system
Template Engine
- crinja (⭐121) - An implementation of the Jinja2 template engine
- crustache (⭐83) - {{Mustache}} for Crystal
- ECR (Embedded Crystal) - compile time template language which uses plain crystal expressions (Crystal stdlib)
- Jbuilder (⭐44) - Generate JSON objects with a Builder-style DSL, inspired by jbuilder
- Kilt (⭐152) - Abstraction layer for template engines
- Slang (⭐235) - Lightweight, terse, templating language inspired by Ruby's Slim
- teeplate (⭐16) - A library for rendering multiple template files
Testing
- Athena Spec (⭐2) - Common/helpful Spec compliant testing utilities
- crotest (⭐28) - A tiny and simple test framework
- crytic (⭐66) - Mutation testing framework
- hashr (⭐0) - A tiny class makes test on JSON response easier
- LuckyFlow (⭐51) - Automated browser tests similar to Capybara
- mass-spec (⭐8) - Web API testing library
- microtest (⭐31) - Small opinionated testing library focusing on power asserts
- minitest.cr (⭐146) - Library for unit tests and assertions
- mocks.cr (⭐52) - Mocking library for Crystal
- selenium.cr (⭐23) - Selenium client for interacting with web pages for browser automation
- Spec - spec framework (Crystal stdlib)
- spectator - Feature rich spec framework that uses the modern expect syntax
- timecop.cr (⭐19) - Library for mocking with
Time.now
. Inspired by the timecop ruby gem (⭐3.3k) - vcr (⭐58) - A HTTP capture and replay implementation for crystal
- webdriver_pump (⭐4) - Page Object library. Inspired by Ruby's WatirPump (⭐16)
- webmock.cr (⭐103) - Library for stubbing
HTTP::Client
requests
Third-party APIs
- amazonite (⭐0) - An unofficial SDK supporting popular AWS APIs
- aws-signer.cr (⭐13) - This library signs your HTTP requests using AWS v4
- awscr-s3 (⭐81) - AWS S3 interface
- awscr-signer (⭐22) - Sign HTTP::Request objects and generate presigned post forms
- crystal-consul (⭐17) - Consul API client
- crystal-darksky (⭐8) - Wrapper for the Dark Sky API
- crystal-swapi (⭐4) - Star Wars API (SWAPI) wrapper
- crystal_slack (⭐19) - A tool that parses Slack slash commands or send incoming web hooks
- GDAX (⭐7) - GDAX REST and WebSocket API Wrapper with request signing
- gitlab.cr (⭐29) - GitLab API wrapper
- google (⭐25) - Google API wrapper
- host_meta (⭐3) - A Web Host Metadata (https://tools.ietf.org/html/rfc6415) client
- kube-client.cr (⭐22) - Kubernetes API Client
- mixpanel-crystal (⭐0) - A library for sending events to Mixpanel
- mollie.cr (⭐18) - Mollie Payments API wrapper (Creditcard, PayPal, Apple Pay, Sofort, Klarna, ...)
- office365 (⭐8) - Microsoft Graph API wrapper
- pinboard.cr (⭐5) - Pinboard API
- raven.cr (⭐120) - Raven is a client for Sentry (⭐38k)
- stripe.cr (⭐48) - Stripe api wrapper
- tmdb.cr (⭐3) - The Movie DB (TMDb) api wrapper
- twitter-crystal (⭐82) - A library to access the Twitter API
- web_finger (⭐9) - A WebFinger (https://tools.ietf.org/html/rfc7033) client
- ynab.cr (⭐4) - A library to interact with your YNAB data
Validation
- accord (⭐24) - Shareable validation library for Crystal Objects
- Athena Validator (⭐5) - Robust & flexible validation framework
- validations (⭐13) - Validations mixin
- validator (⭐29) - Data check and validation
Web Frameworks
- amber (⭐2.6k) - Open source efficient and cohesive web application framework
- Athena (⭐207) - A web framework comprised of reusable, independent components
- grip (⭐274) - The microframework for writing powerful web applications
- kemal (⭐3.6k) - Lightning Fast, Super Simple web framework. Inspired by Sinatra
- lucky (⭐2.6k) - Catch bugs early, forget about most performance issues, and spend more time on code instead of debugging and writing tests
- marten (⭐396) - A web framework that makes building web applications easy, productive, and fun
- runcobo (⭐49) - An api framework with simple, intuitive and consistent DSL, using jbuilder to render json
- Shivneri (⭐23) - Component based MVC web framework for crystal targeting good code structures, modularity & performance
- spider-gazelle (⭐179) - A Rails esque web framework with a focus on speed and extensibility
Community
- Crystal Forum
- Crystal newsletter
- Gitter
- IRC - #crystal-lang on Libera
- Stackoverflow
Unofficial
- Chinese-speaking Telegram Group - 来吧!TG 中文圈的朋友们!
- Crystal Programming Discord Server - Unofficial Discord server dedicated to the Crystal Programming Language
- Portuguese-speaking Telegram Group - Bem vindos ao Crystal Brasil!
- Russian-speaking Telegram Group - Добро пожаловать, товарищ!
Resources
- Crystal for Rubyists - Free book to bootstrap your Crystal journey
- Crystal Shards for Ruby Gems (⭐19k) - A list of Ruby Gems and their Crystal Shards equivalents
- crystal-koans (⭐46) - Learn Crystal by writing unit tests
- crystal-lang.org - Official language site
- devdocs.io - API Documentation Browser with Crystal support
- Learn X in Y minutes - Quick tutorial on Crystal
- Programming Crystal - PragProg book to start your Crystal journey
- Usability of Programming Languages - Comparison of Python, Rust, Crystal
Official Documentation Translations
- br.crystal-lang.org - Brazilian
- ja.crystal-lang.org - Japanese
- kr.crystal-lang.org - Korean
- ru.crystal-lang.org - Russian
- tw.crystal-lang.org - Chinese Traditional
Services and Apps
- carc.in - A web service that runs your code and displays the result
- Crank (⭐50) - A Procfile-based application manager (like Foreman)
- cry (⭐34) - 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
- DeBot (⭐35) - IRC bot written in Crystal
- icr (⭐502) - Interactive console for Crystal (like IRB for Ruby)
- Invidious (⭐16k) - Invidious is an alternative front-end to YouTube
- mpngin (⭐32) - A URL shortener with simple stats
- procodile (⭐6) - Run processes in the background (and foreground) on Mac & Linux from a Procfile (for production and/or development environments)
- 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 (⭐38)
Tools
- ast_helper (⭐25) - Helper tool to debug parser and formatter
- crystal-base (⭐2) - CentOS base docker image for Crystal development
- crystal-dash-docset (⭐17) - Dash docset generator
- port_ruby_to_crystal (⭐9) - A regex replace ruby script for port ruby code to crystal easier, reduce friction
- public_suffix (⭐2) - A small library designed to make the Public Suffix List (https://publicsuffix.org/) easier to use
DevOps
- ansible-crystal (⭐9) - Ansible playbook for installing crystal
- DPPM (⭐116) - An easy, universal way to install and manage applications as packages (mostly Linux)
Editor Plugins
- Acme:
- acmecrystal (⭐6) - Reformats crystal code in acme
- Atom
- crystal-tools - Enables built in tools in Crystal compiler
- language-crystal-actual - Crystal language support in Atom
- Emacs
- crystal-mode - Crystal language support for Emacs (crystal-lang-tools/emacs-crystal-mode (⭐47))
- Geany
- geany-crystal (⭐9) - Crystal support for the Geany editor
- IntelliJ IDEA
- intellij-crystal-lang (⭐38) - Crystal support for the JetBrains IDEs
- Lite-XL
- lite-plugin-crystal (⭐6) - Crystal support for the Lite-XL editor
- Spacemacs
- crystal-spacemacs-layer (⭐12) - Spacemacs contribution layer for Crystal
- Sublime
- sublime-crystal (⭐84) - Crystal syntax highlighting for sublime Text
- TextMate
- Crystal.tmbundle (⭐18) - Crystal syntax highlighting, compile, format command, snippets
- Vim
- vim-crystal (⭐412) - Vim filetype support for Crystal
- vim-slang (⭐12) - Vim filetype support for Slang Templating Engine
- Visual Studio Code
- vscode-crystal-lang (⭐275) - Formatter, linter and syntax highlighting for
cr
andecr
files
- vscode-crystal-lang (⭐275) - Formatter, linter and syntax highlighting for
LSP Language Server Protocol Implementations
- crystalline (⭐428) - Crystalline is an implementation of the Language Server Protocol written in and for the Crystal Language
- scry (⭐333) - Code analysis server for Crystal implementing the Language Server Protocol
Shell plugins
- crun (⭐43) - Crystal Run : shebang wrapper for Crystal
- crystal-zsh (⭐28) - .oh-my-zsh plugin