Coder Social home page Coder Social logo

nbulaj / awesome-crystal Goto Github PK

View Code? Open in Web Editor NEW

This project forked from veelenga/awesome-crystal

0.0 1.0 0.0 775 KB

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

Home Page: http://awesomelists.top/#/repos/veelenga/awesome-crystal

License: MIT License

Crystal 100.00%

awesome-crystal's Introduction

awesome-crystal

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 the community.

Search Crystal Shards or follow announcements Crystal [ANN] for more.

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

Algorithms and Data structures

  • aho_corasick - AhoCorasick algorithm
  • bisect - Inserting values into a sorted array
  • bitfields - Pure Crystal implementation of BitFields. Handles encoding/decoding of bytes.
  • crie - Compile-time Trie
  • CrOTP - HOTP and TOTP implementation for two factor authentication
  • crystal-diff - A Crystal sequence differencing implementation
  • 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
  • graphlb - Collection of graph datastructure and algorithms
  • hash_ring - An Implementation of Consistent Hash Ring
  • haversine - An Implementation of the Haversine formula
  • 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
  • murmur3 - Implementation of Murmur3 hash algorithm used by Cassandra
  • oak - A flexible Radix Tree implementation
  • radix - Radix Tree implementation
  • ternary_search_tree - Ternary Search Tree

Api Builders

Blockchain

C bindings

Caching

  • bloom_filter - Implementation of Bloom filter
  • bojack - A non-reliable in-memory key-value store
  • cache-hash - A key/value store where entries expire after a specified interval
  • crystal-memcached - Implementation of a memcached client
  • Nuummite - A tiny persistent embedded key-value store

CLI Builders

  • admiral - A robust DSL for writing command line interfaces
  • cli - Library for building command-line interface applications
  • clicr - A simple declarative command line interface builder
  • clim - Slim command line interface builder
  • commander - Command-line interface builder
  • completion - Easy command line completion engine
  • optarg - Yet another library for parsing command-line options and arguments
  • OptionParser - command-line options processing (Crystal stdlib)

CLI Utils

  • cride - A light CLI text editor/IDE
  • 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
  • terminal_table.cr - Simple ASCII table generator
  • terminimal - A tiny CLI toolkit for building terminal apps for humans
  • todo - Todo list working in command line

Code Analysis and Metrics

  • ameba - A static code analysis tool
  • trashman - A simple memory profiler for Crystal applications

Compression

  • brotli.cr - Bindings to the Google brotli compression library
  • Crystar - Readers and writers of Tar archive format
  • Gzip - readers and writers of gzip format (Crystal stdlib)
  • snappy - Snappy compression format reader/writer for Crystal
  • xz - Bindings to the xz (lzma) compression library
  • 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
  • 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
  • money - Handling money and currency conversion with ease (almost complete port of RubyMoney)
  • 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
  • sass.cr - Compile SASS/SCSS to CSS (libsass binding)
  • time_format.cr - Convert time in human readable format with ease
  • turkish-number - Turn integers into the Turkish words
  • wkhtmltopdf-crystal - Bindings / wrapper for libwkhtmltox (HTML to PDF / image converter)

Cryptography

  • openssl.cr - This library provides binding for OpenSSL 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
  • 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
  • INI - INI file parser (Crystal stdlib)
  • JSON - parsing and generating JSON documents (Crystal stdlib)
  • JSON tools - An implementation of JSON Patch and Pointer RFC's
  • maxminddb.cr - MaxMindDB reader
  • toml.cr - TOML parser
  • XML - parsing and generating XML documents (Crystal stdlib)
  • YAML - parsing and generating YAML documents (Crystal stdlib)
  • zq - Command-line ZPL processor

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/Clients

Database Tools

  • micrate - Database migration tool
  • migrate - A simpler database migration tool with transactions
  • migro - A database migration tool that allows migrations to be specified in either YAML or raw SQL

Debugging

  • debug.cr - debug!(…) macro for pp-style debugging

Dependency Injection

  • syringe - A simple and basic dependency injection shard for crystal

Development Tools

  • docker-crystal - Docker wrapper for the Crystal CLI
  • 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
  • Warden - Watches files, run command and a git command if succeed on file changes
  • watcher - Watch file changes using File.stat

Email

  • carbon - Fun, testable, and adapter-based email library
  • crystal-email - Simple e-mail sending library
  • CrystalEmail - A RFC compliant Email validator
  • devmail - A combined SMTP/POP3-server with volatile mail storage
  • sendgrid.cr - Simple Sendgrid Client

Environment Management

Examples and funny stuff

Feature Flipping

  • can_use - It is a minimalist feature toggle/flag for crystal based on yaml
  • flipper - Feature flipping/flags/rollouts. Supports multiple backends

Framework Components

