/awesome-crystal

:gem: A collection of awesome Crystal libraries, tools, frameworks and software

Primary LanguageCrystalMIT LicenseMIT

Awesome Crystal Awesome Build Status

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 users.

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

Algorithms and Data structures

  • aho_corasick - AhoCorasick algorithm
  • 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
  • delimiter_tree - A tree structure that is built using a delimiter
  • edits.cr - Collection of edit distance algorithms
  • heap.cr - Implementation of heap data structure
  • miller_rabin - Implements Miller-Rabin algorithm to check if a number is prime
  • multiset.cr - Implementation of a multiset
  • murmur3 - Implementation of Murmur3 hash algorithm used by Cassandra
  • primes - Library for testing if a number is prime and finding its prime factorization
  • radix - Radix Tree implementation
  • ranger - Range object operation library
  • text - A collection of phonetic algorithms

Api Builders

  • crystal_api - Simple PostgreSQL REST API with Rails devise-like auth
  • kemal-rest-api - A library to create RESTful API with Kemal

C bindings

Caching

Cli Builders

  • admiral - A robust DSL for writing command line interfaces
  • cli - Library for building command-line interface applications
  • clim - Slim command line interface builder
  • commander - Command-line interface builder
  • completion - Easy command line completion engine
  • docopt - A docopt.org port
  • optarg - Yet another library for parsing command-line options and arguments

Cli Utils

Configuration

Converters

  • moola - Library for dealing with money and conversion (inspired by RubyMoney)
  • ms - Library to easily convert various time formats to milliseconds and milliseconds to human readable format
  • turkish-number - Turn integers into the Turkish words
  • wkhtmltopdf-crystal - Bindings / wrapper for libwkhtmltox (HTML to PDF / image converter)

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

Database Tools

  • micrate - Database migration tool

Development Tools

  • guardian - File change watcher for Crystal and Non-Crystal libs
  • kemal-watcher - Kemal plugin to watch files and live-reload the browser
  • sentry - Watches src files, rebuilds/reruns application on file changes
  • sentry-run - Reload code changes using Sentry.run
  • watchbird - Monitors directories and files, runs tasks automatically
  • watcher - Watch file changes using File.stat

Email

Environment Management

Examples and funny stuff

Framework Components

Game Development

  • CrSFML - Bindings to SFML multimedia/game library
  • crystal-chipmunk - Bindings for Chipmunk, a fast and lightweight 2D game physics library
  • flight-crusader - POC top down flight game
  • glove - A library for gaming development
  • inari - A game written in Crystal, using the Glove project as the game engine
  • medico - Game about a medieval doctor
  • mos_game - Mini Offline Singleplayer game

HTML/XML Parsing

HTTP

Image processing

Implementations/Compilers

  • charly - Charly Programming Language
  • 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
  • crystal - Crystal itself is written in Crystal
  • csmli - Mini-Lisp interpreter
  • NuummiteOS - An OS written in Crystal as a Proof of Concept
  • onix - ONYX Programming Language
  • zir - Realizes to write macros in any scripts into any languages

Logging and monitoring

Markdown/Text Processors

Misc

  • aasm.cr - Easy to use finite state machine for Crystal classes
  • accord - Sharable validations for Crystal objects
  • acorn - State Machine Compiler for Crystal
  • any_hash.cr - Recursive Hash with better JSON::Any included
  • chalk-box - Terminal color toolbox, check support and colorized (without String monkey patch)
  • circuit_breaker - Implementation of the circuit breaker pattern
  • clamd.cr - Client for the clamd antivirus server
  • crdoc - CLI tool to search and open documentation
  • crystal-binary_parser - Binary parser
  • crystal-diff - A Crystal sequence differencing implementation
  • crystal-futures - Future type implementation
  • crystal-i18n - Internationalization library
  • crz - Functional programming library
  • denetmen - Useful micro validator / check library
  • emoji.cr - Emoji library
  • evented - A micro library to publish and subscribe for Crystal objects
  • executable_path - Portable current executable's path
  • hoop - Building native OSX apps
  • html_builder - DSL for creating HTML
  • immutable - Implementation of thread-safe, persistent, immutable collections
  • inflector.cr - Singularize, pluralize, camelize, etc (port from ActiveSupport)
  • kreal - Model sharing & RPC library built on and works with Kemal seamlessly
  • lambda.cr - Uniformed function call syntax
  • lirith - Graphics engine
  • manual-generator - Tool to generate PDF manuals from documentation sites
  • metaclass - A library for manipulating class-level definitions
  • observable - Implementation of the Observer pattern
  • ramlrenderer - HTML doc builder for RAML 1.0
  • raytracer-crystal - CPU Raytracer with examples
  • shell.cr - Small simplistic helper class for executing shell commands
  • syscall.cr - Raw syscall interface
  • tren - Give your SQL some love
  • ulid - Universally Unique Lexicographically Sortable Identifier (ULID)

Networking

  • amqp.cr - AMQP 0.9.1 client with RabbitMQ extensions
  • bson.cr - Native BSON implementation
  • CrystalIrc - IRC implementation (Client, Server, Bots)
  • fast_irc.cr - Fast IRC parser/generator
  • ipaddress.cr - Library to handle IPv4 and IPv6 addresses
  • jwt - Implementation of JWT (JSON Web Token)
  • msgpack-crystal - MessagePack library
  • wire - A packet analyzer

ORM/ODM Extensions

  • active_record.cr - Active Record pattern implementation
  • crecto - Database wrapper, based on Ecto
  • jennifer - Active Record pattern implementation with flexible query chainable builder and migration system
  • kemalyst-model - ORM Model for the Kemalyst Framework
  • ohm-crystal - Object-hash mapping library for Redis
  • redis-tsv.cr - Import and export data from Redis in TSV format
  • selenite-db - A simple persistency-model based library
  • 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

  • daemonize.cr - Crystal process daemonizer
  • neph - A modern command line job processor that can execute jobs concurrently
  • promise - A Promise Implementation

Project Generators

  • bindgencr - Generator of bindings based on castxml output
  • crystal_lib - Automatic binding generator for native libraries
  • fez - A Kemal application generator
  • generate - A tool for generating whole Crystal project structure, or any part of it during lifetime of project
  • kgen - Kemalyst command line tool for console, init, generate (scaffolding), and watch.
  • libgen - Automatic bindings generator configured using JSON/YAML files
  • skaf - Scaffolding for Kemal
  • wasp - Static Site Generator

Queue

Routing

  • beryl - Action-focused HTTP routing library
  • crouter - A standalone router
  • crystal-routing - Extensible library to deal with http request and string based routing
  • router-simple.cr - Simple path router
  • router.cr - Minimum but powerful http router for HTTP::Server
  • toro - Tree Oriented Routing

Scheduling

Science and Data analysis

  • chizge - A Network (Graph) Analysis library, inspired by NetworkX
  • crystal-learn - Sklearn-like machine-learning library
  • machine - Simple machine learning algorithm
  • predict.cr - Satellite prediction library using the sgp4 model
  • scorystal - Scoring API for PMML - supports RF and GBM
  • stats - An expressive implementation of statistical distributions

Search

  • hermes - Data Mapper pattern implementation for ElastiSearch
  • query-builder - Sql Query Builder library
  • query.cr - Query abstraction
  • soegen - Elasticsearch client for Crystal similar to the stretcher gem for ruby

Task management

  • cake - Production-ready Make-like utility tool
  • crake - Rake-like build utility library. It is just a library, so it does not provide CLI
  • lake - Rake-like task management for Crystal programs
  • sam - Another one Rake-like task manager with namespacing and arguments system

Template Engine

  • Bunny - A simple HTML templating language for Crystal, same syntax as erb
  • crikey - Templating engine inspired by Hiccup
  • crustache - {{Mustache}} for Crystal
  • Kilt - Abstraction layer for template engines
  • Slang - Lightweight, terse, templating language inspired by Ruby's Slim
  • teeplate - A library for rendering multiple template files
  • temel - Extensible HTML::Builder alternative for Crystal, supports custom tag definitions

Testing

Third-party APIs

Virtualization

Web Frameworks

  • amatista - A web framework to create quick applications
  • amber - Open source efficient and cohesive web application framework
  • amethyst - A Rails inspired web-framework
  • carbon-crystal - A framework with Rails in mind
  • chocolate - Simple web framework and template engine
  • frost - Full featured MVC Web Framework, largely inspired by Ruby on Rails
  • iceberg - A full-stack web framework
  • kemal - Lightning Fast, Super Simple web framework. Inspired by Sinatra
  • kemalyst - A Rails like framework inspired by Kemal but includes the kitchen sink
  • lattice-core - A WebSocket-first object-oriented framework (based on Kemal)
  • mustafa - Simple MVC framework

Web Servers

  • fast-http-server - Super fast, zero configuration command line HTTP Server
  • kamber - Blog server based on Kemal
  • prax.cr - Rack proxy server for development
  • serve - Command line static HTTP server

Community

Resources

Official Documentation Translations

Services and Apps

Tools

DevOps

Editor Plugins

Shell plugins