Game Development

  • cray - Bindings for raylib, an easy-to-use game development library
  • CrSFML - Bindings to SFML multimedia/game library
  • crystal-chipmunk - Bindings for Chipmunk, a fast and lightweight 2D game physics library
  • glove - A library for gaming development
  • inari - A collection of games using Glove as the game engine
  • mos_game - Mini Offline Singleplayer game

GUI library

  • hedron - An extendable GUI library, with markup language capabilities
  • libui.cr - Bindings for libui
  • qt5.cr - Qt5 bindings for Crystal, based on Bindgen

HTML Builders

  • form_builder.cr - Dead simple HTML form builder for Crystal with built-in support for many popular UI libraries such as Bootstrap
  • html_builder - DSL for creating HTML

HTML/XML Parsing

HTTP

  • arachnid - Powerful web scraping framework
  • 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
  • cryload - HTTP benchmarking tool
  • halite - Crystal HTTP Requests with a chainable REST API, built-in sessions and loggers
  • helmet - Set security-related HTTP headers
  • 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
  • http-protection - Protection against typical web attacks
  • http2 - HTTP/2 Protocol Implementation
  • HTTP::Client - HTTP client (Crystal stdlib)
  • HTTP::Server - HTTP server (Crystal stdlib)
  • HTTP::WebSocket - HTTP WebSocket client (Crystal stdlib)
  • keyer_cr - Adds HTTP GET/POST parameter parsing as a Hash-like object
  • ngrok.cr - Ngrok wrapper
  • params - The strongly-typed HTTP params parsing module
  • resp-crystal - Lightweight RESP client
  • sse.cr - Server-Sent Events client

Image processing

Implementations/Compilers

  • charly - Charly Programming Language
  • cibyl - Lightweight curly-bracket language which compiles to Ruby and Crystal
  • 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
  • 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
  • NuummiteOS - An OS written in Crystal as a Proof of Concept
  • runic-lang - In-design toy language

Logging and monitoring

Machine Learning

Markdown/Text Processors

  • html-pipeline - HTML processing filters and utilities
  • markd - Yet another markdown parser built for speed, Compliant to CommonMark specification

Misc

  • aasm.cr - Easy to use finite state machine for Crystal classes
  • any_hash.cr - Recursive Hash with better JSON::Any included
  • atomic_write.cr - Library for writing or apppending files atomically
  • 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
  • compiled_license - Compiles licenses into binary for complience with MIT when copying binary to system or container without the code
  • containerregistry.cr - Library for working with container registries
  • crystal-binary_parser - Binary parser
  • crystal-web-framework-stars - Web frameworks for Crystal, most starred on Github
  • crz - Functional programming library
  • emoji.cr - Emoji library
  • hoop - Building native OSX apps
  • i18n.cr - Internationalization shard
  • immutable - Implementation of thread-safe, persistent, immutable collections
  • inflector.cr - Singularize, pluralize, camelize, etc (port from ActiveSupport)
  • lirith - Graphics engine
  • m3u8 - Generate and parse m3u8 playlists for HTTP Live Streaming
  • manual-generator - Tool to generate PDF manuals from documentation sites
  • message_verifier.cr - Verify and generate Rails ActiveSupport::MessageVerifier signed tokens
  • monads - Monad implementation
  • pangu.cr - Paranoid text spacing in Crystal
  • pinger - Ping IP addresses and DNS entries without requiring sudo
  • port_midi - Crystal C bindings for the PortMIDI cross-platform MIDI I/O library
  • raytracer - CPU Raytracer with examples
  • retriable.cr - Simple DSL to retry failed code blocks
  • tren - Give your SQL some love
  • ulid - Universally Unique Lexicographically Sortable Identifier (ULID)
  • zaru_crystal - Filename sanitization

Network Protocols

Networking

ORM/ODM Extensions

  • clear - ORM specialized to PostgreSQL only but with advanced features
  • crecto - Database wrapper, based on Ecto
  • granite - ORM for Postgres, Mysql, Sqlite
  • jennifer.cr - Active Record pattern implementation with flexible query chainable builder and migration system
  • ohm-crystal - Object-hash mapping library for Redis
  • onyx-sql - DB-agnostic SQL ORM with beautiful DSL and type-safe Query builder
  • record - Type safe querying, saving and updating
  • redis-tsv.cr - Import and export data from Redis in TSV format
  • rethinkdb-orm - ORM for RethinkDB / RebirthDB
  • stal-crystal - Set algebra solver for Redis
  • topaz - A simple and useful db wrapper

Package Management

  • CRelease - Version and git tag manager that makes shard releases easy
  • shards - Dependency manager for the Crystal

Processes and Threads

  • await_async - Add keywords await & async in Crystal Lang
  • crystal-futures - Future type implementation
  • neph - A modern command line job processor that can execute jobs concurrently
  • promise - A Promise implementation with type inference

Project Generators

  • bindgencr - Generator of bindings based on castxml output
  • crystal_lib - Automatic binding generator for native libraries
  • fez - A Kemal application generator
  • kgen - Kemalyst command line tool for console, init, generate (scaffolding), and watch.
  • libgen - Automatic bindings generator configured using JSON/YAML files
  • wasp - Static Site Generator

Queues and Messaging

  • amqp.cr - AMQP 0.9.1 client with RabbitMQ extensions
  • dispatch - In memory asynchronous job processing
  • mosquito - Redis backed periodic and ad hoc job processing
  • NATS.io - NATS client
  • sidekiq.cr - Simple, efficient job processing

Routing

  • crouter - A standalone router
  • orion - A minimal, rails-esque routing library
  • router.cr - Minimum but powerful http router for HTTP::Server
  • toro - Tree Oriented Routing

Scheduling

  • cron_scheduler - Job scheduler with crontab patterns
  • 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

  • linalg - Linear algebra library inspired by MATLAB and SciPy.linalg
  • predict.cr - Satellite prediction library using the sgp4 model
  • 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

Serverless Computing

  • crystal_openfaas - Template to enable crystal as first class citizens in OpenFaaS
  • FaaStRuby - Serverless Software Development Platform for Ruby and Crystal.
  • gcf.cr - Managed execution of Crystal in Google Cloud Functions

System

  • baked_file_system - Virtual file system implementation
  • hardware - Get CPU, Memory and Network informations of the running OS and its processes
  • rcpu - A virtual machine emulator and assembler

Task management

  • cake - Production-ready Make-like utility tool
  • sam - Another one Rake-like task manager with namespacing and arguments system

Template Engine

  • crinja - An implementation of the Jinja2 template engine
  • crustache - {{Mustache}} for Crystal
  • ECR (Embedded Crystal) - compile time template language which uses plain crystal expressions (Crystal stdlib)
  • 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

  • coverage – Generate cover report for your crystal code
  • crotest - A tiny and simple test framework
  • crystal-clear - Design by Contract Library
  • crytic - Mutation testing framework
  • LuckyFlow - Automated browser tests similar to Capybara
  • mass-spec - Web API testing library
  • microtest - Small opinionated testing library focusing on power asserts
  • minitest.cr - Library for unit tests and assertions
  • mocks.cr - Mocking library for Crystal
  • Spec - spec framework (Crystal stdlib)
  • spectator - Feature rich spec framework that uses the modern expect syntax
  • timecop.cr - Library for mocking with Time.now. Inspired by the timecop ruby gem
  • vcr - A HTTP capture and replay implementation for crystal
  • webdriver_pump - Page Object library. Inspired by Ruby's WatirPump
  • webmock.cr - Library for stubbing HTTP::Client requests

Third-party APIs

Validation

  • accord - Shareable validation library for Crystal Objects
  • CrSerializer - Extensible annotation based serialization/deserialization/validation library
  • denetmen - Micro check library that patches Crystal stdlib
  • validations - Validations mixin

Web Frameworks

  • amber - Open source efficient and cohesive web application framework
  • athena - Modular, annotation based, API oriented framework with built in param conversion
  • kemal - Lightning Fast, Super Simple web framework. Inspired by Sinatra
  • lattice-core - A WebSocket-first object-oriented framework (based on Kemal)
  • lucky - Catch bugs early, forget about most performance issues, and spend more time on code instead of debugging and writing tests
  • onyx-rest - REST API framework with type-safe params and separate business and rendering layers, based on onyx-http
  • raze - Modular, light web framework
  • spider-gazelle - A Rails esque web framework with a focus on speed and extensibility

Web Servers

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

Community

Unofficial

Resources

Official Documentation Translations

Services and Apps

  • carc.in - A web service that runs your code and displays the result
  • cry - 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
  • crystalshards.herokuapp.com, crystalshards.xyz - Web services that list all available Crystal shards
  • Crystular - Regular expression tester
  • DeBot - IRC bot written in Crystal
  • Fluence - WYSIWYG wiki using markdown and Git
  • icr - Interactive console for Crystal (like IRB for Ruby)
  • Invidious - Invidious is an alternative front-end to YouTube
  • mpngin - A URL shortener with simple stats
  • nes - A NES emulator
  • 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
  • wikicr - Wiki using git to manage revisions

Tools

DevOps

Editor Plugins

Shell plugins

  • crun - Crystal Run : shebang wrapper for Crystal
  • crystal-zsh - .oh-my-zsh plugin

awesome-crystal's People

Contributors

adlerhsieh avatar aisrael avatar blocknotes avatar c910335 avatar chris-huxtable avatar didactic-drunk avatar docelic avatar elorest avatar faustinoaq avatar greyblake avatar hugoabonizio avatar icyleaf avatar izniburak avatar j8r avatar jkthorne avatar jwaldrip avatar mamantoha avatar nephos avatar paulcsmith avatar rx14 avatar samueleaton avatar sija avatar stakach avatar superpaintman avatar tbrand avatar tobyapi avatar tpei avatar veelenga avatar vjdhama avatar vladfaust avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.