DirDev.com

Awesome JavaScript Awesome

A collection of awesome browser-side JavaScript libraries, resources and shiny things.


Package Managers

Host the JavaScript libraries and provide tools for fetching and packaging them.

  • npm - npm is the package manager for JavaScript.
  • Bower - A package manager for the web.
  • component - Client package management for building better web applications.
  • spm - Brand new static package manager.
  • jam - A package manager using a browser-focused and RequireJS compatible repository.
  • jspm - Frictionless browser package management.
  • Ender - The no-library library.
  • volo - Create front end projects from templates, add dependencies, and automate the resulting projects.
  • Duo - Next-generation package manager that blends the best ideas from Component, Browserify and Go to make organizing and writing front-end code quick and painless.
  • yarn - Fast, reliable, and secure dependency management.
  • pnpm - Fast, disk space efficient package manager.

Component Management

  • Bit - Create, find and reuse components (React, Angular, Node etc.) across applications.

Loaders

Module or loading system for JavaScript.

  • RequireJS - A file and module loader for JavaScript.
  • browserify - Browser-side require() the node.js way.
  • SeaJS - A Module Loader for the Web.
  • HeadJS - The only script in your HEAD.
  • curl - A small, fast, extensible module loader that handles AMD, CommonJS Modules/1.1, CSS, HTML/text, and legacy scripts.
  • lazyload - Tiny, dependency-free async JavaScript and CSS loader.
  • script.js - Asynchronous JavaScript loader and dependency manager.
  • systemjs - AMD, CJS & ES6 spec-compliant module loader.
  • LodJS - Module loader based on AMD.
  • ESL - Module loader browser first, support lazy define and AMD.
  • modulejs - Lightweight JavaScript module system.

Bundlers

  • webpack - Packs CommonJs/AMD modules for the browser.
  • Rollup - Next-generation ES6 module bundler.
  • Brunch - Fast front-end web app build tool with simple declarative config.
  • Parcel - Blazing fast, zero configuration web application bundler.
  • Microbundle - Zero-configuration bundler for tiny modules.
  • FuseBox - A bundler that does it right
  • Snowpack - A lightning-fast frontend build tool, designed for the modern web.

Type Checkers

  • TypeScript - A typed superset of JavaScript that compiles to plain JavaScript.
  • Flow.js - A static type checker for JavaScript from Facebook.
  • Hegel - A static type checker for JavaScript with a bias on type inference an strong type system.
  • TypL - the JavaScript Type Linter with a bias on type inference.
  • Hindley Milner Definitions - runtime type checking for JavaScript functions using Haskell-alike Hindley Milner type signatures.

Testing Frameworks

Frameworks

  • mocha - Simple, flexible, fun JavaScript test framework for node.js & the browser.
  • jasmine - DOM-less simple JavaScript testing framework.
  • qunit - An easy-to-use JavaScript Unit Testing framework.
  • jest - Painless JavaScript Unit Testing.
  • prova - Node & Browser test runner based on Tape and Browserify
  • DalekJS - Automated cross browser functional testing with JavaScript
  • Protractor - Protractor is an end-to-end test framework for AngularJS applications.
  • tape - Tap-producing test harness for node and browsers.
  • TestCafe - Automated browser testing for the modern web development stack.
  • ava - ๐Ÿš€ Futuristic JavaScript test runner
  • Cypress - Complete end-to-end testing framework for anything that runs in a browser and beyond.

Assertion

  • chai - BDD / TDD assertion framework for node.js and the browser that can be paired with any testing framework.
  • Enzyme - Enzyme is a JavaScript Testing utility for React that makes it easier to assert, manipulate, and traverse your React Components' output.
  • react testing library - Simple and complete React DOM testing utilities that encourage good testing practices.
  • Sinon.JS - Test spies, stubs, and mocks for JavaScript.
  • expect.js - Minimalistic BDD-style assertions for Node.JS and the browser.
  • proxyquire - Stub nodejs's require.

Coverage

  • istanbul - Yet another JS code coverage tool.
  • blanket - A simple code coverage library for JavaScript. Designed to be easy to install and use, for both browser and nodejs.
  • JSCover - JSCover is a tool that measures code coverage for JavaScript programs.

Runner

  • phantomjs - Scriptable Headless WebKit.
  • slimerjs - A PhantomJS-like tool running Gecko.
  • casperjs - Navigation scripting & testing utility for PhantomJS and SlimerJS.
  • zombie - Insanely fast, full-stack, headless browser testing using node.js.
  • totoro - A simple and stable cross-browser testing tool.
  • karma - Spectacular Test Runner for JavaScript.
  • nightwatch - UI automated testing framework based on node.js and selenium webdriver.
  • intern - A next-generation code testing stack for JavaScript.
  • yolpo - A statement-by-statement JavaScript interpreter in the browser.
  • puppeteer - Headless Chrome Node.js API by official Google Chrome team.
  • webdriverio - Next-gen WebDriver test automation framework for Node.js.
  • taiko - A Node.js library with a simple API to automate Chromium based browsers.
  • Playwright - Node.js library to automate Chromium, Firefox and WebKit with a single API.

QA Tools

  • prettier - Prettier is an opinionated code formatter.
  • JSHint - JSHint is a tool that helps to detect errors and potential problems in your JavaScript code.
  • jscs - JavaScript Code Style checker.
  • jsfmt - For formatting, searching, and rewriting JavaScript.
  • jsinspect - Detect copy-pasted and structurally similar code.
  • buddy.js - Magic number detection for JavaScript.
  • ESLint - A fully pluggable tool for identifying and reporting on patterns in JavaScript.
  • JSLint - High-standards, strict & opinionated code quality tool, aiming to keep only good parts of the language.
  • JavaScript Standard Style - Opinionated, no-configuration style guide, style checker, and formatter
  • Pre-evaluate code at buildtime - Pre-evaluate your front end javascript code at build-time
  • JS-Beautifier - Npm cli and library to format JS code.
  • husky - Prevents bad git commit, git push and more.

MVC Frameworks and Libraries

  • angular.js - HTML enhanced for web apps. (deprecated)
  • angular - Angular is a development platform for building mobile and desktop web applications using Typescript/JavaScript and other languages.
  • aurelia - A JavaScript client framework for mobile, desktop and web.
  • backbone - Give your JS App some Backbone with Models, Views, Collections, and Events.
  • ember.js - A JavaScript framework for creating ambitious web applications.
  • meteor - An ultra-simple, database-everywhere, data-on-the-wire, pure-javascript web framework.
  • ractive - Next-generation DOM manipulation.
  • vue - Intuitive, fast & composable MVVM for building interactive interfaces.
  • svelte - Svelte is a new way to build web applications. It's a compiler that takes your declarative components and converts them into efficient JavaScript that surgically updates the DOM.
  • knockout - Knockout makes it easier to create rich, responsive UIs with JavaScript.
  • spine - Lightweight MVC library for building JavaScript applications.
  • espresso.js - A minimal JavaScript library for crafting user interfaces.
  • canjs - Can do JS, better, faster, easier.
  • react - A library for building user interfaces. It's declarative, efficient, and extremely flexible. Works with a Virtual DOM.
  • hyperapp - 1kb JavaScript library for building frontend applications.
  • preact - Fast 3kb React alternative with the same ES6 API. Components & Virtual DOM.
  • nativescript - Build truly native cross-platform iOS and Android apps with JavaScript.
  • react-native - A framework for building native apps with React.
  • riot - React-like library, but with very small size.
  • thorax - Strengthening your Backbone.
  • chaplin - An architecture for JavaScript applications using the Backbone.js library.
  • marionette - A composite application library for Backbone.js that aims to simplify the construction of large scale JavaScript applications.
  • ripple - A tiny foundation for building reactive views.
  • rivets - Lightweight and powerful data binding + templating solution.
  • derby - MVC framework making it easy to write realtime, collaborative applications that run in both Node.js and browsers.
  • way.js - Simple, lightweight, persistent two-way databinding.
  • mithril.js - Mithril is a client-side MVC framework (Light-weight, Robust, Fast).
  • jsblocks - jsblocks is better MV-ish framework.
  • LiquidLava - Transparent MVC framework for building user interfaces.
  • feathers - A minimalist real-time JavaScript framework for tomorrow's apps.
  • Keo - Functional stateless React components with Shadow DOM support.
  • atvjs - Blazing fast Apple TV application development using pure JavaScript.
  • Alpine.js - offers you the reactive and declarative nature of big frameworks like Vue or React at a much lower cost.
  • inferno - ๐Ÿ”ฅ An extremely fast, React-like JavaScript library for building modern user interfaces.
  • FoalTS - Elegant and all-inclusive Node.JS framework for building web applications (TypeScript).
  • Lucia - 3kb library for tiny web apps.
  • Adonis - The Node.js Framework highly focused on developer ergonomics, stability and confidence.
  • GrapesJS - Free and Open source Web Builder Framework. Next generation tool for building templates without coding.
  • Rete.js - A modular framework for visual programming allows to create node based editor in browser.
  • litegraph.js - A graph node engine and editor similar to PD or UDK Blueprints, comes with its own editor in HTML5 Canvas2D.
  • Drawflow - This allow you to create data flows easily and quickly.
  • Blockly - A library that adds a visual code editor to web and mobile apps by Google.
  • Million - <1kb compiler-focused virtual DOM. It's fast!

Node-Powered CMS Frameworks

  • KeystoneJS - powerful CMS and web app framework.
  • Reaction Commerce - reactive CMS, real-time architecture and design.
  • Ghost - simple, powerful publishing platform.
  • Apostrophe - CMS with content editing and essential services.
  • We.js - framework for real time apps, sites or blogs.
  • Hatch.js - CMS platform with social features.
  • TaracotJS - fast and minimalist CMS based on Node.js.
  • Nodizecms - CMS for CoffeeScript lovers.
  • Cody - CMS with WSYWYG editor.
  • PencilBlue - CMS and blogging platform.
  • Strapi - Open source Node.js Headless CMS to easily build customisable APIs.
  • Factor - The Javascript CMS

Templating Engines

Templating engines allow you to perform string interpolation.

  • mustache.js - Minimal templating with {{mustaches}} in JavaScript.
  • handlebars.js - An extension to the Mustache templating language.
  • nunjucks - A rich and powerful templating language for JavaScript from Mozilla.
  • hogan.js - A compiler for the Mustache templating language.
  • doT - The fastest + concise JavaScript template engine for nodejs and browsers.
  • dustjs - Asynchronous templates for the browser and node.js.
  • eco - Embedded CoffeeScript templates.
  • JavaScript-Templates - < 1KB lightweight, fast & powerful JavaScript templating engine with zero dependencies.
  • t.js - A tiny JavaScript templating framework in ~400 bytes gzipped.
  • Pug - Robust, elegant, feature rich template engine for nodejs. (formerly known as Jade)
  • EJS - Effective JavaScript templating.
  • xtemplate - eXtensible Template Engine lib for node and the browser
  • marko - A fast, lightweight, HTML-based templating engine for Node.js and the browser with async, streaming, custom tags and CommonJS modules as compiled output.
  • swig - (Archived) A simple, powerful, and extendable Node.js and browser-based JavaScript template engine.

Articles and Posts

Data Visualization

Data visualization tools for the web.

  • d3 - A JavaScript visualization library for HTML and SVG.
  • metrics-graphics - A library optimized for concise, principled data graphics and layouts.
  • three.js - JavaScript 3D library.
  • Chart.js - Simple HTML5 Charts using the <canvas> tag.
  • paper.js - The Swiss Army Knife of Vector Graphics Scripting โ€“ Scriptographer ported to JavaScript and the browser, using HTML5 Canvas.
  • fabric.js - JavaScript Canvas Library, SVG-to-Canvas (& canvas-to-SVG) Parser.
  • peity - Progressive bar, line and pie charts.
  • raphael - JavaScript Vector Library.
  • echarts - Enterprise Charts.
  • visjs - Multiple Libraries for dynamic, browser-based data visualization.
  • two.js - A renderer agnostic two-dimensional drawing api for the web.
  • g.raphael - Charts for Raphaรซl.
  • sigma.js - A JavaScript library dedicated to graph drawing.
  • arbor - A graph visualization library using web workers and jQuery.
  • cubism - A D3 plugin for visualizing time series.
  • dc.js - Multi-Dimensional charting built to work natively with crossfilter rendered with d3.js
  • vega - A visualization grammar.
  • processing.js - Processing.js makes your data visualizations work using web standards and without any plug-ins.
  • envisionjs - Dynamic HTML5 visualization.
  • rickshaw - JavaScript toolkit for creating interactive real-time graphs.
  • flot - Attractive JavaScript charts for jQuery.
  • morris.js - Pretty time-series line graphs.
  • nvd3 - Build re-usable charts and chart components for d3.js.
  • svg.js - A lightweight library for manipulating and animating SVG.
  • heatmap.js - JavaScript Library for HTML5 canvas based heatmaps.
  • jquery.sparkline - A plugin for the jQuery JavaScript library to generate small sparkline charts directly in the browser.
  • trianglify - Low poly style background generator with d3.js.
  • d3-cloud - Create word clouds in JavaScript.
  • d4 - A friendly reusable charts DSL for D3.
  • dimple.js - Easy charts for business analytics powered by d3.
  • chartist-js - Simple responsive charts.
  • epoch - A general purpose real-time charting library.
  • c3 - D3-based reusable chart library.
  • BabylonJS - A framework for building 3D games with HTML 5 and WebGL.
  • recharts - Redefined chart library built with React and D3.
  • GraphicsJS - A lightweight JavaScript graphics library with the intuitive API, based on SVG/VML technology.
  • mxGraph - Diagramming library that enables interactive graph and charting applications to be quickly created that run natively in any major browser that is supported by its vendor.
  • Frappe Charts - GitHub-inspired simple and modern SVG charts for the web with zero dependencies.
  • Frappe Gantt - A simple, interactive, modern gantt chart library for the web.
  • G2 - A highly interactive data-driven visualization grammar for statistical charts.
  • G2Plot - An interactive and responsive charting library. Based on the grammar of graphics.
  • Cytoscape.js - A fully featured graph theory library.
  • cola.js - library for arranging your HTML5 documents and diagrams using constraint-based optimization techniques
  • jointjs - Diagramming library to create static diagrams or fully interactive diagramming tools.
  • vizzu - Library for animated data visualizations and data stories.

There're also some great commercial libraries, like amchart, anychart, plotly, highchart, and lightning chart.

Timeline

  • TimelineJS v3 - A Storytelling Timeline built in JavaScript.
  • timesheet.js - JavaScript library for simple HTML5 & CSS3 time sheets.

Spreadsheet

  • HANDSONTABLE - Handsontable is a JavaScript/HTML5 Spreadsheet Library for Developers
  • Frappe Datatable - Frappe DataTable is a simple, modern and interactive datatable library for displaying tabular data.
  • Luckysheet - Luckysheet is an online spreadsheet like excel that is powerful, simple to configure, and completely open source.

Editors

  • ace - Ace (Ajax.org Cloud9 Editor).
  • CodeMirror - In-browser code editor.
  • esprima - ECMAScript parsing infrastructure for multipurpose analysis.
  • quill - A cross browser rich text editor with an API.
  • medium-editor - Medium.com WYSIWYG editor clone.
  • pen - enjoy live editing (+markdown).
  • jquery-notebook - A simple, clean and elegant text editor. Inspired by the awesomeness of Medium.
  • bootstrap-wysiwyg - Tiny bootstrap-compatible WYSIWYG rich text editor.
  • ckeditor-releases - The best web text editor for everyone.
  • editor - A markdown editor. still on development.
  • EpicEditor - An embeddable JavaScript Markdown editor with split fullscreen editing, live previewing, automatic draft saving, offline support, and more.
  • jsoneditor - A web-based tool to view, edit and format JSON.
  • vim.js - JavaScript port of Vim with a persistent ~/.vimrc.
  • Squire - HTML5 rich text editor.
  • TinyMCE - The JavaScript Rich Text editor.
  • trix - A rich text editor for everyday writing. By Basecamp.
  • Trumbowyg - A lightweight and amazing WYSIWYG JavaScript editor.
  • Draft.js - A React framework for building text editors.
  • bootstrap-wysihtml5 - Simple, beautiful wysiwyg editor
  • wysihtml5 - Open source rich text editor based on HTML5 and the progressive-enhancement approach. Uses a sophisticated security concept and aims to generate fully valid HTML5 markup by preventing unmaintainable tag soups and inline styles.
  • raptor-editor - Raptor, an HTML5 WYSIWYG content editor!
  • popline - Popline is an HTML5 Rich-Text-Editor Toolbar.
  • Summernote - Super simple WYSIWYG editor.

Documentation

  • DevDocs is an all-in-one API documentation reader with a fast, organized, and consistent interface.
  • dexy is a free-form literate documentation tool for writing any kind of technical document incorporating code.
  • docco is a quick-and-dirty, hundred-line-long, literate-programming-style documentation generator.
  • styledocco generates documentation and style guide documents from your stylesheets.
  • Ronn builds manuals. It converts simple, human readable textfiles to roff for terminal display, and also to HTML for the web.
  • dox is a JavaScript documentation generator written with node. Dox no longer generates an opinionated structure or style for your docs, it simply gives you a JSON representation, allowing you to use markdown and JSDoc-style tags.
  • jsdox is a JSDoc3 to Markdown documentation generator.
  • ESDoc is a good documentation generator for JavaScript.
  • YUIDoc is a Node.js application that generates API documentation from comments in source, using a syntax similar to tools like Javadoc and Doxygen.
  • coddoc is a jsdoc parsing library. Coddoc is different in that it is easily extensible by allowing users to add tag and code parsers through the use of coddoc.addTagHandler and coddoc.addCodeHandler. coddoc also parses source code to be used in APIs.
  • sphinx a tool that makes it easy to create intelligent and beautiful documentation
  • Using JSDoc
  • Beautiful docs is a documentation viewer based on markdown files.
  • documentation.js - API documentation generator with support for ES2015+ and flow annotation.
  • jsduck - API documentation generator made for Sencha JavaScript frameworks, but can be used for other frameworks too.
  • codecrumbs is a visual tool for learning and documenting a codebase by putting breadcrumbs in source code.

Files

Libraries for working with files.

  • Papa Parse - A powerful CSV library that supports parsing CSV files/strings and also exporting to CSV.
  • jBinary - High-level I/O (loading, parsing, manipulating, serializing, saving) for binary files with declarative syntax for describing file types and data structures.
  • diff2html - Git diff output parser and pretty HTML generator.
  • jsPDF - JavaScript PDF generation.
  • PDF.js - PDF Reader in JavaScript.

Functional Programming

Functional programming libraries to extend JavaScriptโ€™s capabilities.

  • underscore - JavaScript's utility _ belt.
  • lodash - A utility library delivering consistency, customization, performance, & extras.
  • Sugar - A JavaScript library for working with native objects.
  • lazy.js - Like Underscore, but lazier.
  • ramda - A practical functional library for JavaScript programmers.
  • mout - Modular JavaScript Utilities.
  • mesh - Streamable data synchronization utility.
  • preludejs - Hardcore Functional Programming for JavaScript.
  • rambda - Faster and smaller alternative to Ramda.
  • fxts - Lazy evaluation and concurrency.

Reactive Programming

Reactive programming libraries to extend JavaScriptโ€™s capabilities.

  • RxJS - A reactive programming library for JavaScript.
  • Bacon - FRP (functional reactive programming) library for JavaScript.
  • Kefir - FRP library for JavaScript inspired by Bacon.js and RxJS with focus on high performance and low memory consumption.
  • Highland - Re-thinking the JavaScript utility belt, Highland manages synchronous and asynchronous code easily, using nothing more than standard JavaScript and Node-like Streams.
  • Most.js - high performance FRP library.
  • MobX - TFRP library for simple, scalable state management.
  • Cycle.js - A functional and reactive JavaScript library for cleaner code.
  • concent - Definitely the โค๏ธ simplest but โšก๏ธ strongest state management for react, it is predictableใ€progressive and efficient.

Data Structure

Data structure libraries to build a more sophisticated application.

  • immutable-js - Immutable Data Collections including Sequence, Range, Repeat, Map, OrderedMap, Set and a sparse Vector.
  • mori - A library for using ClojureScript's persistent data structures and supporting API from the comfort of vanilla JavaScript.
  • buckets - A complete, fully tested and documented data structure library written in JavaScript.
  • hashmap - Simple hashmap implementation that supports any kind of keys.
  • ngraph.graph - Graph data structure in javascript.

Date

Date Libraries.

  • moment - Parse, validate, manipulate, and display dates in JavaScript.
  • moment-timezone - Timezone support for moment.js.
  • jquery-timeago - A jQuery plugin that makes it easy to support automatically updating fuzzy timestamps (e.g. "4 minutes ago").
  • timezone-js - Timezone-enabled JavaScript Date object. Uses Olson zoneinfo files for timezone data.
  • date - Date() for humans.
  • ms.js - Tiny millisecond conversion utility.
  • countdown.js - Super simple countdowns.
  • timeago.js - Simple library (less then 2kb) used to format date with *** time ago statement.
  • fecha - Lightweight date formatting and parsing (~2KB). Meant to replace parsing and formatting functionality of moment.js.
  • date-fns - Modern JavaScript date utility library.
  • map-countdown - A browser countdown built on top of the Google Maps.
  • dayjs - Day.js 2KB immutable date library alternative to Moment.js with the same modern API.
  • luxon - Luxon is a library for working with dates and times in JavaScript.

String

String Libraries.

  • voca - The ultimate JavaScript string library
  • selecting - A library that allows you to access the text selected by the user.
  • underscore.string - String manipulation extensions for Underscore.js JavaScript library.
  • string.js - Extra JavaScript string methods.
  • he - A robust HTML entity encoder/decoder written in JavaScript.
  • multiline - Multiline strings in JavaScript.
  • query-string - Parse and stringify URL query strings.
  • URI.js - JavaScript URL mutation library.
  • jsurl - Lightweight URL manipulation with JavaScript.
  • sprintf.js - A sprintf implementation.
  • url-pattern - Easier than regex string matching patterns for urls and other strings. Turn strings into data or data into strings.
  • plexis - Lo-fi, powerful, community-driven string manipulation library.

Number

  • Numeral-js - A JavaScript library for formatting and manipulating numbers.
  • chance.js - Random generator helper in JavaScript. Can generate numbers, strings etc.
  • odometer - Smoothly transitions numbers with ease.
  • accounting.js - A lightweight JavaScript library for number, money and currency formatting - fully localisable, zero dependencies.
  • money.js - A tiny (1kb) JavaScript currency conversion library, for web & nodeJS.
  • Fraction.js - A rational number library for JavaScript.
  • Complex.js - A complex number library for JavaScript.
  • Polynomial.js - A polynomials library for JavaScript.
  • Quaternion.js - A quaternion library for JavaScript

Storage

  • store.js - LocalStorage wrapper for all browsers without using cookies or flash. Uses localStorage, globalStorage, and userData behavior under the hood.
  • localForage - Offline storage, improved. Wraps IndexedDB, WebSQL, or localStorage using a simple but powerful API.
  • jStorage - jStorage is a simple key/value database to store data on browser side.
  • cross-storage - Cross domain local storage, with permissions.
  • basket.js - A script and resource loader for caching & loading scripts with localStorage.
  • bag.js - A caching script and resource loader, similar to basket.js, but with additional k/v interface and localStorage / websql / indexedDB support.
  • basil.js - The missing JavaScript smart persistent layer.
  • jquery-cookie - A simple, lightweight jQuery plugin for reading, writing and deleting cookies.
  • js-cookie - A simple, lightweight JavaScript API for handling browser cookies.
  • Cookies - JavaScript Client-Side Cookie Manipulation Library.
  • DB.js - Promise based IndexDB Wrapper library.
  • lawnchair.js - Simple client-side JSON storage.
  • sql.js - SQLite compiled to JavaScript through Emscripten.
  • pouchdb - Javascript db inspired by Apache CouchDB to run well within the browser.
  • crumbsjs - A lightweight vanilla ES6 cookies and local storage JavaScript library.
  • awesome-web-storage - Everything you need to know about client-side storage.
  • datavore - A small, fast, in-browser database engine written in JavaScript.
  • Hoodie - Offline First backend to work in browser without internet connectivity.
  • NeDB - Embedded Persistent database for Browsers, nw.js, electron.

Color

  • randomColor - A color generator for JavaScript.
  • chroma.js - JavaScript library for all kinds of color manipulations.
  • color - JavaScript color conversion and manipulation library.
  • colors - Smarter defaults for colors on the web.
  • PleaseJS - JavaScript Library for creating random pleasing colors and color schemes.
  • TinyColor - Fast, small color manipulation and conversion for JavaScript.
  • Vibrant.js - Extract prominent colors from an image.

I18n And L10n

Localization (l10n) and internationalization (i18n) JavaScript libraries.

  • i18next - internationalisation (i18n) with JavaScript the easy way.
  • polyglot - tiny i18n helper library.
  • babelfish - i18n with human friendly API and built in plurals support.
  • ttag - Modern javascript i18n localization library based on ES6 tagged templates and the good old GNU gettext.

Control Flow

  • async - Async utilities for node and the browser.
  • q - A tool for making and composing asynchronous promises in JavaScript.
  • step - An async control-flow library that makes stepping through logic easy.
  • contra - Asynchronous flow control with a functional taste to it.
  • Bluebird - fully featured promise library with focus on innovative features and performance.
  • when - A solid, fast Promises/A+ and when() implementation, plus other async goodies.
  • ObjectEventTarget - Provide a prototype that add support to event listeners (with same behavior of EventTarget from DOMElements available on browsers).
  • sporadic - Composable concurrency abstractions (such as streams, coroutines and Go-like channels) on top of promises, for Node and browser engines.

Routing

  • director - A tiny and isomorphic URL router for JavaScript.
  • page.js - Micro client-side router inspired by the Express router (~1200 bytes).
  • pathjs - Simple, lightweight routing for web browsers.
  • crossroads - JavaScript Routes.
  • davis.js - RESTful degradable JavaScript routing using pushState.
  • navaid - A navigation aid (aka, router) for the browser in 850 bytes~!

Security

  • DOMPurify - A DOM-only, super-fast, uber-tolerant XSS sanitizer for HTML, MathML and SVG.
  • js-xss - Sanitize untrusted HTML (to prevent XSS) with a configuration specified by a Whitelist.
  • xss-filters - Secure XSS Filters by Yahoo.
  • sanitize-html - sanitize-html provides a simple HTML sanitizer with a clear API.

Log

  • log - Console.log with style.
  • Conzole - A debug panel built in JavaScript that wraps JavaScript native console object methods and functionality in a panel displayed inside the page.
  • console.log-wrapper - Log to the console in any browser with clarity.
  • loglevel - Minimal lightweight logging for JavaScript, adding reliable log level methods to wrap any available console.log methods.
  • minilog โ€“ Lightweight client & server-side logging with Stream-API backends.
  • storyboard - Universal logging library + Chrome extension; it lets you see all client and server tasks triggered by a user action in a single place.

RegExp

  • RegEx101 - Online regex tester and debugger for JavaScript. Also supports Python, PHP and PCRE.
  • RegExr - HTML/JS based tool for creating, testing, and learning about Regular Expressions.

Voice Command

  • annyang - A JavaScript library for adding voice commands to your site, using speech recognition.
  • voix.js - A JavaScript library to add voice commands to your sites, apps or games.

API

  • axios - Promise based HTTP client for the browser and node.js.
  • bottleneck - A powerful rate limiter that makes throttling easy.
  • oauth-signature-js - JavaScript OAuth 1.0a signature generator for node and the browser.
  • amygdala - RESTful HTTP client for JavaScript powered web applications.
  • jquery.rest - A jQuery plugin for easy consumption of RESTful APIs.
  • Rails Ranger - An opinionated REST client for Ruby on Rails APIs.
  • wretch - A tiny wrapper built around fetch with an intuitive syntax.
  • Bearer.sh - Universal API client that supports OAuth / API Key / Basic / etc.
  • FarFetch - Modern Fetch API wrapper for simplicity, with concise file uploading.
  • Optic - Optic automatically documents and tests your APIs.
  • SWR - React Hooks library for remote data fetching.
  • React Query - Hooks for fetching, caching and updating asynchronous data in React.

Streaming

  • Tailor - Streaming layout service for front-end microservices, inspired by Facebook's BigPipe.

Vision Detection

  • tracking.js - A modern approach for Computer Vision on the web.
  • ocrad.js - OCR in JavaScript via Emscripten.

Machine Learning

  • ConvNetJS - Deep Learning in JavaScript. Train Convolutional Neural Networks (or ordinary ones) in your browser.
  • DN2A - Digital Neural Networks Architecture.
  • Brain.js - Neural networks in JavaScript.
  • Mind.js - A flexible neural network library.
  • Synaptic.js - Architecture-free neural network library for node.js and the browser.
  • TensorFlow.js - A JavaScript library for training and deploying ML models in the browser and on Node.js.
  • ml5.js - Friendly Machine Learning for the Web.
  • Synapses - Lightweight cross-platform Neural Network library.
  • m2cgen - A CLI tool to transpile trained classic ML models into a native JavaScript code with zero dependencies.

Browser Detection

  • bowser - a browser detector.

Operating System

  • os.js - An open-source web desktop platform with a window manager, application APIs, GUI toolkit, filesystem abstractions and much more.

Benchmark

  • benchmark.js - A benchmarking library. As used on jsPerf.com.
  • matcha - A caffeine driven, simplistic approach to benchmarking.

Code highlighting

  • Highlight.js - JavaScript syntax highlighter.
  • PrismJS - Lightweight, robust, elegant syntax highlighting.

Loading Status

Libraries for indicate load status.

  • Mprogress.js - Create Google Material Design progress linear bars.
  • NProgress - Slim progress bars for Ajax'y applications.
  • Spin.js - A spinning activity indicator.
  • progress.js - Create and manage progress bar for every objects on the page.
  • progressbar.js - Beautiful and responsive progress bars with animated SVG paths.
  • pace - Automatically add a progress bar to your site.
  • topbar - Tiny & beautiful site-wide progress indicator.
  • nanobar - Very lightweight progress bars. No jQuery.
  • PageLoadingEffects - Modern ways of revealing new content using SVG animations.
  • SpinKit - A collection of loading indicators animated with CSS.
  • Ladda - Buttons with built-in loading indicators.
  • css-loaders - A collection of loading spinners animated with CSS

Validation

  • Parsley.js - Validate your forms, frontend, without writing a single line of JavaScript.
  • jquery-validation - jQuery Validation Plugin.
  • validator.js - String validation and sanitization.
  • validate.js - Lightweight JavaScript form validation library inspired by CodeIgniter.
  • validatr - Cross Browser HTML5 Form Validation.
  • FormValidation - The best jQuery plugin to validate form fields. Formerly BootstrapValidator.
  • is.js - Check types, regexps, presence, time and more.
  • FieldVal - multipurpose validation library. Supports both sync and async validation.
  • Funval - Data validation using functions interfaces (support TypeScript).
  • vest - ๐Ÿฆบ Declarative form validation framework inspired by unit testing.

Keyboard Wrappers

  • mousetrap - Simple library for handling keyboard shortcuts in JavaScript.
  • keymaster - A simple micro-library for defining and dispatching keyboard shortcuts.
  • Keypress - A keyboard input capturing utility in which any key can be a modifier key.
  • KeyboardJS - A JavaScript library for binding keyboard combos without the pain of key codes and key combo conflicts.
  • jquery.hotkeys - jQuery Hotkeys lets you watch for keyboard events anywhere in your code supporting almost any key combination.
  • jwerty - Awesome handling of keyboard events.

Tours And Guides

  • intro.js - A better way for new feature introduction and step-by-step users guide for your website and project.
  • shepherd - Guide your users through a tour of your app.
  • bootstrap-tour - Quick and easy product tours with Twitter Bootstrap Popovers.
  • tourist - Simple, flexible tours for your app.
  • chardin.js - Simple overlay instructions for your apps.
  • pageguide - An interactive guide for web page elements using jQuery and CSS3.
  • hopscotch - A framework to make it easy for developers to add product tours to their pages.
  • joyride - jQuery feature tour plugin.
  • focusable - Set a spotlight focus on DOM element adding a overlay layer to the rest of the page.
  • driver.js - Powerful yet light-weight, vanilla JavaScript engine to drive the user's focus across the page

Notifications

  • iziToast - Elegant, responsive, flexible and lightweight notification plugin with no dependencies.
  • messenger - Growl-style alerts and messages for your app.
  • noty - jQuery notification plugin.
  • pnotify - JavaScript notifications for Bootstrap, jQuery UI, and the Web Notifications Draft.
  • toastr - Simple JavaScript toast notifications.
  • humane-js - A simple, modern, browser notification system.
  • smoke.js - Framework-agnostic styled alert system for JavaScript.
  • notie - Simple notifications and inputs with no dependencies.
  • notifire - Open-source notification infrastructure for products.

Sliders

  • Swiper - Mobile touch slider and framework with hardware accelerated transitions.
  • slick - The last carousel you'll ever need.
  • slidesJs - Is a responsive slideshow plug-in for JQuery(1.7.1+) with features like touch and CSS3 transitions
  • FlexSlider - An awesome, fully responsive jQuery slider plugin.
  • sly - JavaScript library for one-directional scrolling with item based navigation support.
  • vegas - A jQuery plugin to add beautiful fullscreen backgrounds to your webpages. It even allows Slideshows.
  • Sequence - CSS animation framework for creating responsive sliders, presentations, banners, and other step-based applications.
  • reveal.js - A framework for easily creating beautiful presentations using HTML.
  • impress.js - It's a presentation framework based on the power of CSS3 transforms and transitions in modern browsers and inspired by the idea behind prezi.com.
  • bespoke.js - DIY Presentation Micro-Framework
  • Strut - Strut - An Impress.js and Bespoke.js Presentation Editor
  • PhotoSwipe - JavaScript image gallery for mobile and desktop, modular, framework independent.
  • jcSlider - A responsive slider jQuery plugin with CSS animations.
  • basic-jquery-slider - Simple to use, simple to theme, simple to customise.
  • jQuery.adaptive-slider - A jQuery plugin for a slider with adaptive colored figcaption and navigation.
  • slidr - add some slide effects.
  • Flickity - Touch, responsive, flickable galleries.
  • Glide.js - Responsive and touch-friendly jQuery slider. It's simple, lightweight and fast.
  • Embla Carousel - An extensible low level carousel for the web, written in TypeScript.

Range Sliders

  • Ion.RangeSlider - Powerful and easily customizable range slider with many options and skin support.
  • jQRangeSlider - A JavaScript slider selector that supports dates.
  • noUiSlider - A lightweight, highly customizable range slider without bloat.
  • rangeslider.js - HTML5 input range slider element polyfill.

Form Widgets

Input

  • typeahead.js - A fast and fully-featured autocomplete library.
  • tag-it - A jQuery UI plugin to handle multi-tag fields as well as tag suggestions/autocomplete.
  • At.js - Add GitHub like mentions autocomplete to your application.
  • Placeholders.js - A JavaScript polyfill for the HTML5 placeholder attribute.
  • fancyInput - Makes typing in input fields fun with CSS3 effects.
  • jQuery-Tags-Input - Magically convert a simple text input into a cool tag list with this jQuery plugin.
  • vanilla-masker - A pure JavaScript mask input.
  • Ion.CheckRadio - jQuery plugin for styling checkboxes and radio-buttons. With skin support.
  • awesomplete - Ultra lightweight, usable, beautiful autocomplete with zero dependencies. - https://projects.verou.me/awesomplete/

Calendar

  • pickadate.js - The mobile-friendly, responsive, and lightweight jQuery date & time input picker.
  • bootstrap-datepicker - A datepicker for @twitter bootstrap forked from Stefan Petre's (of eyecon.ro), improvements by @eternicode.
  • Pikaday - A refreshing JavaScript Datepicker โ€” lightweight, no dependencies, modular CSS.
  • fullcalendar - Full-sized drag & drop event calendar (jQuery plugin).
  • rome - A customizable date (and time) picker. Dependency free, opt-in UI.
  • Date Range Picker - creates a dropdown menu from which a user can select a range of dates.
  • Duet Date Picker - open source version of Duet Design Systemโ€™s accessible date picker, WCAG 2.1 accessibility complaint
  • tui.calendar - A JavaScript schedule calendar that is full featured. Now your service just got the customizable calendar.

Select

  • selectize.js - Selectize is the hybrid of a textbox and <select> box. It's jQuery based and it has autocomplete and native-feeling keyboard navigation; useful for tagging, contact lists, etc.
  • select2 - a jQuery based replacement for select boxes. It supports searching, remote data sets, and infinite scrolling of results.
  • chosen - A library for making long, unwieldy select boxes more friendly.

File Uploader

  • jQuery-File-Upload - File Upload widget with multiple file selection, drag&drop support, progress bar, validation and preview images, audio and video for jQuery.
  • dropzone - Dropzone is an easy to use drag'n'drop library. It supports image previews and shows nice progress bars.
  • flow.js - A JavaScript library providing multiple simultaneous, stable, fault-tolerant and resumable/restartable file uploads via the HTML5 File API.
  • fine-uploader - Multiple file upload plugin with progress-bar, drag-and-drop, direct-to-S3 uploading.
  • FileAPI - A set of JavaScript tools for working with files. Multiupload, drag'n'drop and chunked file upload. Images: crop, resize and auto orientation by EXIF.
  • plupload - A JavaScript API for dealing with file uploads it supports features like multiple file selection, file type filtering, request chunking, client side image scaling and it uses different runtimes to achieve this such as HTML 5, Silverlight and Flash.
  • filepond - A JavaScript library that can upload anything you throw at it, optimizes images for faster uploads, and offers a great, accessible, silky smooth user experience.

Other

  • form - jQuery Form Plugin.
  • Garlic.js - Automatically persist your forms' text and select field values locally, until the form is submitted.
  • Countable - A JavaScript function to add live paragraph-, word- and character-counting to an HTML element.
  • card - Make your credit card form better in one line of code.
  • stretchy - Form element autosizing, the way it should be.
  • analytics - A lightweight, extendable analytics library designed to work with any third-party analytics provider to track page views, custom events, & identify users.
  • dat.GUI - A lightweight gui controller for changing variables in JavaScript.

Tips

  • tipsy - Facebook-style tooltips plugin for jQuery.
  • opentip - An open source JavaScript tooltip based on the prototype framework.
  • qTip2 - Pretty powerful tooltips.
  • tooltipster - A jQuery tooltip plugin.
  • simptip - A simple CSS tooltip made with Sass.
  • toolbar - A tooltip style toolbar jQuery plugin
  • hint.css - A tooltip library in CSS for your lovely websites.

Modals and Popups

  • Magnific-Popup - Light and responsive lightbox script with focus on performance.
  • jquery-popbox - jQuery PopBox UI Element.
  • jquery.avgrund.js - A jQuery plugin with new modal concept for popups.
  • vex - A modern dialog library which is highly configurable and easy to style.
  • bootstrap-modal - Extends the default Bootstrap Modal class. Responsive, stackable, ajax and more.
  • css-modal - A modal built out of pure CSS.
  • jquery-popup-overlay - jQuery plugin for responsive and accessible modal windows and tooltips.
  • SweetAlert - An awesome replacement for JavaScript's alert.
  • SweetAlert2 - An awesome replacement for JavaScript's alert.
  • baguetteBox.js - Simple and easy to use lightbox script written in pure JavaScript.
  • colorbox - A light-weight, customizable lightbox plugin for jQuery.
  • fancyBox - A tool that offers a nice and elegant way to add zooming functionality for images, html content and multi-media on your webpages.
  • swipebox - A touchable jQuery lightbox
  • jBox - jBox is a powerful and flexible jQuery plugin, taking care of all your popup windows, tooltips, notices and more.
  • lightGallery - A customizable, modular, responsive, lightbox gallery plugin for jQuery.
  • keukenhof - Lightweight, no dependencies, accessibility enabled TypeScript library for creating modal windows.
  • screenfull.js - the JavaScript Fullscreen API, which lets you bring the page or any element into fullscreen. Smoothens out the browser implementation differences, so you don't have to.

Scroll

  • scrollMonitor - A simple and fast API to monitor elements as you scroll.
  • headroom - Give your pages some headroom. Hide your header until you need it.
  • onepage-scroll - Create an Apple-like one page scroller website (iPhone 5S website) with One Page Scroll plugin.
  • iscroll - iScroll is a high performance, small footprint, dependency free, multi-platform JavaScript scroller.
  • skrollr - Stand-alone parallax scrolling library for mobile (Android + iOS) and desktop. No jQuery.
  • parallax - Parallax Engine that reacts to the orientation of a smart device.
  • stellar.js - Parallax scrolling made easy.
  • plax - jQuery powered parallaxing.
  • jparallax - jQuery plugin for creating interactive parallax effect.
  • fullPage - A simple and easy to use plugin to create fullscreen scrolling websites (also known as single page websites).
  • ScrollMenu - A new interface to replace old boring scrollbar.
  • Clusterize.js - Tiny vanilla JS plugin to display large data sets easily.
  • simpleParallax - Simple and tiny JavaScript library to add parallax animations on any images
  • rellax - Buttery smooth, super lightweight, vanilla javascript parallax library.
  • asscroll - A hybrid smooth scroll setup that combines the performance gains of virtual scroll with the reliability of native scroll.
  • stroll - A collection of CSS List scroll effects bind to dom through javascript.
  • locomotive-scroll - Detects the elements in viewport and smooth scrolling with parallax.
  • elevator.js - Finally, a "back to top" button that behaves like a real elevator.
  • jQuery-menu-aim - jQuery plugin to fire events when user's cursor aims at particular dropdown menu items. For making responsive mega dropdowns like Amazon's.
  • jQuery contextMenu - contextMenu manager.
  • Slideout - A responsive touch slideout navigation menu for mobile web apps.
  • Slide and swipe - A sliding swipe menu that works with touchSwipe library.
  • mmenu - The best jQuery plugin for app look-alike on- and off-canvas menus with sliding submenus for your website and webapp.

Table/Grid

  • jTable - A jQuery plugin to create AJAX based CRUD tables.
  • DataTables - (jQuery plug-in) It is a highly flexible tool, based upon the foundations of progressive enhancement, and will add advanced interaction controls to any HTML table.
  • Tabulator - (jQuery plug-in) An extremely flexible library that create tables with a range of interactive features from any JSON data source or existing HTML table.
  • Bootstrap Table - An Extension to the popular Bootstrap framework for creating tables that fit the style of your site with no need for additional markup.
  • floatThead - (jQuery plug-in) lock any table's header while scrolling within the body. Works on any table and requires no custom html or css.
  • Masonry - A cascading grid layout library.
  • Packery - A grid layout library that uses a bin-packing algorithm. Useable for draggable layouts.
  • Isotope - A filterable, sortable, grid layout library. Can implement Masonry, Packery, and other layouts.
  • flexboxgrid - Grid based on CSS3 flexbox.
  • Jspreadsheet - Jspreadsheet is a lightweight vanilla javascript plugin to create amazing web-based interactive tables and spreadsheets compatible with other spreadsheet software.

Frameworks

  • Semantic UI - UI Kit with lots of themes and elements.
  • w2ui - A set of jQuery plugins for front-end development of data-driven web applications.
  • fluidity - The worlds smallest fully-responsive css framework.
  • Ink - An HTML5/CSS3 framework used at SAPO for fast and efficient website design and prototyping.
  • DataFormsJS - A minimal JavaScript Framework and standalone components for rapid development of sites and SPA's.
  • EHTML - HTML Framework that allows you not to write JavaScript code.

Boilerplates

  • html5-boilerplate - A professional front-end template for building fast, robust, and adaptable web apps or sites.
  • mobile-boilerplate - A front-end template that helps you build fast, modern mobile web apps.
  • webplate - An awesome front-end framework that lets you stay focused on building your site or app while remaining really easy to use.
  • Cerberus - A few simple, but solid patterns for responsive HTML emails. Even in Outlook.
  • full-page-intro-and-navigation - An intro page with a full width background image, a bold animated menu and an iOS-like blurred effect behind the navigation.
  • Fluid-Squares - A fluid grid of square units.
  • Mobile-First-RWD - An example of a mobile-first responsive web design.
  • this-is-responsive - This Is Responsive.
  • npm run-scripts Task automation with NPM run-scripts.

Images

  • Drift - Easily add "zoom on hover" functionality to your site's images. Lightweight, no-dependency JavaScript.
  • Magnificent.js - Zoom responsively, images & more, w/ jQuery.
  • Panolens.js - Panolens.js is an event-driven and WebGL based panorama viewer. Lightweight and flexible

Gesture

  • hammer.js - A JavaScript library for multi-touch gestures.
  • touchemulator - Emulate touch input on your desktop.
  • Dragula - Drag and drop so simple it hurts.

Maps

  • Leaflet - JavaScript library for mobile-friendly interactive maps.
  • Cesium - Open Source WebGL virtual globe and map engine.
  • gmaps - The easiest way to use Google Maps.
  • polymaps - A free JavaScript library for making dynamic, interactive maps in modern web browsers.
  • kartograph.js - Open source JavaScript renderer for Kartograph SVG maps.
  • mapbox.js - Mapbox JavaScript API, a Leaflet Plugin.
  • jqvmap - jQuery Vector Map Library.
  • OpenLayers3 - A high-performance, feature-packed library for all your mapping needs.
  • H3js - Hexagonal hierarchical geospatial indexing system ported to javascript by Uber for geospatial visualization.

Video/Audio

  • prettyembed.js - Prettier embeds for your YouTubes - with nice options like high-res preview images, advanced customization of embed options, and optional FitVids support.
  • html5media - Enables
  • Play-em JS - Play'em is a JavaScript component that manages a music/video track queue and plays a sequence of songs by embedding several players in a HTML DIV including Youtube, Soundcloud and Vimeo.
  • polyplayer - Rule YouTube, Soundcloud and Vimeo player with one API.
  • flowplayer - The HTML5 video player for the web https://flowplayer.com/
  • mediaelement - HTML5
  • SoundJS - A library to make working with audio on the web easier. It provides a consistent API for playing audio in different browsers.
  • video.js - Video.js - open source HTML5 & Flash video player.
  • FitVids.js - A lightweight, easy-to-use jQuery plugin for fluid width video embeds.
  • Ion.Sound - Simple sounds on any web page.
  • photobooth-js - A widget that allows users to take their avatar pictures on your site.
  • clappr - An extensible media player for the web http://clappr.io
  • exifr - The fastest and most versatile EXIF reading library. https://mutiny.cz/exifr/
  • ts-audio - an agnostic and easy-to-use library to work with the AudioContext API.
  • AmplitudeJS - Open Source HTML5 Web Audio Library. Design your web audio player, the way you want. No dependencies required.
  • ractive-player - A library for making interactive videos in React.js.
  • ffmpeg.js - FFmpeg optimized for in-browser use: minimal size for faster loading, asm.js, performance tunings, etc.
  • flv.js - An HTML5 Flash Video (FLV) Player written in pure JavaScript without Flash.
  • hls.js - A JavaScript library that implements an HTTP Live Streaming client. It relies on HTML5 video and MediaSource Extensions for playback.

Typography

  • FlowType.JS - Web typography at its finest: font-size and line-height based on element width.
  • BigText - jQuery plugin, calculates the font-size and word-spacing needed to match a line of text to a specific width.
  • circletype - A jQuery plugin that lets you curve type on the web.
  • slabText - A jQuery plugin for producing big, bold & responsive headlines.
  • simple-text-rotator - Add a super simple rotating text to your website with little to no markup.
  • novacancy.js - Text Neon Golden effect jQuery plug-in.
  • jquery-responsive-text - Make your text sizing responsive!
  • FitText.js - A jQuery plugin for inflating web type.
  • Lettering.js - A lightweight, easy to use JavaScript <span> injector for radical Web Typography.

Animations

  • velocity - Accelerated JavaScript animation.
  • jquery.transit - Super-smooth CSS3 transformations and transitions for jQuery.
  • bounce.js - Create tasty CSS3 powered animations in no time.
  • GreenSock-JS - High-performance HTML5 animations that work in all major browsers.
  • TransitionEnd - TransitionEnd is an agnostic and cross-browser library to work with transitioned event.
  • Dynamic.js - JavaScript library to create physics-based CSS animations.
  • the-cube - The Cube is an experiment with CSS3 transitions.
  • Effeckt.css - A Performant Transitions and Animations Library.
  • animate.css - A cross-browser library of CSS animations. As easy to use as an easy thing.
  • textillate - A simple plugin for CSS3 text animations.
  • move.js - CSS3 backed JavaScript animation framework.
  • animatable - One property, two values, endless possibilities.
  • shuffle-images - The Simplest Way to shuffle through images in a Creative Way.
  • smoothState.js - Unobtrusive page transitions with jQuery.
  • Anime.js - A JavaScript animation engine.
  • Mo.js - Motion graphics toolbelt for the web.
  • particles.js - A lightweight JavaScript library for creating particles.
  • tsParticles - A new and improved version of particles.js with bug fixes and many new features.
  • particles-bg - A lightweight React particles animation background component.
  • barbajs - It helps you create fluid and smooth transitions between your website's pages.
  • typicaljs - Animated typing in ~400 bytes ๐Ÿก of JavaScript

Image Processing

  • lena.js - A Library for image processing with filters and util functions.
  • pica - High quality image resize (with fast Lanczos filter, implemented in pure JS).
  • cropper - A simple jQuery image cropping plugin.

ES6

Generators

  • Gatsby.js - React-based static site generator.
  • Gridsome - Vue-powered static site generator.
  • Docusaurus - React-based static site generator by Facebook, ideal for content-centric websites.

SDK

  • lunr - Library for use in the browser and It indexes JSON documents and provides a simple search interface for retrieving documents that best match text queries.
  • flexsearch - It is a Next-Generation full text search library for Browser and Node.js.
  • Elasticlunr - This library is based on lunr.js, but more flexible and customized.

Misc

  • echo - Lazy-loading images with data-* attributes.
  • picturefill - A responsive image polyfill for <picture>, srcset, sizes.
  • platform.js - A platform detection library that works on nearly all JavaScript platforms.
  • json3 - A modern JSON implementation compatible with nearly all JavaScript platforms.
  • Logical Or Not - A game about JavaScript specificities.
  • BitSet.js - A JavaScript Bit-Vector implementation.
  • spoiler-alert - SPOILER ALERT! A happy little jquery plugin to hide spoilers on your site.
  • jquery.vibrate.js - Vibration API Wrappers
  • list.js - Adds search, sort, filters and flexibility to tables, lists and various HTML elements. Built to be invisible and work on existing HTML. https://listjs.com
  • mixitup - MixItUp - A Filter & Sort Plugin.
  • grid - Drag and drop library for two-dimensional, resizable and responsive lists.
  • jquery-match-height - a responsive equal heights plugin for jQuery.
  • SurveyJS - SurveyJS is a JavaScript Survey and Form Library. https://surveyjs.io/
  • Array Explorer and Object Explorer - Resources to help figure out what native JavaScript method would be best to use at any given time.
  • Clipboard.js - "Copy to clipboard" without Flash or use of Frameworks.
  • ky - Tiny and elegant HTTP client based on the browser Fetch API.
  • Fcal - Math expression evaluator.
  • emoji-button - Vanilla JavaScript emoji picker component.
  • iooxa - Components for interactive scientific writing, reactive documents and explorable explanations.
  • Idyll - Create explorable explanations and interactive storytelling essays. Can be embedded in HTML.
  • javascript-algorithms - Algorithms and data structures implemented in JavaScript with explanations and links to further readings.
  • FingerprintJS - Makes a visitor identifier from a browser fingerprint that stays the same in incognito mode and when browser data is purged.
  • Peg.js - A simple parser generator for JavaScript that produces fast parsers with excellent error reporting. Usable from your browser, from the command line, or via JavaScript API.
  • lune - Library to calculate the phases of the moon accurately.
  • jsemu - A list of emulators written in the JavaScript programming language.

Podcasts

  • JavaScript Air - The live video broadcast podcast all about JavaScript and the Web platform.
  • Web of Tomorrow - Podcast about JavaScript for beginners.
  • JavaScript Jabber - A weekly podcast about JavaScript, including Node.js, Front-End Technologies, Careers, Teams and more.

Worth Reading

  • You Don't Know JS - Possibly the best book written on modern JavaScript, completely readable online for free, or can be bought to support the author.
  • braziljs/js-the-right-way - An easy-to-read, quick reference for JS best practices, accepted coding standards, and links around the Web.
  • JSbooks - Directory of free JavaScript ebooks.
  • Superhero.js - A collection of resources about creating, testing and maintaining a large JavaScript code base.
  • SJSJ - Simplified JavaScript Jargon is a community-driven attempt at explaining the loads of buzzwords making the current JavaScript ecosystem in a few simple words.
  • How to Write an Open Source JavaScript Library - A comprehensive guide through a set of steps to publish a JavaScript open source library.
  • JavaScript Tutorials - Learn Javascript online from a diverse range of user ranked online tutorials.
  • Functional-Light JavaScript - Pragmatic, balanced FP in JavaScript.
  • Clean Code JavaScript - Clean Code concepts adapted for JavaScript.

Other Awesome Lists

Contributing

Contributions welcome! Read the contribution guidelines first.

License

CC0

To the extent possible under law, chencheng has waived all copyright and related or neighboring rights to this work.

Promises/A+ logo

Awesome Promises Awesome

A curated list of useful resources for JavaScript Promises

Inspired by the awesome list thing. Not to be confused with other awesome promises like "I promise you a million dollars" or "I promise you'll stay fit and never have to go to the gym again".

Table of Contents

Resources, Blogs, and Books

For beginners

Deep Dive

References

Promises/A+ Implementations (ES6/ES2015 compatible)

Strict Implementations

These implement no more or less than the es6 spec. They make great polyfills and are exceptionally compatible with native promises.

  • pinkie - Ponyfill. Node-oriented, but browserifyable. Extremely small implementation.
  • native-promise-only - Polyfill. Browser and node-compatible.
  • es6-promise - Opt-in polyfill. A strict-spec subset of rsvp.js.
  • lie - Small, browserifyable with an opt-in polyfill.

Implementations with extras

All of these provide more features than the language yet remain compatible. Node + Browsers for all.

  • bluebird - Fully featured, extremely performant. Long stack traces & generator/coroutine support.
  • creed - Hyper performant & full featured like Bluebird, but FP-oriented. Coroutines, generators, promises, ES2015 iterables, & fantasy-land spec.
  • rsvp.js - Lightweight with a few extras. Compatible down to IE6!
  • Q - One of the original implementations. Long stack traces and other goodies.
  • then/promise - Small with nodeify, denodify and done() additions.
  • when.js - Packed with control flow, functional, and utility methods.

Fallbacks

  • native-or-bluebird - Helps transition to completely native.
  • pinkie-promise - Use native, or fall back to pinkie. Great for node library authors.
  • any-promise - Loads the first available implementation. Safe for browserify.

Convenience Utilities

Native and strictly spec-compliant promises are awesome for compatibility, future-proofness, library authors, and browsers. However, libraries like bluebird patch goodies onto the Promise constructor and prototype. Solution? tiny modules of course!

sindresorhus's many Promise utilities (see notes)

  • delay - Delay a promise a specified amount of time.
  • pify - Promisify ("denodify") a callback-style function.
  • loud-rejection - Make unhandled promise rejections fail loudly instead of the default silent fail.
  • hard-rejection - Make unhandled promise rejections fail hard right away instead of the default silent fail
  • p-queue - Promise queue with concurrency control
  • p-break - Break out of a promise chain
  • p-lazy - Create a lazy promise that defers execution until .then() or .catch() is called
  • p-defer - Create a deferred promise
  • p-if - Conditional promise chains
  • p-tap - Tap into a promise chain without affecting its value or state
  • p-map - Map over promises concurrently
  • p-all - Run promise-returning & async functions concurrently with optional limited concurrency
  • p-limit - Run multiple promise-returning & async functions with limited concurrency
  • p-times - Run promise-returning & async functions a specific number of times concurrently
  • p-catch-if - Conditional promise catch handler
  • p-time - Measure the time a promise takes to resolve
  • p-log - Log the value/error of a promise
  • p-filter - Filter promises concurrently
  • p-settle - Settle promises concurrently and get their fulfillment value or rejection reason
  • p-memoize - Memoize promise-returning & async functions
  • p-whilst - Calls a function repeatedly while a condition returns true and then resolves the promise
  • p-throttle - Throttle promise-returning & async functions
  • p-debounce - Debounce promise-returning & async functions
  • p-retry - Retry a promise-returning or async function
  • p-wait-for - Wait for a condition to be true
  • p-timeout - Timeout a promise after a specified amount of time
  • p-race - A better Promise.race()
  • p-try - Promise#try() ponyfill - Starts a promise chain
  • p-finally - Promise#finally() ponyfill - Invoked when the promise is settled regardless of outcome
  • p-any - Wait for any promise to be fulfilled
  • p-some - Wait for a specified number of promises to be fulfilled
  • p-pipe - Compose promise-returning & async functions into a reusable pipeline
  • p-each-series - Iterate over promises serially
  • p-map-series - Map over promises serially
  • p-reduce - Reduce a list of values using promises into a promise for a value
  • p-props - Like Promise.all() but for Map and Object

Others

  • promise-method - Standalone bluebird.method. Turn a synchronously-returning method into a promise-returning one.
  • is-promise - Determine if something looks like a Promise.
  • sprom - Resolve when a stream ends. Optional buffering (be careful with this!)
  • task.js - Write async functions in a blocking style using promises and generators. Like bluebird.coroutine.
  • co - Like task.js and bluebird.coroutine, but supports thunks too.
  • lie-fs - Promise wrappers for Node's FS API.
  • promise-do-until - Calls a function repeatedly until a condition returns true and then resolves the promise.
  • promise-do-whilst - Calls a function repeatedly while a condition returns true and then resolves the promise.
  • promise-semaphore - Push a set of work to be done in a configurable serial fashion
  • promise-nodeify - Standalone nodeify method which calls a Node-style callback on resolution or rejection.

License

Licensed under the Creative Commons CC0 License.

Awesome Standard Awesome

js-standard-style

Documenting the explosion of packages in the standard ecosystem!

standard

  • standard - JavaScript Standard Style. One Style to Rule Them All!

usage stats

packages used by standard

automatic code formatters

  • standard --fix - automatic formatting is built-inย to standard!
  • prettier-standard - format with prettier configured to standard rules
  • "unix commands" gist - A list of search and replace unix commands to help make a node repository 'standard' compliant

editor plugins

pretty terminal output (reporters)

  • snazzy - Format JavaScript Standard Style as Stylish (i.e. snazzy) output
  • standard-tap - Format JavaScript Standard Style as TAP output
  • standard-json - Format JavaScript Standard Style output to a JSON array
  • standard-reporter - Reporters for feross/standard via unix pipes, many options
  • standard-summary - Display output as a list of errors, ordered by count

build tools

code/project generators

inspired by standard

forks

PRs welcome!

License

CC0

To the extent possible under law, Feross Aboukhadijeh has waived all copyright and related or neighboring rights to this work.

Awesome

This is a list of must-watch videos devoted to JavaScript

2020

  1. David Neal: JavaScript: Past, Present and Future [47:26]

2019

  1. Rich Harris: Rethinking reactivity [36:44]
  2. Mathias Bynens & Sathya Gunasekaran: What's new in JavaScript? [36:32]
  3. Maxim Koretskyi: JSConf EU: A sneak peek into super optimized code in JS frameworks [23:20]
  4. Una Kravets: CSS Houdini & The Future of Styling [25:42]

2018

  1. Jake Archibald: In The Loop [35:11]
  2. Malte Ubl: Designing very large JavaScript application [28:55]
  3. Ryan Dahl: 10 Things I Regret About Node.js [26:41]
  4. Mathias Bynens & Benedikt Meurer: JavaScript Engines: The Good Partsโ„ข [23:09]
  5. Ronen Amiel: Build your own webpack [39:38]
  6. Addy Osmani: The Cost Of JavaScript [20:07]
  7. Erin Zimmer: Further Adventures of the Event Loop [21:15]
  8. Laurie Voss: npm and the Future of JavaScript [55:00]

2017

  1. Lin Clark: A Cartoon Intro to Fiber [31:47]
  2. Yoav Weiss: Caches All the Way Down! [30:58]
  3. Franziska Hinkelmann: JavaScript engines - how do they even? [25:13]
  4. Anjana Vakil: Immutable data structures for functional JS [26:32]

2016

  1. Brendan Eich: JavaScript in 2016: Beyond Harmony [15:31]
  2. Andrรฉ Staltz: Brains as building blocks [21:26]
  3. Cheng Lou: On the Spectrum of Abstraction [35:31]
  4. Anjana Vakil: Learning Functional Programming with JavaScript [29:56]
  5. Kyle Simpson: Advanced Async and Concurrency Patterns in JavaScript [39:42]

2015

  1. Dr. Axel Rauschmayer: Using ECMAScript 6 today
  2. Brendan Eich: ECMAScript Harmony: Rise of the Compilers [19:17]
  3. Andreas Gal: Dirty Performance Secrets of HTML5 [14:15]
  4. Andre Staltz: What if the user was a function? [32:19]
  5. Gilmore Davidson: Time zone of your life [23:40]
  6. Elijah Manor: Eliminate JavaScript Code Smells [29:15]
  7. Dan Abramov: Live React: Hot Reloading with Time Travel [30:40]
  8. Brain Ford: Problem solving in the open source world [29:57]
  9. Kris Kowal: A General Theory of Reactivity [35:38]

2014

  1. Ilya Grigorik: Website Performance Optimization (Udacity course) [1:13:57]
  2. Mark DiMarco: User Interface Algorithms [27:41]
  3. Neil Green: Writing Custom DSLs [29:07]
  4. Eric Bidelman: Polymer and Web Components change everything you know about Web development [36:12]
  5. Alex Russell, Jake Archibald: Bridging the gap between the web and apps [48:40]
  6. Scott Hanselman: Virtual Machines, JavaScript and Assembler [25:56]
  7. Jafar Husain: Async JavaScript with Reactive Extensions [26:38]
  8. John-David Dalton: Unorthodox Performance [43:39]
  9. Gary Bernhardt: The Birth & Death of Javascript [29:22]
  10. Addy Osmani: Memory Management Masterclass [55:06]
  11. Reginald Braithwaite: Invent the future, don't recreate the past [39:16]
  12. Kyle Simpson: Syncing Async [42:25]
  13. Ariya Hidayat: JavaScript and the Browser: Under the Hood [29:13]
  14. Jafar Husain: Version 7: The Evolution of JavaScript [1:11:53]
  15. David Nolen: Immutability: Putting The Dream Machine To Work [22:05]
  16. Pete Hunt: OSCON 2014: How Instagram.com Works [40:18]
  17. Philip Roberts: JSConf EU: What the heck is the event loop anyway? [26:52]
  18. Mark Stuart: Paypal: Web Security in Node.js and Javascript Apps (SPAs) [29:11]

2013

  1. Nat Duca, Tom Wiltzius: Jank Free: Chrome Rendering Performance [40:53]
  2. Ilya Grigorik: Automating Performance Best Practices with PageSpeed [46:58]
  3. Eric Bidelman: Web Components [32:39]
  4. Alex Komoroske, Matthew McNulty: Web Components in Action [41:28]
  5. Paul Lewis, Peter Beverloo: Device Agnostic Development [40:44]
  6. John McCutchan, Loreena Lee: A Trip Down Memory Lane with Gmail and DevTools [42:09]
  7. Joe Marini: Upgrading to a Chrome Packaged App [43:49]
  8. Pete Hunt: React: Rethinking best practices [29:31]
  9. Martin Kleppe: 1024+ Seconds of JS Wizardry [31:01]
  10. Yehuda Katz: A tale of two MVC's [31:06]
  11. Vyacheslav Egorov: Performance and Benchmarking [25:41]
  12. Brendan Eich: JavaScript at 18: Legal to Gamble [25:44]
  13. Mathias Bynens: JavaScript โ™ฅ Unicode [26:12]
  14. Mark Trostler: Testable JavaScript - Architecting Your Application for Testability [45:35]
  15. James Shore: The Definitive Guide to Object-Oriented Javascript

2012

  1. Ryan Sandor Richards: Garbage Collection & Heap Management [32:57]
  2. Addy Osmani: Scaling Your JavaScript Applications
  3. John-David Dalton: Lo-Dash [25:08]
  4. Gary Bernhardt: WAT [4:17]
  5. Angus Croll: Break all the rules [31:29]
  6. Nicholas Zakas: Maintainable JavaScript [47:04]
  7. Douglas Crockford: Principles of Security [59:52]
  8. Brian Leroux: WTFJS [18:26]

2011

  1. Douglas Crockford: Level 7: ECMAScript 5: The New Parts [57:18]
  2. Douglas Crockford: Section 8: Programming Style and Your Brain [1:06:45]
  3. Ryan Dahl: Introduction to Node.js [1:06:33]
  4. Alex Russell: Learning to Love JavaScript [1:03:25]

2010

  1. Douglas Crockford: Volume One: The Early Years [1:42:08]
  2. Douglas Crockford: Chapter 2: And Then There Was JavaScript [1:30:22]
  3. Douglas Crockford: Act III: Function the Ultimate [1:13:28]
  4. Douglas Crockford: Episode IV: The Metamorphosis of Ajax [1:33:54]
  5. Douglas Crockford: Part 5: The End of All Things [1:24:42]
  6. Douglas Crockford: Scene 6: Loopage [51:52]

2009

  1. Nicholas Zakas: Scalable JavaScript Application Architecture [52:22]
  2. Douglas Crockford: JavaScript: The Good Parts [1:03:47]

header

JS Tips Awesome

Useful JavaScript tips

This is an awesome project about short and useful JavaScript tips that will allow you to improve your code writing. With less than 2 minutes, you will be able to read about performance, conventions, hacks, interview questions and all the items that the future of this awesome language holds for us.

Tips are added frequently (read further if you want to stay in touch).

Support the community

If you found a JS Tip useful or you like a writer of the community now you are able to show some respect and support with a tip!

Can you help us enrich it?

Sure, you can help the project in two ways, sending your tip or reviewing future tips. Any improvements or suggestions are more than welcome! Instructions are here.

Letโ€™s keep in touch

There are a lot of ways to get updates, choose your own

Don't forget to Starโ˜… the repo, as this helps promoting the project!

Tips list

License

GNU GENERAL PUBLIC LICENSE

Awesome JavaScript Network Awesome Build Status Donate

A ๐ŸŽฉ list of network layer resources written pure JS.

High level

Based, at least, in a CLI interface.

  • airpaste โ€“ 1-1 network pipe that auto discovers other peers using mdns.
  • blecat โ€“ 1-1 pipe over bluetooth low energy.
  • deejay โ€“ Music player that broadcasts to everyone on the same network.
  • dhtkv โ€“ CLI for storing arbitrary key/value data in the bittorrent mainline DHT.
  • gun โ€“ A realtime, decentralized, offline-first, graph database engine.
  • hyperpipe โ€“ Distributed input/output pipe.
  • hypervision โ€“ P2P Television.
  • instant.io โ€“ Streaming file transfer over WebTorrent.
  • ipp-printer โ€“ Create a printer on your network.
  • peercast โ€“ Like peerflix but for Chromecast.
  • peerflix โ€“ Streaming torrent client.
  • peervisionary โ€“ Stream p2p content over your local network.
  • peerwiki โ€“ browse all of wikipedia using bittorrent.
  • screencat โ€“ WebRTC screensharing app.
  • signalhub โ€“ Simple signalling server that can be used to coordinate handshaking with webrtc or other fun stuff.
  • torrent-mount โ€“ Mount a torrent (or magnet link) as a filesystem in real time using torrent-stream and fuse.
  • webcat โ€“ pipe across the web using WebRTC.
  • websocketd โ€“ Turn any program that uses stdin/stdout into a WebSocket server.
  • webtorrent โ€“ BitTorrent over WebRTC.
  • wifi-triangulate โ€“ Finds your current position on planet earth using the wifi access point.

Modules

Do one thing well.

  • airplay-server โ€“ A low level AirPlay server.
  • castnow โ€“ simple chromecast player.
  • discovery-swarm โ€“ A network swarm that uses discovery-channel to find peers. Also check webrtc-swarm.
  • dns-packet โ€“ Abstract-encoding compliant module for encoding / decoding DNS packets. Also see dns-socket.
  • etcdjs โ€“ Low level etcd v2 client written in Javascript with failover support.
  • geocode-wifi โ€“ Get yours latitude/longitude based on your wifi access point.
  • hash-to-port โ€“ Hash a value to a valid port.
  • hyperdb โ€“ Distributed scalable database.
  • ip-packet โ€“ Encode/decode raw ip packets.
  • magnet-uri โ€“ Parse a magnet URI and return an object of keys/values.
  • mutex-server - Critical section controllers, like mutex and semaphore, in the network level.
  • network-address โ€“ Get the local network address of your machine.
  • network-simulator โ€“ Simulate a low-level computer network.
  • rtsp-stream - A transport agnostic RTSP serial multiplexer module for Node.
  • simple-peer โ€“ Simple WebRTC video/voice and data channels.
  • simple-websocket โ€“ Simple, EventEmitter API for WebSockets.
  • torrent-discovery โ€“ Discover BitTorrent and WebTorrent peers.
  • torrent-stream โ€“ The low level streaming torrent engine that peerflix uses.
  • udp-packet โ€“ Encode/decode raw udp packets.
  • rpc-websockets - JSON-RPC 2.0 implementation over WebSockets for Node.js and JavaScript.

Protocols

Implementation of protocols specs in pure javascript.

  • airswarm โ€“ Network swarm that automagically discovers other peers on the network using multicast dns.
  • bittorrent-dht โ€“ BitTorrent DHT protocol implementation.
  • bittorrent-protocol โ€“ BitTorrent peer wire protocol implementation.
  • bittorrent-tracker โ€“ BitTorrent tracker (client & server) implementation
  • bonjour โ€“ A Bonjour/Zeroconf protocol implementation.
  • castv2 โ€“ An implementation of the Chromecast CASTV2 protocol.
  • dht-rpc โ€“ Make RPC calls over a Kademlia based DHT.
  • dns-discovery โ€“ Discovery peers in a distributed system using regular dns and multicast dns.
  • hypercore โ€“ A p2p network for distributing and replicating static feeds of binary data.
  • ipfs โ€“ The InterPlanetary File System, a new peer-to-peer hypermedia protocol.
  • k-bucket โ€“ Kademlia DHT K-bucket implementation as a binary tree.
  • k-rpc โ€“ Implementation of the k-rpc protocol used the BitTorrent DHT. Also see k-rpc-socket.
  • mdns โ€“ mdns/zeroconf/bonjour service discovery.
  • multicast-dns โ€“ Low level multicast-dns implementation.
  • peervision โ€“ Live p2p streaming protocol.
  • polo โ€“ A zero configuration service discovery module.
  • rtsp-server โ€“ A low level module for creating RTSP servers.
  • utp-native โ€“ micro transport protocol, a network protocol similar to tcp that runs on top of udp.

Awesome Micro npm Packages Awesome

A curated list of small, focused Node.js modules.

Inspired by the awesome list thing.

Articles

Modules

Array

  • is-sorted - A small module to check if an Array is sorted.
  • array-first - Get the first element or first n elements of an array.
  • array-last - Return the last element in an array.
  • arr-flatten - Recursively flatten an array or arrays.
  • dedupe - Remove duplicates from an array.
  • array-range - Creates a new array with given range.
  • arr-diff - Returns an array with only the unique values from the first array, by excluding all values from additional arrays using strict equality for comparisons.
  • filled-array - Returns an array filled with the specified input
  • map-array - Map object keys and values into an array.
  • in-array - Return true if any of passed values exists in array - faster than using indexOf.
  • unordered-array-remove - Efficiently remove an element from an unordered array without doing a splice.
  • array-swap - Swap position of two items in an array.
  • mirrarray - Creates a keymirror object from an array of valid keys.
  • group-array - Group array of objects into lists.
  • array.chunk - Split array/TypedArray to chunks of given size.

String

  • decamelize - Convert a camelized string into a lowercased one with a custom separator: unicornRainbow โ†’ unicorn_rainbow.
  • pad-left - Left pad a string with zeros or a specified string.
  • to-camel-case - Convert a string to a camel case.
  • to-capital-case - Convert a string to a capital case.
  • to-constant-case - Convert a string to a constant case.
  • to-dot-case - Convert a string to a dot case.
  • to-no-case - Remove an existing case from a string.
  • to-pascal-case - Convert a string to a pascal case.
  • to-sentence-case - Convert a string to a sentence case.
  • to-snake-case - Convert a string to a snake case.
  • to-space-case - Convert a string to a space case.
  • to-title-case - Convert a string to a title case.
  • node-slug - slugifies even utf-8 chars.
  • rtrim - Strip whitespace - or other characters - from the end of a string.
  • slice.js - Javascript library to enhance String.substring / Array.slice with python slice style.
  • strip-ansi - Strip ANSI escape codes.
  • striptags - An implementation of PHP's strip_tags in Node.js.
  • parse-next-json-value - Parse next JSON value from string allowing extraneous characters after value.
  • pluralize - A very tiny library to pluralize words

Date & Time

  • pretty-ms - Convert milliseconds to a human readable string: 1337000000 โ†’ 15d 11h 23m 20s.
  • hirestime - A wrapper around the built-in high resolution timer which simplifies the calculation of timestamps.
  • periods - Defined time-periods constants for Javascript, in milliseconds.
  • fecha - Javascript Date formatting and parsing.
  • akamai-time-reference - Get reference time using Akamai's time reference service.
  • timeago.js - A tiny(~1.7kb) library used to format date with *** time ago statement.
  • count-days-in-month - Get the number of days in a given month.
  • time-stamp - Get a formatted timestamp.
  • twas - Generate a relative time string (Example: "3 seconds ago")

Object

  • map-obj - Map object keys and values into a new object.
  • filter-obj - Filter object keys and values into a new object.
  • object-values - Get the values of an object.
  • object-pairs - Turn an object into list of [key, value] pairs for mapping, iterating or other purposes.
  • zipmap - Returns a map with the keys mapped to the corresponding vals. zipmap also accepts a single value of objects or pairs.
  • just-pluck - Pluck without the madness.
  • deep-equal - Node's assert.deepEqual() algorithm as a standalone module.
  • deep-assign - Recursive Object.assign().
  • set-value - Create nested values and any intermediaries dot notation ('a.b.c') paths.
  • get-value - Use property paths (a.b.c) to get a nested value from an object.
  • has-value - Returns true if a value exists, false if empty. Works with deeply nested values using dot notation ('a.b.c') paths.
  • has-key-deep - Deep-search objects for keys. Keys can be searched by providing an array of keys, or using a dot-notiation.
  • flatkeys - Flatten object key hierarchies into a list of strings using a custom separator.
  • flatten-obj - Converts an object literal with deeply nested nodes to a simple key/value object.
  • is-empty-object - Check if an object is empty.
  • stringify-object - Stringify an object/array like JSON.stringify just without all the double-quotes.
  • sorted-object - Returns a copy of an object with its keys sorted.
  • static-props - Defines static object attributes using Object.defineProperties
  • missing-deep-keys - Returns an array of keys from first object that are missing in second.
  • has-own-property - Check if an object has a local property.
  • merge-objects - Deep-merge two objects. Arrays that are values of the same object key get concatenated.
  • deep-object-diff - Deep diff two JavaScript Objects while preserving the data structure. Including nested structures of Arrays and Objects.

Function

  • compose-function - Compose a new function from smaller functions f(g(x)).
  • curry - A curry function without anything too clever.
  • once - Run a function exactly one time.
  • deep-bind - Bind a context to all functions in an object, including deeply nested functions.
  • identity-function - Always return the input argument.
  • mem - An optimization technique used to speed up consecutive function calls by caching the result of calls with identical input.
  • throttle-debounce - Throttle/debounce your functions.
  • compose-tiny - A very tiny and fast compose function.

Math

  • is-even - A good way to tell if a number is even or not (avoids type issues). Uses is-odd and is-number under the hood.
  • is-number - Returns true if the value is a number.
  • is-odd - A good way to tell if a number is odd or not (avoids type issues). Uses is-number under the hood.
  • easy-math.js - A tiny easy math library including addition, multiplication, subtraction, and division.
  • my-prime - A good way to tell if a number is prime or not.
  • fun-gcd - A tiny math library to get gcd of two numbers using Euclidean algorithm

Stream

  • through2 - Tiny wrapper around Node streams2 Transform to avoid explicit subclassing noise.
  • through2-filter - A through2 to create an Array.prototype.filter analog for streams.
  • through2-map - A through2 to create an Array.prototype.map analog for streams.
  • stream-spigot - A readable stream generator, useful for testing or converting simple functions into Readable streams.
  • concat-stream - writable stream that concatenates strings or data and calls a callback with the result.
  • JSONStream - streaming JSON.parse and stringify
  • through2-map-promise - A small promise-based wrapper for through2.
  • pump - pipe streams together and close all of them if one of them closes.
  • split - Break up a stream and reassemble it so that each line is a chunk.
  • is-stream - Check if something is a Node.js stream.
  • syncthrough - Transform your data as it pass by, synchronously.

Promise

  • pify - Promisify a callback-style function.
  • promise-all-props - Like Promise.all but for object properties.
  • sleep-promise - Resolves a promise after a specified delay.
  • is-promise - Test whether an object looks like a promises-a+ promise.

Data Structure

  • quetie - Just the cutest and tiniest queue/deque implementation!

File System

  • rimraf - A deep deletion module for node (like rm -rf).
  • mkdirp - Recursively mkdir, like mkdir -p.
  • du - A simple JavaScript implementation of du -sb.
  • file-size - Lightweight filesize to human-readable / proportions w/o dependencies.
  • tmp - Temporary file and directory creator for node.js.
  • fs-promise - Node fs methods as Promise/A+ (optional fs-extra, graceful-fs).
  • read-git-user - Reads the username and email from .gitconfig :wrench: and returns it as json object.

Browser

  • delegate - Lightweight event delegation.
  • insert-css - Insert a string of css into the head
  • dom-element-value - DOM element value getter/setter.
  • image-promise - Load one or more <img>s in a Promise.
  • get-media-size - Get the original size of any img/video/svg/canvas tags or canvas context.
  • document-ready - Document ready listener for modern browsers.
  • copee - Copy text from browser to clipboard...natively!

Semver

  • semver - The semantic version parser used by npm.
  • semver-max - Find maximum (or minimum) version according to semver.
  • semver-first-satisfied - Find minimum in an array of version that satisfies a semver range.

CLI

  • abbrev - Calculate the set of unique abbreviations for a given set of strings.
  • glob - Glob functionality for node.js.
  • username - Get the username of the current user.
  • minimist - Parse argument options.
  • png-to-ico - Convert png to windows ico format.
  • help-version - Easily handle --help and --version arguments in your CLI application

Module management

  • pkg-conf - Get namespaced config from the closest package.json.
  • normalize-pkg - Normalize values in package.json to improve compatibility, programmatic readability and usefulness with third party libs.

Generators

  • is-generator - Check whether a given value is a generator function.

Other

  • uuid - Generate RFC-compliant UUIDs in JavaScript.
  • node-mime - Comprehensive MIME type mapping API based on mime-db module.
  • not-defined - Checks if foo is not defined, i.e. undefined, null, an empty string, array or object.
  • is-fqdn - Check if a string represent a fully qualified domain name.
  • shurley - Parses URLs from user input (with potential typos in protocols, bad copy+paste, etc.) and returns a proper URL.
  • mime-type-check - Get the MIME type of a file by its extension.

This section contains awesome lists that you may find useful if you use or write small NPM modules.

  • awesome-nodejs - A curated list of delightful Node.js packages and resources.
  • awesome-npm - Awesome npm resources and tips.

Small modules rockstars to follow

These people are used to develop awesome NPM modules that follows the single responsibility philosophy. Follow them to discover new great modules:

Sindre Sorhus | James Halliday | Eugene Sharygin | Isaac Z. Schlueter | Jon Schlinkert | Dominic Tarr ---|---|---|---|---|--- Sindre Sorhus | James Halliday | Eugene Sharygin | Isaac Z. Schlueter | Jon Schlinkert | Dominic Tarr

Rod Vagg | Max Ogden | Brian Woodward ---|---|--- Rod Vagg | Max Ogden | Brian Woodward

Contribute

Contributions welcome! Read the contribution guidelines first.

License

CC0

To the extent possible under law, Andrea Parodi has waived all copyright and related or neighboring rights to this work.

Awesome Mad Science Awesome

Delightful npm packages that make you say "wow, didn't know that was possible!" PRs welcome!

peer-to-peer

  • peerwiki - all of wikipedia on bittorrent
  • simple-peer - send video/voice/data p2p in the browser (with webrtc)
  • torrent-docker - realtime boot of remote docker images over bittorrent
  • torrent-mount - mount a torrent as a filesystem
  • webtorrent - streaming torrent client for node & the browser

browserify

  • brfs - turn fs.readFileSync() calls into inlined static assets
  • browser field spec - replace certain files/modules when a module is bundled for the browser
  • browserify - use require() in the browser
  • glslify - npm modules compiled into WebGL shaders
  • webworkify - composable web workers for browserify

files

  • file-type - detect file content types by checking their magic numbers
  • fuse4js - write filesystem driver in js

geometry

hardware

  • cylon - command robots, devices, and more from node

images

  • indico.io - facial emotion recognition and facial feature extraction
  • trackingjs - computer vision on the web

sound

  • doppler - detect motion with the doppler effect using only the microphone and speakers
  • speak.js - text-to-speech on the web

streams

text

  • diff - show text differences
  • franc - detect the language of text
  • indico.io - political sentiment analysis
  • node-tesseract - A simple wrapper for the Tesseract OCR package
  • normit - Google translate text & speak it
  • ocrad.js - OCR in Javascript via Emscripten
  • pullquoter - pull interesting quotes out of an article
  • sbd - split text into sentences
  • sentiment - basic sentiment analysis

terminal

  • minimist - simple argument parser
  • progress - create a simple terminal progress bar
  • terminal-menu - create retro terminal menus
  • vantage.js - CLI + SSH + REPL for Node
  • cash - Cross-platform Linux commands in pure ES6

virtual machines

  • jsemu - A list of emulators written in the JavaScript
  • jslinux - x86 emulator for running Linux, written in JavaScript
  • jvm - java virtual machine in pure node.js
  • doppio - actively updated jvm in node.js, written in TypeScript

misc

  • bell.js - real-time anomalies detection for periodic time series.
  • bitcoinjs-lib - bitcoin client for node & the browser
  • fastparallel - zero overhead parallel function calls
  • google-distance - calculate travel distance between two locations on earth using Google Maps' API
  • qr-image - generate QR codes

meta-programming

  • notevil - javascript javascript interpreter, useful for running untrusted code safely.

mad scientists (people)

License

CC0

To the extent possible under law, Feross Aboukhadijeh has waived all copyright and related or neighboring rights to this work.

maintenance-modules Awesome

NPM

There is no code in this module, the only thing is this README file.

This is a list of modules that are useful for maintaining or developing modules (in no particular order).

fixpack by henrikjoreteg

A package.json file scrubber for the truly insane. Cleans up your package.json in a deterministic way to ensure high quality, handcrafted, artisinal JSON.

npm i fixpack --save-dev

standard by feross

JavaScript standard style checker/linter. No options allowed! Uses non-configurable opinionated settings to minimize bikeshedding. Never give style feedback on a pull request again!

npm i standard --save-dev

dependency-check by maxogden

Checks which modules you have used in your code and then makes sure they are listed as dependencies in your package.json (or vice versa).

npm i dependency-check --save-dev

create-module by finnp

Helper tool for the usual steps to create a module. Creates empty github repo, generates module boilerplate, runs npm init, does first commit + push, etc.

npm i create-module --save-dev

travisjs by finnp

A command line module for travis, especially targeted for managing tests for node modules. Helps you quickly add a travis hook + generate a travis badge for your readme.

npm i travisjs --save-dev

gh-pages-deploy by meandave

Deploy to gh-pages with one command. Lets you add static build settings into your package.json and then automatically build, deploy and push to gh-pages from master using this module.

npm i gh-pages-deploy --save-dev

npm-release by phuu

Tiny tool for releasing npm modules. Bumps, commits, tags, pushes and publishes.

npm i npm-release --save-dev

npm-check-updates by tjunnone

Find newer versions of dependencies than what your package.json allows.

npm i npm-check-updates --save-dev

npe by zeke

Node Package Editor: a CLI for one-off inspection and editing of properties in package.json files. Lets you avoid having to hand-edit JSON.

npm i npe -g

package-json-to-readme by zeke

Generate a README.md from package.json contents. With npm modules, lots of info can be gleaned from properties in the package.json file: name, description, scripts.test, preferGlobal, etc. That's why package-json-to-readme exists. Use it to generate a decent boilerplate README, then iterate from there.

npm i package-json-to-readme -g

npmwd by zeke

Open the npm package URL in your browser that matches your shell's current working directory.

npm i npmwd -g

foundry by twolfson

Release manager for npm, bower, component, PyPI, git tags, and any plugin you can write. Publish to multiple package repositories at once.

npm i foundry --save-dev

semantic-release by boennemann

Fully automate your package's releases. This will determine not only which version to release, but also when โ€“ all without you having to care about it ever again. The goal of this package is to remove humans from version numbers and releases. Check out the readme for more info!

npm i semantic-release --save-dev

collaborator by maxogden

Easily add new collaborators to your github repos + npm packages from the CLI, and then generate a collaborators.md file with the newly updated list of collaborators. Use this to add new maintainers to your projects.

npm i collaborator -g

gasket by mafintosh

Preconfigured pipelines for node.js. A more powerful version of npm scripts, but less frameworky than gulp or grunt. Useful for when you might use Makefiles or bash scripts but want your pipelines to be cross platform.

npm i gasket --save-dev

module-init by ngoldman

Command-line tool to quickly create a new node module with readme, license, contributing guidelines, and other goodies.

npm i module-init -g

gh-release by ngoldman

Create a release for a node package on GitHub. Uses the Github Releases API to create a new release. Defaults to using information from package.json and CHANGELOG.md.

npm i gh-release -g

XO by sindresorhus

JavaScript happiness style linter. Enforce strict code style. No decision-making. No config. It just works!

npm i xo -g

np by sindresorhus

A better npm publish. Runs your tests before publishing, bumps version, pushes git commits/tags, and more.

npm i np -g

maintenance bash scripts

alias patch='pre-version && npm version patch && post-version' alias minor='pre-version && npm version minor && post-version' alias major='pre-version && npm version major && post-version' alias pre-version='git diff --exit-code && npm prune && npm install -q && npm test' alias post-version='npm run --if-present build && git diff --exit-code && git push && git push --tags && npm publish'

Awesome npm Awesome npm

Awesome npm resources and tips

npm is a package manager for the JavaScript programming language and comes bundled in the Node.js runtime.

Please read the contribution guidelines before contributing.

Contents

Articles

Tools

Web

  • npms - Superb package search with deep analysis of package quality using a myriad of metrics.
    • npm-introspect - A npms-based utility for visually exploring the quality of package dependencies.
  • node-modules - Personalized package search based on your GitHub social graph.
  • NodeICO - Package badges.
  • Libraries.io - Package discovery.
  • npm-stat - Statistics charts for packages.
  • npmgraph - Visualization of dependencies.
  • npm trends - Compare package download counts over time.
  • npm-compare - Easily search and compare packages.
  • npm-top - npm users by downloads.
  • npm semver calculator - Visually explore what versions of a package a semver range matches.
  • ghub.io - Redirects to the GitHub repo of an npm package.
  • npm addict - Your daily injection of npm packages.
  • moiva - Discover and compare packages.
  • Openbase - Compare open-source packages with powerful metrics and user reviews.
  • Codelib.club - Search and discover open-source apps by dependencies.

Browser extensions

  • Octo-Linker - Chrome extension to navigate across npm packages on GitHub with ease.
  • npm-hub - Chrome extension to explore npm dependencies on GitHub repos.
  • github-npm-stats - View npm download stats on GitHub.
  • npm-search-update - Chrome extension to quickly search for dependencies and monitor changes from the npm registry.

CLI

Packages

Publishing

  • np - A better npm publish.
  • publish-please - Publish packages safely and gracefully.
  • npm-release - Making releasing to npm so easy a kitten could probably do itโ„ข.
  • pkgfiles - List all files which would be published in a package.
  • release-it - Automate releases for Git repositories and/or npm packages. Changelog generation, GitHub/GitLab releases, etc.
  • semantic-release - Fully automated package publishing.

Registry

  • npm-name - Check whether a package name is available on npm.
  • package-json - Get the package.json of a package from the npm registry.
  • latest-version - Get the latest version of an npm package.
  • npm-keyword - Get a list of npm packages with a certain keyword.
  • npm-user - Get user info of an npm user.
  • npm-email - Get the email of an npm user.
  • npm-user-packages - Get packages by an npm user.
  • dpn - Get the dependents of a user's npm packages.
  • npm-stats - Get data from an npm registry.
  • npm-cli-login - Log in to npm.
  • nrm - Registry manager.
  • npm-register - Easy to set up and maintain npm registry and proxy.
  • verdaccio - Lightweight private npm proxy registry.
  • cloudsmith - A fully managed package management SaaS with support for public and private npm registries (and many others).

Other

  • npm-home - Open the npm page of a package.
  • gh-home - Open the GitHub page of a package.
  • david - Check if your package dependencies are out of date.
  • npm-check - Check for outdated, incorrect, and unused dependencies, as well as interactive update.
  • npm-upgrade - Update outdated npm dependencies interactively.
  • npm-shrinkwrap - A consistent shrinkwrap tool.
  • npm-windows-upgrade - Upgrade npm on Windows.
  • generator-nm - Scaffold out an npm package.
  • pkg-up - Find the closest package.json file.
  • read-pkg-up - Read the closest package.json file.
  • normalize-package-data - Normalize package metadata.
  • pkg-conf - Get namespaced config from the closest package.json.
  • npm-run-path - Run locally installed binaries in the terminal by name like with global ones.
  • local-npm - Use npm offline.
  • npe - CLI for inspecting and editing properties in package.json.
  • engine-deps - Manage Node.js version specific dependencies with ease.
  • enpeem-search - Search packages by scraping the npm web search.
  • npm-issues - Search known issues of all your packages at once.
  • john - Make npm3's flat dependencies easier to find and sort.
  • ntl - Interactive CLI menu to list & run npm tasks.
  • decheck - Explore dependencies of npm packages in the command-line.
  • shrinkpack - Lock down your dependencies and install offline.
  • redrun - Expand scripts from package.json to improve execution speed.
  • package-size - Get the bundle size of an npm package.
  • synp - Convert yarn.lock to package-lock.json and vice versa.
  • npm-run-all - CLI tool to run multiple npm-scripts in parallel or serial.
  • onchange - Watch files and folders and run a command when something changed.
  • cli-error-notifier - Sends native desktop notifications when npm scripts fail.
  • luna - App to manage npm dependencies.
  • emma-cli - Interactive CLI package search utility.
  • lockfile-lint - Lint lockfiles for improved security and trust policies to mitigate malicious package injection and insecure lockfile resources.

Clients

  • yarn - Fast, reliable, and secure dependency management.
  • npm - The official client.
  • pnpm - Fast, disk space efficient package manager.

Tips

Update to the latest npm version

$ npm install --global npm

Windows users, read more.

Command aliases

  • npm i โ†’ npm install
  • npm i -D โ†’ npm install --save-dev
  • npm t โ†’ npm test
  • npm it โ†’ npm install && npm test
  • npm r โ†’ npm uninstall
  • npm un โ†’ npm uninstall
  • npm up โ†’ npm update

Shell aliases

Speed up your common npm tasks.

In your .zshrc/.bashrc:

sh alias ni='npm install' alias nid='npm install --save-dev' alias nig='npm install --global' alias nt='npm test' alias nit='npm install && npm test' alias nk='npm link' alias nr='npm run' alias ns='npm start' alias nf='npm cache clean && rm -rf node_modules && npm install' alias nlg='npm list --global --depth=0'

Don't add to package.json when installing

By default npm adds packages you install to the dependencies field in package.json (since v5). You can prevent this by specifying the --no-save flag. You can add a package to devDependencies with --save-dev/-D:

$ npm install --save-dev ava

Run scripts

You can easily run scripts using npm by adding them to the "scripts" field in package.json and run them with npm run <script-name>. Run npm run to see available scripts. Binaries of locally install packages are made available in the PATH, so you can run them by name.

json { "name": "awesome-package", "scripts": { "cat": "cat-names" }, "dependencies": { "cat-names": "^1.0.0" } }

$ npm run cat Max

All package.json properties are exposed as environment variables:

json { "name": "awesome-package", "scripts": { "name": "echo $npm_package_name" } }

$ npm run name awesome-package

Passing options to commands

You can pass options to the command you are using in your npm script by adding -- --flag like in the example below. The -- marks the end of options parsing, so npm run will just ignore it and pass it to the command.

json { "name": "awesome-package", "scripts": { "xo": "xo", "xo:fix": "npm run xo -- --fix", } }

Adding the -- --fix option is like executing xo --fix.

Silent option

npm run has a --silent option which is especially useful when combining npm scripts.

Imagine you have a setup for linting your JavaScript files like the following:

json { "name": "awesome-package", "scripts": { "xo": "xo", "xo:fix": "npm run xo --silent -- --fix", } }

Using the --silent option reduces the output in the terminal. See this comparison.

Lifecycle scripts

npm comes with predefined lifecyle scripts which are excuted under specific conditions if they are defined in your package.json.

json { "name": "awesome-package", "scripts": { "prepublishOnly": "nsp check" }, "devDependencies": { "nsp": "^3.0.0" } }

This will be executed automatically before your npm package is published to the registry via npm publish to check for known vulnerabilties in your dependencies.

Note: prepublishOnly is available since npm v4.0.0. See npm docs.

npm start and npm test

npm start and npm test are also lifecycle scripts but are not executed automatically.

json { "name": "awesome-package", "scripts": { "start": "node server.js", "test": "ava" }, "devDependencies": { "ava": "^1.0.0" } }

Therefore they can be executed simply with:

console $ npm test $ npm start

pre and post scripts

These are special lifecycle scripts which can be used to run scripts automatically in sequence.

json { "name": "awesome-package", "scripts": { "pretest": "eslint .", "test": "ava" }, "devDependencies": { "eslint": "^4.19.0", "ava": "^1.0.0" } }

console $ npm test

This will lint your files before running your tests. The tests will not run if linting fails. Or more generally spoken: the following script wonโ€™t be executed if one of the scripts running in sequence exits with an exit code other than 0.

Note: pre and post scripts can also be used for your custom npm scripts. So npm run foo will also run prefoo and postfoo if defined.

Run script with npx

npm comes bundled with npx (Since v5.2.0) โ€” a tool to execute package binaries. Each command is executed either from the local node_modules/.bin directory, or from a central cache, installing any packages needed in order for <command> to run.

json { "name": "awesome-package", "dependencies": { "cat-names": "^1.0.0" } }

If the binary is already installed, it will be executed from node_modules/.bin.

$ npx cat-names Max

But if the binary is missing, it will be installed first.

$ npx dog-names npx: installed 46 in 3.136s Bentley

Run commands with different Node.js versions

With npx (Comes bundled with npm v5.2.0 or newer) and the node-bin package, you can easily try out code in different Node.js versions without having to use a version manager like nvm, nave, or n.

$ npx --package=node-bin@6.11.0 -- node --version v6.11.0

Sometimes it can be useful to have a local version of a package as a dependency. You can use npm link to link one local package into another. Run npm link in the package you want to use. This creates a global reference. Then go into your original package and run npm link <package-name> to link in the other package.

$ cd rainbow $ npm link $ cd ../unicorn $ npm link rainbow

You can now use rainbow as a dependency in the unicorn package.

Install a package from GitHub

npm supports using a shorthand for installing a package directly from a GitHub repo:

$ npm install sindresorhus/chalk

Let's target a specific commit as the main branch is a moving target:

$ npm install 'sindresorhus/chalk#51b8f32'

Specify either a commit SHA, branch, tag, or nothing.

You can also install Git dependencies with semver: (Requires npm v5 or newer)

$ npm install 'sindresorhus/chalk#semver:^2.0.0'

Install a specific version of a package

$ npm install chalk@1.0.0

List top-level installed packages and their version

$ npm ls --depth=0

Command help

Get help docs for a command:

$ npm help <command>

Example:

$ npm help install

Standalone version of a package

Quickly get a standalone version of a package that is browserified and usable in the browser.

https://wzrd.in/standalone/<package-name>[@<version>]

Examples:

Great for prototyping, but download the file or use Browserify yourself for production.

FAQ

Community

Documentation

Support

Awesome AVA Awesome AVA

AVA is a minimal & futuristic JavaScript test runner

Contents

Articles

Videos

Packages

Works with AVA

Tutorials

Miscellaneous

Support

Awesome ESLint Awesome

eslint

A list of awesome ESLint configs, plugins, etc.

If you want to contribute, please read the contribution guidelines.

Contents

Configs

Configs by Well-Known Companies/Organizations

Other Prominent Configs (100 stars or so)

Other Configs

  • Adjunct - A reasonable collection of plugins to use alongside your main ESLint configuration.
  • Ash-Nazg - One config to rule them all!
  • Cecilia - ESLint configuration for awesome projects.
  • ES - Shareable config for very strict code.
  • Hardcore - The most strict (but practical) ESLint config out there.
  • Problems - Shareable config that only catches actual problems, and doesn't enforce stylistic preferences.
  • Supermind - Shareable config for Supermind style.

Preconfigured Configs with ESLint Set up

  • Node.js Standard Style - Node.js core config.
  • prettier-standard - Prettier formatter with custom eslint rules allowed.
  • Standard - JavaScript Standard Style.
  • Superlint - JavaScript Supermind Style.
  • XO - JavaScript happiness style linter โค๏ธ.
  • Healthier - Code style agnostic version of Standard, perfect companion to Prettier.

Plugins

Code Quality

Compatibility

  • Compat - Lint browser compatibility of APIs used (caniuse as an ESLint plugin).
  • ecmascript-compat - Disable ECMAScript language features not supported by your browserslist targets.
  • es - Disable specific ECMAScript language versions or individual features.
  • es5 - ESLint plugin for ES5 users (forbid ES2015+ usage).
  • ie11 - Detect unsupported ES6 features in IE11.

CSS in JS

Deprecation

  • deprecate - Mark functions or modules as deprecated and get lint messages when they are used.
  • deprecation - Identifies use of jsdoc @deprecated functions.
  • disable - Disable specified plugins using file path patterns and inline comments.

Embedded

  • HTML - Linting for JavaScript inside of HTML <script> tags.
  • Markdown - Linting for JavaScript inside of Markdown.

Frameworks

Languages and Environments

  • AssemblyScript - Rules for enforcing restrictions on TypeScript toward AssemblyScript compliance.
  • eslint-plugin-eslint-plugin - An ESLint plugin for linting ESLint plugins.
  • Coffee - Enables linting CoffeeScript files with, with optional linting rules from the Coffeelint library.
  • Flow
  • Flow - Flow type linting rules.
  • Flow Errors - Run Flow as an ESLint plugin.
  • HTML - ESLint plugin for HTML.
  • JSON
  • JSON - Lint your JSON files.
  • JSON, package.json - Lint, format, and auto-fix your JSON files. Sort your package.json.
  • JSON with Comments - ESLint plugin for JSON, JSONC and JSON5.
  • JSON Schema - Validates data defined in JavaScript, JSON, YAML and TOML using JSON Schema Validator.
  • MDX - ESLint Parser/Plugin for MDX.
  • Node - Additional ESLint's rules for Node.js.
  • SQL - SQL linting rules for ESLint.
  • TOML - ESLint plugin for TOML.
  • TypeScript - Linting rules for TypeScript.
  • YAML - ESLint plugin for YAML.

Libraries

  • GraphQL
  • dotansimha/graphql-eslint - Validates, prettifies and checks your GraphQL operations and GraphQL schema for best-practices.
  • apollostack/eslint-plugin-graphql - Check your GraphQL query strings against a schema.
  • TypeGraphQL - Linting rules for TypeGraphQL, targeted at finding common mistakes.
  • jQuery - Linting rules for jQuery, including versioned configs for deprecated features.
  • JSDoc - Linting rules for JSDoc comments (including the JavaScript within @example).
  • Lodash
  • Lodash - Lodash specific linting rules.
  • Lodash/fp - Lodash/fp specific linting rules.
  • Lodash template - Plugin for Lodash template/Underscore template.
  • Microtemplates (Used in Lodash and Underscore.js)
  • Mongodb - Mongodb native Node.js driver linting rules.
  • Ramda - Ramda specific linting rules.
  • RequireJS - Linting rules for RequireJS.

Misc

  • Diff - Run ESLint on your changed lines only. Also supports CI!
  • Notice - An eslint rule that checks the top of files and fixes them too!
  • Only-Error - Convert all rules to errors.
  • Only-Warn - Convert all rules to warnings.
  • PutOut - an ESLint plugin integrates putout linter into ESLint.
  • TypeLint - Introduces types, based on existing schemas (Swagger, Redux) and linting access to object properties, preventing undefined errors.
  • Woke - Helps catch insensitive words, promoting an inclusive codebase.

Practices and Specific ES Features

  • array-func - Avoid redundancy when using es2015 array methods and functions.
  • arrow functions - ESLint rules to ensure proper arrow function definitions.
  • Babel - Adds replacements for built-in rules to include Babel features.
  • boundaries - Ensures that your architecture boundaries are respected by the elements in your project checking file structure and dependencies.
  • ESLint Comments - Best practices about ESLint directive comments (/*eslint-disable*/, etc.).
  • eslint-plugin-write-good-comments - Enforce good writing style in comments.
  • fp - ESLint rules for functional programming.
  • functional - ESLint rules to disable mutation and promote fp in JavaScript and TypeScript.
  • Immutable - Disable all mutation in JavaScript.
  • import - Linting of ES2015+ import/export syntax, and prevent issues with misspelling of file paths and import names.
  • new-with-error - Require errors to be thrown using new.
  • no-constructor-bind - Encourages use of class properties by reporting use of this with bind or setting state in constructors.
  • no-inferred-method-name - Custom rule for ESLint that checks for inferred method names within object literals.
  • no-loops - It's 2019 and you still use loops?
  • no-restricted-syntax - Show queried syntax's content in messages.
  • no-use-extend-native - Prevent using extended native objects.
  • Promise - Best practices when working with promises.
  • pure - Enforce pure functions (without side effects).
  • RegExp - ESLint plugin for finding regexp mistakes and style guide violations.
  • sort-keys-fix - Adds fixer for ESLint sort-keys rule.
  • this - Write pure functions, don't allow this.
  • toplevel - An eslint plugin for disallow side effect at module toplevel.

Performance

  • clean-regex - JavaScript regex linter that aims to help write better regular expressions by pointing out errors and suggesting improvements.
  • DOM
  • Optimize Regex - Optimize regex literals.
  • Perf-Standard plugin and Config

Security

  • no-secrets - An eslint plugin that detects potential secrets/credentials.
  • no-unsanitized - Checks for innerHTML, outerHTML, etc.
  • pii - Checks and enforces PII Compliance of the code. i.e. no email address, birth date, IP address or phone number in comments or string literals.
  • ScanJS config and plugin - Security-related rules.
  • Security - ESLint rules for Node Security.
  • xss - Tries to detect XSS issues in codebase before they end up in production.

Style

Testing Tools

Parsers

  • Babel - Use Babel's parser for linting all Babel features.
  • TypeScript - A TypeScript parser that produces output compatible with ESLint.
  • BrightScript - BrightScript plugin for Roku development. Includes Parser and Rules.
  • GraphQL - Parser for the GraphQL AST. Includes parser, plugin, processor (for non-graphql files) and rules.

Formatters

  • badger - Make SVG-based badges summarizing ESLint results (e.g., for use on a README).
  • git-log - ESLint Formatter featuring Git Author, Date, and Hash.
  • github - See ESLint errors and warnings directly in pull requests.
  • gitlab - Output ESLint results in the GitLab code quality results.
  • mo - Good-lookin' ESLint formatter and also for delightful reading experience.
  • SARIF - Generate a results in a SARIF format so it can be imported into tools like GitHub Advanced Security.
  • summary-chart - Format ESLint output into a bar chart.

Globals

Tools

  • eslint-define-config - Provide a defineConfig function for .eslintrc.js files.
  • es-file-traverse - Obtain a list of only those files which are in use based on imports and/or requires from an entry file or files; list passable to ESLint. Intended esp. for linting 3rd party dependencies.
  • eslint-find-rules - Find built-in ESLint rules you don't have in your custom config.
  • eslint-index - CLI for finding and managing rules in ESLint config files.
  • eslint-interactive - The CLI tool to fix huge number of ESLint errors.
  • eslint-multiplexer - Multiplex eslint results and merge results for common files.
  • eslint-nibble - Ease into ESLint, by fixing one rule at a time.
  • eslint-rule-documentation - Find the url for the documentation of an ESLint rule.
  • eslint-watch - Run ESLint with watch mode.
  • codacy-eslint - Docker used at Codacy to run ESLint.
  • esprint - Run ESLint across multiple threads.
  • generator-eslint - Generate ESLint plugin and rules with Yeoman.
  • editor-info - Detect whether one is within an editor/IDE and which type, allowing one to tweak ESLint configuration accordingly.
  • eslint-dashboard - Interactive ESLint workflow that lives in your terminal.
  • eslint-remote-tester - CLI tool for testing given ESlint rules against multiple repositories at once.

Developing for ESLint

  • eslint-docs - Keep your rule descriptions up-to-date across the repository.

Tutorials

Installation and Setup

  • Lintier - CLI to quickly scaffold an ESLint & Prettier setup in a TypeScript project.

Awesome FP JS Awesome

This is a curated list of awesome functional programming code and learning resources for JavaScript. As a multi-paradigm programming language, JavaScript can be written in many styles. With these resources we want to help you to make better use of JavaScriptโ€™s support for writing programs in a functional way.

Functional programming is a style of programming which models computations as the evaluation of expressions. Contrast this with imperative programming where programs are composed of statements which change global state when executed. Functional programming typically avoids using mutable state and favors side-effect free functions and immutable data instead. This encourages writing composable and declarative programs that are easy to reason about.

Table of Contents
Tags

These may be appended to entries. Each should be preceded by a "+" or "-" to indicate presence or absence of the tag's meaning. "-" tags should only be included when they are likely to help someone filter libraries for their needs. For instance, -TS tags are probably useful for Typescript users screening for types, but -CT tags would be less likely to be helpful to anyone.

  • CT. Category Theory. This library appears to be inspired by Haskell, Scala, or another functional language's library with a grounding in Category Theory.
  • TS. Typescript. This library has typescript types.

Libraries

  • Ramda โ€“ A practical functional library for JavaScript that is designed specifically for a functional programming style. A style that makes it easy to create functional pipelines and never mutates user data. +TS.
  • Ramda Adjunct is a community-maintained extension of Ramda.
  • Ramda-extension is set of utility point-free functions composed only from Ramda functions.
  • Rambda - A faster alternative to Ramda in under 10kB.
  • Rambdax - Extended version of Rambda
  • Folktale โ€“ A standard library for functional programming in JavaScript. Typescript support expected mid-2020. -TS.
  • lodash/fp โ€“ An instance of Lodash with its methods wrapped to produce immutable, auto-curried, iteratee-first, data-last methods. +TS.
  • functional.js โ€“ A lightweight functional JavaScript library that facilitates currying and point-free / tacit programming.
  • 101 โ€“ A modern and modular JavaScript utility library made to work well with vanilla JavaScript methods. -TS
  • fnuc โ€“ A functional library for CoffeeScript (and JavaScript) to facilitate functional composition and higher order functions.
  • barely-functional โ€“ A tiny (2.7kb) functional programming library using native ES5/6 operations. -TS.
  • bluebird-promisell - A practical functional programming library for promises.
  • prelude.ls โ€“ A functionally oriented utility library somewhat based off of Haskell's Prelude module. -TS.
  • preludejs - Hardcore Functional Programming for JavaScript. -TS.
  • 1-liners โ€“ Functional tools that couldnโ€™t be simpler. A dead simple functional utility belt, hand-crafted with love and attention. -TS.
  • fn-curry โ€“ A simple function to curry a function.
  • curry โ€“ Curry your functions using function bind syntax.
  • compose-function โ€“ Compose a new function from smaller functions.
  • functionize โ€“ A collection of functions which aid in making non-functional libraries functional.
  • lambdajs โ€“ The full ECMAScript API done a functional way.
  • fp-dom โ€“ Making the DOM functional.
  • react-on-lambda - Replace JSX in React with functions (currying, compositions and etc).
  • trifl โ€“ A functional user interface library with unidirectional dataflow and a virtual dom.
  • funcy โ€“ An experiment in adding functional pattern matching to JavaScript. Experimental :triangular_flag_on_post:
  • date-fp โ€“ A functional utility library for working with JavaScript dates. All functions in date-fp are pure, autocurried and will not mutate the date objects they are applied to.
  • js-joda โ€“ An immutable date and time library that provides a simple, domain-driven and clean API based on the ISO8601 calendar.
  • _part_ โ€“ A micro library that encourages functional programming by making native methods available as partially applied functions.
  • claire โ€“ A property-based testing library for clearly specifying code invariants and behaviour.
  • FPO.js โ€“ FP library for JavaScript by Kyle Simpson (aka getify). Supports named-argument style methods.
  • Javascript Parser Combinator โ€“ Javascript parser combinator implementation inspired by the Haskell's Parsec
  • fun-task โ€“ An abstraction for managing asynchronous code in JS. Tasks are similar to Promises with the key difference that Tasks can represent a computation while Promises can represent only the results of a computation. Ships with Flow type definitions.
  • most โ€“ Ultra-high performance reactive programming to help you compose asynchronous operations on streams of values and events without many of the hazards of side effects and mutable shared state.
  • zen-signals โ€“ โ˜ฏ The simplest signal library possible
  • funfix โ€“ Funfix is a library of type classes and data types for Functional Programming in JavaScript, TypeScript and Flow. +CT, +TS.
  • pico-lambda - Arrays, Strings and things the functional way. A 640b functional library based on native methods. -TS.
  • pareto-js - An extremely small, intuitive and fast functional utility library for JavaScript -TS.
  • fpEs - A small library provides simple usages of basic FP & pattern-matching/sumtype & MonadIO/Rx & Optional for Javascript. -TS.
  • Creed โ€“ Sophisticated and functionally-minded async with advanced features: coroutines, promises, ES2015 iterables, fantasy-land. -TS.
  • TGrid - Grid Computing Framework, Network & Thread extension of TSTL, supporting RFC (Remote Function Call). +TS.
  • Ferrum โ€“ Iterator library with support for objects as iterables, lazy evaulation andpipe(); implements Traits (from Rust)/Type Classes (from Haskell) in JS. -TS.
  • fp-ts - Typed functional programming in TypeScript. +CT, +TS.
  • iter-tools - a rich toolset for working with iterables, both sync and async. +TS.
  • remeda A function library roughly subsetting Ramda, but written in Typescript and thus more type-friendly. +TS.
  • futil-js - A collection of functional utilities that could conceivably be part of a library like lodash/fp, but for some reason or other are not.
  • rubico - ๐Ÿž [a]synchronous functional syntax
  • rocket-pipes - Powerful pipes, that chain Promise and ADT like Maybe or Either from popular FP libraries. +TS
  • omg-curry - Comprehensive Curry Library with Operator Curry, Curry from functions, Decurry and Infifnite Curries.
  • lfi - A Lazy Functional Iteration Library Supporting Sync, Async, and Concurrent Iteration.
  • ts-multimethod - TypeScript multimethods inspired by Clojure multimethods. +TS
  • ts-fp-di - Tiny TypeScript functional dependency injection, based on Node.js AsyncLocalStorage. +TS
  • effect-ts โ€“ A Fully-fledged functional effect system for typescript with a rich standard library. +TS
  • qio โ€“ A type-safe, functional, performant, lawful, composable data structure that solves practical problems of effect-full code in node and browser. +TS
  • Ditox.js - Powerful dependency injection container for building modular apps. +TS
  • RxEffects - Reactive state and effect management with RxJS. +TS
  • fxts - Lazy evaluation and concurrency. +TS
  • ts-belt - Fast, modern, and practical utility library for FP in TypeScript. (Uses a data-first approach like remeda, but is faster than remeda, ramda, rambda, and lodash/fp.)

Data Structures

Write performant functional code by using the right data structures for the task.

  • Icepick Utilities for treating frozen JavaScript objects as persistent immutable collections
  • Immutable.js โ€“ Immutable persistent data collections.
  • Immer โ€“ Immer is a tiny package for immutable state based on copy-on-write mechanism. +TS.
  • Mori โ€“ ClojureScriptโ€™s persistent data structures and supporting API from the comfort of vanilla JavaScript.
  • Baobab โ€“ persistent and optionally immutable data tree with cursors.
  • immutable-sequence.js โ€“ High performance implementation of Immutable Sequence in JavaScript, based on Finger Trees.
  • Timm โ€“ Immutability helpers with fast reads and acceptable writes.
  • Lazy.js โ€“ A utility library with a lazy engine under the hood that strives to do as little work as possible while being as flexible as possible.
  • DerivableJS โ€“ Functional Reactive State for JavaScript and TypeScript. DerivableJS enables you to make elegant declarative statements about how your bits of state are related. +TS.
  • imlazy โ€“ Library for creating and manipulating lazy iterables using the ES2015 iteration protocols.
  • collectable โ€“ Super high-performance immutable data structures for modern JavaScript and TypeScript applications. +TS.
  • List - An extremely fast immutable list with a comprehensive functional API.
  • prelude.ts - Immutable persistent collections, functional constructs such as Option and Either, and combinators. Implemented in Typescript but supports javascript too. +CT, +TS.
  • TSTL - C++ STL (Standard Template Library) is implemented in TypeScript. STL Containers, iterators, algorithms and functors, that following functional programming rule, are provided. +TS.

Algebraic Data Types

Use the laws of math instead of always reinventing your own thing. Algebraic!

  • Fantasy Land โ€“ Not a library, but a specification of the Monad laws for libraries to follow.
  • Static Land โ€“ Specification similar to Fantasy Land but based on static methods rather than instance methods.
  • immutable-ext โ€“ FantasyLand extensions for Immutable.js.
  • daggy โ€“ Library for creating tagged constructors.
  • Sanctuary โ€“ Sanctuary makes it possible to write safe code without null checks. +CT, +TS.
  • monet.js โ€“ A library that assists functional programming by providing a rich set of Monads and other useful functions. +CT, +TS.
  • union-type โ€“ A small JavaScript library for defining and using union types.
  • freeky โ€“ A collection of Free monads.
  • Fluture โ€“ A Future library with included control utilities, high performance and great error messages.
  • fantasy-combinators โ€“ Common combinators.
  • fantasy-birds โ€“ Port of the Haskell package Data.Aviary.Birds. Everything for your combinatory needs.
  • crocks โ€“ A collection of popular Algebraic Data Types with the main goal to curate and provide not only a common interface between each type, but also all of the helper functions needed to hit the ground running. -TS.
  • kudo-js - A small utility library with a set of Algebraic Data Types and Helper functions to help you write code in a functional programming style in Javascript
  • purify - Functional programming library for TypeScript focusing on ADTs. +CT, +TS.
  • MojiScript- an async-first, opinionated, and functional language designed to have 100% compatibility with JavaScript engines
  • Pratica - Small, simple, easy FP data types for pragmatic and productive developers who need to ship reliable code fast. +CT, +TS.
  • Tifi - Tifi is a library for functional programming in TypeScript. It solves a problem of the existence of both undefined and null. Tifi is inspired by the OCaml/Reason utilities for the option data type. +CT, +TS.

Lenses

  • lenses โ€“ Composable kmett style lenses.
  • optics โ€“ Profunctor optics (Lens, Prism, iso).
  • ramda-lens โ€“ :ram: :mag_right: Lens library built on Ramda.
  • fantasy-lenses โ€“ Composable, immutable getters and setters. (Profunctor lenses WIP)
  • nanoscope โ€“ Lenses with dotty support.
  • partial.lenses โ€“ Partial lenses is a comprehensive, high-performance optics library for JavaScript.
  • shades โ€“ A lodash-inspired lens-like library for Javascript.

Functional Languages that Compile to JavaScript

  • ClojureScript โ€“ Compiles Clojure, a hosted Lisp with immutable persistent data structures, to JavaScript.
  • Elm โ€“ A type-safe functional programming language for declaratively creating web browser-based graphical user interfaces. Implemented in Haskell.
  • Fable - Compiles F# to readable JavaScript.
  • PureScript โ€“ A small strongly typed programming language that compiles to JavaScript.
  • Idris โ€“ A general purpose pure functional programming language with dependent types.
  • GHCJS โ€“ Haskell to JavaScript compiler, based on GHC.
  • ElixirScript โ€“ Compiles a subset of Elixir, a dynamic, functional language designed for building scalable and maintainable applications, to JavaScript.
  • Js_of_ocaml โ€“ Compiles OCaml bytecode to JavaScript, making it possible to run OCaml programs in the browser.
  • Reason โ€“ Reason is a new interface to OCaml, a highly expressive dialect of the ML language featuring type inference and static type checking.
  • ReScript โ€“ (previously known as Bucklescript) ReScript is a type-safe language that compiles to the highest quality of clean, readable and performant JavaScript code.
  • Scala.js โ€“ Compiles Scala to JavaScript.
  • LiveScript โ€“ LiveScript has a straightforward mapping to JavaScript and allows you to write expressive code devoid of repetitive boilerplate.
  • Quack - A multi-paradigm programming language with gradual and duck typing that targets PHP and JS.
  • ion - no BS JS
  • RamdaScript - A Lisp that compiles to opinionated JavaScript on top of RamdaJS
  • RacketScript โ€“ RacketScript aims to leverage both JavaScript and Racket's ecosystem, and make interoperability between them clean and smooth.
  • Koka โ€“ Koka is a function-oriented programming language that seperates pure values from side-effecting computations with a familiar JavaScript like syntax.
  • TypeScript - TypeScript is a typed superset of JavaScript that compiles to plain JavaScript.
  • Gleam - Gleam is a typed, functional language that compiles to Erlang and JavaScript.

Programming Tools

  • eslint-plugin-fp - ESLint rules for functional programming
  • 4.5 โ€“ A functional assertions library. If you prefer functional style APIs and practices in JavaScript, this library aims to solve this with functionally-oriented assertions that are lazy and monadic.
  • hm-def โ€“ Runtime type checking for JS with Hindley Milner signatures.
  • ftor - A pluggable runtime type checker and functional debugging tool that supports parametric and row polymorphism, implicit rank-2 types and algebraic data types via Scott Encoding.

Resources

Books

  • Professor Frisbyโ€™s Mostly Adequate Guide to Functional Programming โ€“ This is a book on the functional paradigm in general using the worldโ€™s most popular functional programming language: JavaScript. Itโ€™s a practical introduction that builds up intuition through real-world examples. Strongly recommended. By Brian Lonsdorf (2016)
  • Functional-Light JavaScript โ€“ This book explores the core principles of functional programming (FP) that can be applied to JavaScript. But what makes this book different is that it approaches these principles without all the heavy terminology.
  • JavaScript Allongรฉ, the โ€œSixโ€ edition. Starts with as little as possible about functions โ€“ but no less! โ€“ and builds up towards powerful combinators and decorators. A foundational book. By Reginald Braithwaite (2016)
  • Functional Programming in JavaScript teaches JavaScript developers functional techniques that will improve extensibility, modularity, reusability, testability, and performance. Through concrete examples and jargon-free explanations, this book teaches you how to apply functional programming to real-life development tasks. By Luis Atencio (2016)
  • Eloquent JavaScript. A modern introduction to programming using JavaScript. By Marijn Haverbeke (2014)
  • Functional JavaScript teaches how to create code thatโ€™s beautiful, safe, and simple to understand and test by using JavaScriptโ€™s functional programming support. By Michael Fogus (2013)
  • Grokking Simplicity teaches functional programming from first principles. It uses JavaScript for all code examples and it uses real-world scenarios. By Eric Normand (2019)
  • scriptum - a no-frills functional programming library and a online course based on it

Articles

Videos

Examples and Exercises

  • FPJS-Class โ€“ Functional Programming learned through JavaScript.
  • functional-javascript-workshop โ€“ The goal of this workshop is to create realistic problems that can be solved using terse, vanilla, idiomatic JavaScript to teach fundamental functional programming features of JavaScript.
  • functional-frontend-architecture โ€“ A functional frontend framework. Based on Ramdaย +ย union-type-jsย +ย Flydย +ย Snabbdom
  • cube-composer โ€“ A puzzle game inspired by functional programming.
  • FP Youtube Search โ€“ YouTube search app with ReactJS, Redux, and FP concepts
  • Hardcore Functional Programming in JavaScript โ€“ Learn to apply techniques from the forefront of computer science research to solve practical problems in Javascript. Discover functional programming and see it demonstrated step-by-step with how to build an example web app using abstract interfaces like Monads, Functors, Monoids and Applicatives. (commercial)
  • Escape from Callback Mountain - Design & refactoring tips for Promise-based Functional JavaScript. Key benefits include better readability, testability, and reusability. MIT.
  • Functional Programming for Beginners โ€“ Dozens of exercises with solutions and explanations.
  • Learn Rx โ€“ A series of interactive exercises introducing five basic ingredients of functional (reactive) programming: the map, filter, concatAll, reduce, and zip functions.
  • Holdem Evaluator - Yet another Holdem Evaluator with Ramda functional style

Community

Talk

Contribution

:star: Suggestions and PRs are welcome! :star:

Please read the contribution guidelines to get started.

License

CC0

To the extent possible under law, Christoph Hermann has waived all copyright and related or neighboring rights to this work.

Awesome Observables Awesome

An Observable is a collection that arrives over time. Observables can be used to model push-based data sources such as events, timer intervals, asynchronous requests, and animations. Observables can be transformed, combined, and consumed using array-like methods.

Please read the contribution guidelines before contributing.

Contents

Documentation

Implementations

Packages

Libraries

These are libraries that harness the power of Observables, not necessarily spec compatible Observable implementations.

  • Cycle.js - A functional and reactive JavaScript framework for cleaner code.

Articles

Videos

Awesome npm scripts Awesome

Everything awesome for using npm as a build tool.

You might also like awesome-npm.

Notice: I'm currently too busy to actively expand this list; therefore, I've decided to make this an OPEN Open Source Project. Individuals making significant and valuable contributions are given commit-access to the project to contribute as they see fit.

Contents

Articles

Videos/Talks

Task Runners

Tools for running multiple commands or npm scripts in parallel or sequentially.

  • script-runner - Simple task runner with a terse syntax.
  • npm-run-all - Fully featured task runner.
  • redrun - Expand scripts from package.json to improve execution speed.

File Watchers

Tools to watch your source files and run a build command whenever any of the files change.

  • onchange - onchange <glob> -- <command>.
  • watch - watch <command> <directory>.

Dev Servers

  • http-server - Simple zero-configuration command-line http server.
  • live-server - Simple development http server with live reload capability.

Cross-platform Utilities

Utilities to perform common command-line tasks without worrying about cross-platform compatibility.

  • rimraf - Delete files or directories; like rm -rf.
  • del-cli - Safer file and folder deletion.
  • mkdirp - Create a directory, creating parent directories if needed; like mkdir -p.
  • cpr - cp -r for Node.js.
  • cpy-cli - File/directory copying/renaming.
  • copyfiles - Copy a list of files into a directory.
  • sync-files - rsync-like directory syncing with watch mode.
  • echo-cli - Cross-platform echo with JS escape sequence support.
  • clear-cli - Clear the terminal.
  • cross-env - Set environment variables for scripts, unix-style.
  • cross-os - Run platform-specific npm scripts.
  • ntee - Utility that reads from standard input and writes to standard output and files; like Unix tee.
  • catw - Print a file to stdout, with optional watch mode; sorta like Unix cat.

Utility Packs

  • shx - Collection of common Unix utilities implemented in Node.js; example usage: shx rm somefile.

Other Utilities

  • hashmark - Take contents of a file and output as new file with a hash in the name.
  • gzip-size-cli - Get the gzipped size of a file or stdin.
  • opn-cli - Open websites, files, executables, etc. with the user's preferred application.
  • headr - Add header / banner info to a file.
  • Bower files CLI - Get main bower files on the command line.
  • cli-error-notifier - Send native desktop notifications when npm scripts fail.

Miscellaneous

  • screwy - The npm scripts GUI.
  • Forrest - npm scripts desktop client.
  • run-npm - Run locally-installed node module executables. Useful for debugging npm scripts.
  • npm-quick-run - Quickly run npm scripts by prefix without typing the full name.
  • edit-script - Edit npm scripts from the command line without worrying about JSON escaping.
  • ntl - Interactive cli menu to list and run npm scripts.

Cross-platform Shell Reference

A quick reference of the shell operators & commands that work the same on Unix and Windows.

  • Use && to run commands in sequence. If a command fails, the script exits.
  • Use | to pipe the stdout of one command into the stdin of the next. (do-something | something else)
  • Use > to write the stdout of a command to a file. (do-something > file)
  • Use < to send the contents of a file to a command's stdin. (command < file)
  • Use cd <dir> to change the current working directory to <dir>. Note that cd alone prints the current working directory on windows, but changes the working directory to ~ on *nix.

npm run Reference

You can use npm run-script or npm run; they both do the same thing, but npm run is shorter.

  • Run just npm run to print a list of scripts.
  • Running npm run script (where script is the name of your script) will run prescript, script, and postscript; in that order.
  • You can't nest pre and post hooks (i.e. preprescript won't work).
  • You can pass arguments to your scripts by passing -- to npm run, followed by the arguments. Example: Given the script "mocha": "mocha", you can run npm run mocha -- --reporter xunit. This effectively runs mocha --reporter xunit.
  • Running npm test is the same as running npm run test. The same applies to npm start and npm stop.
  • You can run npm run <script> -s to silence the default npm output (useful for calling a script within another script).

Contributing

See CONTRIBUTING.md.

License

CC0

Logo

30 seconds of code

Short JavaScript code snippets for all your development needs

  • Visit our website to view our snippet collection.
  • Use the Search page to find snippets that suit your needs. You can search by name, tag, language or using a snippet's description. Just start typing a term and see what comes up.
  • Browse the JavaScript Snippet collection to see all the snippets in this project or click individual tags at the top of the same page to narrow down your search to a specific tag.
  • Click on each snippet card to view the whole snippet, including code, explanation and examples.
  • You can use the button at the bottom of a snippet card to copy the code to clipboard.
  • If you like the project, give it a star. It means a lot to the people maintaining it.

Want to contribute?

Credits

  • This repository is maintained by the 30 seconds of code organization on GitHub.
  • All snippets are licensed under the CC-BY-4.0 License, unless explicitly stated otherwise.
  • Logos, names and trademarks are not to be used without the explicit consent of the owners of the 30 seconds of code GitHub organization.
  • Our website is powered by Netlify, Next.js & GitHub.

Awesome

Ponyfills are like polyfills but without overriding native APIs. Polyfills patch a piece of functionality so that older environments can support newer features whilst Ponyfills, on the other hand, provide functionality as standalone modules.

Contents

Articles

Main

  • โญ๏ธ core-js-pure - The entire standard library.

Uncategorised

Numbers

Strings

Objects

Arrays

Browser Features

Node.js Features

Awesome Swift

| iOS App | Awesome | Linux | Projects | Updated | :-: | :-: | :-: | :-: | :-: | Download on the App Store | Awesome | :penguin: | 1080 | March 08, 2022

Contents

Guides

An awesome list of Swift related guides.

Newsletter

back to top

  • Swift Developments - A weekly curated newsletter containing for people interested in designing and developing their own iOS, watchOS and Apple TV apps.
  • Swift Weekly Brief - A multi author curated newsletter.

Official Guides

back to top

Style Guides

back to top

  • Airbnb - Airbnb's Official Style Guide.
  • Google - This style guide is based on Appleโ€™s excellent Swift standard library style and also incorporates feedback from usage across multiple Swift projects within Google.
  • LinkedIn - LinkedIn's Official Style Guide.
  • Raywenderlich - Raywenderlich guide, a must read.

Third party Guides

back to top

Boilerplates

  • iOS project template - iOS project template with fastlane lanes, Travis CI jobs and GitHub integrations of Codecov, HoundCI for SwiftLint and Danger.
  • Swift Module Template - An opinionated starting point for awesome, reusable modules.

REPL

Editor Support

Support for your favorite editors.

Emacs

back to top

  • swift-mode - Emacs support, including partial flycheck error support.

Google Colaboratory

back to top

Vim

back to top

Benchmark

  • xcprofiler - Command line utility to profile compilation time.

Converters

  • Swiftify - Objective-C to Swift online code converter and Xcode extension.
  • Zolang :penguin: - A DSL for generating code in multiple programming languages.

Other Awesome Lists

Check out apps on these projects: * Awesome iOS Interview - List of the questions that helps you to prepare for the interview. * awesome-macOS - A curated list of awesome applications, softwares, tools and shiny things for macOS. * example-ios-apps - An amazing list for people who are beginners and learning ios development and for ios developers who need any example app or feature. * open-source-ios-apps - A collaborative list of open-source iOS Apps. * open-source-mac-os-apps - Awesome list of open source applications for macOS.

Dependency Managers

Dependency manager software for Swift. * Accio - A SwiftPM based dependency manager for iOS & Co. with improvements over Carthage. * Carthage - A new dependency manager. * CocoaPods - The most used dependency manager. * Mint - A package manager that installs and runs Swift command line tools. * swift-package-manager - SPM is the Package Manager for the Swift Programming Language.

Patterns

  • App Architecture - A sample Code of the App Architecture Book.
  • CleanArchitectureRxSwift - Example of Clean Architecture of iOS app using RxSwift.
  • Design-Patterns-In-Swift - Design Patterns.
  • Reactant - Reactant is a reactive architecture for iOS.
  • ReduxUI - Redux framework for easy use with SwiftUI.
  • Spin - Provides a versatile Feedback Loop implementation working with RxSwift, ReactiveSwift and Combine.
  • StateViewController - Stateful UIVIewController composition โ€” the MVC cure for Massive View Controllers.
  • The Composable Architecture - A library for building applications in a consistent and understandable way, with composition, testing, and ergonomics in mind.
  • Viperit - Viper Framework for iOS.

Misc

Miscellaneous Swift related projects * Beak - A command line interface for your Swift scripts. * CodableWrappers - A Collection of PropertyWrappers to make custom Serialization of Codable Types easy. * Fugen - A command line tool for exporting resources and generating code from your Figma files. * Model2App - Turn your data model into a working CRUD app. * Surmagic - Create XCFrameworks with ease! A Command Line Tool to create XCFramework for multiple platforms at one shot! iOS, Mac Catalyst, tvOS, macOS, and watchOS. * SwagGen :penguin: - A command line tool for generating a REST API from a Swagger spec based off Stencil templates. * Swiftbrew - Homebrew for Swift packages. * SwiftGen - A suite of tools to auto-generate code for various assets of your project. * SwiftKit - Start your next Open-Source Swift Framework ๐Ÿ“ฆ. * SwiftPlate - Easily generate cross platform framework projects from the command line. * Toybox - Xcode Playground management made easy. * Tuist - An open source command line tool to create, maintain and interact with your Xcode projects at scale. * xcbeautify - Little beautifier tool for xcodebuild. * XcodeGen - Tool for generating Xcode projects from a YAML file and your project directory. * xcodeproj - A library to read, update and write Xcode projects and workspaces.

Libs

Here you can find a list of snippets and libs for your Swift projects.

Accessibility

back to top

  • Capable - Keep track of accessibility settings, leverage high contrast colors, and use scalable fonts to enable users with disabilities to use your app.

AI

Libs for AI based projects (Machine Learning, Neural Networks etc). back to top

  • CoreML-Models - A collection of unique Core ML Models.
  • DL4S - Automatic differentiation, fast tensor operations and dynamic neural networks from CNNs and RNNs to transformers.

Algorithm

back to top

  • Algorithm - A toolset for writing algorithms and probability models.
  • BTree - Fast sorted collections for Swift using in-memory B-trees.
  • swift-algorithm-club - Algorithms and data structures, with explanations.
  • SwiftLCS :penguin: - implementation of the longest common subsequence (LCS) algorithm.

Analytics

Analytics related libraries to easily track your app usage back to top

  • Umbrella - Analytics abstraction layer.

Animation

Libs to help with animation back to top

  • Advance - A powerful animation framework for iOS, tvOS, and OS X.
  • ChainPageCollectionView - Fancy two-level collection view layout and animation.
  • Comets - Animating Particles.
  • DKChainableAnimationKit - Easy to read and write chainable animations.
  • Ease - Animate everything with Ease.
  • EasyAnimation - A library to take the power of UIView.animateWithDuration(_:, animations:...) to a whole new level.
  • Elephant - Elegant SVG animation kit.
  • FlightAnimator - Natural Blocks Based Core Animation Framework.
  • Gemini - Gemini is rich scroll based animation framework.
  • IBAnimatable - Design and prototype UI, interaction, navigation, transition and animation for App Store ready Apps in Interface Builder with IBAnimatable.
  • Interpolate - Interpolation framework for creating interactive gesture-driven animations.
  • Kinieta - An simple Animation Engine for iOS with an Intuitive API and Readable Code.
  • lottie-ios - An iOS library to natively render After Effects vector animations.
  • Pastel - Gradient animation effect like Instagram.
  • Poi - Poi makes you use card UI like tinder UI .You can use it like tableview method.
  • Presentation - A library to help you to make tutorials, release notes and animated pages.
  • Pulsator - Pulse animation for iOS.
  • Sica - Simple Interface Core Animation. Run type-safe animation sequencially or parallelly.
  • Spring - A library to simplify iOS animations.
  • SpriteKitEasingSwift - Better Easing for SpriteKit.
  • spruce-ios - Choreograph animations on the screen.
  • Stellar - A Physical animation library.
  • TheAnimation - Type-safe CAAnimation wrapper. It makes preventing to set wrong type values.
  • ViewAnimator - Brings your UI to life with just one line.
  • YapAnimator - Your fast and friendly physics-based animation system.

API

Quick libs to get access to third party API services back to top

App Routing

Internal app routing systems. back to top

  • Appz - Launch external apps and deeplink with ease.
  • Crossroad - :oncoming_bus: Crossroad is an URL router focused on handling Custom URL Schemes.
  • LightRoute - Routing between VIPER modules.
  • Linker - Lightweight way to handle internal and external deeplinks for iOS.
  • MonarchRouter - Declarative state- and URL-based router. Complex automatic View Controllers hierarchy transitions. Time-tested server-side conventions.
  • RxFlow - RxFlow is a navigation framework for iOS applications based on a Reactive Flow Coordinator pattern.
  • SwiftCurrent - Manage complex workflows wherever Swift can be built. It comes with built-in support for UIKit, Storyboards, and SwiftUI.
  • SwiftRouter - A URL Router for iOS.
  • URLNavigator - Elegant URL Routing.

App Store

Libs to help with apple app store, in app purchases and receipt validation. back to top

  • Apphud - Lightweight library to easily handle auto-renewable subscriptions with no backend required.
  • InAppPurchase - A Simple, Lightweight and Safe framework for In App Purchase.
  • merchantkit - A modern In-App Purchases management framework for iOS.
  • SwiftyStoreKit - Lightweight In App Purchases framework.

Audio

Libs to work with audio back to top

  • AudioKit - Powerful audio synthesis, processing and analysis, without the steep learning curve.
  • AudioPlayer - A wrapper around AVPlayer with some cool features.
  • AudioPlayerSwift - AudioPlayer is a simple class for playing audio (basic and advanced usage) in iOS, OS X and tvOS apps.
  • Beethoven - An audio processing library for pitch detection of musical signals.
  • FDSoundActivatedRecorder - Start recording when the user speaks.
  • FDWaveformView - An easy way to display an audio waveform in your app.
  • ModernAVPlayer - Persistence AVPlayer to resume playback after bad network connection even in background mode.
  • MusicKit - A framework for composing and transforming music.
  • Soundable - Soundable allows you to play sounds, single and in sequence, in a very easy way.
  • SwiftAudioPlayer - Simple audio player for iOS that streams and performs realtime audio manipulations with AVAudioEngine.
  • SwiftySound - Simple library that lets you play sounds with a single line of code.
  • voice-overlay-ios - An overlay that gets your userโ€™s voice permission and input as text in a customizable UI.

Augmented Reality

back to top

  • ARHeadsetKit - High-level framework for using $5 Google Cardboard to replicate Microsoft Hololens.
  • ARKit-CoreLocation - Combines the high accuracy of AR with the scale of GPS data.
  • ARKit-Navigation - Navigation in augmented reality with MapKit.
  • ARVideoKit - Capture & record ARKit videos, photos, Live Photos, and GIFs.
  • ARVoxelKit - Voxel graphic framework using ARKit.
  • Poly - Unofficial Google Poly SDK โ€“ explore the world of 3D.

Authentication

Easy way to manage auth in your apps. back to top

  • Cely - A Plug-n-Play login framework.
  • InstagramLogin - Simple way to authenticate Instagram accounts.
  • LinkedInSignIn - Simple view controller to log in and retrieve an access token from LinkedIn.
  • LoginKit - LoginKit is a quick and easy way to add a Login/Signup UX to your iOS app.
  • ReCaptcha - [In]visible ReCaptcha for iOS.
  • SpotifyLogin - Authenticate with the Spotify API.

Bots

Libs to build bot back to top

  • Telegram Bot SDK :penguin: - Unofficial SDK.
  • Telegrammer :penguin: - Open-source framework for Telegram Bots developers. It was built on top of Apple/SwiftNIO which help to demonstrate excellent performance.

Cache

back to top

  • AwesomeCache - Manage cache easy.
  • Cache - Nothing but Cache.
  • CachyKit - A Caching Library that can cache JSON, Image, Zip or AnyObject with expiry date/TTYL and force refresh.
  • Cachyr - A small key-value data cache for iOS, macOS and tvOS.
  • Carlos - A simple but flexible cache.
  • EVURLCache - If you want to make your app still works when it's offline.
  • MemoryCache - Type-safe memory cache.

Chart

back to top

  • Charts - Beautiful charts for iOS/tvOS/OSX (port of MPAndroidChart).
  • ChartView - Swift package for displaying beautiful charts effortlessly
  • PNChart-Swift - A simple and beautiful chart lib with animation.
  • ScrollableGraphView - Adaptive scrollable graph view for iOS to visualise simple discrete datasets.
  • SwiftChart - A simple line and area charting library for iOS. Supports multiple series, partially filled series and touch events.
  • SwiftCharts - Highly customizable charts for iOS.
  • SwiftUICharts - A charts / plotting library for SwiftUI. Works on macOS, iOS, watchOS, and tvOS and has accessibility and Localization features built in.
  • TKRadarChart - A customizable radar chart.

Chat

Libs to get access to build chat app back to top

  • Chatto - A lightweight framework to build chat applications.
  • InputBarAccessoryView - A simple and easily customizable InputAccessoryView for making powerful input bars with autocomplete and attachments.
  • MessageKit - A community-driven replacement for JSQMessagesViewController.
  • MessengerKit - A UI framework for building messenger interfaces.
  • Real-time Chat with Firebase - Functional real-time chat app with Firebase Firestore using MessageKit.

Colors

Interesting snippets related to color management and utility. back to top

  • ChromaColorPicker - An intuitive and fun iOS color picker.
  • ColorKit - Advanced color manipulation for iOS.
  • DynamicColor - An extension to manipulate colors easily.
  • Gradients - A curated collection of splendid 180+ gradients.
  • HexColor - Define UIColors as Hex integers.
  • Hue - Hue is the all-in-one coloring utility that you'll ever need.
  • PrettyColors - Styles and colors text in the Terminal with ANSI escape codes. Conforms to ECMA Standard 48.
  • SheetyColors - An action sheet styled color picker for iOS.
  • SwiftGen-Colors - A tool to auto-generate enums for your UIColor constants.
  • SwiftHEXColors - HEX color handling as an extension for UIColor.
  • UIColor-Hex-Swift - Hex to UIColor converter.
  • UIGradient - A simple and powerful library for using gradient layer, image, color.

Command Line

Create command line applications. back to top

  • Ashen - A framework for writing terminal applications in Swift. Based on The Elm Architecture.
  • Commander :penguin: - Compose beautiful command line interfaces.
  • CommandLine :penguin: - Library for creating command-line interfaces.
  • Guaka :penguin: - The smart and beautiful (POSIX compliant) command line framework.
  • LineNoise :penguin: - A zero-dependency replacement for readline.
  • nef - A set of command line tools that lets you have compile time verification of your documentation written as Xcode Playground.
  • Progress.swift :penguin: - Add beautiful progress bars to your command line.
  • Swift Argument Parser - Straightforward, type-safe argument parsing for Swift.
  • SwiftCLI :penguin: - A powerful framework that can be used to develop a CLI.
  • Swiftline - A set of tools to help you create command line applications.
  • SwiftShell - A library for creating command-line applications and running shell commands.
  • SwiftyTextTable :penguin: - A lightweight library to generate text tables.

Concurrency

Easier ways to work with concurrency. back to top

  • async+ :penguin: - A chainable interface for Swift 5.5's async/await.
  • AsyncNinja - A complete set of concurrency and reactive programming primitives.
  • Futures :penguin: - Lightweight promises for iOS, macOS, tvOS, watchOS, and server-side.
  • GroupWork :penguin: - Easy concurrent, asynchronous tasks.
  • Hydra - Promises & Await - Write better async code.
  • Kommander - Manage the task execution in different threads through Kommands.
  • Queuer :penguin: - A queue manager, built on top of OperationQueue and Dispatch (aka GCD).
  • SwiftCoroutine :penguin: - Coroutines for iOS, macOS and Linux.
  • Throttler - Throttle massive number of asynchronous inputs in a single drop of one line API.
  • Venice :penguin: - Communicating sequential processes (CSP), Linux ready.

Currency

back to top

  • Money - Currency formatter.

Data Management

back to top

CBOR

Concise Binary Object Representation. back to top

  • CBORCoding :penguin: - Easy CBOR encoding and decoding for iOS, macOS, tvOS and watchOS.

Core Data

No more pain with Core Data, here are some interesting libs to handle data management. back to top

  • AERecord - Super awesome Core Data wrapper library for iOS.
  • AlecrimCoreData - Simple Core Data wrapper library.
  • CloudCore - Robust CloudKit synchronization: offline editing, relationships, shared and public databases, and more.
  • CoreStore - simple and elegant way to handle Core Data.
  • DataKernel - DataKernel is a minimalistic wrapper around Core Data stack to ease persistence operations. No external dependencies.
  • Graph - An elegant data-driven framework for Core Data.
  • JSQCoreDataKit - A swifter Core Data stack.
  • JustPersist - Easiest and safest way to do persistence on iOS with Core Data support out of the box.
  • QueryKit - An easy way to play with Core Data filtering.
  • Skopelos - A minimalistic, thread safe, non-boilerplate and super easy to use version of Active Record on Core Data.
  • SugarRecord - Helps with Core Data and Realm.

CSV

Helpful libraries to parse from and serialize to comma-separated value representations. back to top

  • CodableCSV :penguin: - Read and write CSV files row-by-row or through Swift's Codable interface.
  • CSVParser :penguin: - Fast parser for CSV.

Firebase

back to top

  • Ballcap - Ballcap is a database schema design framework for Cloud Firestore.

GraphQL

back to top

JSON

Struggling using json data? Here are some interesting ways to handle it. back to top

  • AlamofireObjectMapper - An Alamofire extension which converts JSON response data into objects using ObjectMapper.
  • Alembic - Functional JSON parsing, mapping to objects, and serialize to JSON.
  • Argo - JSON parsing library.
  • Arrow - Elegant JSON Parsing.
  • Decodable :penguin: - JSON parsing.
  • Elevate - JSON parsing framework that makes parsing simple, reliable and composable.
  • EVReflection - Reflection based JSON encoding and decoding. Including support for NSDictionary, NSCoding, Printable, Hashable and Equatable.
  • Freddy - A reusable framework for parsing JSON.
  • Gloss :penguin: - Shiny JSON parsing library.
  • HandyJSON - A handy JSON-object serialization/deserialization library.
  • Himotoki - A type-safe JSON decoding library.
  • JASON - JSON parsing with outstanding performances and convenient operators.
  • JSONHelper - Lightning fast JSON deserialization and value conversion library for iOS & OS X.
  • JSONNeverDie - Auto reflection tool from JSON to Model, user friendly JSON encoder / decoder, aims to never die.
  • ObjectMapper - JSON object mapper.
  • PMJSON - JSON encoding/decoding library.
  • Sextant :penguin: - High performance JSONPath queries
  • SwiftyJSON - A lib for JSON with error handling.
  • SwiftyJSONAccelerator - macOS app to generate Swift 5 models for JSON (with Codeable).
  • Unbox - The easy to use JSON decoder.

Key Value Store

back to top

  • Default - Modern interface to UserDefaults + Codable support.
  • Defaults - Strongly-typed UserDefaults with support for Codable and key observation.
  • DefaultsKit - Simple, Strongly Typed UserDefaults for iOS, macOS and tvOS.
  • Prephirences - Manage application preferences, NSUserDefaults, iCloud, Keychain and more.
  • SecureDefaults - A lightweight wrapper over UserDefaults & NSUserDefaults with an extra AES-256 encryption layer.
  • Storez - Safe, statically-typed, store-agnostic key-value storage.
  • SwiftStore - A Key-Value store backed by LevelDB.
  • SwiftyUserDefaults - Cleaner, nicer syntax for NSUserDefaults.
  • UserDefaultsStore - Why not use UserDefaults to store Codable objects ๐Ÿ˜‰.
  • Zephyr - Effortlessly synchronize NSUserDefaults over iCloud.

MongoDB

back to top

  • MongoKitten :penguin: - MongoDB Connector.
  • Perfect-MongoDB :penguin: - A stand-alone wrapper around the mongo-c client library, enabling access to MongoDB servers.

Multi Database

Data management layers that involve multiple sources. back to top

  • ModelAssistant - Elegant library to manage the interactions between view and model.
  • PersistenceKit - Store and retrieve Codable objects to various persistence layers, in a couple lines of code!
  • Shallows - Your lightweight persistence toolbox.

ORM

back to top

  • fluent :penguin: - Simple ActiveRecord implementation.
  • Perfect-CRUD :penguin: - CRUD is an object-relational mapping (ORM) system using Codable protocol.

Other Data

Other ways to persist data back to top

  • CoreXLSX - Excel spreadsheet (XLSX) format support.
  • Disk - Delightful framework for iOS to easily persist structs, images, and data.
  • EVCloudKitDao - Simplified access to CloudKit with support for subscriptions and local caching.
  • KeyPathKit - KeyPathKit provides a seamless syntax to manipulate data using typed keypaths.
  • LeetCode-Swift - Solutions to LeetCode interview questions.
  • Pencil - Write any value to file.
  • StorageManager - Safe and easy way to use FileManager as Database.

Realm

back to top

  • Realm - Realm is a mobile database: a replacement for Core Data & SQLite.
  • Realm+JSON - A concise Mantle-like way of working with Realm and JSON.
  • RealmWrapper - Safe and easy wrappers for RealmSwift.
  • Unrealm - Unrealm enables you to easily store Swift native Classes, Structs and Enums into Realm.

SQL drivers

back to top

  • MySQL Swift :penguin: - MySQL client library.
  • Perfect-MySQL :penguin: - A stand-alone wrapper around the MySQL client library, enabling access to MySQL servers.
  • Perfect-PostgreSQL :penguin: - A stand-alone wrapper around the libpq client library, enabling access to PostgreSQL servers.

SQLite

Are you interested in storing your app data using SQLite? Here are some interesting resources. back to top

TOML

Tom's Obvious, Minimal Language. back to top

XML

If you prefer to manage XML data formatted entries, here are some helpful libs back to top

  • AEXML - xml wrapper.
  • CheatyXML - A powerful framework designed to manage XML easily.
  • SwiftyXML - The most swifty way to deal with XML.
  • SWXMLHash - Simple XML parsing.
  • XMLCoder - XMLEncoder & XMLDecoder based on Codable protocols from the standard library.
  • XMLMapper - A simple way to map XML to Objects.

YAML

back to top

  • YamlSwift - Load YAML and JSON documents.
  • Yams :penguin: - Sweet YAML parser.

ZIP

back to top

  • Zip - Framework for zipping and unzipping files.
  • Zip Foundation - A library to create, read and modify ZIP archive files.

Date

Handle data formatting easily. back to top

  • AnyDate - Date & Time API inspired from Java 8 DateTime API.
  • Chronology - Building a better date/time library.
  • DateHelper - Simple date helper.
  • Datez - Library for dealing with NSDate, NSCalendar, NSDateComponents, and NSTimeInterval.
  • Datify - Easypeasy date functions.
  • NVDate - Date extension library.
  • SwiftDate - Easy NSDate Management.
  • SwiftMoment - A time and calendar manipulation library.
  • Time - Type-safe time calculations, powered by generics.
  • Timepiece - Intuitive NSDate extensions.
  • TrueTime.swift - Get the true current time impervious to device clock time changes (NTP library).

Dependency Injection

Dependency injection libs back to top

  • Cleanse - A Lightweight Dependency Injection Framework by Square.
  • Corridor - A Coreader-like Dependency Injection ฮผFramework.
  • Deli - Deli is an easy-to-use Dependency Injection(DI).
  • DIKit - Dependency Injection Framework for Swift, inspired by KOIN.
  • Dip - A simple Dependency Injection Container.
  • DITranquillity - Dependency injection framework with tranquility.
  • Locatable - A micro-framework that leverages Property Wrappers to implement the Service Locator pattern.
  • Pure - A way to do a dependency injection without a DI container.
  • Swinject - A dependency injection framework.
  • Typhoon - Dependency injection toolkit.
  • Weaver - A declarative, easy-to-use and safe Dependency Injection framework.

Device

A collection of libs to recognize your device. back to top

  • Device - Light weight tool for detecting the current device and screen size.
  • Device.swift - Super-lightweight library to detect used device.
  • DeviceKit - DeviceKit is a value-type replacement of UIDevice.
  • Deviice - Swift library to easily check the current device and some more info about it.
  • Luminous - Get everything you need to know about the device.
  • Thingy - A modern device detection and querying library.
  • UIDeviceComplete - UIDevice extensions that fill in the missing pieces.

Documentation

Generate documentation for Swift code back to top

  • jazzy - Soulful docs.
  • SourceDocs - Generate Markdown reference documentation that lives with your code.

Email

back to top

Embedded Systems

Build your embedded Linux projects on a RaspberryPi, BeagleBone, C.H.I.P. and other boards. back to top

  • SwiftyGPIO :penguin: - Interact with Linux GPIO/SPI/PWM on ARM.

Peripherals

Interact with specific external peripherals. back to top

Events

Alternatives to NSNotificationCenter, Key-Value-Observation, or delegation. back to top

  • Bond - Binding framework.
  • BrightFutures - Promise and future lib.
  • Combinative - UI event handling using Apple's combine framework.
  • EasyFutures - ๐Ÿ”—Futures & Promises. Easy to use. Highly combinable.
  • EmitterKit - Implementation of event emitters and listeners.
  • FutureKit - Future/Promises Library.
  • Katana - Write apps a la React and Redux.
  • LightweightObservable - A lightweight implementation of an observable sequence that you can subscribe to.
  • NoticeObserveKit - NoticeObserveKit is type-safe NotificationCenter wrapper that associates notice type with info type.
  • Notificationz - Helping you own NSNotificationCenter by providing a simple, customizable adapter.
  • Observable - The easiest way to observe values.
  • OpenCombine - Open source implementation of Apple's Combine framework for processing values over time.
  • PMKVObserver - Modern thread-safe and type-safe key-value observing.
  • PromiseKit - Async promise programming lib.
  • ReactiveCocoa - ReactiveCocoa (RAC) is a Cocoa framework inspired by Functional Reactive Programming. It provides APIs for composing and transforming streams of values over time.
  • ReactorKit - A framework for reactive and unidirectional application architecture.
  • ReSwift - Unidirectional Data Flow.
  • RxReduce - Reactive implementation of the state container pattern (like Redux). It is based on the simple concepts of state immutability and unidirectionnal data flow.
  • RxSwift - Microsoft Reactive Extensions (Rx).
  • Signals - Replaces delegates and notifications.
  • Snail - An Observables framework.
  • SwiftEventBus - A publish/subscribe event bus optimized for iOS.
  • Tempura - A holistic approach to iOS development, inspired by Redux and MVVM.
  • Tokamak - React-like declarative API for building native UI components with easy to use one-way data binding.
  • Tomorrowland - Lightweight Promises.
  • TopicEventBus - Publishโ€“subscribe design pattern implementation framework, with ability to publish events by topic.
  • VueFlux - Unidirectional Data Flow State Management Architecture - Inspired by Vuex and Flux.
  • When - A lightweight implementation of Promises.

Files

back to top

  • FileKit - Simple and expressive file management.
  • FileProvider - FileManager replacement for Local, iCloud and Remote (WebDAV/FTP/Dropbox/OneDrive/SMB2) files for iOS/tvOS and macOS.
  • KZFileWatchers - A micro-framework for observing file changes, both local and remote.
  • PathKit :penguin: - Effortless path operations.
  • Pathos :penguin: - Efficient Unix file management.

Fonts

A collection of font related snippets. back to top

  • FontAwesome.swift - Use FontAwesome in your projects.
  • FontBlaster - Programmatically load custom fonts into your iOS app.
  • Inkwell - An inkwell to use custom fonts on the fly.
  • IoniconsKit - Use ionicons as UIImage / UIFont in your projects.
  • OcticonsKit - Use Octicons as UIImage / UIFont in your projects.
  • OpenSansSwift - OpenSans.
  • SwiftIconFont - Fontawesome, Iconic, Ionicons, Octicon ports.
  • SwiftIcons - Library for Font Icons: dripicons, emoji, font awesome, icofont, ionicons, linear icons, map icons, material icons, open iconic, state, weather.
  • SwiftUI-FontIcon - Font icons for SwiftUI: font awesome, ionicons, material icons.
  • SYSymbol - All the SFSymbols at your fingertips.
  • UIFontComplete - Font management (System & Custom) for iOS and tvOS.

Game Engine

back to top

  • glide engine - SpriteKit and GameplayKit based engine for making 2d games, with practical examples and tutorials.
  • Raylib for Swift :penguin: - A Cross-Platform Swift package for Raylib. Builds Raylib from source so no need to fiddle with libraries. Just add as a dependency in you game package and go!

2D

back to top

Games

back to top

  • FDChessboardView - A view controller for chess boards
  • Sage :penguin: - A cross-platform chess library.

Gesture

back to top

  • ShowTime - Show off your iOS taps and gestures for demos and videos with just one line of code.
  • SwiftyGestureRecognition - UIGestureRecognizers in Xcode Playgrounds.
  • SwipyCell - UITableViewCell implementing swiping to trigger actions (known from the Mailbox App).
  • Tactile - A safer and more idiomatic way to respond to gestures and control events.

Hardware

A category dedicated to hardware related libs back to top

3D Touch

Easy handle new 3D Touch / Force Touch feature thanks to these libs. back to top

Bluetooth

Wrappers around CoreBluetooth back to top

  • BlueCap - Wrapper around CoreBluetooth and much more.
  • Bluejay - A simple framework for building reliable Bluetooth LE apps.
  • BluetoothKit - Easily communicate between iOS/OSX devices using BLE.
  • RxBluetoothKit - iOS & OSX Bluetooth library for RxSwift.
  • SwiftyBluetooth - Simple and reliable closure based wrapper around CoreBluetooth.

Camera

Awesome camera libs back to top

  • ALCameraViewController - Camera view controller with custom image picker and image cropping.
  • CameraBackground - Show camera layer as a background to any UIView.
  • CameraKit-iOS - Massively increase camera performance and ease of use in your next project.
  • FDTake - Easily take a photo or video or choose from library.
  • Fusuma - Instagram-like photo browser and a camera feature.
  • NextLevel - Rad Media Capture.
Barcode

Barcode, QR-code, other code readers back to top

Haptic Feedback

Libraries that involve the use of Haptic Feedback back to top

  • Haptica - Easy Haptic Feedback Generator.

iBeacon

Interested in using iBeacon in your Swift project? Here some interesting resources. back to top

Sensors

Manage your device sensors in a faster and easier way back to top

Images

An interesting list of image related libs.. back to top

  • Agrume - A lemony fresh iOS image viewer.
  • AlamofireImage - AlamofireImage is an image component library for Alamofire.
  • APNGKit - High performance and delightful way to play with APNG format in iOS.
  • ATGMediaBrowser - Image slide-show viewer with multiple predefined transition styles, and with ability to create new transitions with ease.
  • AXPhotoViewer - An iPhone/iPad photo gallery viewer, useful for viewing a large (or small!) number of photos.
  • BlockiesSwift - Unique blocky identicons/profile picture generator.
  • Brightroom - An image editor and engine using CoreImage.
  • CTPanoramaView - A library that displays spherical or cylindrical panoramas with touch or motion based controls.
  • DTPhotoViewerController - A fully customizable photo viewer ViewController to display single photo or collection of photos, inspired by Facebook photo viewer.
  • FacebookImagePicker - Facebook album photo picker.
  • FaceCrop - Detect and center faces in your images using Appleโ€™s Vision Framework.
  • FlexibleImage - A simple way to play with images.
  • FMPhotoPicker - A modern, simple and zero-dependency photo picker with an elegant and customizable image editor.
  • gifu - Highly performant animated GIF support for iOS.
  • GPUImage 2 - GPUImage 2 is a BSD-licensed framework for GPU-accelerated video and image processing.
  • GPUImage 3 - GPUImage 3 is a BSD-licensed framework for GPU-accelerated video and image processing using Metal.
  • HanekeSwift - A lightweight generic cache for iOS with extra love for images.
  • ImageDetect - Detect and crop faces, barcodes and texts in image with iOS 11 Vision API.
  • ImageLoader - A lightweight and fast image loader for iOS.
  • ImageScout - Implementation of fastimage - supports PNG, GIF, and JPEG.
  • ImageViewer - An image viewer ร  la Twitter.
  • ImgixSwift - Easily update image urls to be fast and responsive.
  • JLStickerTextView - A UIImageView allow you to add multiple Label (multiple line text support) on it, you can edit, rotate, resize the Label as you want with one finger ,then render the text on Image.
  • Kanvas - A iOS library for adding effects, drawings, text, stickers, and making GIFs from existing media or the camera.
  • Kingfisher - Image download and caching.
  • LetterAvatarKit - A UIImage extension that generates letter-based avatars.
  • Lightbox - A convenient and easy to use image viewer for your iOS app.
  • MapleBacon - Image download and caching library.
  • MCScratchImageView - A custom ImageView that is used to cover the surface of other view like a scratch card, user can swipe the mulch to see the view below.
  • Moa - An image download extension of the image view for iOS, tvOS and macOS.
  • Nuke - Advanced framework for loading, caching, processing, displaying and preheating images.
  • PassportScanner - Scan the MRZ code of a passport and extract the first name, last name, passport number, nationality, date of birth, expiration date and personal number.
  • Rough - Rough lets you draw in a sketchy, hand-drawn-like, style.
  • Sharaku - Image filtering UI library like Instagram.
  • Snowflake - Work with SVG.
  • SwiftDraw - Library that converts SVG images to UIImage, NSImage and generates CoreGraphics source code.
  • SwiftGen-Assets - A tool to auto-generate enums for all your UIImages from your Assets Catalogs.
  • SwiftGif - A small UIImage extension with GIF support.
  • SwiftSVG - A single pass SVG parser with multiple interface options (String, NS/UIBezierPath, CAShapeLayer, and NS/UIView).
  • SwiftWebImage - ๐Ÿš€SwiftUI Image downloader with performant LRU mem/disk cache.
  • SwiftyGif - High performance GIF engine.
  • TinyCrayon - A smart and easy-to-use image masking and cutout SDK for mobile apps.
  • Toucan - Image processing api.
  • UIImageColors - iTunes style color fetcher for UIImage.
  • Viewer - Image viewer (or Lightbox) with support for local and remote videos and images.
  • Vulcan - Multi image downloader with priority.
  • YPImagePicker - Instagram-like image picker & filters for iOS.
  • ZImageCropper - Crop image in any shape.

Key Value Coding

Libraries for key-value coding back to top

Keyboard

Do you want to create your own customized keyboard? Here are some interesting resources back to top

  • IHKeyboardAvoiding - An elegant solution for keeping any UIView visible when the keyboard is being shown. No UIScrollView required.
  • IQKeyboardManager - Codeless drop-in universal library allows to prevent issues of keyboard sliding up and cover UITextField/UITextView.
  • KeyboardHideManager - Codeless manager to hide keyboard by tapping on views for iOS.
  • KeyboardShortcuts - Add user-customizable global keyboard shortcuts to your macOS app. Includes a Cocoa and SwiftUI component.
  • Ribbon - ๐ŸŽ€ A simple cross-platform toolbar/custom input accessory view library for iOS & macOS.
  • Typist - Small, drop-in UIKit keyboard manager for iOS apps-helps manage keyboard's screen presence and behavior without notification center.

Kit

Libraries for coding with a simplified API back to top

  • BFKit-Swift :penguin: - A collection of useful classes, structs and extensions to develop Apps faster.
  • C4iOS - Harnesses the power of native iOS programming with a simplified API.

Layout

Libs to help you with layout. back to top

  • BrickKit - Create complex and responsive layouts in a simple way.
  • CGLayout :penguin: - Powerful autolayout framework, that can manage UIView(NSView), CALayer, not rendered views and etc. Provides placeholders.
  • FlexLayout - Nice and clean interface to the highly optimized Facebook yoga Flexbox implementation.
  • Grid - The most powerful Grid container missed in SwiftUI.
  • LayoutKit - LayoutKit is a fast view layout library for iOS, macOS, and tvOS.
  • LayoutLess - Write less UI Code.
  • Neon - A powerful programmatic UI layout framework.
  • PinLayout - Fast Views layouting without auto layout. No magic, pure code, full control and blazing fast. Concise syntax, intuitive, readable & chainable. [iOS/macOS/tvOS]
  • Static - A simple static table views for iOS.
  • Stevia - Elegant view layout for iOS.

Auto Layout

Bored of using storyboard? Give a try to declarative auto layout libs. back to top

  • Bamboo - Auto Layout (and manual layout) in one line.
  • Cartography - Declarative auto layout lib for your project.
  • Cassowary - A linear constraint solving library using the same algorithm as AutoLayout.
  • Cupcake - An easy way to create and layout UI components for iOS.
  • DeviceLayout - AutoLayout can be set differently for each device.
  • EasyPeasy - Auto Layout made easy.
  • EasySwiftLayout - Lightweight Swift framework for Apple's Auto-Layout.
  • EZLayout - An easier and faster way to code Autolayout.
  • KVConstraintKit - An Impressive Autolayout DSL for iOS, tvOS & OSX.
  • MisterFusion - DSL for AutoLayout, supports Size Class.
  • Mortar - A concise but flexible DSL for creating Auto Layout constraints and adding subviews.
  • NorthLayout - Fast path to layout using Visual Format Language (VFL) with extended syntax.
  • PureLayout - The ultimate API for iOS & OS X Auto Layout.
  • SnapKit - Autolayout DSL for iOS & OS X.
  • Swiftstraints - Powerful auto-layout framework that lets you write constraints in one line of code.
  • TinyConstraints - TinyConstraints is the syntactic sugar that makes Auto Layout sweeter for human use.

Localization

Frameworks that helps with localizing your app back to top

  • BartyCrouch - Incrementally update/translate your Strings files from Code and Storyboards/XIBs.
  • CrowdinSDK - Delivers all new translations from Crowdin project to the application immediately.
  • IBLocalizable - Localize your views directly in Interface Builder with IBLocalizable.
  • L10n-swift - Localization of an application with ability to change language "on the fly" and support for plural forms in any language.
  • LocalizationKit - Realtime dynamic localization of your app with remote management so you can manage maintain and deploy translations without resubmitting app.
  • Localize - Localize apps using e.g. regular expressions in Localizable.strings.
  • Localize-Swift - Localize apps using e.g. regular expressions in Localizable.strings.
  • Locheck - Validate .strings and .stringsdict files for errors
  • NoOptionalInterpolation - Get rid of "Optional(...)" and "nil" in string interpolation. Easy pluralization.
  • SwiftGen-L10n - A tool to auto-generate enums for all your Localizable.strings keys (with appropriate associated values if those strings contains printf-format placeholders like %@).
  • Translatio - Super lightweight library that helps you to localize strings, even directly in storyboards.

Location

back to top

  • AsyncLocationKit - Wrapper for Apple CoreLocation framework with Modern Concurrency Swift (async/await).
  • STLocationRequest - An elegant and simple 3D Flyover Location Request Screen.

Logging

Utilities for writing to and reading from the device log back to top

  • AEConsole - Customizable Console UI overlay with debug log on top of your iOS App.
  • CleanroomLogger - Configurable and extensible high-level logging API that is simple, lightweight and performant.
  • Duration :penguin: - Lightweight logging library focused on reporting timings for operations.
  • Gedatsu - Provide readable format about AutoLayout error console log.
  • HeliumLogger :penguin: - IBM's lightweight logging framework.
  • Printer - A fancy logger for your next app.
  • Puppy :penguin: - A flexible logging library that supports multiple transports and platforms.
  • Puree - A log collector for iOS.
  • QorumLogs - Logging Utility for Xcode & Google Docs.
  • Rainbow :penguin: - Delightful console output.
  • SwiftyBeaver :penguin: - Multi-platform logging during development & release.
  • TinyConsole - A tiny log console to display information while using your iOS app.
  • TraceLog :penguin: - Dead Simple: logging the way it's meant to be! Runs on iOS, macOS, and Linux.
  • Watchdog - Utility for logging excessive blocking on the main thread.
  • WatchdogInspector - A logging tool to show the current framerate (fps) in the status bar of your iOS app.
  • Willow - Willow is a powerful, yet lightweight logging library.
  • XCGLogger - Full featured & Configurable logging utility with log levels, timestamps, and line numbers.

Maps

back to top

  • Cluster - Easy Map Annotation Clustering.
  • FlyoverKit - FlyoverKit enables you to present stunning 360ยฐ flyover views on your MKMapView with zero effort while maintaining full configuration possibilities.
  • GEOSwift - Make it easier to work with geographic models and calculate intersections, overlapping, projections etc.
  • LocoKit - A location and activity recording framework for iOS.
  • MapViewPlus - Use any custom view as custom callout view for MKMapView with cool animations. Use any image as annotation view.

Math

back to top

  • Arithmosophi - Set of protocols for Arithmetic and Logical operations.
  • BigInt - Arbitrary-precision arithmetic.
  • DDMathParser - DDMathParser makes it easy to parse a String and evaluate it as a mathematical expression.
  • SigmaSwiftStatistics - A collection of functions for statistical calculation.
  • Upsurge - Simple and fast matrix and vector math.

Natural Language Processing

back to top

Network

A list of libs that allow you to decrease the amount of time spent dealing with http requests. back to top

  • Alamofire :penguin: - Elegant networking.
  • APIKit - Library for building type-safe web API client.
  • Ciao - Publish and discover services using mDNS (Bonjour, Zeroconf).
  • CodyFire - Powerful Codable API requests builder and manager for iOS. Based on Alamofire.
  • Conduit - Robust networking for web APIs.
  • Connectivity - ๐ŸŒ Makes Internet connectivity detection more robust by detecting Wi-Fi networks without Internet access.
  • Dots - Lightweight Concurrent Networking Framework.
  • Dratini - A neat network layer.
  • Heimdallr.swift - Easy to use OAuth 2 library for iOS.
  • Just :penguin: - HTTP for Humans (a python-requests style HTTP library).
  • Malibu - A networking library built on promises.
  • Moya - Network abstraction layer.
  • MultiPeer - A wrapper for the MultipeerConnectivity framework for automatic offline data transmission between devices.
  • NEKit - A toolkit for Network Extension Framework.
  • NetClient - Versatile HTTP networking library.
  • Netfox - A lightweight, one line setup, network debugging library.
  • Netswift - A type-safe, high-level networking solution.
  • OAuth2 - oauth2 auth lib.
  • OAuthSwift - OAuth library for iOS.
  • Pitaya :penguin: - HTTP / HTTPS networking library just incidentally execute on machines.
  • PMHTTP - HTTP framework with a focus on REST and JSON.
  • Postal - Framework providing simple access to common email providers.
  • Reachability.swift - A replacement for Apple's Reachability with closures.
  • ReactiveAPI - Write clean, concise and declarative network code relying on URLSession, with the power of RxSwift. Inspired by Retrofit.
  • ResponseDetective - A non-intrusive framework for intercepting any outgoing requests and incoming responses between your app and server for debugging purposes.
  • ShadowsocksX-NG - A fast tunnel proxy that helps you bypass firewalls.
  • Siesta - Elegant abstraction for REST APIs that untangles stateful messes. An alternative to callback- and delegate-based networking.
  • SolarNetwork - Elegant network abstraction layer.
  • SwiftHTTP - NSURLSession wrapper.
  • SwiftyOAuth - A small OAuth library with a built-in set of providers.
  • TermiNetwork - ๐ŸŒ A zero-dependency networking solution for building modern and secure iOS, watchOS, macOS and tvOS applications.
  • TRON - Lightweight network abstraction layer, written on top of Alamofire.
  • Wormholy - iOS network debugging, like a wizard ๐Ÿง™โ€.

HTML

Need to manipulate contents from html easily? back to top

  • Fuzi - A fast & lightweight XML/HTML parser with XPath & CSS support.
  • Ji - XML/HTML parser.
  • Kanna - Another XML/HTML parser.
  • SwiftSoup :penguin: - HTML Parser, with best of DOM, CSS, and jquery.
  • WKZombie - Headless browser.

Messaging Protocol

back to top

SOAP

back to top

  • SOAPEngine - Generic SOAP client to access SOAP Web Services using iOS, Mac OS X, and Apple TV.

Socket

back to top

  • BlueSocket - IBM's cross platform low level socket framework.
  • BlueSSLService - SSL/TLS add-in for IBM's low level socket framework.
  • DNWebSocket - Object-Oriented, Autobahn tested WebSocket Library (RFC 6455).
  • RxWebSocket - Reactive WebSockets.
  • Socket.IO :penguin: - Socket.IO client for iOS/OS X.
  • sockets :penguin: - TCP, UDP; Client, Server; Linux, OS X.
  • Starscream - Websockets for iOS and OSX.
  • SwiftDSSocket - Asynchronous socket framework built atop DispatchSource.
  • SwiftSocket - Simple TCP socket library.
  • SwiftWebSocket - A high performance WebSocket client library .

Webserver

Would you like host a webserver in your device? Here you can find how to do it. back to top

  • Ambassador - Super lightweight web framework based on SWSGI.
  • Corvus :penguin: - Web framework to build REST APIs with a declarative syntax.
  • Curassow :penguin: - HTTP server using the pre-fork worker model.
  • Embassy :penguin: - Super lightweight async HTTP server library.
  • Kitura :penguin: - IBM's web framework and server for web services.
  • Lightning :penguin: - Multiplatform Single-threaded Non-blocking Web and Networking Framework.
  • Noze.io :penguin: - Evented I/O streams like Node.js.
  • Perfect :penguin: - Server-side Swift. The Perfect library, application server, connectors and example apps.
  • swifter :penguin: - Http server with routing handler.
  • Vapor :penguin: - Elegant web framework that works on iOS, OS X, and Ubuntu.
  • Zewo :penguin: - Server-Side Swift.

OCR

back to top

  • SwiftOCR - Neural Network based OCR lib.

Optimization

back to top

PDF

back to top

  • PDFGenerator - A simple Generator of PDF. Generate PDF from view(s) or image(s).
  • SimplePDF - Create a simple PDF effortlessly.
  • UXMPDFKit - A PDF viewer and annotator that can be embedded in iOS applications.

Quality

back to top

  • AnyLint :penguin: - Lint anything by combining the power of Swift & regular expressions.
  • IBLinter - A linter tool for Interface Builder.
  • swift-mod - A tool for Swift code modification intermediating between code generation and formatting.
  • SwiftCop - A validation library which inspired by the clarity of Ruby On Rails Active Record validations.
  • SwiftFormat - A code library and command-line formatting tool for reformatting Swift code.
  • SwiftLint - A tool to enforce coding conventions.
  • Swimat - Xcode plugin to format code.
  • Tailor :penguin: - Cross-platform static analyzer that helps you to write cleaner code and avoid bugs.

Scripting

back to top

  • Marathon - Easy way to create and manage scripts.
  • Swift for Scripting - A hand-curated collection of useful and informative scripting material.

SDK

back to top

Security

back to top

  • SecurePropertyStorage - Helps you define secure storages for your properties using Swift property wrappers.

Cryptography

Deal with cryptography method easily back to top

  • BlueCryptor - IBM's Cross Platform Crypto library.
  • BlueRSA - IBM's Cross Platform RSA Crypto library.
  • CryptoSwift :penguin: - Crypto related functions and helpers.
  • IDZSwiftCommonCrypto - A wrapper for Apple's Common Crypto library.
  • JOSESwift - A framework for the JOSE standards JWS, JWE, and JWK.
  • RNCryptor - CCCryptor (Apple's AES encryption) wrappers for iOS and Mac.
  • SCrypto - Elegant interface to access the CommonCrypto routines.
  • Siphash - Simple and secure hashing with the SipHash algorithm.
  • Swift-Sodium - Interface to the Sodium library for common crypto operations for iOS and OS X.
  • Themis - Multilanguage framework for making typical encryption schemes easy to use: data at rest, authenticated data exchange, transport protection, authentication, and so on.

Keychain

back to top

  • keychain-swift - Helper functions for saving text in Keychain securely for iOS, OS X, tvOS and watchOS.
  • KeychainAccess - Simple wrapper for Keychain that works on iOS and OS X.
  • Latch - A simple Keychain Wrapper for iOS.
  • SwiftKeychainWrapper - Simple static wrapper for the iOS Keychain to allow you to use it in a similar fashion to user defaults.

Streaming

back to top

  • HaishinKit - Camera and Microphone streaming library via RTMP, HLS for iOS, macOS, tvOS.
  • Live - Demonstrate how to build a live broadcast app.

Styling

back to top

  • Ambience - Brightness aware accessibility theme switching without coding.
  • Stylist - Define UI styles in a hot-loadable external yaml or json file.
  • SwiftTheme - Powerful theme/skin manager for iOS 8+.
  • Themes - Theme management.

SVG

back to top

  • SVGView - SVG parser and renderer written in SwiftUI.

System

back to top

  • BlueSignals - IBM's Cross Platform OS signal handling library.
  • LaunchAtLogin - Easily add 'Launch at Login' functionality to your sandboxed macOS app.
  • SystemKit - OS X system library.

Testing

A collection of testing frameworks. back to top

  • DVR - A simple network testing framework.
  • Erik - An headless browser to access and manipulate webpages using javascript allowing to run functional tests.
  • Fakery - Fake data generator.
  • Mussel - A framework for easily testing Push Notifications, Universal Links and Routing in XCUITests.
  • Nimble - A matcher framework.
  • OHHTTPStubs - A testing library designed to stub your network requests easily.
  • PinpointKit - Lets your testers and users send feedback with annotated screenshots and logs using a simple gesture.
  • Quick :penguin: - Quick is a behavior-driven development framework.
  • Sizes - Test your app on different device and font sizes.
  • SnapshotTest - Snapshot testing tool for iOS and tvOS.
  • Spectre :penguin: - BDD Framework.
  • SwiftCheck - A testing library that automatically generates random data for testing program properties.
  • UI Testing Cheat Sheet - Answers to common "How do I test this with UI Testing?" questions with a working example app.
  • XCTest - The XCTest Project, A Swift core library for providing unit test support.

Mock

back to top

  • AutoMockable - A framework that leverages the type system to let you easily create mocked instances of your data types.
  • Cuckoo - First boilerplate-free mocking framework.
  • Mocker - Mock Alamofire and URLSession requests without touching your code implementation
  • Mockingbird - Simplify software testing, by easily mocking any system using HTTP/HTTPS, allowing a team to test and develop against a service that is not complete, unstable or just to reproduce planned cases.
  • Mockingjay - An elegant library for stubbing HTTP requests with ease.
  • Mockit - A simple mocking framework, inspired by the famous Mockito for Java.
  • MockSwift - Mock Framework that uses the power of property wrappers.

Text

A collection of text projects. back to top

  • Attributed - Modern ยตframework for attributed strings.
  • AttributedTextView - Easiest way to create an attributed UITextView with support for multiple links, hashtags and mentions.
  • BonMot - Beautiful, easy attributed strings for iOS.
  • Croc - A lightweight Emoji parsing and querying library.
  • edhita - Fully open source text editor for iOS.
  • MarkdownKit - A simple and customizable Markdown Parser.
  • MarkdownView - iOS Markdown view.
  • MarkyMark - Converts Markdown into native views or attributed strings.
  • Notepad - A fully themeable markdown editor with live syntax highlighting.
  • OEMentions - An easy way to add mentions to uitextview like Facebook and Instagram.
  • Parsey - Parser combinator framework that supports source location tracking, backtracking prevention, and rich error messages.
  • Pluralize.swift - Great String Pluralize Extension.
  • PredicateFlow - PredicateFlow is a builder that allows you to write amazing, strong-typed and easy-to-read NSPredicate.
  • PrediKit - An NSPredicate DSL for iOS & OS X inspired by SnapKit.
  • Regex by crossroadlabs :penguin: - Very easy to use Regular Expressions library with rich functionality. Features both operator =~ and method based APIs. Unit tests covered.
  • Regex by sindresorhus - Swifty regular expressions, fully tested & documented, and with correct Unicode handling.
  • RichEditorView - RichEditorView is a simple, modular, drop-in UIView subclass for Rich Text Editing.
  • Sprinter - A library for formatting strings.
  • SwiftRichString - Elegant & Painless Attributed Strings Management Library.
  • SwiftVerbalExpressions - VerbalExpressions porting.
  • SwiftyAttributes - Extensions that make it a breeze to work with attributed strings.
  • Tagging - A TextView that provides easy to use tagging feature for Mention or Hashtag.
  • Texstyle - Texstyle allows you to format attributed strings easily.
  • TextAttributes - An easier way to compose attributed strings.
  • TextBuilder - Like a SwiftUI ViewBuilder, but for Text.
  • TwitterTextEditor - A standalone, flexible API that provides a full featured rich text editor for iOS applications.
  • VEditorKit - Lightweight and Powerful Editor Kit.

Thread

Threading, task-based or asynchronous programming, Grand Central Dispatch (GCD) wrapper back to top

  • Async - Syntactic sugar for Grand Central Dispatch.
  • AwaitKit - The ES7 Async/Await control flow.
  • Each - Each is a NSTimer bridge library.
  • GCDTimer - A well-tested GCD timer.
  • Schedule :penguin: - A missing lightweight task scheduler with an incredibly human-friendly syntax.
  • SwiftyTimer - API for NSTimer.

UI

A collection of pre-packaged transitions & cool ui stuffs. back to top

  • ActivityIndicatorView - A number of preset loading indicators created with SwiftUI.
  • AECoreDataUI - Core Data driven UI.
  • AGCircularPicker - Helpful component for creating a controller aimed to manage any calculated parameter.
  • AMScrollingNavbar - Scrollable UINavigationBar that follows the scrolling of a UIScrollView.
  • Arale - A custom stretchable header view for UIScrollView or any its subclasses with UIActivityIndicatorView support for content reloading.
  • BadgeHub - Make any UIView a full fledged animated notification center. It is a way to quickly add a notification badge icon to a UIView.
  • BatteryView - Simple battery shaped UIView.
  • BetterSafariView - A better way to present a SFSafariViewController or start a ASWebAuthenticationSession in SwiftUI.
  • BreakOutToRefresh - A playable pull to refresh view using SpriteKit.
  • BulletinBoard - Generates and manages contextual cards displayed at the bottom of the screen.
  • CircularProgress - Circular progress indicator for your macOS app.
  • ClassicKit - A collection of classic-style UI components.
  • ContainerController - UI Component. This is a copy swipe-panel from app: Apple Maps, Stocks
  • CostumeKit - Base types for theming an app.
  • CountryPickerView - A simple, customizable view for efficiently collecting country information in iOS apps.
  • CustomSegue - Custom segue for OSX Storyboards with slide and cross fade effects.
  • DeckTransition - A library to recreate the iOS 10 Apple Music now playing transition.
  • DockProgress - Show progress in your macOS app's Dock icon.
  • Dodo - A message bar for iOS.
  • Doric Design System Foundation - Protocol oriented, type safe, scalable design system foundation framework for iOS.
  • DropDown - A Material Design drop down for iOS.
  • Element - Programmatic UI framework for macOS.
  • Elissa - Displays a notification on top of a UITabBarItem or any UIView anchor view to reveal additional information.
  • EstMusicIndicator - Music play indicator like iTunes.
  • Family - A child view controller framework that makes setting up your parent controllers as easy as pie.
  • FAQView - An easy to use FAQ view for iOS.
  • Fashion - Fashion accessories and beauty tools to share and reuse UI styles.
  • FlagKit - Beautiful flag icons for usage in apps and on the web.
  • FlexibleHeader - A container view that responds to scrolling of UIScrollView.
  • FloatRatingView - Floating rating system.
  • Fluid Slider - A slider widget with a popup bubble displaying the precise value selected.
  • GaugeKit - Customizable gauges. Easy reproduce Apple's style gauges.
  • Geometry - extensions for UIView.
  • GMStepper - A stepper with a sliding label in the middle.
  • GradientProgressBar - An animated gradient progress bar.
  • GRMustache - Flexible Mustache templates.
  • GrowingTextView - UITextView that supports auto growing, placeholder and length limit.
  • Hexacon - A new way to display content in your app like the Apple Watch SpringBoard.
  • HGCircularSlider - A custom reusable circular slider control for iOS application.
  • HidesNavigationBarWhenPushed - A library, which adds the ability to hide navigation bar when view controller is pushed via hidesNavigationBarWhenPushed flag.
  • HorizontalDial - A horizontal scroll dial like Instagram.
  • HPParallaxHeader - Simple parallax header for UIScrollView.
  • IGColorPicker - A customizable color picker for iOS.
  • InfoView - Simple information view with pointed arrow.
  • InstantSearch iOS - A library of widgets and helpers to build instant-search features on iOS.
  • KALoader - Beautiful animated placeholders for showing loading of data.
  • KDInteractiveNavigationController - A UINavigationController subclass that support pop interactive UINavigationBar with hidden or show.
  • KMNavigationBarTransition - A drop-in universal library helps you to manage the navigation bar styles and makes transition animations smooth between different navigation bar styles while pushing or popping a view controller for all orientations.
  • KMPlaceholderTextView - A UITextView subclass that adds support for multiline placeholder.
  • LeeGo - Declarative, configurable & highly reusable UI development as making Lego bricks.
  • LicensePlist - A command-line tool that automatically generates a Plist of all your dependencies.
  • LiquidLoader - Spinner loader components with liquid animation.
  • LoadingShimmer - An easy way to add a shimmering effect to any view with just one line of code. It is useful as an unobtrusive loading indicator.
  • Macaw - Powerful and easy-to-use vector graphics library with SVG support.
  • Magnetic - SpriteKit Floating Bubble Picker (inspired by Apple Music).
  • Mandoline - An iOS picker view to serve all your 'picking' needs.
  • MantleModal - A simple modal resource that uses a UIScrollView to allow the user to close the modal by dragging it down.
  • Material - Express your creativity with Material, an animation and graphics framework for Google's Material Design and Apple's Flat UI.
  • Material Components for iOS - Modular and customizable Material Design UI components.
  • MaterialKit - Material design components.
  • MediaBrowser - Simple iOS photo and video browser with optional grid view, captions and selections.
  • MediumScrollFullScreen - Medium scroll style menubar.
  • MPParallaxView - Apple TV Parallax effect.
  • MultiSelectSegmentedControl - UISegmentedControl remake that supports selecting multiple segments, vertical stacking, combining text and images.
  • MultiSlider - UISlider clone with multiple thumbs and values, range highlight, optional snap intervals, optional value labels, either vertical or horizontal.
  • MXParallaxHeader - Simple parallax header for UIScrollView.
  • MZFormSheetPresentationController - Provides an alternative to the native iOS UIModalPresentationFormSheet, adding support for iPhone and additional opportunities to setup controller size and feel form sheet.
  • NeumorphismKit - Neumorphism framework for UIKit.
  • NextGrowingTextView - The next in the generations of 'growing textviews' optimized for iOS 7 and above.
  • NVActivityIndicatorView - Collection of nice loading animations.
  • OverlayContainer - OverlayContainer makes it easier to develop overlay based interfaces, such as the one presented in the Apple Maps or Stocks apps.
  • Partition Kit - A SwiftUI Library for creating resizable partitions for View Content.
  • PPAssetsActionController - Highly customizable Action Sheet Controller with assets preview.
  • Preferences - Add a preferences window to your macOS app in minutes.
  • ProgressIndicatorView - A progress indicator view library written in SwiftUI.
  • PullToDismiss - You can dismiss modal viewcontroller by pulling scrollview or navigationbar.
  • RangeSeekSlider - A customizable range slider like a UISlider for iOS.
  • Reel search - Option list managed as a reel.
  • ResizingTokenField - A UICollectionView-based token field which provides intrinsic content height.
  • RetroProgress - Retro looking progress bar straight from the 90s.
  • SAHistoryNavigationViewController - iOS task manager like UI in UINavigationContoller.
  • SectionedSlider - Control Center Slider.
  • SelectionDialog - Simple selection dialog.
  • ShadowView - Make shadows management easy on UIView.
  • Shiny - Iridescent Effect View (inspired by Apple Pay Cash).
  • ShowSomeProgress - Animated Progress and Activity Indicators for iOS apps.
  • SkeletonView - An elegant way to show users that something is happening and also prepare them to which contents he is waiting.
  • SKPhotoBrowser - Simple PhotoBrowser/Viewer inspired by facebook, twitter photo browsers.
  • Spots - Spots is a view controller framework that makes your setup and future development blazingly fast.
  • SpreadsheetView - Full configurable spreadsheet view user interfaces for iOS applications.
  • StarryStars - Display & edit ratings, fully customizable from interface builder.
  • StatefulViewController - Placeholder views based on content, loading, error or empty states.
  • StepProgressView - Step-by-step progress view with labels and shapes. A good replacement for UIActivityIndicatorView and UIProgressView.
  • Streamoji - Custom emoji rendering library with support for GIFs and images, UITextView extension.
  • SweetCurtain - Really sweet and easy bottom pullable sheet implementation. You can find a similar implementation in applications like Apple Maps, Find My, Stocks, etc.
  • SwiftyUI - High performance and lightweight UIView, UIImage, UIImageView, UIlabel, UIButton and more.
  • TagListView - Simple but highly customizable iOS tag list view.
  • Toaster - Notification toasts.
  • TouchVisualizer - Lightweight touch visualization library with a single line of code.
  • Twinkle - Easy way to make elements in your iOS app twinkle.
  • UIPheonix - Easy, flexible, dynamic and highly scalable UI framework + concept for reusable component/control-driven apps.
  • UltraDrawerView - Lightweight, fast and customizable Drawer View implementation identical to Apple Maps, Stocks and etc.
  • URLEmbeddedView - Automatically caches the object that is confirmed the Open Graph Protocol, and displays it as URL embedded card.
  • Wallet - A replica of the Apple's Wallet interface. Add, delete or present your cards and passes.
  • Windless - Windless makes it easy to implement invisible layout loading view.
  • WSTagsField - An iOS text field that represents different Tags.
  • YMTreeMap - Treemap / Heatmap layout engine, based on Squarified.
  • YNSearch - Awesome fully customizable search view like Pinterest.

Alert

Libs to display alert, action sheet, notification, popup. back to top

  • Alertift - Modern, easy UIAlertController wrapper.
  • Alerts Pickers - Advanced usage of UIAlertController with TextField, DatePicker, PickerView, TableView and CollectionView.
  • ALRT - An easier constructor for UIAlertController. Present an alert from anywhere.
  • AwaitToast - ๐Ÿž An async waiting toast with basic toast. Inspired by facebook posting toast.
  • CDAlertView - Highly customizable alert/notification/success/error/alarm popup.
  • CFNotify - A customizable framework to create draggable alert views.
  • EZAlertController - Easy UIAlertController.
  • GSMessage - A simple style messages/notifications for iOS 7+.
  • Hokusai - A library for a cool bouncy action sheet.
  • Kamagari - Simple UIAlertController builder class.
  • KRAlertController - A beautiful alert controller for your iOS.
  • Loaf - A simple framework for easy iOS Toasts.
  • NotificationBanner - The easiest way to display highly customizable in app notification banners in iOS.
  • PMAlertController - PMAlertController is a great and customizable substitute to UIAlertController.
  • PopupDialog - A simple, customizable popup dialog. Replaces UIAlertController alert style.
  • PopupView - Toasts and popups library written with SwiftUI.
  • SCLAlertView - Animated Alert view.
  • Sheet - Actionsheet with navigation features such as the Flipboard App.
  • SPAlert - Native popup from Apple Music & Feedback in AppStore. Contains Done & Heart presets.
  • StatusAlert - Display Apple system-like self-hiding status alerts without interrupting user flow.
  • SweetAlert - Alert system.
  • Swift-Prompts - Design custom prompts with a great scope of options to choose from.
  • SwiftEntryKit - A simple and versatile pop-up presenter.
  • SwiftMessages - A very flexible message bar for iOS.
  • SwiftOverlays - various popups and notifications.
  • SwiftyDrop - Lightweight dropdown message bar.
  • Toast-Swift - An easy to use library to create iOS 14 and newer style toasts.
  • XLActionController - Fully customizable and extensible action sheet controller.
  • Zingle - An alert will display underneath your UINavigationBar.

Blur

back to top

Button

back to top

  • AHDownloadButton - Customizable download button with progress and transition animations. It is based on Apple's App Store download button.
  • DOFavoriteButton - Cute Animated Button.
  • ExpandableButton - Customizable and easy to use expandable button.
  • FloatingButton - Easily customizable floating button menu created with SwiftUI.
  • Floaty - Floating Action Button for iOS.
  • IGStoryButtonKit - Easy-to-use button with rich animation inspired by instagram stories.
  • LGButton - A fully customisable subclass of the native UIControl which allows you to create beautiful buttons without writing any line of code.
  • LTHRadioButton - A radio button with a pretty animation.
  • MultiToggleButton - A UIButton subclass that implements tap-to-toggle button text (like the camera flash and timer buttons).
  • NFDownloadButton - Revamped Download Button. It's kinda a reverse engineering of Netflix's app download button.
  • PMSuperButton - A powerful UIButton with super powers, customizable from Storyboard.
  • RadioGroup - The missing iOS radio buttons group.
  • SwiftShareBubbles - Animated social share buttons control for iOS.
  • TransitionButton - UIButton subclass for loading and transition animation.

Calendar

back to top

  • CalendarKit - Fully customizable calendar day view.
  • CalendarView - Calendar Component, It features both vertical and horizontal layout (and scrolling) and the display of native calendar events.
  • DateTimePicker - A nicer iOS UI component for picking date and time.
  • ElegantCalendar - The elegant full screen calendar missed in SwiftUI.
  • HorizonCalendar - A declarative, performant, iOS calendar UI component that supports use cases ranging from simple date pickers all the way up to fully-featured calendar apps.
  • JTAppleCalendar - UI calendar handler.
  • Workaholic - A GitHub-like work contribution timeline.

Cards

back to top

  • CardNavigation - A navigation controller that displays its view controllers as an interactive stack of cards.
  • CardParts - A reactive, card-based UI framework built on UIKit for iOS developers.
  • VerticalCardSwiper - A marriage between the Shazam Discover UI and Tinder, built with UICollectionView.

Form

back to top

  • Carbon - ๐Ÿšด A declarative library for building component-based user interfaces in UITableView and UICollectionView.
  • Eureka - Elegant iOS form builder.
  • FDBarGauge - Simulate the level indicator on an audio mixing board
  • Former - A fully customizable library for easy creating UITableView based form.
  • ObjectForm - A simple yet powerful library to build form for your class models.
  • SwiftForms - Forms are now easy as 1-2-3.
  • SwiftyFORM - Forms that can be validated.

HUD

back to top

Label

back to top

  • ActiveLabel - UILabel drop-in replacement supporting Hashtags (#), Mentions (@) and URLs (http://).
  • Atributika - TConvert text with HTML tags, links, hashtags, mentions into NSAttributedString. Make them clickable with UILabel drop-in replacement.
  • CountdownLabel - Simple countdown UILabel with morphing animation, and some useful function.
  • GlitchLabel - Glitching UILabel for iOS.
  • IncrementableLabel - An UILabel subclass to (de)increment numbers in an UILabel.
  • KDEDateLabel - An UILabel subclass that updates itself to make time ago's format easier.
  • LTMorphingLabel - Graceful morphing effects for UILabel.
  • Nantes - TTTAttributedLabel replacement.
  • NumberMorphView - A label view for displaying numbers which can transition or animate using a technique called number tweening or number morphing.
  • SMIconLabel - UILabel with image placed from left or right.
  • Translucid - Lightweight library to set an Image as text background.
  • TriLabelView - A triangle shaped corner label view for iOS.

back to top

  • AKSwiftSlideMenu - Slide Menu (Drawer).
  • CircleMenu - CircleMenu is a simple, elegant UI menu with a circular layout and material design animations.
  • ENSwiftSideMenu - Sliding side menu.
  • FanMenu - Menu with a circular layout based on Macaw.
  • FlowingMenu - Interactive view transition to display menus with flowing and bouncing effects.
  • GuillotineMenu - Guillotine style menu.
  • HHFloatingView - An easy to use and setup floating view for your app.
  • InteractiveSideMenu - Customizable iOS Interactive Side Menu.
  • KWDrawerController - Drawer view controller that easy to use.
  • MediumMenu - A menu based on Medium iOS app.
  • MenuItemKit - UIMenuItem with image and block (closure) support.
  • Pagemenu - Pagination enabled view controller.
  • PagingKit - PagingKit provides customizable menu UI.
  • Panels - Panels is a framework to easily add sliding panels to your application.
  • Parchment - A paging view controller with a highly customizable menu, built on UICollectionView.
  • PopMenu - ๐Ÿ˜Ž A cool and customizable popup style action sheet for iOS.
  • SideMenu - Simple side menu control for iOS inspired by Facebook. Right and Left sides. No coding required.
  • SlideMenuControllerSwift - iOS Slide Menu View based on Google+, iQON, Feedly, Ameba iOS app.
  • SwipeMenuViewController - Swipable tab and menu View and ViewController.
  • XLPagerTabStrip - Android PagerTabStrip for iOS.
  • YNDropDownMenu - Adorable iOS drop down menu.

Pagination

back to top

  • CHIPageControl - A set of cool animated page controls to replace boring UIPageControl.
  • FlexiblePageControl - A flexible UIPageControl like Instagram.
  • iPages - Quickly implement swipable page views in SwiftUI ๐Ÿ“.
  • Pageboy - A simple, highly informative page view controller.
  • PageController - Infinite paging controller.
  • SlideController - It is a nice alternative for UIPageViewController built using power of generic types. Swipe between pages with an interactive title navigation control. Configure horizontal or vertical chains for unlimited pages amount.

Payment

back to top

  • AnimatedCardInput - Customisable and easy to use Credit Card UI.
  • Caishen - A Payment Card UI & Validator for iOS.
  • iCard - Bank Card Generator using SnapKit DSL.
  • MFCard - Easily integrate Credit Card payments in iOS App.
  • TPInAppReceipt - A lightweight, pure-Swift library for reading and validating Apple In App Purchase Receipt locally.

Permissions

back to top

  • AREK - AREK is a clean and easy to use wrapper over any kind of iOS permission.
  • Permission - A unified API to ask for permissions on iOS.
  • SPPermission - Simple request permission with native UI and interactive animation.

StackView

back to top

Switch

back to top

  • MJMaterialSwitch - A Customizable Switch UI for iOS, Inspired from Google's Material Design.
  • paper-switch - RAMPaperSwitch is a material design UI module which paints over the parent view when the switch is turned on.
  • Switch - A switch control with full Interface Builder support.

Tab

back to top

  • Adaptive Tab Bar - Adaptive tab bar.
  • Animated Tab Bar - RAMAnimatedTabBarController is a module for adding animation to tab bar items.
  • CardTabBar - Adding animation to iOS tabbar items.
  • CircleBar - A fun, easy-to-use tab bar navigation controller for iOS.
  • ColorMatchTabs - Interesting way to display tabs.
  • DTPagerController - Container view controller to display a set of ViewControllers in a horizontal scroll view.
  • ESTabBarController - A highly customizable TabBarController component, which is inherited from UITabBarController.
  • HHTabBarView - A lightweight customized tab bar view.
  • PolioPager - A flexible TabBarController with search tab like SNKRS.
  • Tabman - A powerful paging view controller with indicator bar.
  • TabPageViewController - Paging view controller and scroll tab view.

Template

back to top

TextField

back to top

  • CBPinEntryView - Easy to use, very customisable pin entry.
  • CHIOTPField - A set of textfields that can be used for One-time passwords, SMS codes, PIN codes, etc.
  • DTTextField - DTTextField is a custom textfield with floating placeholder and error label.
  • FloatingLabelTextFieldSwiftUI - FloatingLabelTextFieldSwiftUI is a small and lightweight SwiftUI framework written in completely SwiftUI (not using UIViewRepresentable) that allows to create beautiful and customisable floating label textfield!
  • HTYTextField - A UITextField with bouncy placeholder.
  • iTextField โŒจ๏ธ - A fully-wrapped UITextField that works entirely in SwiftUI ๐Ÿฆ….
  • PasswordTextField - A custom TextField with a switchable icon which shows or hides the password and enforces good password policies.
  • SkyFloatingLabelTextField - A beautiful and flexible text field control implementation of "Float Label Pattern".
  • StyledTextKit - Declarative building and fast rendering attributed string library.
  • TextFieldCounter - UITextField character counter with lovable UX.
  • TextFieldEffects - Several ready to use effects for UITextFields.
  • UITextField-Navigation - UITextField-Navigation adds next, previous and done buttons to the keyboard for your UITextFields. Highly customizable.
  • VKPinCodeView - Simple and elegant UI component for input PIN.

Transition

back to top

  • BubbleTransition - Bubble transition in an easy way.
  • Cards XI - Awesome iOS 11 AppStore's Card Views.
  • EasyTransitions - A simple way to create custom interactive UIViewController transitions.
  • Hero - Elegant transition library for iOS.
  • ImageTransition - ImageTransition is a library for smooth animation of images during transitions.
  • Jelly - Jelly provides custom view controller transitions with just a few lines of code.
  • MusicPlayerTransition - Custom interactive transition like Apple Music iOS App.
  • PanSlip - Use PanGesture to dismiss view on UIViewController and UIView.
  • PinterestSwift - Pinterest style transition.
  • RevealingSplashView - A Splash view that animates and reveals its content, inspired by the Twitter splash.
  • SamuraiTransition - Swift based library providing a collection of ViewController transitions featuring a number of neat cutting animations.
  • SPLarkController - Custom transition between two controller. Translate to top.
  • SPStorkController - Now playing controller from Apple Music. Customisable height.
  • StarWars.iOS - Transition animation to crumble view-controller into tiny pieces.
  • Transition - Easy interactive interruptible custom ViewController transitions.

3D

back to top

  • Insert3D - The fastest ๐Ÿš€ way to embed a 3D model.

UICollectionView

back to top

  • ASCollectionView - Lightweight custom collection view inspired by Airbnb.
  • AZCollectionViewController - Easy way to integrate pagination with dummy views in CollectionView, make Instagram Discover withing minutes.
  • Blueprints - A framework that is meant to make your life easier when working with collection view flow layouts.
  • BouncyLayout - Collection view layout that makes your cells bounce.
  • CardsLayout - Nice card-designed custom CollectionView layout.
  • CarLensCollectionViewLayout - An easy-to-use Collection View Layout for card-like animation.
  • CenteredCollectionView - A lightweight UICollectionViewLayout that pages and centers it's cells.
  • CheckmarkCollectionViewCell - UICollectionViewCell with checkbox when it isSelected and empty circle when not - like Photos.app 'Select' mode.
  • CollectionViewShelfLayout - A UICollectionViewLayout subclass displays its items as rows of items similar to the App Store Feature tab without a nested UITableView/UICollectionView hack.
  • CollectionViewSlantedLayout - UICollectionViewLayout to show slanted content.
  • Drag and Drop UICollectionView - Dragging and Dropping data across multiple UICollectionViews.
  • FSPagerView - Elegant Screen Slide Library. It is extremely helpful for making Banner Viewใ€Product Showใ€Welcome/Guide Pagesใ€Screen/ViewController Sliders.
  • Gliding Collection - Gliding Collection is a smooth, flowing, customizable decision for a UICollectionView Controller.
  • GravitySlider - Beautiful alternative to the standard UICollectionView flow layout.
  • ShelfView-iOS - iOS custom view to display books on shelf.
  • SimpleSource - Easy and type-safe iOS table and collection views.
  • SwiftSpreadsheet - Fully customizable spreadsheet CollectionViewLayout.
  • TagCellLayout - UICollectionView layout for Tags with Left, Center & Right alignments.
  • UICollectionViewSplitLayout - UICollectionViewSplitLayout makes collection view more responsive.
  • VegaScroll - Lightweight animation flowlayout for UICollectionView.

UITableView

back to top

  • AZTableViewController - Elegant and easy way to integrate pagination with placeholder views.
  • CollapsibleTableSectionViewController - A library to support collapsible sections in a table view.
  • DGElasticPullToRefresh - Elastic pull to refresh.
  • DiffableDataSources - ๐Ÿ’พ A library for backporting UITableView/UICollectionViewDiffableDataSource.
  • DTTableViewManager - Protocol-oriented UITableView management, powered by generics and associated types.
  • ExpandableCell - Fully refactored YNExapnadableCell with more concise, bug free. Easiest usage of expandable & collapsible cell for iOS. You can customize expandable UITableViewCell whatever you like. ExpandableCell is made because insertRows and deleteRows is hard to use. Just inheirt ExpandableDelegate.
  • ExpyTableView - Make your table view expandable just by implementing one method.
  • FDTextFieldTableViewCell - Adds a UITextField to the cell and places it correctly.
  • folding-cell - Folding cell transition.
  • GridView - Can be customized as a time table, spreadsheet, paging and more.
  • HGPlaceholders - Nice library to show placeholders and Empty States for any UITableView/UICollectionView in your project.
  • OKTableViewLiaison - Framework to help you better manage UITableViews.
  • ParallaxHeader - Simple way to add parallax header to UIScrollView/UITableView.
  • Persei - Animated top menu for UITableView / UICollectionView / UIScrollView.
  • PullToRefreshSwift - PullToRefresh library.
  • QuickTableViewController - A simple way to create a UITableView for settings.
  • ReverseExtension - UITableView extension that enables the insertion of cells the from bottom of a table view.
  • SectionScrubber - A component to quickly scroll between collection view sections.
  • SelectionList - Simple single-selection or multiple-selection checklist, based on UITableView.
  • Shoyu - Easier way to represent the structure of UITableView.
  • SwiftyComments - Nested hierarchy of expandable/collapsible cells to easily build elegant discussion threads.
  • SwipeCellKit - Swipeable UITableViewCell based on the stock Mail.app.
  • WLEmptyState - A component that lets you customize the view when the dataset of UITableView is empty.
  • YNExpandableCell - Awesome expandable, collapsible tableview cell for iOS.

Walkthrough

back to top

  • AwesomeSpotlightView - Create tutorial or coach tour.
  • BWWalkthrough - A class to build custom walkthroughs for your iOS App.
  • ConcentricOnboarding - SwiftUI library for a walkthrough or onboarding flow with tap actions.
  • Gecco - Spotlight view for iOS.
  • Instructions - A library to create app walkthroughs and guided tours.
  • OnboardKit - Customisable user onboarding for your iOS app.
  • PaperOnboarding - PaperOnboarding is a material design UI slider.
  • SuggestionsKit - Library for educating users about features in app.
  • SwiftyOnboard - An iOS framework that allows developers to create beautiful onboarding experiences.
  • SwiftyWalkthrough - The easiest way to create a great walkthrough experience in your apps.

Utility

Some interesting utilities to help you in your projects back to top

  • AlexaSkillsKit - Develop custom Alexa Skills.
  • ApplyStyleKit - Elegantly, Apply style to UIKit using Method Chain.
  • Basis - Pure Declarative Programming.
  • Bow - Companion library for Typed Functional Programming.
  • Butterfly - A lightweight library for integrating bug-report and feedback features with shake-motion event.
  • CallbackURLKit - Implementation of x-callback-url (Inter app communication).
  • Closures - Swifty closures for UIKit and Foundation.
  • Codextended - Extensions giving Codable API type inference super powers.
  • Curry - Function currying.
  • DeepDiff - Fast diff library.
  • Delegated - Closure-based delegation without memory leaks.
  • DifferenceKit - ๐Ÿ’ป A fast and flexible O(n) difference algorithm framework.
  • Differific - A fast and convenient diffing framework.
  • Dollar - Similar to Lo-Dash or Underscore in Javascript.
  • DuctTape - ๐Ÿ“ฆ KeyPath dynamicMemberLookup based syntax sugar for Swift.
  • EtherWalletKit - Ethereum Wallet Toolkit for iOS - You can implement Ethereum wallet without a server and blockchain knowledge.
  • ExceptionCatcher - Catch Objective-C exceptions.
  • EZSwiftExtensions - How standard types and classes were supposed to work.
  • FluentQuery :penguin: - Powerful and easy to use Query Builder.
  • FluxCapacitor - FluxCapacitor makes implementing Flux design pattern easily with protocols and typealias.
  • Focus - Optics library (includes Lens, Prisms, and Isos) that is inspired by Haskell's Lens library.
  • Highlighter - Highlight whatever you want! Highlighter will magically find UI objects such as UILabel, UITextView, UITexTfield, UIButton in your UITableViewCell or other Class.
  • LifetimeTracker - Surface retain cycle / memory issues right as you develop your application.
  • Lumos - An easy-to-use API for Objective-C runtime functions.
  • ObjectiveKit - API for Objective C runtime functions.
  • OpenSourceController - The simplest way to display the librarie's licences used in your application.
  • Percentage - Make percentages more readable and type-safe.
  • Playbook - ๐Ÿ“˜A library for isolated developing UI components and automatically snapshots of them.
  • PrivacyFlash Pro - Generate a privacy policy for your Swift iOS app from its code.
  • protobuf-swift - ProtocolBuffers.
  • Prototope - Library of lightweight interfaces for prototyping, bridged to JS.
  • R.swift - Tool to get strong typed, autocompleted resources like images, cells and segues.
  • RandomKit :penguin: - Random data generation.
  • ReadabilityKit - Preview extractor for news, articles and full-texts.
  • ResourceKit - Enable autocomplete use resources.
  • Result - Type modelling the success/failure of arbitrary operations.
  • Rugby - ๐Ÿˆ Cache CocoaPods for faster rebuild and indexing Xcode project.
  • Runes - Functional operators: flatMap, map, apply.
  • Solar - Calculate sunrise and sunset times given a location.
  • SpriteKit+Spring - SpriteKit API reproducing UIView's spring animations with SKAction.
  • Sugar - Something sweet that goes great with your Cocoa.
  • swift-protobuf :penguin: - A plugin and runtime library for using Google's Protocol Buffer.
  • Swiftbot - run swift code on slack.
  • SwifterSwift - A handy collection of more than 500 native extensions to boost your productivity.
  • SwiftGen-Storyboard - A tool to auto-generate enums for all your Storyboards, Scenes and Segues constants + appropriate convenience accessors.
  • SwiftLinkPreview - It makes a preview from an url, grabbing all information such as title, relevant texts and images.
  • SwiftPlantUML - A command-line tool and Swift Package to generate UML class from your Swift source code. Also available as Xcode Source Editor Extension.
  • SwiftRandom - A tiny generator of random data.
  • SwiftRater - A utility that reminds your iPhone app's users to review the app.
  • SwiftTweaks - Tweak your iOS app without recompiling.
  • Swiftx - Functional data types and functions for any project.
  • SwiftyUtils - All the reusable code that we need in each project.
  • Swiftz - Functional programming.
  • Then - Super sweet syntactic sugar for initializers.
  • TSAO - Type-Safe Associated Objects.
  • URLQueryItemEncoder - An Encoder for encoding any Encodable value into an array of URLQueryItem.
  • UTIKit - an UTI (Uniform Type Identifier) wrapper.
  • Vaccine - Make your apps immune to recompile-decease.
  • WeakableSelf - A micro-framework to encapsulate [weak self] and guard statements within closures.
  • WhatsNew - Showcase new features after an app update similar to Pages, Numbers and Keynote.
  • WhatsNewKit - Showcase your awesome new app features.
  • XestiMonitors - An extensible monitoring framework.
  • ZamzamKit - A collection of micro utilities and extensions for Standard Library, Foundation and UIKit.

Validation

A collection of validation libs. back to top

  • ATGValidator - Rule based validation framework with form and card validation support for iOS.
  • FormValidatorSwift - Allows you to validate inputs of text fields and text views in a convenient way.
  • Input Mask - Pattern-based user input formatter, parser and validator for iOS.
  • RxValidator - Simple, Extensible, Flexible Validation Checker.
  • SwiftValidator - A rule-based validation library.
  • SwiftValidators - String validation for iOS (inspired by validator.js).
  • ValidatedPropertyKit - Easily validate your Properties with Property Wrappers ๐Ÿ‘ฎ.
  • Validator - Drop in user input validation for your iOS apps.

Phone Numbers

Libs to manage phone numbers. back to top

  • NKVPhonePicker - An UITextField subclass to simplify country code's picking.
  • PhoneNumberKit - Framework for parsing, formatting and validating international phone numbers. Inspired by Google's libphonenumber.

Version Manager

back to top

  • AppVersionMonitor - Monitor iOS app version easily.
  • Siren - Notify users when a new version of your app is available and prompt them to upgrade.
  • Version - Version represents and compares semantic versions.
  • Version Tracker Swift - Versions tracker for your iOS, OS X, and tvOS app.

Video

back to top

  • BMPlayer - A video player for iOS, based on AVPlayer, support the horizontal, vertical screen. support adjust volume, brigtness and seek by slide.
  • Cabbage - A video composition framework build on top of AVFoundation.
  • Kitsunebi - Overlay alpha channel video animation player view using OpenGLES.
  • MMPlayerView - Custom AVPlayerLayer on view and transition player with good effect like YouTube and Facebook.
  • MobilePlayer - A powerful and completely customizable media player for iOS.
  • NextLevelSessionExporter - Export and transcode media.
  • Player - iOS video player, simple drop in component for playing and streaming media.
  • PlayerView - Easy to use video player using a UIView, manage rate of reproduction, screenshots and callbacks-delegate for player state.
  • PryntTrimmerView - Trim and crop videos.
  • SwiftFFmpeg - A wrapper for the FFmpeg C API.
  • SwiftVideoBackground - Easy to Use UIView subclass for implementating a video background.
  • Swifty360Player - iOS 360-degree video player streaming from an AVPlayer.
  • VGPlayer - A simple iOS video player, support play local and network, background playback mode, automatic caching while playing.
  • YiVideoEditor - a library for rotating, cropping, adding layers (watermark) and as well as adding audio (music) to the videos.

Serverless

Contributing

Please take a quick look at the contribution guidelines first. If you see a package or project here that is no longer maintained or is not a good fit, please submit a pull request to improve this file. Thank you to all contributors; you rock!!

Awesome-Swift-Education Awesome Build Status

There is no royal road to Swift. โ€”Euclid

Awesome Swift Playgrounds Awesome 155 playgrounds

A curated list of awesome Swift playgrounds.

Contributing

Please take a quick look at the contribution guidelines first. Thanks to all contributors; you rock!

If you see a playground here that does not work anymore with the current release of Xcode or is not a good fit, please submit a pull request to improve this file or consider updating it, thank you!

Downloading all the playgrounds

Unless otherwise indicated, all playgrounds are compatible with Swift 3.

All the playgrounds are available as submodules in the playgrounds/ directory, to download them all in one go, just clone this repository with git clone --recursive https://github.com/uraimo/Awesome-Swift-Playgrounds.git or execute git submodule update --init after you have cloned the repository the usual way.

Apple's playgrounds distributed as zip archives have to be downloaded manually.

Tags

๐ŸŒŸ = My personal favorites

๐Ÿ = Swift 4+ Playground

โณ = Pre-Swift 3 Playground

Contents

PlaygroundBooks

Playgrounds that can be run on your iPad

Learning Swift

Some interesting playgrounds to learn Swift

Learning Swift: Advanced Topics

Advanced topics, useful once you have mastered the basics of the language

Design Patterns

Protocol Oriented Programming

Functional Reactive Programming

Apple's Playgrounds

Playgrounds from Apple, usually presented at some WWDC

WWDC Students Submissions

Playgrounds submitted by students for the WWDC scholarship

Playgrounds about Playgrounds

Playgrounds that describe what you can do with playgrounds

Playgrounds from Playgroundbooks

Playgrounds derived from iPad Swift Playgroundbooks

Theoretical Computer Science

Algorithms and Data Structures

Algorithms and data structures implemented in Swift

  • Animated Sorting Algorithms - Swift 4 playgrounds to view and manipulate sorting algorithms.๐Ÿ
  • Expressions - Arithmetic and logical expressions elegantly modeled and visualized using protocol-oriented binary trees.๐Ÿ
  • Swift Algorithm Club - Algorithms and data structures in Swift with explanations. ๐ŸŒŸ
  • Sorting Experiments - Alluring experiments with sorting algorithms in Swift, sort of.
  • Visual Binary Trees - Effortless visualization of arbitrary Binary Trees, along with their pluggable traversal implementations. ๐ŸŒŸ
  • Julia Fractal Playground - A Swift playground that generates beautiful Julia set fractal images.
  • A Star - Protocol oriented A* pathfinding algorithm implementation in Swift 4.๐Ÿ
  • Sorting Algorithms - Live Visualization of some famous sorting algorithms and your experiments.
  • DataStructures Playground - Data Structures and Algorithms in Swift. โณ
  • Swiftography - Standard cryptographic algorithms in a Swift Playground. โณ
  • Algorithms Playground - Various algorithm implementation in Swift. โณ
  • The Jelly Bean Problem - The Jelly Bean problem from Wait But Why. โณ
  • Euclidean Strings - A playground leveraging ReSwift to generate Euclidean Strings. โณ

Languages

Programming language interpreters implemented in Swift

  • Introduction to Compilers - Great introduction to the inner workings of compilers. ๐Ÿ๐ŸŒŸ
  • Pascal Interpreter - Simple Swift interpreter for the Pascal language inspired by the Letโ€™s Build A Simple Interpreter article series. ๐Ÿ
  • Write your own language: Mu - A playground explaining how to create a tiny programming language named Mu. ๐ŸŒŸ
  • ASM Swift - A playground for learning Assembly language through Swift. ๐ŸŒŸ
  • Let's build a compiler in Swift - Let's Build a Compiler by Jack Crenshaw translated to Swift Playgrounds. ๐ŸŒŸ
  • Register VM - A register-based VM in a Swift playground. ๐ŸŒŸ โณ
  • Turtle Playground - A playground with Logo-like commands. ๐ŸŒŸ โณ
  • Swift Brainfuck - Brainfuck interpreter written in Swift using Playground. โณ

Machine Learning

UIKit And Graphics

A list of playgrounds that demostrate various aspect of UIKit and other graphical frameworks

Core Image

Metal

  • Metalbrot - Interactive playground that draws the Mandelbrot fractal with Metal. ๐ŸŒŸ
  • METAL Playground - Apple Metal framework playground. ๐ŸŒŸ โณ

Animations

SpriteKit

Audio

Sounds and music

  • Bach Playground - A Simple Swift Playground that plays a brief piece by Bach with AVAudioEngine and AVMIDIPlayer.
  • PlayerNode Playground - Playground using AVAudioEngine with a playernode and effects to play an audio file. ๐ŸŒŸ
  • Miles - A Swift Playground that creates jazz improvisations in any key using AudioToolbox and AVFoundation.

Mathematics

Live math with playgrounds

Libraries and APIs

Library tutorials, in a playground

  • AudioKit Playgrounds - 130+ Audio synthesis, processing, playback, and analysis playgrounds with AudioKit.
  • AIToolbox - A set of playgrounds showing machine learning algorithms, all implemented with pieces of the AIToolbox framework code.
  • Cognitive Service APIs - Get started with the Microsoft Cognitive Services APIs.
  • Rx Playground - A playground with RxSwift examples.

Playground Sets

Sets of playgrounds about various topics

Miscellaneous

What doesn't fit anywhere else, but still awesome

  • Rubik's Cube - Implementing basic model and behavior of Rubic's Cube in Swift. ๐Ÿ
  • Icon Creator - Create app icons on Swift playground.
  • 2048 Playground - The 2048 game implemented with a playground.
  • SwiftShell - Bash shell in a playground.
  • LaunchPad Playground - A playground that simulates a real LaunchPad for making music.
  • Super Maze - A programmatic maze generator and solver.
  • Tic Tac Toe - Tic tac toe in a playground.
  • Pixel Art Maker - A playground where you can make pixel art.
  • SwiftCoin - A simplistic blockchain & cryptocurrency in a playground.
  • SentimentlySwift - Sentiment analysis in Swift.
  • SwiftChain - Simple Cryptocurrency in a Swift Playground.
  • Game Boards - Chess, checkers, tic-tac-toe, sudoku and many others in playground. ๐ŸŒŸ โณ
  • StarWars Seals - Emblems from Star Wars in Swift playgrounds via CoreGraphics and UIViews. โณ
  • SwiftFiles - Save, Load and Delete files easily from within a Swift playground. โณ
  • Earth photos - A slideshow of Earth photos taken by DSCOVR/EPIC. ๐ŸŒŸ โณ

Awesome Python Awesome

A curated list of awesome Python frameworks, libraries, software and resources.

Inspired by awesome-php.


Admin Panels

Libraries for administrative interfaces.

  • ajenti - The admin panel your servers deserve.
  • django-grappelli - A jazzy skin for the Django Admin-Interface.
  • django-jet - Modern responsive template for the Django admin interface with improved functionality.
  • django-suit - Alternative Django Admin-Interface (free only for Non-commercial use).
  • django-xadmin - Drop-in replacement of Django admin comes with lots of goodies.
  • flask-admin - Simple and extensible administrative interface framework for Flask.
  • flower - Real-time monitor and web admin for Celery.
  • jet-bridge - Admin panel framework for any application with nice UI (ex Jet Django).
  • wooey - A Django app which creates automatic web UIs for Python scripts.

Algorithms and Design Patterns

Python implementation of data structures, algorithms and design patterns. Also see awesome-algorithms.

  • Algorithms
    • algorithms - Minimal examples of data structures and algorithms.
    • python-ds - A collection of data structure and algorithms for coding interviews.
    • sortedcontainers - Fast and pure-Python implementation of sorted collections.
    • TheAlgorithms - All Algorithms implemented in Python.
  • Design Patterns
    • PyPattyrn - A simple yet effective library for implementing common design patterns.
    • python-patterns - A collection of design patterns in Python.
    • transitions - A lightweight, object-oriented finite state machine implementation.

ASGI Servers

ASGI-compatible web servers.

  • daphne - A HTTP, HTTP2 and WebSocket protocol server for ASGI and ASGI-HTTP.
  • uvicorn - A lightning-fast ASGI server implementation, using uvloop and httptools.

Asynchronous Programming

  • asyncio - (Python standard library) Asynchronous I/O, event loop, coroutines and tasks.
  • trio - A friendly library for async concurrency and I/O.
  • Twisted - An event-driven networking engine.
  • uvloop - Ultra fast asyncio event loop.

Audio

Libraries for manipulating audio and its metadata.

  • Audio
    • audioread - Cross-library (GStreamer + Core Audio + MAD + FFmpeg) audio decoding.
    • dejavu - Audio fingerprinting and recognition.
    • kapre - Keras Audio Preprocessors.
    • librosa - Python library for audio and music analysis.
    • matchering - A library for automated reference audio mastering.
    • mingus - An advanced music theory and notation package with MIDI file and playback support.
    • pyAudioAnalysis - Audio feature extraction, classification, segmentation and applications.
    • pydub - Manipulate audio with a simple and easy high level interface.
    • TimeSide - Open web audio processing framework.
  • Metadata
    • beets - A music library manager and MusicBrainz tagger.
    • eyeD3 - A tool for working with audio files, specifically MP3 files containing ID3 metadata.
    • mutagen - A Python module to handle audio metadata.
    • tinytag - A library for reading music meta data of MP3, OGG, FLAC and Wave files.

Authentication

Libraries for implementing authentications schemes.

  • OAuth
    • authlib - JavaScript Object Signing and Encryption draft implementation.
    • django-allauth - Authentication app for Django that "just works."
    • django-oauth-toolkit - OAuth 2 goodies for Django.
    • oauthlib - A generic and thorough implementation of the OAuth request-signing logic.
    • python-oauth2 - A fully tested, abstract interface to creating OAuth clients and servers.
    • python-social-auth - An easy-to-setup social authentication mechanism.
  • JWT
    • pyjwt - JSON Web Token implementation in Python.
    • python-jose - A JOSE implementation in Python.
    • python-jwt - A module for generating and verifying JSON Web Tokens.

Build Tools

Compile software from source code.

  • BitBake - A make-like build tool for embedded Linux.
  • buildout - A build system for creating, assembling and deploying applications from multiple parts.
  • PlatformIO - A console tool to build code with different development platforms.
  • pybuilder - A continuous build tool written in pure Python.
  • SCons - A software construction tool.

Built-in Classes Enhancement

Libraries for enhancing Python built-in classes.

  • attrs - Replacement for __init__, __eq__, __repr__, etc. boilerplate in class definitions.
  • bidict - Efficient, Pythonic bidirectional map data structures and related functionality..
  • Box - Python dictionaries with advanced dot notation access.
  • dataclasses - (Python standard library) Data classes.
  • DottedDict - A library that provides a method of accessing lists and dicts with a dotted path notation.

CMS

Content Management Systems.

  • django-cms - An Open source enterprise CMS based on the Django.
  • feincms - One of the most advanced Content Management Systems built on Django.
  • indico - A feature-rich event management system, made @ CERN.
  • Kotti - A high-level, Pythonic web application framework built on Pyramid.
  • mezzanine - A powerful, consistent, and flexible content management platform.
  • plone - A CMS built on top of the open source application server Zope.
  • quokka - Flexible, extensible, small CMS powered by Flask and MongoDB.
  • wagtail - A Django content management system.

Caching

Libraries for caching data.

  • beaker - A WSGI middleware for sessions and caching.
  • django-cache-machine - Automatic caching and invalidation for Django models.
  • django-cacheops - A slick ORM cache with automatic granular event-driven invalidation.
  • dogpile.cache - dogpile.cache is next generation replacement for Beaker made by same authors.
  • HermesCache - Python caching library with tag-based invalidation and dogpile effect prevention.
  • pylibmc - A Python wrapper around the libmemcached interface.
  • python-diskcache - SQLite and file backed cache backend with faster lookups than memcached and redis.

ChatOps Tools

Libraries for chatbot development.

  • errbot - The easiest and most popular chatbot to implement ChatOps.

Code Analysis

Tools of static analysis, linters and code quality checkers. Also see awesome-static-analysis.

  • Code Analysis
    • coala - Language independent and easily extendable code analysis application.
    • code2flow - Turn your Python and JavaScript code into DOT flowcharts.
    • prospector - A tool to analyse Python code.
    • pycallgraph - A library that visualises the flow (call graph) of your Python application.
    • vulture - A tool for finding and analysing dead Python code.
  • Code Linters
  • Code Formatters
    • black - The uncompromising Python code formatter.
    • isort - A Python utility / library to sort imports.
    • yapf - Yet another Python code formatter from Google.
  • Static Type Checkers, also see awesome-python-typing
    • mypy - Check variable types during compile time.
    • pyre-check - Performant type checking.
    • typeshed - Collection of library stubs for Python, with static types.
  • Static Type Annotations Generators
    • MonkeyType - A system for Python that generates static type annotations by collecting runtime types.
    • pyannotate - Auto-generate PEP-484 annotations.
    • pytype - Pytype checks and infers types for Python code - without requiring type annotations.

Command-line Interface Development

Libraries for building command-line applications.

  • Command-line Application Development
    • cement - CLI Application Framework for Python.
    • click - A package for creating beautiful command line interfaces in a composable way.
    • cliff - A framework for creating command-line programs with multi-level commands.
    • docopt - Pythonic command line arguments parser.
    • python-fire - A library for creating command line interfaces from absolutely any Python object.
    • python-prompt-toolkit - A library for building powerful interactive command lines.
  • Terminal Rendering
    • alive-progress - A new kind of Progress Bar, with real-time throughput, eta and very cool animations.
    • asciimatics - A package to create full-screen text UIs (from interactive forms to ASCII animations).
    • bashplotlib - Making basic plots in the terminal.
    • colorama - Cross-platform colored terminal text.
    • rich - Python library for rich text and beautiful formatting in the terminal. Also provides a great RichHandler log handler.
    • tqdm - Fast, extensible progress bar for loops and CLI.

Command-line Tools

Useful CLI-based tools for productivity.

  • Productivity Tools
    • copier - A library and command-line utility for rendering projects templates.
    • cookiecutter - A command-line utility that creates projects from cookiecutters (project templates).
    • doitlive - A tool for live presentations in the terminal.
    • howdoi - Instant coding answers via the command line.
    • Invoke - A tool for managing shell-oriented subprocesses and organizing executable Python code into CLI-invokable tasks.
    • PathPicker - Select files out of bash output.
    • percol - Adds flavor of interactive selection to the traditional pipe concept on UNIX.
    • thefuck - Correcting your previous console command.
    • tmuxp - A tmux session manager.
    • try - A dead simple CLI to try out python packages - it's never been easier.
  • CLI Enhancements
    • httpie - A command line HTTP client, a user-friendly cURL replacement.
    • iredis - Redis CLI with autocompletion and syntax highlighting.
    • kube-shell - An integrated shell for working with the Kubernetes CLI.
    • litecli - SQLite CLI with autocompletion and syntax highlighting.
    • mycli - MySQL CLI with autocompletion and syntax highlighting.
    • pgcli - PostgreSQL CLI with autocompletion and syntax highlighting.
    • saws - A Supercharged aws-cli.

Compatibility

Libraries for migrating from Python 2 to 3.

  • python-future - The missing compatibility layer between Python 2 and Python 3.
  • modernize - Modernizes Python code for eventual Python 3 migration.
  • six - Python 2 and 3 compatibility utilities.

Computer Vision

Libraries for Computer Vision.

  • EasyOCR - Ready-to-use OCR with 40+ languages supported.
  • Face Recognition - Simple facial recognition library.
  • Kornia - Open Source Differentiable Computer Vision Library for PyTorch.
  • OpenCV - Open Source Computer Vision Library.
  • pytesseract - A wrapper for Google Tesseract OCR.
  • SimpleCV - An open source framework for building computer vision applications.
  • tesserocr - Another simple, Pillow-friendly, wrapper around the tesseract-ocr API for OCR.

Concurrency and Parallelism

Libraries for concurrent and parallel execution. Also see awesome-asyncio.

  • concurrent.futures - (Python standard library) A high-level interface for asynchronously executing callables.
  • eventlet - Asynchronous framework with WSGI support.
  • gevent - A coroutine-based Python networking library that uses greenlet.
  • multiprocessing - (Python standard library) Process-based parallelism.
  • scoop - Scalable Concurrent Operations in Python.
  • uvloop - Ultra fast implementation of asyncio event loop on top of libuv.

Configuration

Libraries for storing and parsing configuration options.

  • configobj - INI file parser with validation.
  • configparser - (Python standard library) INI file parser.
  • hydra - Hydra is a framework for elegantly configuring complex applications.
  • profig - Config from multiple formats with value conversion.
  • python-decouple - Strict separation of settings from code.

Cryptography

  • cryptography - A package designed to expose cryptographic primitives and recipes to Python developers.
  • paramiko - The leading native Python SSHv2 protocol library.
  • passlib - Secure password storage/hashing library, very high level.
  • pynacl - Python binding to the Networking and Cryptography (NaCl) library.

Data Analysis

Libraries for data analyzing.

  • AWS Data Wrangler - Pandas on AWS.
  • Blaze - NumPy and Pandas interface to Big Data.
  • Open Mining - Business Intelligence (BI) in Pandas interface.
  • Optimus - Agile Data Science Workflows made easy with PySpark.
  • Orange - Data mining, data visualization, analysis and machine learning through visual programming or scripts.
  • Pandas - A library providing high-performance, easy-to-use data structures and data analysis tools.

Data Validation

Libraries for validating data. Used for forms in many cases.

  • Cerberus - A lightweight and extensible data validation library.
  • colander - Validating and deserializing data obtained via XML, JSON, an HTML form post.
  • jsonschema - An implementation of JSON Schema for Python.
  • schema - A library for validating Python data structures.
  • Schematics - Data Structure Validation.
  • valideer - Lightweight extensible data validation and adaptation library.
  • voluptuous - A Python data validation library.

Data Visualization

Libraries for visualizing data. Also see awesome-javascript.

  • Altair - Declarative statistical visualization library for Python.
  • Bokeh - Interactive Web Plotting for Python.
  • bqplot - Interactive Plotting Library for the Jupyter Notebook.
  • Cartopy - A cartographic python library with matplotlib support.
  • Dash - Built on top of Flask, React and Plotly aimed at analytical web applications.
  • diagrams - Diagram as Code.
  • Matplotlib - A Python 2D plotting library.
  • plotnine - A grammar of graphics for Python based on ggplot2.
  • Pygal - A Python SVG Charts Creator.
  • PyGraphviz - Python interface to Graphviz.
  • PyQtGraph - Interactive and realtime 2D/3D/Image plotting and science/engineering widgets.
  • Seaborn - Statistical data visualization using Matplotlib.
  • VisPy - High-performance scientific visualization based on OpenGL.

Database

Databases implemented in Python.

  • pickleDB - A simple and lightweight key-value store for Python.
  • tinydb - A tiny, document-oriented database.
  • ZODB - A native object database for Python. A key-value and object graph database.

Database Drivers

Libraries for connecting and operating databases.

  • MySQL - awesome-mysql
  • PostgreSQL - awesome-postgres
    • psycopg2 - The most popular PostgreSQL adapter for Python.
    • queries - A wrapper of the psycopg2 library for interacting with PostgreSQL.
  • SQlite - awesome-sqlite
    • sqlite3 - (Python standard library) SQlite interface compliant with DB-API 2.0
    • SuperSQLite - A supercharged SQLite library built on top of apsw.
  • Other Relational Databases
    • pymssql - A simple database interface to Microsoft SQL Server.
    • clickhouse-driver - Python driver with native interface for ClickHouse.
  • NoSQL Databases
    • cassandra-driver - The Python Driver for Apache Cassandra.
    • happybase - A developer-friendly library for Apache HBase.
    • kafka-python - The Python client for Apache Kafka.
    • py2neo - A client library and toolkit for working with Neo4j.
    • pymongo - The official Python client for MongoDB.
    • redis-py - The Python client for Redis.
  • Asynchronous Clients
    • motor - The async Python driver for MongoDB.

Date and Time

Libraries for working with dates and times.

  • Arrow - A Python library that offers a sensible and human-friendly approach to creating, manipulating, formatting and converting dates, times and timestamps.
  • Chronyk - A Python 3 library for parsing human-written times and dates.
  • dateutil - Extensions to the standard Python datetime module.
  • delorean - A library for clearing up the inconvenient truths that arise dealing with datetimes.
  • maya - Datetimes for Humans.
  • moment - A Python library for dealing with dates/times. Inspired by Moment.js.
  • Pendulum - Python datetimes made easy.
  • PyTime - An easy-to-use Python module which aims to operate date/time/datetime by string.
  • pytz - World timezone definitions, modern and historical. Brings the tz database into Python.
  • when.py - Providing user-friendly functions to help perform common date and time actions.

Debugging Tools

Libraries for debugging code.

  • pdb-like Debugger
    • ipdb - IPython-enabled pdb.
    • pdb++ - Another drop-in replacement for pdb.
    • pudb - A full-screen, console-based Python debugger.
    • wdb - An improbable web debugger through WebSockets.
  • Tracing
    • lptrace - strace for Python programs.
    • manhole - Debugging UNIX socket connections and present the stacktraces for all threads and an interactive prompt.
    • pyringe - Debugger capable of attaching to and injecting code into Python processes.
    • python-hunter - A flexible code tracing toolkit.
  • Profiler
    • line_profiler - Line-by-line profiling.
    • memory_profiler - Monitor Memory usage of Python code.
    • py-spy - A sampling profiler for Python programs. Written in Rust.
    • pyflame - A ptracing profiler For Python.
    • vprof - Visual Python profiler.
  • Others
    • django-debug-toolbar - Display various debug information for Django.
    • django-devserver - A drop-in replacement for Django's runserver.
    • flask-debugtoolbar - A port of the django-debug-toolbar to flask.
    • icecream - Inspect variables, expressions, and program execution with a single, simple function call.
    • pyelftools - Parsing and analyzing ELF files and DWARF debugging information.

Deep Learning

Frameworks for Neural Networks and Deep Learning. Also see awesome-deep-learning.

  • caffe - A fast open framework for deep learning..
  • keras - A high-level neural networks library and capable of running on top of either TensorFlow or Theano.
  • mxnet - A deep learning framework designed for both efficiency and flexibility.
  • pytorch - Tensors and Dynamic neural networks in Python with strong GPU acceleration.
  • SerpentAI - Game agent framework. Use any video game as a deep learning sandbox.
  • tensorflow - The most popular Deep Learning framework created by Google.
  • Theano - A library for fast numerical computation.

DevOps Tools

Software and libraries for DevOps.

  • Configuration Management
    • ansible - A radically simple IT automation platform.
    • cloudinit - A multi-distribution package that handles early initialization of a cloud instance.
    • OpenStack - Open source software for building private and public clouds.
    • pyinfra - A versatile CLI tools and python libraries to automate infrastructure.
    • saltstack - Infrastructure automation and management system.
  • SSH-style Deployment
    • cuisine - Chef-like functionality for Fabric.
    • fabric - A simple, Pythonic tool for remote execution and deployment.
    • fabtools - Tools for writing awesome Fabric files.
  • Process Management
    • honcho - A Python clone of Foreman, for managing Procfile-based applications.
    • supervisor - Supervisor process control system for UNIX.
  • Monitoring
    • psutil - A cross-platform process and system utilities module.
  • Backup
    • BorgBackup - A deduplicating archiver with compression and encryption.
  • Others

Distributed Computing

Frameworks and libraries for Distributed Computing.

  • Batch Processing
    • dask - A flexible parallel computing library for analytic computing.
    • luigi - A module that helps you build complex pipelines of batch jobs.
    • mrjob - Run MapReduce jobs on Hadoop or Amazon Web Services.
    • PySpark - Apache Spark Python API.
    • Ray - A system for parallel and distributed Python that unifies the machine learning ecosystem.
  • Stream Processing

Distribution

Libraries to create packaged executables for release distribution.

  • dh-virtualenv - Build and distribute a virtualenv as a Debian package.
  • Nuitka - Compile scripts, modules, packages to an executable or extension module.
  • py2app - Freezes Python scripts (Mac OS X).
  • py2exe - Freezes Python scripts (Windows).
  • pyarmor - A tool used to obfuscate python scripts, bind obfuscated scripts to fixed machine or expire obfuscated scripts.
  • PyInstaller - Converts Python programs into stand-alone executables (cross-platform).
  • pynsist - A tool to build Windows installers, installers bundle Python itself.
  • shiv - A command line utility for building fully self-contained zipapps (PEP 441), but with all their dependencies included.

Documentation

Libraries for generating project documentation.

  • sphinx - Python Documentation generator.
  • pdoc - Epydoc replacement to auto generate API documentation for Python libraries.
  • pycco - The literate-programming-style documentation generator.

Downloader

Libraries for downloading.

  • akshare - A financial data interface library, built for human beings!
  • s3cmd - A command line tool for managing Amazon S3 and CloudFront.
  • s4cmd - Super S3 command line tool, good for higher performance.
  • you-get - A YouTube/Youku/Niconico video downloader written in Python 3.
  • youtube-dl - A small command-line program to download videos from YouTube.

E-commerce

Frameworks and libraries for e-commerce and payments.

  • alipay - Unofficial Alipay API for Python.
  • Cartridge - A shopping cart app built using the Mezzanine.
  • django-oscar - An open-source e-commerce framework for Django.
  • django-shop - A Django based shop system.
  • forex-python - Foreign exchange rates, Bitcoin price index and currency conversion.
  • merchant - A Django app to accept payments from various payment processors.
  • money - Money class with optional CLDR-backed locale-aware formatting and an extensible currency exchange.
  • python-currencies - Display money format and its filthy currencies.
  • saleor - An e-commerce storefront for Django.
  • shoop - An open source E-Commerce platform based on Django.

Editor Plugins and IDEs

  • Emacs
    • elpy - Emacs Python Development Environment.
  • Sublime Text
    • anaconda - Anaconda turns your Sublime Text 3 in a full featured Python development IDE.
    • SublimeJEDI - A Sublime Text plugin to the awesome auto-complete library Jedi.
  • Vim
    • jedi-vim - Vim bindings for the Jedi auto-completion library for Python.
    • python-mode - An all in one plugin for turning Vim into a Python IDE.
    • YouCompleteMe - Includes Jedi-based completion engine for Python.
  • Visual Studio
    • PTVS - Python Tools for Visual Studio.
  • Visual Studio Code
    • Python - The official VSCode extension with rich support for Python.
  • IDE
    • PyCharm - Commercial Python IDE by JetBrains. Has free community edition available.
    • spyder - Open Source Python IDE.

Email

Libraries for sending and parsing email.

  • Mail Servers
    • modoboa - A mail hosting and management platform including a modern Web UI.
    • salmon - A Python Mail Server.
  • Clients
    • imbox - Python IMAP for Humans.
    • yagmail - Yet another Gmail/SMTP client.
  • Others
    • flanker - An email address and Mime parsing library.
    • mailer - High-performance extensible mail delivery framework.

Enterprise Application Integrations

Platforms and tools for systems integrations in enterprise environments

  • Zato - ESB, SOA, REST, APIs and Cloud Integrations in Python.

Environment Management

Libraries for Python version and virtual environment management.

  • pyenv - Simple Python version management.
  • virtualenv - A tool to create isolated Python environments.

Files

Libraries for file manipulation and MIME type detection.

  • mimetypes - (Python standard library) Map filenames to MIME types.
  • path.py - A module wrapper for os.path.
  • pathlib - (Python standard library) An cross-platform, object-oriented path library.
  • PyFilesystem2 - Python's filesystem abstraction layer.
  • python-magic - A Python interface to the libmagic file type identification library.
  • Unipath - An object-oriented approach to file/directory operations.
  • watchdog - API and shell utilities to monitor file system events.

Foreign Function Interface

Libraries for providing foreign function interface.

  • cffi - Foreign Function Interface for Python calling C code.
  • ctypes - (Python standard library) Foreign Function Interface for Python calling C code.
  • PyCUDA - A Python wrapper for Nvidia's CUDA API.
  • SWIG - Simplified Wrapper and Interface Generator.

Forms

Libraries for working with forms.

  • Deform - Python HTML form generation library influenced by the formish form generation library.
  • django-bootstrap3 - Bootstrap 3 integration with Django.
  • django-bootstrap4 - Bootstrap 4 integration with Django.
  • django-crispy-forms - A Django app which lets you create beautiful forms in a very elegant and DRY way.
  • django-remote-forms - A platform independent Django form serializer.
  • WTForms - A flexible forms validation and rendering library.

Functional Programming

Functional Programming with Python.

  • Coconut - A variant of Python built for simple, elegant, Pythonic functional programming.
  • CyToolz - Cython implementation of Toolz: High performance functional utilities.
  • fn.py - Functional programming in Python: implementation of missing features to enjoy FP.
  • funcy - A fancy and practical functional tools.
  • more-itertools - More routines for operating on iterables, beyond itertools.
  • returns - A set of type-safe monads, transformers, and composition utilities.
  • Toolz - A collection of functional utilities for iterators, functions, and dictionaries.

GUI Development

Libraries for working with graphical user interface applications.

  • curses - Built-in wrapper for ncurses used to create terminal GUI applications.
  • Eel - A library for making simple Electron-like offline HTML/JS GUI apps.
  • enaml - Creating beautiful user-interfaces with Declarative Syntax like QML.
  • Flexx - Flexx is a pure Python toolkit for creating GUI's, that uses web technology for its rendering.
  • Gooey - Turn command line programs into a full GUI application with one line.
  • kivy - A library for creating NUI applications, running on Windows, Linux, Mac OS X, Android and iOS.
  • pyglet - A cross-platform windowing and multimedia library for Python.
  • PyGObject - Python Bindings for GLib/GObject/GIO/GTK+ (GTK+3).
  • PyQt - Python bindings for the Qt cross-platform application and UI framework.
  • PySimpleGUI - Wrapper for tkinter, Qt, WxPython and Remi.
  • pywebview - A lightweight cross-platform native wrapper around a webview component.
  • Tkinter - Tkinter is Python's de-facto standard GUI package.
  • Toga - A Python native, OS native GUI toolkit.
  • urwid - A library for creating terminal GUI applications with strong support for widgets, events, rich colors, etc.
  • wxPython - A blending of the wxWidgets C++ class library with the Python.
  • DearPyGui - A Simple GPU accelerated Python GUI framework

GraphQL

Libraries for working with GraphQL.

  • graphene - GraphQL framework for Python.
  • tartiflette-aiohttp - An aiohttp-based wrapper for Tartiflette to expose GraphQL APIs over HTTP.
  • tartiflette-asgi - ASGI support for the Tartiflette GraphQL engine.
  • tartiflette - SDL-first GraphQL engine implementation for Python 3.6+ and asyncio.

Game Development

Awesome game development libraries.

  • Arcade - Arcade is a modern Python framework for crafting games with compelling graphics and sound.
  • Cocos2d - cocos2d is a framework for building 2D games, demos, and other graphical/interactive applications.
  • Harfang3D - Python framework for 3D, VR and game development.
  • Panda3D - 3D game engine developed by Disney.
  • Pygame - Pygame is a set of Python modules designed for writing games.
  • PyOgre - Python bindings for the Ogre 3D render engine, can be used for games, simulations, anything 3D.
  • PyOpenGL - Python ctypes bindings for OpenGL and it's related APIs.
  • PySDL2 - A ctypes based wrapper for the SDL2 library.
  • RenPy - A Visual Novel engine.

Geolocation

Libraries for geocoding addresses and working with latitudes and longitudes.

  • django-countries - A Django app that provides a country field for models and forms.
  • GeoDjango - A world-class geographic web framework.
  • GeoIP - Python API for MaxMind GeoIP Legacy Database.
  • geojson - Python bindings and utilities for GeoJSON.
  • geopy - Python Geocoding Toolbox.

HTML Manipulation

Libraries for working with HTML and XML.

  • BeautifulSoup - Providing Pythonic idioms for iterating, searching, and modifying HTML or XML.
  • bleach - A whitelist-based HTML sanitization and text linkification library.
  • cssutils - A CSS library for Python.
  • html5lib - A standards-compliant library for parsing and serializing HTML documents and fragments.
  • lxml - A very fast, easy-to-use and versatile library for handling HTML and XML.
  • MarkupSafe - Implements a XML/HTML/XHTML Markup safe string for Python.
  • pyquery - A jQuery-like library for parsing HTML.
  • untangle - Converts XML documents to Python objects for easy access.
  • WeasyPrint - A visual rendering engine for HTML and CSS that can export to PDF.
  • xmldataset - Simple XML Parsing.
  • xmltodict - Working with XML feel like you are working with JSON.

HTTP Clients

Libraries for working with HTTP.

  • grequests - requests + gevent for asynchronous HTTP requests.
  • httplib2 - Comprehensive HTTP client library.
  • httpx - A next generation HTTP client for Python.
  • requests - HTTP Requests for Humans.
  • treq - Python requests like API built on top of Twisted's HTTP client.
  • urllib3 - A HTTP library with thread-safe connection pooling, file post support, sanity friendly.

Hardware

Libraries for programming with hardware.

  • ino - Command line toolkit for working with Arduino.
  • keyboard - Hook and simulate global keyboard events on Windows and Linux.
  • mouse - Hook and simulate global mouse events on Windows and Linux.
  • Pingo - Pingo provides a uniform API to program devices like the Raspberry Pi, pcDuino, Intel Galileo, etc.
  • PyUserInput - A module for cross-platform control of the mouse and keyboard.
  • scapy - A brilliant packet manipulation library.

Image Processing

Libraries for manipulating images.

  • hmap - Image histogram remapping.
  • imgSeek - A project for searching a collection of images using visual similarity.
  • nude.py - Nudity detection.
  • pagan - Retro identicon (Avatar) generation based on input string and hash.
  • pillow - Pillow is the friendly PIL fork.
  • python-barcode - Create barcodes in Python with no extra dependencies.
  • pygram - Instagram-like image filters.
  • PyMatting - A library for alpha matting.
  • python-qrcode - A pure Python QR Code generator.
  • pywal - A tool that generates color schemes from images.
  • pyvips - A fast image processing library with low memory needs.
  • Quads - Computer art based on quadtrees.
  • scikit-image - A Python library for (scientific) image processing.
  • thumbor - A smart imaging service. It enables on-demand crop, re-sizing and flipping of images.
  • wand - Python bindings for MagickWand, C API for ImageMagick.

Implementations

Implementations of Python.

  • CLPython - Implementation of the Python programming language written in Common Lisp.
  • CPython - Default, most widely used implementation of the Python programming language written in C.
  • Cython - Optimizing Static Compiler for Python.
  • Grumpy - More compiler than interpreter as more powerful CPython2.7 replacement (alpha).
  • IronPython - Implementation of the Python programming language written in C#.
  • Jython - Implementation of Python programming language written in Java for the JVM.
  • MicroPython - A lean and efficient Python programming language implementation.
  • Numba - Python JIT compiler to LLVM aimed at scientific Python.
  • PeachPy - x86-64 assembler embedded in Python.
  • Pyjion - A JIT for Python based upon CoreCLR.
  • PyPy - A very fast and compliant implementation of the Python language.
  • Pyston - A Python implementation using JIT techniques.
  • Stackless Python - An enhanced version of the Python programming language.

Interactive Interpreter

Interactive Python interpreters (REPL).

Internationalization

Libraries for working with i18n.

  • Babel - An internationalization library for Python.
  • PyICU - A wrapper of International Components for Unicode C++ library (ICU).

Job Scheduler

Libraries for scheduling jobs.

  • Airflow - Airflow is a platform to programmatically author, schedule and monitor workflows.
  • APScheduler - A light but powerful in-process task scheduler that lets you schedule functions.
  • django-schedule - A calendaring app for Django.
  • doit - A task runner and build tool.
  • gunnery - Multipurpose task execution tool for distributed systems with web-based interface.
  • Joblib - A set of tools to provide lightweight pipelining in Python.
  • Plan - Writing crontab file in Python like a charm.
  • Prefect - A modern workflow orchestration framework that makes it easy to build, schedule and monitor robust data pipelines.
  • schedule - Python job scheduling for humans.
  • Spiff - A powerful workflow engine implemented in pure Python.
  • TaskFlow - A Python library that helps to make task execution easy, consistent and reliable.

Logging

Libraries for generating and working with logs.

  • logbook - Logging replacement for Python.
  • logging - (Python standard library) Logging facility for Python.
  • loguru - Library which aims to bring enjoyable logging in Python.
  • sentry-python - Sentry SDK for Python.
  • structlog - Structured logging made easy.

Machine Learning

Libraries for Machine Learning. Also see awesome-machine-learning.

  • gym - A toolkit for developing and comparing reinforcement learning algorithms.
  • H2O - Open Source Fast Scalable Machine Learning Platform.
  • Metrics - Machine learning evaluation metrics.
  • NuPIC - Numenta Platform for Intelligent Computing.
  • scikit-learn - The most popular Python library for Machine Learning.
  • Spark ML - Apache Spark's scalable Machine Learning library.
  • vowpal_porpoise - A lightweight Python wrapper for Vowpal Wabbit.
  • xgboost - A scalable, portable, and distributed gradient boosting library.
  • MindsDB - MindsDB is an open source AI layer for existing databases that allows you to effortlessly develop, train and deploy state-of-the-art machine learning models using standard queries.

Microsoft Windows

Python programming on Microsoft Windows.

  • Python(x,y) - Scientific-applications-oriented Python Distribution based on Qt and Spyder.
  • pythonlibs - Unofficial Windows binaries for Python extension packages.
  • PythonNet - Python Integration with the .NET Common Language Runtime (CLR).
  • PyWin32 - Python Extensions for Windows.
  • WinPython - Portable development environment for Windows 7/8.

Miscellaneous

Useful libraries or tools that don't fit in the categories above.

  • blinker - A fast Python in-process signal/event dispatching system.
  • boltons - A set of pure-Python utilities.
  • itsdangerous - Various helpers to pass trusted data to untrusted environments.
  • magenta - A tool to generate music and art using artificial intelligence.
  • pluginbase - A simple but flexible plugin system for Python.
  • tryton - A general purpose business framework.

Natural Language Processing

Libraries for working with human languages.

  • General
    • gensim - Topic Modeling for Humans.
    • langid.py - Stand-alone language identification system.
    • nltk - A leading platform for building Python programs to work with human language data.
    • pattern - A web mining module.
    • polyglot - Natural language pipeline supporting hundreds of languages.
    • pytext - A natural language modeling framework based on PyTorch.
    • PyTorch-NLP - A toolkit enabling rapid deep learning NLP prototyping for research.
    • spacy - A library for industrial-strength natural language processing in Python and Cython.
    • Stanza - The Stanford NLP Group's official Python library, supporting 60+ languages.
  • Chinese
    • funNLP - A collection of tools and datasets for Chinese NLP.
    • jieba - The most popular Chinese text segmentation library.
    • pkuseg-python - A toolkit for Chinese word segmentation in various domains.
    • snownlp - A library for processing Chinese text.

Network Virtualization

Tools and libraries for Virtual Networking and SDN (Software Defined Networking).

  • mininet - A popular network emulator and API written in Python.
  • napalm - Cross-vendor API to manipulate network devices.
  • pox - A Python-based SDN control applications, such as OpenFlow SDN controllers.

News Feed

Libraries for building user's activities.

ORM

Libraries that implement Object-Relational Mapping or data mapping techniques.

  • Relational Databases
    • Django Models - The Django ORM.
    • SQLAlchemy - The Python SQL Toolkit and Object Relational Mapper.
    • dataset - Store Python dicts in a database - works with SQLite, MySQL, and PostgreSQL.
    • orator - The Orator ORM provides a simple yet beautiful ActiveRecord implementation.
    • orm - An async ORM.
    • peewee - A small, expressive ORM.
    • pony - ORM that provides a generator-oriented interface to SQL.
    • pydal - A pure Python Database Abstraction Layer.
  • NoSQL Databases
    • hot-redis - Rich Python data types for Redis.
    • mongoengine - A Python Object-Document-Mapper for working with MongoDB.
    • PynamoDB - A Pythonic interface for Amazon DynamoDB.
    • redisco - A Python Library for Simple Models and Containers Persisted in Redis.

Package Management

Libraries for package and dependency management.

  • pip - The package installer for Python.
    • pip-tools - A set of tools to keep your pinned Python dependencies fresh.
    • PyPI
  • conda - Cross-platform, Python-agnostic binary package manager.
  • poetry - Python dependency management and packaging made easy.

Package Repositories

Local PyPI repository server and proxies.

  • bandersnatch - PyPI mirroring tool provided by Python Packaging Authority (PyPA).
  • devpi - PyPI server and packaging/testing/release tool.
  • localshop - Local PyPI server (custom packages and auto-mirroring of pypi).
  • warehouse - Next generation Python Package Repository (PyPI).

Penetration Testing

Frameworks and tools for penetration testing.

  • fsociety - A Penetration testing framework.
  • setoolkit - A toolkit for social engineering.
  • sqlmap - Automatic SQL injection and database takeover tool.

Permissions

Libraries that allow or deny users access to data or functionality.

  • django-guardian - Implementation of per object permissions for Django 1.2+
  • django-rules - A tiny but powerful app providing object-level permissions to Django, without requiring a database.

Processes

Libraries for starting and communicating with OS processes.

Recommender Systems

Libraries for building recommender systems.

  • annoy - Approximate Nearest Neighbors in C++/Python optimized for memory usage.
  • fastFM - A library for Factorization Machines.
  • implicit - A fast Python implementation of collaborative filtering for implicit datasets.
  • libffm - A library for Field-aware Factorization Machine (FFM).
  • lightfm - A Python implementation of a number of popular recommendation algorithms.
  • spotlight - Deep recommender models using PyTorch.
  • Surprise - A scikit for building and analyzing recommender systems.
  • tensorrec - A Recommendation Engine Framework in TensorFlow.

Refactoring

Refactoring tools and libraries for Python

  • Bicycle Repair Man - Bicycle Repair Man, a refactoring tool for Python.
  • Bowler - Safe code refactoring for modern Python.
  • Rope - Rope is a python refactoring library.

RESTful API

Libraries for building RESTful APIs.

  • Django
  • Flask
    • eve - REST API framework powered by Flask, MongoDB and good intentions.
    • flask-api - Browsable Web APIs for Flask.
    • flask-restful - Quickly building REST APIs for Flask.
  • Pyramid
    • cornice - A RESTful framework for Pyramid.
  • Framework agnostic
    • apistar - A smart Web API framework, designed for Python 3.
    • falcon - A high-performance framework for building cloud APIs and web app backends.
    • fastapi - A modern, fast, web framework for building APIs with Python 3.6+ based on standard Python type hints.
    • hug - A Python 3 framework for cleanly exposing APIs.
    • sandman2 - Automated REST APIs for existing database-driven systems.
    • sanic - A Python 3.6+ web server and web framework that's written to go fast.
    • vibora - Fast, efficient and asynchronous Web framework inspired by Flask.

Robotics

Libraries for robotics.

  • PythonRobotics - This is a compilation of various robotics algorithms with visualizations.
  • rospy - This is a library for ROS (Robot Operating System).

RPC Servers

RPC-compatible servers.

  • RPyC (Remote Python Call) - A transparent and symmetric RPC library for Python
  • zeroRPC - zerorpc is a flexible RPC implementation based on ZeroMQ and MessagePack.

Science

Libraries for scientific computing. Also see Python-for-Scientists.

  • astropy - A community Python library for Astronomy.
  • bcbio-nextgen - Providing best-practice pipelines for fully automated high throughput sequencing analysis.
  • bccb - Collection of useful code related to biological analysis.
  • Biopython - Biopython is a set of freely available tools for biological computation.
  • cclib - A library for parsing and interpreting the results of computational chemistry packages.
  • Colour - Implementing a comprehensive number of colour theory transformations and algorithms.
  • Karate Club - Unsupervised machine learning toolbox for graph structured data.
  • NetworkX - A high-productivity software for complex networks.
  • NIPY - A collection of neuroimaging toolkits.
  • NumPy - A fundamental package for scientific computing with Python.
  • ObsPy - A Python toolbox for seismology.
  • Open Babel - A chemical toolbox designed to speak the many languages of chemical data.
  • PyDy - Short for Python Dynamics, used to assist with workflow in the modeling of dynamic motion.
  • PyMC - Markov Chain Monte Carlo sampling toolkit.
  • QuTiP - Quantum Toolbox in Python.
  • RDKit - Cheminformatics and Machine Learning Software.
  • SciPy - A Python-based ecosystem of open-source software for mathematics, science, and engineering.
  • SimPy - A process-based discrete-event simulation framework.
  • statsmodels - Statistical modeling and econometrics in Python.
  • SymPy - A Python library for symbolic mathematics.
  • Zipline - A Pythonic algorithmic trading library.

Libraries and software for indexing and performing search queries on data.

Serialization

Libraries for serializing complex data types

Serverless Frameworks

Frameworks for developing serverless Python code.

  • python-lambda - A toolkit for developing and deploying Python code in AWS Lambda.
  • Zappa - A tool for deploying WSGI applications on AWS Lambda and API Gateway.

Shell

Shells based on Python.

  • xonsh - A Python-powered, cross-platform, Unix-gazing shell language and command prompt.

Specific Formats Processing

Libraries for parsing and manipulating specific text formats.

  • General
    • tablib - A module for Tabular Datasets in XLS, CSV, JSON, YAML.
  • Office
    • docxtpl - Editing a docx document by jinja2 template
    • openpyxl - A library for reading and writing Excel 2010 xlsx/xlsm/xltx/xltm files.
    • pyexcel - Providing one API for reading, manipulating and writing csv, ods, xls, xlsx and xlsm files.
    • python-docx - Reads, queries and modifies Microsoft Word 2007/2008 docx files.
    • python-pptx - Python library for creating and updating PowerPoint (.pptx) files.
    • unoconv - Convert between any document format supported by LibreOffice/OpenOffice.
    • XlsxWriter - A Python module for creating Excel .xlsx files.
    • xlwings - A BSD-licensed library that makes it easy to call Python from Excel and vice versa.
    • xlwt / xlrd - Writing and reading data and formatting information from Excel files.
  • PDF
    • PDFMiner - A tool for extracting information from PDF documents.
    • PyPDF2 - A library capable of splitting, merging and transforming PDF pages.
    • ReportLab - Allowing Rapid creation of rich PDF documents.
  • Markdown
    • Mistune - Fastest and full featured pure Python parsers of Markdown.
    • Python-Markdown - A Python implementation of John Gruberโ€™s Markdown.
  • YAML
    • PyYAML - YAML implementations for Python.
  • CSV
    • csvkit - Utilities for converting to and working with CSV.
  • Archive
    • unp - A command line tool that can unpack archives easily.

Static Site Generator

Static site generator is a software that takes some text + templates as input and produces HTML files on the output.

  • lektor - An easy to use static CMS and blog engine.
  • mkdocs - Markdown friendly documentation generator.
  • makesite - Simple, lightweight, and magic-free static site/blog generator (< 130 lines).
  • nikola - A static website and blog generator.
  • pelican - Static site generator that supports Markdown and reST syntax.

Tagging

Libraries for tagging items.

Task Queues

Libraries for working with task queues.

  • celery - An asynchronous task queue/job queue based on distributed message passing.
  • dramatiq - A fast and reliable background task processing library for Python 3.
  • huey - Little multi-threaded task queue.
  • mrq - A distributed worker task queue in Python using Redis & gevent.
  • rq - Simple job queues for Python.

Template Engine

Libraries and tools for templating and lexing.

  • Genshi - Python templating toolkit for generation of web-aware output.
  • Jinja2 - A modern and designer friendly templating language.
  • Mako - Hyperfast and lightweight templating for the Python platform.

Testing

Libraries for testing codebases and generating test data.

  • Testing Frameworks
    • hypothesis - Hypothesis is an advanced Quickcheck style property based testing library.
    • nose2 - The successor to nose, based on `unittest2.
    • pytest - A mature full-featured Python testing tool.
    • Robot Framework - A generic test automation framework.
    • unittest - (Python standard library) Unit testing framework.
  • Test Runners
    • green - A clean, colorful test runner.
    • mamba - The definitive testing tool for Python. Born under the banner of BDD.
    • tox - Auto builds and tests distributions in multiple Python versions
  • GUI / Web Testing
    • locust - Scalable user load testing tool written in Python.
    • PyAutoGUI - PyAutoGUI is a cross-platform GUI automation Python module for human beings.
    • Schemathesis - A tool for automatic property-based testing of web applications built with Open API / Swagger specifications.
    • Selenium - Python bindings for Selenium WebDriver.
    • sixpack - A language-agnostic A/B Testing framework.
    • splinter - Open source tool for testing web applications.
  • Mock
    • doublex - Powerful test doubles framework for Python.
    • freezegun - Travel through time by mocking the datetime module.
    • httmock - A mocking library for requests for Python 2.6+ and 3.2+.
    • httpretty - HTTP request mock tool for Python.
    • mock - (Python standard library) A mocking and patching library.
    • mocket - A socket mock framework with gevent/asyncio/SSL support.
    • responses - A utility library for mocking out the requests Python library.
    • VCR.py - Record and replay HTTP interactions on your tests.
  • Object Factories
    • factory_boy - A test fixtures replacement for Python.
    • mixer - Another fixtures replacement. Supports Django, Flask, SQLAlchemy, Peewee and etc.
    • model_mommy - Creating random fixtures for testing in Django.
  • Code Coverage
  • Fake Data
    • fake2db - Fake database generator.
    • faker - A Python package that generates fake data.
    • mimesis - is a Python library that help you generate fake data.
    • radar - Generate random datetime / time.

Text Processing

Libraries for parsing and manipulating plain texts.

  • General
    • chardet - Python 2/3 compatible character encoding detector.
    • difflib - (Python standard library) Helpers for computing deltas.
    • ftfy - Makes Unicode text less broken and more consistent automagically.
    • fuzzywuzzy - Fuzzy String Matching.
    • Levenshtein - Fast computation of Levenshtein distance and string similarity.
    • pangu.py - Paranoid text spacing.
    • pyfiglet - An implementation of figlet written in Python.
    • pypinyin - Convert Chinese hanzi (ๆผขๅญ—) to pinyin (ๆ‹ผ้Ÿณ).
    • textdistance - Compute distance between sequences with 30+ algorithms.
    • unidecode - ASCII transliterations of Unicode text.
  • Slugify
    • awesome-slugify - A Python slugify library that can preserve unicode.
    • python-slugify - A Python slugify library that translates unicode to ASCII.
    • unicode-slugify - A slugifier that generates unicode slugs with Django as a dependency.
  • Unique identifiers
    • hashids - Implementation of hashids in Python.
    • shortuuid - A generator library for concise, unambiguous and URL-safe UUIDs.
  • Parser
    • ply - Implementation of lex and yacc parsing tools for Python.
    • pygments - A generic syntax highlighter.
    • pyparsing - A general purpose framework for generating parsers.
    • python-nameparser - Parsing human names into their individual components.
    • python-phonenumbers - Parsing, formatting, storing and validating international phone numbers.
    • python-user-agents - Browser user agent parser.
    • sqlparse - A non-validating SQL parser.

Third-party APIs

Libraries for accessing third party services APIs. Also see List of Python API Wrappers and Libraries.

URL Manipulation

Libraries for parsing URLs.

  • furl - A small Python library that makes parsing and manipulating URLs easy.
  • purl - A simple, immutable URL class with a clean API for interrogation and manipulation.
  • pyshorteners - A pure Python URL shortening lib.
  • webargs - A friendly library for parsing HTTP request arguments with built-in support for popular web frameworks.

Video

Libraries for manipulating video and GIFs.

  • moviepy - A module for script-based movie editing with many formats, including animated GIFs.
  • scikit-video - Video processing routines for SciPy.
  • vidgear - Most Powerful multi-threaded Video Processing framework.

Web Asset Management

Tools for managing, compressing and minifying website assets.

  • django-compressor - Compresses linked and inline JavaScript or CSS into a single cached file.
  • django-pipeline - An asset packaging library for Django.
  • django-storages - A collection of custom storage back ends for Django.
  • fanstatic - Packages, optimizes, and serves static file dependencies as Python packages.
  • fileconveyor - A daemon to detect and sync files to CDNs, S3 and FTP.
  • flask-assets - Helps you integrate webassets into your Flask app.
  • webassets - Bundles, optimizes, and manages unique cache-busting URLs for static resources.

Web Content Extracting

Libraries for extracting web contents.

  • html2text - Convert HTML to Markdown-formatted text.
  • lassie - Web Content Retrieval for Humans.
  • micawber - A small library for extracting rich content from URLs.
  • newspaper - News extraction, article extraction and content curation in Python.
  • python-readability - Fast Python port of arc90's readability tool.
  • requests-html - Pythonic HTML Parsing for Humans.
  • sumy - A module for automatic summarization of text documents and HTML pages.
  • textract - Extract text from any document, Word, PowerPoint, PDFs, etc.
  • toapi - Every web site provides APIs.

Web Crawling

Libraries to automate web scraping.

  • cola - A distributed crawling framework.
  • feedparser - Universal feed parser.
  • grab - Site scraping framework.
  • MechanicalSoup - A Python library for automating interaction with websites.
  • portia - Visual scraping for Scrapy.
  • pyspider - A powerful spider system.
  • robobrowser - A simple, Pythonic library for browsing the web without a standalone web browser.
  • scrapy - A fast high-level screen scraping and web crawling framework.

Web Frameworks

Traditional full stack web frameworks. Also see RESTful API.

WebSocket

Libraries for working with WebSocket.

  • autobahn-python - WebSocket & WAMP for Python on Twisted and asyncio.
  • channels - Developer-friendly asynchrony for Django.
  • websockets - A library for building WebSocket servers and clients with a focus on correctness and simplicity.

WSGI Servers

WSGI-compatible web servers.

  • bjoern - Asynchronous, very fast and written in C.
  • gunicorn - Pre-forked, ported from Ruby's Unicorn project.
  • uWSGI - A project aims at developing a full stack for building hosting services, written in C.
  • waitress - Multi-threaded, powers Pyramid.
  • werkzeug - A WSGI utility library for Python that powers Flask and can easily be embedded into your own projects.

Resources

Where to discover learning resources or new Python libraries.

Books

Websites

Newsletters

Podcasts

Contributing

Your contributions are always welcome! Please take a look at the contribution guidelines first.

I will keep some pull requests open if I'm not sure whether those libraries are awesome, you could vote for them by adding :+1: to them. Pull requests will be merged when their votes reach 20.


If you have any question about this opinionated list, do not hesitate to contact me @VintaChen on Twitter or open an issue on GitHub.

Awesome asyncio Awesome

A carefully curated list of awesome Python asyncio frameworks, libraries, software and resources.

The Python asyncio module introduced to the standard library with Python 3.4 provides infrastructure for writing single-threaded concurrent code using coroutines, multiplexing I/O access over sockets and other resources, running network clients and servers, and other related primitives.

Asyncio is not really a brand-new technology however it appears to be very trending since a few years - especially in the Python community and with the release of Python 3.4 in March 2014. Thus, it's pretty hard to keep yourself up-to-date with the most awesome packages out there. Find some of those awesome packages here and if you are missing one we count on you to create an Issue or a Pull Request with your suggestion.

Contents


Web Frameworks

Libraries to build web applications.

  • aiohttp - Http client/server for asyncio (PEP-3156).
  • sanic - Python 3.5+ web server that's written to go fast.
  • Quart - An asyncio web microframework with the same API as Flask.
  • Vibora - Performant web framework inspired by Flask.
  • cirrina - Opinionated asynchronous web framework based on aiohttp.
  • autobahn - WebSocket and WAMP supporting asyncio and Twisted, for clients and servers.
  • websockets - A library for building WebSocket servers and clients in Python with a focus on correctness and simplicity.
  • Tornado - Performant web framework and asynchronous networking library.
  • Japronto! - Experimental http toolkit built on top of uvloop and picohttpparser.
  • Starlette - A lightweight ASGI framework/toolkit for building high performance services.
  • uvicorn - The lightning-fast ASGI server.
  • FastAPI - A very high performance Python 3.6+ API framework based on type hints. Powered by Starlette and Pydantic.

Message Queues

Libraries to implement applications using message queues.

  • aioamqp - AMQP implementation using asyncio.
  • pyzmq - Python bindings for ZeroMQ.
  • aiozmq - Alternative Asyncio integration with ZeroMQ.
  • crossbar - Crossbar.io is a networking platform for distributed and microservice applications.
  • asyncio-nats - Client for the NATS messaging system.
  • aiokafka - Client for Apache Kafka.

Database Drivers

Libraries to connect to databases.

  • asyncpg - Fast PostgreSQL Database Client Library for Python/asyncio.
  • asyncpgsa - Asyncpg with sqlalchemy core support.
  • aiopg - Library for accessing a PostgreSQL database.
  • aiomysql - Library for accessing a MySQL database
  • aioodbc - Library for accessing a ODBC databases.
  • motor - The async Python driver for MongoDB.
  • aioredis - aio-libs Redis client (PEP 3156).
  • asyncio-redis - Redis client for Python asyncio (PEP 3156).
  • aiocouchdb - CouchDB client built on top of aiohttp (asyncio).
  • aioinflux - InfluxDB client built on top of aiohttp.
  • aioes - Asyncio compatible driver for elasticsearch.
  • peewee-async - ORM implementation based on peewee and aiopg.
  • GINO - is a lightweight asynchronous Python ORM based on SQLAlchemy core, with asyncpg dialect.
  • Tortoise ORM - native multi-backend ORM with Django-like API and easy relations management.
  • Databases - Async database access for SQLAlchemy core, with support for PostgreSQL, MySQL, and SQLite.

Networking

Libraries to communicate in your network.

  • AsyncSSH - Provides an asynchronous client and server implementation of the SSHv2 protocol.
  • aiodns - Simple DNS resolver for asyncio
  • httpx - asynchronous HTTP client for Python 3 with requests compatible API.

GraphQL

Libraries to build GraphQL servers.

  • Ariadne - Schema-first Python library for implementing GraphQL servers.
  • Tartiflette - Schema-first Python 3.6+ GraphQL engine built on top of libgraphqlparser.

Testing

Libraries to test asyncio based applications.

  • aiomock - A python mock library that supports async methods.
  • asynctest - Enhance the standard unittest package with features for testing. asyncio libraries
  • pytest-asyncio - Pytest support for asyncio.
  • aresponses - Asyncio http mocking. Similar to the responses library used for requests
  • aioresponses - Helper for mock/fake web requests in Python aiohttp package.

Alternative Loops

Alternative asyncio loop implementations.

  • uvloop - Ultra fast implementation of asyncio event loop on top of libuv.

Misc

Other awesome asyncio libraries.

  • aiocache - Cache manager for different backends.
  • aiofiles - File support for asyncio.
  • aiodebug - A tiny library for monitoring and testing asyncio programs.
  • aiorun - A run() function that handles all the usual boilerplate for startup and graceful shutdown.
  • aioserial - A drop-in replacement of pySerial.
  • aiozipkin - Distributed tracing instrumentation for asyncio with zipkin
  • asgiref - Backend utils for ASGI to WSGI integration, includes sync_to_async and async_to_sync function wrappers.
  • ruia - An async web scraping micro-framework based on asyncio.

Writings

Documentation, blog posts, and other awesome writing about asyncio.

Talks

Recordings of awesome talks about asyncio.

Alternatives to asyncio

Alternative approaches to async programming in Python, some of which attempt to support some compatibility with asyncio, others are not compatible at all.

  • curio - The coroutine concurrency library.
  • Curio-Asyncio Bridge - basic curio -> asyncio coroutine bridge
  • trio - Pythonic async I/O for humans and snake people.
  • trio-asyncio - re-implementation of the asyncio mainloop on top of Trio

Python for Scientific Audio

Awesome Build Status

The aim of this repository is to create a comprehensive, curated list of python software/tools related and used for scientific research in audio/music applications.

Contents

  • Total number of packages: 66

Read-Write

Transformations - General DSP

Feature extraction

Data augmentation

Speech Processing

Environmental Sounds

Perceptial Models - Auditory Models

Source Separation

Music Information Retrieval

Deep Learning

Symbolic Music - MIDI - Musicology

Realtime applications

Web Audio

Audio Dataset and Dataloaders

Wrappers for Audio Plugins

Tutorials

Books

Scientific Papers

Other Resources

There is already PythonInMusic but it is not up to date and includes too many packages of special interest that are mostly not relevant for scientific applications. Awesome-Python is large curated list of python packages. However, the audio section is very small.

Contributing

Your contributions are always welcome! Please take a look at the contribution guidelines first.

I will keep some pull requests open if I'm not sure whether those libraries are awesome, you could vote for them by adding ๐Ÿ‘ to them.

License

License: CC BY 4.0

Awesome CircuitPython

Awesome

A curated list of awesome CircuitPython guides, videos, libraries, frameworks, software and resources.

CircuitPython is Adafruit's branch of MicroPython designed to simplify experimentation and education on low-cost microcontrollers. It makes it easier than ever to start prototyping by requiring no upfront desktop software downloads. With CircuitPython you can write clean and simple Python code to control hardware instead of having to use complex low-level languages like C or C++ (what Arduino uses for programming). It's great for beginners!

Contents

CircuitPython.org

CircuitPython.org is the first stop on the information snake highway. Here you can see all the supported boards and download the specific firmware for each one, including beta, latest, and previous versions. Downloads can be sorted by: maker, features, name, and more. At this time there are over 80 boards supported in the CircuitPython family!

Guides

Community

Books

Code

Frameworks

Hardware

All supported boards may be viewed at circuitpython.org to include descriptions, pictures, and compatible CircuitPython builds. For Single-Board Computers, the list of boards is under the Blinka category.

Looking to add a new board to CircuitPython? It's highly encouraged! Adafruit has four tutorials to help you do so:

CircuitPython sensors and accessories - Complete listing of sensors, LCDs, displays, robotics, breakout boards, and more.

python.digikey.com - Digi-Key electronics has a listing of all Python-supported boards on their site in one location including CircuitPython and MicroPython boards.

Newsletter

News

Art

Social

Podcasts

Events

Swag

Talks

Contributing

Contributions and suggestions are always welcome! Please make pull requests from your own fork to modify Awesome CircuitPython.

The workflow is explained in detail here: Adafruit : Contribute to CircuitPython with Git and GitHub.

Contribution Workflow Overview

  1. Fork this repository on GitHub.
  2. Clone the forked repo to your drive.
  3. Add a remote using owner adafruit and the original URL.
  4. Fetch the remote.
  5. Merge adafruit or main.
  6. Create a branch.
  7. Make a change.
  8. Commit and push to your repo.
  9. Create a pull request on the official repo.
  10. Once accepted, repeat by merging from the official repo to your fork's master, and re-branch.

Questions? We're happy to help you to contribute on Discord.

License & Trademarks

CC0

To the extent possible under law, the authors have waived all copyright and related or neighbouring rights to this work.

Last updated: March 3, 2022

pyds


Awesome Python Data Science

Probably the best curated list of data science software in Python

Contents

Machine Learning

General Purpouse Machine Learning

  • scikit-learn - Machine learning in Python. sklearn
  • Shogun - Machine learning toolbox.
  • xLearn - High Performance, Easy-to-use, and Scalable Machine Learning Package.
  • cuML - RAPIDS Machine Learning Library. sklearn GPU accelerated
  • modAL - Modular active learning framework for Python3. sklearn
  • Sparkit-learn - PySpark + scikit-learn = Sparkit-learn. sklearn Apache Spark based
  • mlpack - A scalable C++ machine learning library (Python bindings).
  • dlib - Toolkit for making real world machine learning and data analysis applications in C++ (Python bindings).
  • MLxtend - Extension and helper modules for Python's data analysis and machine learning libraries. sklearn
  • hyperlearn - 50%+ Faster, 50%+ less RAM usage, GPU support re-written Sklearn, Statsmodels. sklearn PyTorch based/compatible
  • Reproducible Experiment Platform (REP) - Machine Learning toolbox for Humans. sklearn
  • scikit-multilearn - Multi-label classification for python. sklearn
  • seqlearn - Sequence classification toolkit for Python. sklearn
  • pystruct - Simple structured learning framework for Python. sklearn
  • sklearn-expertsys - Highly interpretable classifiers for scikit learn. sklearn
  • RuleFit - Implementation of the rulefit. sklearn
  • metric-learn - Metric learning algorithms in Python. sklearn
  • pyGAM - Generalized Additive Models in Python.
  • Karate Club - An unsupervised machine learning library for graph structured data.
  • Little Ball of Fur - A library for sampling graph structured data.
  • causalml - Uplift modeling and causal inference with machine learning algorithms. sklearn
  • Deepchecks - Validation & testing of ML models and data during model development, deployment, and production. sklearn

Automated Machine Learning

  • TPOT - Automated Machine Learning tool that optimizes machine learning pipelines using genetic programming. sklearn
  • auto-sklearn - An automated machine learning toolkit and a drop-in replacement for a scikit-learn estimator. sklearn
  • MLBox - A powerful Automated Machine Learning python library.

Ensemble Methods

  • ML-Ensemble - High performance ensemble learning. sklearn
  • Stacking - Simple and useful stacking library, written in Python. sklearn
  • stacked_generalization - Library for machine learning stacking generalization. sklearn
  • vecstack - Python package for stacking (machine learning technique). sklearn

Imbalanced Datasets

  • imbalanced-learn - Module to perform under sampling and over sampling with various techniques. sklearn
  • imbalanced-algorithms - Python-based implementations of algorithms for learning on imbalanced data. sklearn sklearn

Random Forests

Extreme Learning Machine

  • Python-ELM - Extreme Learning Machine implementation in Python. sklearn
  • Python Extreme Learning Machine (ELM) - A machine learning technique used for classification/regression tasks.
  • hpelm - High performance implementation of Extreme Learning Machines (fast randomized neural networks). GPU accelerated

Kernel Methods

  • pyFM - Factorization machines in python. sklearn
  • fastFM - A library for Factorization Machines. sklearn
  • tffm - TensorFlow implementation of an arbitrary order Factorization Machine. sklearn sklearn
  • liquidSVM - An implementation of SVMs.
  • scikit-rvm - Relevance Vector Machine implementation using the scikit-learn API. sklearn
  • ThunderSVM - A fast SVM Library on GPUs and CPUs. sklearn GPU accelerated

Gradient Boosting

  • XGBoost - Scalable, Portable and Distributed Gradient Boosting. sklearn GPU accelerated
  • LightGBM - A fast, distributed, high performance gradient boosting. sklearn GPU accelerated
  • CatBoost - An open-source gradient boosting on decision trees library. sklearn GPU accelerated
  • ThunderGBM - Fast GBDTs and Random Forests on GPUs. sklearn GPU accelerated

Deep Learning

PyTorch

  • PyTorch - Tensors and Dynamic neural networks in Python with strong GPU acceleration. PyTorch based/compatible
  • torchvision - Datasets, Transforms and Models specific to Computer Vision. PyTorch based/compatible
  • torchtext - Data loaders and abstractions for text and NLP. PyTorch based/compatible
  • torchaudio - An audio library for PyTorch. PyTorch based/compatible
  • ignite - High-level library to help with training neural networks in PyTorch. PyTorch based/compatible
  • PyToune - A Keras-like framework and utilities for PyTorch.
  • skorch - A scikit-learn compatible neural network library that wraps pytorch. sklearn PyTorch based/compatible
  • PyTorchNet - An abstraction to train neural networks. PyTorch based/compatible
  • pytorch_geometric - Geometric Deep Learning Extension Library for PyTorch. PyTorch based/compatible
  • Catalyst - High-level utils for PyTorch DL & RL research. PyTorch based/compatible
  • pytorch_geometric_temporal - Temporal Extension Library for PyTorch Geometric. PyTorch based/compatible

TensorFlow

  • TensorFlow - Computation using data flow graphs for scalable machine learning by Google. sklearn
  • TensorLayer - Deep Learning and Reinforcement Learning Library for Researcher and Engineer. sklearn
  • TFLearn - Deep learning library featuring a higher-level API for TensorFlow. sklearn
  • Sonnet - TensorFlow-based neural network library. sklearn
  • tensorpack - A Neural Net Training Interface on TensorFlow. sklearn
  • Polyaxon - A platform that helps you build, manage and monitor deep learning models. sklearn
  • NeuPy - NeuPy is a Python library for Artificial Neural Networks and Deep Learning (previously: Theano compatible). sklearn
  • tfdeploy - Deploy tensorflow graphs for fast evaluation and export to tensorflow-less environments running numpy. sklearn
  • tensorflow-upstream - TensorFlow ROCm port. sklearn Possible to run on AMD GPU
  • TensorFlow Fold - Deep learning with dynamic computation graphs in TensorFlow. sklearn
  • tensorlm - Wrapper library for text generation / language models at char and word level with RNN. sklearn
  • TensorLight - A high-level framework for TensorFlow. sklearn
  • Mesh TensorFlow - Model Parallelism Made Easier. sklearn
  • Ludwig - A toolbox, that allows to train and test deep learning models without the need to write code. sklearn
  • Keras - A high-level neural networks API running on top of TensorFlow. Keras compatible
  • keras-contrib - Keras community contributions. Keras compatible
  • Hyperas - Keras + Hyperopt: A very simple wrapper for convenient hyperparameter. Keras compatible
  • Elephas - Distributed Deep learning with Keras & Spark. Keras compatible
  • Hera - Train/evaluate a Keras model, get metrics streamed to a dashboard in your browser. Keras compatible
  • Spektral - Deep learning on graphs. Keras compatible
  • qkeras - A quantization deep learning library. Keras compatible

MXNet

  • MXNet - Lightweight, Portable, Flexible Distributed/Mobile Deep Learning with Dynamic, Mutation-aware Dataflow Dep Scheduler. MXNet based
  • Gluon - A clear, concise, simple yet powerful and efficient API for deep learning (now included in MXNet). MXNet based
  • MXbox - Simple, efficient and flexible vision toolbox for mxnet framework. MXNet based
  • gluon-cv - Provides implementations of the state-of-the-art deep learning models in computer vision. MXNet based
  • gluon-nlp - NLP made easy. MXNet based
  • Xfer - Transfer Learning library for Deep Neural Networks. MXNet based
  • MXNet - HIP Port of MXNet. MXNet based Possible to run on AMD GPU

Others

  • Tangent - Source-to-Source Debuggable Derivatives in Pure Python.
  • autograd - Efficiently computes derivatives of numpy code.
  • Myia - Deep Learning framework (pre-alpha).
  • nnabla - Neural Network Libraries by Sony.
  • Caffe - A fast open framework for deep learning.
  • hipCaffe - The HIP port of Caffe. Possible to run on AMD GPU

DISCONTINUED PROJECTS

Web Scraping

  • BeautifulSoup: The easiest library to scrape static websites for beginners
  • Scrapy: Fast and extensible scraping library. Can write rules and create customized scraper without touching the coure
  • Selenium: Use Selenium Python API to access all functionalities of Selenium WebDriver in an intuitive way like a real user.
  • Pattern: High level scraping for well-establish websites such as Google, Twitter, and Wikipedia. Also has NLP, machine learning algorithms, and visualization
  • twitterscraper: Efficient library to scrape twitter

Data Manipulation

Data Containers

  • pandas - Powerful Python data analysis toolkit.
  • pandas_profiling - Create HTML profiling reports from pandas DataFrame objects
  • cuDF - GPU DataFrame Library. pandas compatible GPU accelerated
  • blaze - NumPy and pandas interface to Big Data. pandas compatible
  • pandasql - Allows you to query pandas DataFrames using SQL syntax. pandas compatible
  • pandas-gbq - pandas Google Big Query. pandas compatible
  • xpandas - Universal 1d/2d data containers with Transformers .functionality for data analysis by The Alan Turing Institute.
  • pysparkling - A pure Python implementation of Apache Spark's RDD and DStream interfaces. Apache Spark based
  • Arctic - High performance datastore for time series and tick data.
  • datatable - Data.table for Python. R inspired/ported lib
  • koalas - pandas API on Apache Spark. pandas compatible
  • modin - Speed up your pandas workflows by changing a single line of code. pandas compatible
  • swifter - A package which efficiently applies any function to a pandas dataframe or series in the fastest available manner.
  • pandas_flavor - A package which allow to write your own flavor of Pandas easily.
  • pandas-log - A package which allow to provide feedback about basic pandas operations and find both buisness logic and performance issues.
  • vaex - Out-of-Core DataFrames for Python, ML, visualize and explore big tabular data at a billion rows per second.

Pipelines

  • pdpipe - Sasy pipelines for pandas DataFrames.
  • SSPipe - Python pipe (|) operator with support for DataFrames and Numpy and Pytorch.
  • pandas-ply - Functional data manipulation for pandas. pandas compatible
  • Dplython - Dplyr for Python. R inspired/ported lib
  • sklearn-pandas - pandas integration with sklearn. sklearn pandas compatible
  • Dataset - Helps you conveniently work with random or sequential batches of your data and define data processing.
  • pyjanitor - Clean APIs for data cleaning. pandas compatible
  • meza - A Python toolkit for processing tabular data.
  • Prodmodel - Build system for data science pipelines.
  • dopanda - Hints and tips for using pandas in an analysis environment. pandas compatible
  • CircleCi: Automates your software builds, tests, and deployments.

Feature Engineering

General

  • Featuretools - Automated feature engineering.
  • skl-groups - A scikit-learn addon to operate on set/"group"-based features. sklearn
  • Feature Forge - A set of tools for creating and testing machine learning feature. sklearn
  • few - A feature engineering wrapper for sklearn. sklearn
  • scikit-mdr - A sklearn-compatible Python implementation of Multifactor Dimensionality Reduction (MDR) for feature construction. sklearn
  • tsfresh - Automatic extraction of relevant features from time series. sklearn

Feature Selection

  • scikit-feature - Feature selection repository in python.
  • boruta_py - Implementations of the Boruta all-relevant feature selection method. sklearn
  • BoostARoota - A fast xgboost feature selection algorithm. sklearn
  • scikit-rebate - A scikit-learn-compatible Python implementation of ReBATE, a suite of Relief-based feature selection algorithms for Machine Learning. sklearn

Visualization

General Purposes

  • Matplotlib - Plotting with Python.
  • seaborn - Statistical data visualization using matplotlib.
  • prettyplotlib - Painlessly create beautiful matplotlib plots.
  • python-ternary - Ternary plotting library for python with matplotlib.
  • missingno - Missing data visualization module for Python.
  • chartify - Python library that makes it easy for data scientists to create charts.
  • physt - Improved histograms.

Interactive plots

  • animatplot - A python package for animating plots build on matplotlib.
  • plotly - A Python library that makes interactive and publication-quality graphs.
  • Bokeh - Interactive Web Plotting for Python.
  • Altair - Declarative statistical visualization library for Python. Can easily do many data transformation within the code to create graph
  • bqplot - Plotting library for IPython/Jupyter notebooks
  • pyecharts - Migrated from Echarts, a charting and visualization library, to Python's interactive visual drawing library.pyecharts echarts

Map

  • folium - Makes it easy to visualize data on an interactive open street map
  • geemap - Python package for interactive mapping with Google Earth Engine (GEE)

Automatic Plotting

  • HoloViews - Stop plotting your data - annotate your data and let it visualize itself.
  • AutoViz: Visualize data automatically with 1 line of code (ideal for machine learning)
  • SweetViz: Visualize and compare datasets, target values and associations, with one line of code.

NLP

  • pyLDAvis: Visualize interactive topic model

Deployment

  • datapane - A collection of APIs to turn scripts and notebooks into interactive reports.
  • binder - Enable sharing and execute Jupyter Notebooks
  • fastapi - Modern, fast (high-performance), web framework for building APIs with Python
  • streamlit - Make it easy to deploy machine learning model

Model Explanation

  • Shapley - A data-driven framework to quantify the value of classifiers in a machine learning ensemble.
  • Alibi - Algorithms for monitoring and explaining machine learning models.
  • anchor - Code for "High-Precision Model-Agnostic Explanations" paper.
  • aequitas - Bias and Fairness Audit Toolkit.
  • Contrastive Explanation - Contrastive Explanation (Foil Trees). sklearn
  • yellowbrick - Visual analysis and diagnostic tools to facilitate machine learning model selection. sklearn
  • scikit-plot - An intuitive library to add plotting functionality to scikit-learn objects. sklearn
  • shap - A unified approach to explain the output of any machine learning model. sklearn
  • ELI5 - A library for debugging/inspecting machine learning classifiers and explaining their predictions.
  • Lime - Explaining the predictions of any machine learning classifier. sklearn
  • FairML - FairML is a python toolbox auditing the machine learning models for bias. sklearn
  • L2X - Code for replicating the experiments in the paper Learning to Explain: An Information-Theoretic Perspective on Model Interpretation.
  • PDPbox - Partial dependence plot toolbox.
  • pyBreakDown - Python implementation of R package breakDown. sklearnR inspired/ported lib
  • PyCEbox - Python Individual Conditional Expectation Plot Toolbox.
  • Skater - Python Library for Model Interpretation.
  • model-analysis - Model analysis tools for TensorFlow. sklearn
  • themis-ml - A library that implements fairness-aware machine learning algorithms. sklearn
  • treeinterpreter - Interpreting scikit-learn's decision tree and random forest predictions. sklearn
  • AI Explainability 360 - Interpretability and explainability of data and machine learning models.
  • Auralisation - Auralisation of learned features in CNN (for audio).
  • CapsNet-Visualization - A visualization of the CapsNet layers to better understand how it works.
  • lucid - A collection of infrastructure and tools for research in neural network interpretability.
  • Netron - Visualizer for deep learning and machine learning models (no Python code, but visualizes models from most Python Deep Learning frameworks).
  • FlashLight - Visualization Tool for your NeuralNetwork.
  • tensorboard-pytorch - Tensorboard for pytorch (and chainer, mxnet, numpy, ...).
  • mxboard - Logging MXNet data for visualization in TensorBoard. MXNet based

Reinforcement Learning

  • OpenAI Gym - A toolkit for developing and comparing reinforcement learning algorithms.
  • Coach - Easy experimentation with state of the art Reinforcement Learning algorithms.
  • garage - A toolkit for reproducible reinforcement learning research.
  • OpenAI Baselines - High-quality implementations of reinforcement learning algorithms.
  • Stable Baselines - A set of improved implementations of reinforcement learning algorithms based on OpenAI Baselines.
  • RLlib - Scalable Reinforcement Learning.
  • Horizon - A platform for Applied Reinforcement Learning.
  • TF-Agents - A library for Reinforcement Learning in TensorFlow. sklearn
  • TensorForce - A TensorFlow library for applied reinforcement learning. sklearn
  • TRFL - TensorFlow Reinforcement Learning. sklearn
  • Dopamine - A research framework for fast prototyping of reinforcement learning algorithms.
  • keras-rl - Deep Reinforcement Learning for Keras. Keras compatible
  • ChainerRL - A deep reinforcement learning library built on top of Chainer.

Probabilistic Methods

  • pomegranate - Probabilistic and graphical models for Python. GPU accelerated
  • pyro - A flexible, scalable deep probabilistic programming library built on PyTorch. PyTorch based/compatible
  • ZhuSuan - Bayesian Deep Learning. sklearn
  • PyMC - Bayesian Stochastic Modelling in Python.
  • PyMC3 - Python package for Bayesian statistical modeling and Probabilistic Machine Learning. Theano compatible
  • sampled - Decorator for reusable models in PyMC3.
  • Edward - A library for probabilistic modeling, inference, and criticism. sklearn
  • InferPy - Deep Probabilistic Modelling Made Easy. sklearn
  • GPflow - Gaussian processes in TensorFlow. sklearn
  • PyStan - Bayesian inference using the No-U-Turn sampler (Python interface).
  • sklearn-bayes - Python package for Bayesian Machine Learning with scikit-learn API. sklearn
  • skggm - Estimation of general graphical models. sklearn
  • pgmpy - A python library for working with Probabilistic Graphical Models.
  • skpro - Supervised domain-agnostic prediction framework for probabilistic modelling by The Alan Turing Institute. sklearn
  • Aboleth - A bare-bones TensorFlow framework for Bayesian deep learning and Gaussian process approximation. sklearn
  • PtStat - Probabilistic Programming and Statistical Inference in PyTorch. PyTorch based/compatible
  • PyVarInf - Bayesian Deep Learning methods with Variational Inference for PyTorch. PyTorch based/compatible
  • emcee - The Python ensemble sampling toolkit for affine-invariant MCMC.
  • hsmmlearn - A library for hidden semi-Markov models with explicit durations.
  • pyhsmm - Bayesian inference in HSMMs and HMMs.
  • GPyTorch - A highly efficient and modular implementation of Gaussian Processes in PyTorch. PyTorch based/compatible
  • MXFusion - Modular Probabilistic Programming on MXNet. MXNet based
  • sklearn-crfsuite - A scikit-learn inspired API for CRFsuite. sklearn

Genetic Programming

  • gplearn - Genetic Programming in Python. sklearn
  • DEAP - Distributed Evolutionary Algorithms in Python.
  • karoo_gp - A Genetic Programming platform for Python with GPU support. sklearn
  • monkeys - A strongly-typed genetic programming framework for Python.
  • sklearn-genetic - Genetic feature selection module for scikit-learn. sklearn

Optimization

  • Spearmint - Bayesian optimization.
  • BoTorch - Bayesian optimization in PyTorch. PyTorch based/compatible
  • scikit-opt - Heuristic Algorithms for optimization.
  • SMAC3 - Sequential Model-based Algorithm Configuration.
  • Optunity - Is a library containing various optimizers for hyperparameter tuning.
  • hyperopt - Distributed Asynchronous Hyperparameter Optimization in Python.
  • hyperopt-sklearn - Hyper-parameter optimization for sklearn. sklearn
  • sklearn-deap - Use evolutionary algorithms instead of gridsearch in scikit-learn. sklearn
  • sigopt_sklearn - SigOpt wrappers for scikit-learn methods. sklearn
  • Bayesian Optimization - A Python implementation of global optimization with gaussian processes.
  • SafeOpt - Safe Bayesian Optimization.
  • scikit-optimize - Sequential model-based optimization with a scipy.optimize interface.
  • Solid - A comprehensive gradient-free optimization framework written in Python.
  • PySwarms - A research toolkit for particle swarm optimization in Python.
  • Platypus - A Free and Open Source Python Library for Multiobjective Optimization.
  • GPflowOpt - Bayesian Optimization using GPflow. sklearn
  • POT - Python Optimal Transport library.
  • Talos - Hyperparameter Optimization for Keras Models.
  • nlopt - Library for nonlinear optimization (global and local, constrained or unconstrained).

Time Series

  • sktime - A unified framework for machine learning with time series. sklearn
  • tslearn - Machine learning toolkit dedicated to time-series data. sklearn
  • tick - Module for statistical learning, with a particular emphasis on time-dependent modelling. sklearn
  • Prophet - Automatic Forecasting Procedure.
  • PyFlux - Open source time series library for Python.
  • bayesloop - Probabilistic programming framework that facilitates objective model selection for time-varying parameter models.
  • luminol - Anomaly Detection and Correlation library.
  • dateutil - Powerful extensions to the standard datetime module
  • maya - makes it very easy to parse a string and for changing timezones

Natural Language Processing

  • NLTK - Modules, data sets, and tutorials supporting research and development in Natural Language Processing.
  • CLTK - The Classical Language Toolkik.
  • gensim - Topic Modelling for Humans.
  • PSI-Toolkit - A natural language processing toolkit.
  • pyMorfologik - Python binding for Morfologik.
  • skift - Scikit-learn wrappers for Python fastText. sklearn
  • Phonemizer - Simple text to phonemes converter for multiple languages.
  • flair - Very simple framework for state-of-the-art NLP.
  • spaCy - Industrial-Strength Natural Language Processing.

Computer Audition

  • librosa - Python library for audio and music analysis.
  • Yaafe - Audio features extraction.
  • aubio - A library for audio and music analysis.
  • Essentia - Library for audio and music analysis, description and synthesis.
  • LibXtract - A simple, portable, lightweight library of audio feature extraction functions.
  • Marsyas - Music Analysis, Retrieval and Synthesis for Audio Signals.
  • muda - A library for augmenting annotated audio data.
  • madmom - Python audio and music signal processing library.

Computer Vision

  • OpenCV - Open Source Computer Vision Library.
  • scikit-image - Image Processing SciKit (Toolbox for SciPy).
  • imgaug - Image augmentation for machine learning experiments.
  • imgaug_extension - Additional augmentations for imgaug.
  • Augmentor - Image augmentation library in Python for machine learning.
  • albumentations - Fast image augmentation library and easy to use wrapper around other libraries.

Statistics

  • pandas_summary - Extension to pandas dataframes describe function. pandas compatible
  • Pandas Profiling - Create HTML profiling reports from pandas DataFrame objects. pandas compatible
  • statsmodels - Statistical modeling and econometrics in Python.
  • stockstats - Supply a wrapper StockDataFrame based on the pandas.DataFrame with inline stock statistics/indicators support.
  • weightedcalcs - A pandas-based utility to calculate weighted means, medians, distributions, standard deviations, and more.
  • scikit-posthocs - Pairwise Multiple Comparisons Post-hoc Tests.
  • Alphalens - Performance analysis of predictive (alpha) stock factors.

Distributed Computing

  • Horovod - Distributed training framework for TensorFlow, Keras, PyTorch, and Apache MXNet. sklearn
  • PySpark - Exposes the Spark programming model to Python. Apache Spark based
  • Veles - Distributed machine learning platform.
  • Jubatus - Framework and Library for Distributed Online Machine Learning.
  • DMTK - Microsoft Distributed Machine Learning Toolkit.
  • PaddlePaddle - PArallel Distributed Deep LEarning.
  • dask-ml - Distributed and parallel machine learning. sklearn
  • Distributed - Distributed computation in Python.

Experimentation

  • Sacred - A tool to help you configure, organize, log and reproduce experiments.
  • Xcessiv - A web-based application for quick, scalable, and automated hyperparameter tuning and stacked ensembling.
  • Persimmon - A visual dataflow programming language for sklearn.
  • Ax - Adaptive Experimentation Platform. sklearn
  • Neptune - A lightweight ML experiment tracking, results visualization and management tool.

Evaluation

  • recmetrics - Library of useful metrics and plots for evaluating recommender systems.
  • Metrics - Machine learning evaluation metric.
  • sklearn-evaluation - Model evaluation made easy: plots, tables and markdown reports. sklearn
  • AI Fairness 360 - Fairness metrics for datasets and ML models, explanations and algorithms to mitigate bias in datasets and models.

Computations

  • numpy - The fundamental package needed for scientific computing with Python.
  • Dask - Parallel computing with task scheduling. pandas compatible
  • bottleneck - Fast NumPy array functions written in C.
  • CuPy - NumPy-like API accelerated with CUDA.
  • scikit-tensor - Python library for multilinear algebra and tensor factorizations.
  • numdifftools - Solve automatic numerical differentiation problems in one or more variables.
  • quaternion - Add built-in support for quaternions to numpy.
  • adaptive - Tools for adaptive and parallel samping of mathematical functions.

Spatial Analysis

  • GeoPandas - Python tools for geographic data. pandas compatible
  • PySal - Python Spatial Analysis Library.

Quantum Computing

  • PennyLane - Quantum machine learning, automatic differentiation, and optimization of hybrid quantum-classical computations.
  • QML - A Python Toolkit for Quantum Machine Learning.

Conversion

  • sklearn-porter - Transpile trained scikit-learn estimators to C, Java, JavaScript and others.
  • ONNX - Open Neural Network Exchange.
  • MMdnn - A set of tools to help users inter-operate among different deep learning frameworks.

Contributing

Contributions are welcome! :sunglasses: Read the contribution guideline.

License

This work is licensed under the Creative Commons Attribution 4.0 International License - CC BY 4.0

Deprecated Libsย ย ย  Waiting Roomย ย ย 

Awesome Python Typing Awesome Gitter

Collection of awesome Python types, stubs, plugins, and tools to work with them.

Contents

Full list of typed projects on PyPi is here.

Static type checkers

  • mypy - Optional static typing (PEP 484).
  • pyanalyze - Extensible static analyzer and type checker.
  • pycharm - IDE for Professional Developers.
  • pyre - Performant type-checker.
  • pyright - Fast type checker meant for large Python source bases. It can run in a โ€œwatchโ€ mode and performs fast incremental updates when files are modified.
  • pytype - Tool to check and infer types - without requiring type annotations.

Dynamic type checkers

  • beartype - Unbearably fast O(1) runtime type-checking in pure Python.
  • pydantic - Data parsing using Python type hinting. Supports dataclasses.
  • pytypes - Provides a rich set of utilities for runtime typechecking.
  • strongtyping - Decorator which checks whether the function is called with the correct type of parameters.
  • typedpy - Type-safe, strict Python. Works well with standard Python.
  • typeguard - Another one runtime type checker.
  • typical - Data parsing and automatic type-coercion using type hinting. Supports dataclasses, standard classes, function signatures, and more.
  • trycast - Parse JSON-like values whose shape is defined by typed dictionaries (TypedDicts) and other standard Python type hints.

Stub packages

Additional types

  • meiga - Simple, typed and monad-based Result type.
  • option - Rust like Option and Result types.
  • phantom-types - Phantom types.
  • returns - Make your functions return something meaningful, typed, and safe.
  • safetywrap - Fully typesafe, Rust-like Result and Option types.
  • typet - Length-bounded types, dynamic object validation.

Backports and improvements

  • typed-ast - Modified fork of CPython's ast module that parses # type: comments.
  • typing-extensions - Backported and experimental type hints.
  • typing-utils - Backport 3.8+ runtime typing utils(for eg: get_origin) & add issubtype & more.
  • typingplus - Backport support, dynamic is_instance and cast for abstract types.

Tools

Linters

Testing

Working with types

  • com2ann - Tool for translation of type comments to type annotations.
  • merge-pyi - Part of pytype toolchain, applies stub files onto source code.
  • mypy-protobuf - Tool to generate mypy stubs from protobufs.
  • mypy-silent - Silence mypy by adding or removing code comments.
  • mypyc - Compiles mypy-annotated, statically typed Python modules into CPython C extensions.
  • retype - Another tool to apply stubs to code.
  • pep585-upgrade - Pre-commit hook configured to automatically upgrade your type hints to the new native types implemented in PEP 585.
  • typeforce - CLI tool that enriches your Python environment with type annotations, empowering mypy.
  • typing-inspect - The typing_inspect module defines experimental API for runtime inspection of types defined in the typing module.
  • typing-json - Lib for working with typed objects and JSON.
  • typesplainer - A Python type explainer.

Helper tools to add annotations to existing code

  • autotyping - Automatically add simple return type annotations for functions (bool, None, Optional).
  • monkeytype - Collects runtime types of function arguments and return values, and can automatically generate stub files or even add draft type annotations directly to your code based on the types collected at runtime.
  • pyannotate - Insert annotations into your source code based on call arguments and return types observed at runtime.
  • pyre infer - Pyre has a powerful feature for migrating codebases to a typed format. The infer command-line option ingests a file or directory, makes educated guesses about the types used, and applies the annotations to the files.
  • pytest-annotate - Pyannotate plugin for pytest.
  • pytest-monkeytype - MonkeyType plugin for pytest.
  • pytype annotate-ast - A work-in-progress tool to annotate the nodes of an AST with their Python types.
  • type4py - Deep Similarity Learning-Based Type Inference.
  • typilus - A deep learning algorithm for predicting types in Python. Also available as a GitHub action
  • auto-optional - Makes typed arguments Optional when the default argument is None.

Mypy plugins

Integrations

Articles

PEPs

  • PEP-3107 - Function Annotations.
  • PEP-482 - Literature Overview for Type Hints.
  • PEP-483 - The Theory of Type Hints.
  • PEP-484 - Type Hints.
  • PEP-526 - Syntax for Variable Annotations.
  • PEP-544 - Protocols: Structural subtyping (static duck typing).
  • PEP-557 - Data Classes.
  • PEP-560 - Core support for typing module and generic types.
  • PEP-561 - Distributing and Packaging Type Information.
  • PEP-563 - Postponed Evaluation of Annotations.
  • PEP-585 - Type Hinting Generics In Standard Collections.
  • PEP-586 - Literal Types.
  • PEP-589 - TypedDict: Type Hints for Dictionaries with a Fixed Set of Keys.
  • PEP-591 - Adding a final qualifier to typing.
  • PEP-593 - Flexible function and variable annotations.
  • PEP-604 - Complementary syntax for Union[].
  • PEP-612 - Parameter Specification Variables.
  • PEP-613 - Explicit Type Aliases.

Third-party articles

Communities

  • awesome-python - Curated list of awesome Python frameworks, libraries, software and resources.
  • python-typecheckers - List of Python type checkers: static and runtime.

Awesome


A curated list of awesome MicroPython libraries, frameworks, software and resources.

MicroPython is a lean and efficient implementation of the Python 3 programming language that includes a small subset of the Python standard library and is optimised to run on microcontrollers and in constrained environments.

Contents

Libraries

Other places you can look for MicroPython Libraries:

  • PyPi - This filter shows just the MicroPython libraries on PyPi. Note: You cannot pip install micropython libraries. See MicroPython docs for more information on upip.
  • GitHub Search - Search GitHub for repositories containing MicroPython.
  • GitHub Topic - MicroPython - Browse GitHub Topics for projects tagged with MicroPython.
  • Libraries.io - Libraries.io query for MicroPython.
  • GitLab Explore - Explore repositories on GitLab.

AI

  • MicroMLP - A micro neural network multilayer perceptron for MicroPython (used on ESP32 and Pycom modules).

Analytics

  • uMath - Computer Algebra for microcontrollers.
  • micropython-ulab - A numpy-like fast vector module for MicroPython.
  • micropython-fourier - Fast Fourier transform in MicroPython's inline ARM assembler.
  • Filters FIR filters using ARM Thumb assembler. Using an online utility you can go from a graph of required frequency response to a filter implementation.
  • ulinalg - Small size matrix handling module with a few linear algebra operations specifically for MicroPython (Python3).
  • micropython-mtx - Fast Matrix Multiplication and Linear Solver on MicroPython.
  • micropython-vec - Vector Operations on MicroPython.
  • MicroPython_Statistics - Statistics module for MicroPython.

Audio

Communications

APIs

Authentication

Bluetooth

  • PyBoard-HC05-Android - Pyboard HC05 Bluetooth adaptor example application.
  • uble - Lightweight Bluetooth Low Energy driver written in pure Python for MicroPython.
  • MicroPythonBLEHID - Human Interface Device (HID) over Bluetooth Low Energy (BLE) GATT library for MicroPython.
  • upyble - Command line tool for Bluetooth Low Energy MicroPython devices.
  • micropython-xiaomi-ble-adv-parse - Passively retrieve sensor data from some Xiaomi Bluetooth Low Energy (BLE) sensors.
  • mijia-temphum-upy - MicroPython library to read certain Xiaomi Mijia BLE temperature & humidity sensors.

CAN

Compression

  • ufastlz - MicroPython wrapper for FastLZ, a lightning-fast lossless compression library.

Cryptography

  • mpyaes - MicroPython module for AES encryption.
  • micropython-aes - AES algorithm with pure python implementation.
  • ucrypto - MicroPython package for doing fast elliptic curve cryptography, specifically digital signatures. API design inspired from fastecdsa and implementation based on tomsfastmath.
  • ucryptoauthlib - Lightweight driver for Microchip Crypto Authentication secure elements written in pure python for MicroPython.
  • embit - A minimal bitcoin library for MicroPython and Python3 with a focus on embedded systems.
  • microotp - A ESP8266 MicroPython OTP Generator.
  • micropython-rsa-signing - RSA signing on MicroPython.
  • micropython-cryptomsg - A MicroPython module to encrypt and decrypt messages with AES CBC mode.

DNS

  • ICantBelieveItsNotDNS - "I Can't Believe It's Not DNS!" (ICBIND) is an authoritative DNS server for the ESP8266 written in MicroPython.
  • MicroDNSSrv - A micro DNS server for MicroPython to simply respond to A queries on multi-domains with or without wildcards (used on Pycom modules & ESP32).
  • tinydns - Very simple DNS async server for MicroPython.
  • micropython-captiveportal - Minimal async captive portal for MicroPython (compatible with uasyncio v3/MicroPython 1.13+ as well as earlier versions).
  • Micropython-DNSServer-Captive-Portal - MicroPython WiFi AP Captive Portal with DNS and Web Server.

Ethernet

FTP

GPS

GSM

IoT

  • microhomie - MicroPython implementation of the Homie MQTT convention for IoT.
  • uPyEcho - Emulated Belkin WeMo device that works with Amazon Echo (Alexa) using MicroPython on an ESP32.
  • SonosRemote - A remote for Sonos installations running on an ESP8266 and using Sonos HTTP API.
  • micropython-home-assistant - MicroPython based scripts to extend you home assistant driven home automation projects.
  • micropython-iot - An approach to designing IOT applications using ESP8266, ESP32 or Pyboard D endpoints.
  • iot-core-micropython - Use MicroPython to connect to Google Cloud IoT Core.
  • SmartUPy - Controlling "Tuya-type" smart power outlets using MicroPython.
  • aws-iot-GET-POST-loop - MicroPython code which uses the AWS-IOT REST API to GET/POST device state info.
  • sensor-mqtt-homeassistant - An esp8266/32 MicroPython based sensor platform for gpio, dht, analog, led and more. Includes remote updates for .py code from web server and MQTT/Homeassistant integration.

IR

LoRaWAN

MDNS

  • micropython-mdns - A pure python implementation of MDNS with support for Service Discovery.

Modbus

  • micropython-modbus - MicroPython port of modbus-tk.
  • micropython-modbus - Modbus Master library for MicroPython ESP32 devices. Based on pycom-modbus from pycom.
  • mp_modbus - Modbus Lib for MicroPython.
  • micropython-modbus - ModBus TCP and RTU library supporting client and host mode. Based on pycom-modbus from pycom.

MQTT

  • micropython-mqtt - A 'resilient' asynchronous MQTT driver. Plus a means of using an ESP8266 to bring MQTT to non-networked targets.
  • MQBoard - A micro-framework for using MQTT with asyncio on MicroPython boards, primarily on the ESP32.
  • pysmartnode - MicroPython Smarthome framework.
  • umqtt_aws_iot - Publish UMQTT messages with MicroPython to AWS IoT.
  • sonoff-mqtt by davea - MicroPython scripts to control Sonoff/ESP8266 using MQTT.
  • micropython-sonoff-switch - Implements a MQTT controllable switch for the iTead Sonoff Switch using MicroPython.
  • micropython-thingspeak-mqtt-esp8266 - Publish and Subscribe to Thingspeak using MQTT with MicroPython running on ESP8266/ESP32 platforms.
  • uMQTT - MQTT publish for MicroPython on the WiPy board.
  • micropython-mqtt - Async MQTT library with auto reconnect for MicroPython devices such as the ESP32 or Pycom devices.
  • micropython-adafruit-mqtt-esp8266 - Using MQTT to Publish/Subscribe to adafruit io. MicroPython/CircuitPython implementation on ESP8266/ESP32.
  • MicropythonCayenneMQTTClient - A port of the Python Cayenne MQTT Client to MicroPython.
  • mqtt_upython - MQTT Client using MicroPython on ESP8266.

NFC

  • micropython-nfc - Using NFC with MicroPython.
  • NFC_PN532_SPI - Partial Port of Adafruit CircuitPython to MicroPython of PN532 NFC/RFID control library (SPI).

NTP

OneWire

  • Official OneWire - For devices using the OneWire bus, eg Dallas ds18x20.
  • Onewire_DS18X20 - Classes for driving the DS18x20 sensor with the onewire protocol for Pycom MicroPython.

Onkyo EISCP

  • eiscp-micropython - MicroPython port for the Onkyo-EISCP protocol used, among others, by Pioneer.

OTA

Radio

REPL

  • webrepl - MicroPython WebREPL.
  • zepl - MicroPython WebREPL Console Application using ZeroMQ.
  • jupyter_micropython_remote - Jupyter kernel to directly execute code on a MicroPython board over the serial/web REPL.
  • FBConsole - Frame buffer console class for MicroPython.

RFID

RTC

Serial

  • mpy-miniterm - Tool for seamless serial debug and file synchronisation with MicroPython devices via the serial REPL.
  • MicroPython-MorseCode - International Morse Code using a micro-controller with MicroPython.
  • I2C Slave - Uses the Pyboard's I2C slave mode to implement a full duplex asynchronous link. Principal use case is for ESP8266 which has only one UART.

Serialization

  • micropython-msgpack - MessagePack serialisation library optimised for MicroPython.
  • micropython-uprotobuf - A lightweight implementation of Google's Protocol Buffers (protobuf) for MicroPython.
  • minipb - Mini Protobuf {de}serializer in pure Python.

SOCKS

SMTP

  • uMail - A lightweight, scalable SMTP client for sending email in MicroPython.

TCP

  • us2n - MicroPython bridge between UART and TCP for the ESP32.

Telnet

  • MicroTelnetServer - Simple telnet server for MicroPython and the ESP8266 allowing telnet clients access to the REPL.

VoIP

  • uPyVoip - Voip for MicroPython ESP32 with Interactive Voice Response.

WiFi

Web

  • MicroWebSrv - A micro HTTP Web server that supports WebSockets, html/python language templating and routing handlers, for MicroPython (used on Pycom modules & ESP32).
  • MicroWebSrv2 - The last Micro Web Server for IoTs (MicroPython) or large servers (CPython), that supports WebSockets, routes, template engine and with really optimized architecture (mem allocations, async I/Os).
  • tinyweb - Simple and lightweight HTTP async server for MicroPython.
  • upy-websocket-server - MicroPython (ESP8266) websocket server implementation.
  • micropython-captive-portal - A captive portal demo for MicroPython.
  • uPyPortal - A captive portal for MicroPython using ESP32 (WeMos).
  • ESP8266WebServer - ESP8266 web server for MicroPython.
  • microCoAPy - A mini client/server implementation of CoAP (Constrained Application Protocol) into MicroPython.
  • micropyserver - MicroPyServer is a simple HTTP server for MicroPython projects.
  • MicroRESTCli - A micro JSON REST Web client based on MicroWebCli for MicroPython (used on Pycom modules & ESP32).
  • micropython-noggin - A very simple web server for MicroPython.
  • uwebsockets - MicroPython websockets implementation for ESP8266.
  • microdot - The impossibly small web framework for MicroPython.
  • micropython-nanoweb - Full async MicroPython web server with small memory footprint.
  • MicroWebCli - A micro HTTP Web client for MicroPython (used on Pycom modules & ESP32).
  • micropython-configserver - Captive portal for MicroPython including a dumb DNS server and a webserver to configure wifi networks.
  • micropython-aioweb - A minimalist asyncio web framework for MicroPython.

Zigbee

  • ZbPy - MicroPython IEEE802.15.4 / Zigbee parser.

Display

E-Paper

Fonts

  • micropython-font-to-py - A Python 3 utility to convert fonts to Python source capable of being frozen as bytecode.
  • writer A simple way to render above Python fonts to displays whose driver is subclassed from framebuf.
  • ssd1306big - A font for MicroPython on 128x64 pixel ssd1306 oled display.

Graphics

GUI

  • lvgl - An object oriented component based high-level GUI library with MicroPython binding.
  • micropython-lcd160cr-gui - Simple touch driven event based GUI for the Pyboard and LCD160CR colour display.
  • micropython_ra8875 - MicroPython device driver and nano-GUI for RA8875 based displays.
  • micropython-nano-gui - A tiny display-only GUI with a limited set of GUI objects (widgets) for displays whose display driver is subclassed from the framebuf class. With drivers for TFT, ePaper and OLED displays.
  • micro-gui Derived from nano-gui and supporting the same displays and hosts, this provides for user input via pushbuttons or a navigation joystick and an optional rotary encoder.
  • TFT-GUI A fast touch GUI for large displays based on SSD1963 controller with XPT2046 touch controller.

LCD Character

LCD Graphic

LCD TFT

LED Matrix

LED Segment

LEDs

OLED

Printer

IO

ADC

  • ads1x15 - Driver for the ADS1015/ADS1115 ADC, I2C interface.
  • micropython-ads1015 - ADS1015 12-Bit and ADS1115 16-bit ADC, 4 channels with programmable gain, I2C interface.
  • Micropython_ADS1115 - ADS1115 16-bit ADC, 4 channels with programmable gain, I2C interface.
  • ADS7818 - Python class interfacing the ADS7818 AD-converter.
  • micropython-ads1219 - MicroPython module for the Texas Instruments ADS1219 ADC.
  • micropython-hx711 - MicroPython driver for HX711 24-Bit Analog-to-Digital Converter.
  • MicroPython-ADC_Cal - ESP32 ADC driver using reference voltage calibration value from efuse.

DAC

GPIO

  • micropython-inputs - Classes to count pulses, debounce digital inputs, and calculate moving averages of analog inputs for a MicroPython board.
  • ubutton - A MicroPython library for controlling reading and debouncing pushbutton inputs, including "short" and "long" press callbacks.
  • micropython-debounce-switch - MicroPython Class for Debouncing Switches.

IO-Expander

Joystick

Keyboard

Potentiometers

  • micropython-ad840x - MicroPython SPI-based manipulation of the AD series digital potentiometers AD8400, AD8402 and AD8403.
  • mcp4131 - MicroPython module to control MicroChip's MCP4131 SPI digital potentiometer.

Power Management

PWM

  • upwmcontroller - A MicroPython library for controlling PWM outputs in an asyncio loop, with features including fading and blinking.

Rotary Encoder

Shift Registers

  • micropython-74hc595 - MicroPython driver for 74HC595 8-bit shift registers.
  • MicroPython-SN74HCS264 - MicroPython Driver for SN74HCS264 8-Bit Parallel-Out Serial Shift Registers With Schmitt-Trigger Inputs and Inverted Outputs.

Waveform Generator

Motion

DC Motor

  • L298N - Driver for the L298N dual h-bridge motor controller.
  • MicroPython-L298 - Drive L298 dual H-bridge with MicroPython.

Servo

Stepper

Sensors

Accelerometer Digital

Air Quality

Barometer

  • micropython-bme280 - Driver for the Bosch BME280 temperature/pressure/humidity sensor.
  • micropython-bmp180 - Driver for Bosch BMP180 temperature, pressure and altitude sensor.
  • mpy_bme280_esp8266 - Bosch BME280 temperature/pressure/humidity sensor.
  • BME280 - MicroPython driver for the BME280 sensor, target platform Pycom devices.
  • micropython-bmp280 - Module for the BMP280 sensor.
  • micropython_bme280_i2c - A MicroPython module for communicating with the Bosch BME280 temperature, humidity, and pressure sensor.
  • MicroPython-BME280 - Driver to digital sensor of Temperature, Pressure and Humidity.
  • micropython-bmp180 - A module for MicroPython which provides a class for the BMP180 pressure sensor.

Battery

Biometric

Camera

Colour

Compass

Current

Distance IR

Distance Laser

Distance Ultrasonic

Dust

  • pyGP2Y - MicroPython library for the Sharp GP2Y1014AU0F Dust Sensor.

Energy

  • ATM90E26_Micropython - Driver for ATM90E26 energy metering device.
  • MCP39F521 - ESP8266 scripts for reading MCP39F521 power monitors.
  • micropython-p1meter - A ESP32 sensor to read an p1 electricity meter and publish this to MQTT and HomeAssistant, written in MicroPython.
  • esp32-solar2 - Simple solar regulator - MicroPython project.

Gaseous

Light

Motion Inertial

Pressure

Proximity

  • uPy_APDS9960 - MicroPython proximity library for esp8266 using APDS9960.

Radiation

Soil Moisture

  • micropython-chirp - Driver for the Chirp Soil Moisture Sensor.
  • MicroPython-MiFlora - Xiaomi Mi Flora (aka. flower care) BLE plant sensors (soil moisture/conductivity/light intensity/temperature).

Spectral

  • AS726X_LoPy - MicroPython driver for the AS726X spectral sensor.

Temperature Analog

  • micropython-max31855 - Thermocouple amplifier, SPI interface.
  • max31856 - Precision thermocouple to digital converter with linearization, SPI interface.
  • mcp9700 - Generic MicroPython driver for MCP9700.

Temperature Digital

Temperature IR

Touch Capacitive

  • micropython-mpr121 - Driver for MPR121 capacitive touch keypads and breakout boards.
  • micropython-ttp223 - Examples using TTP223 capacitive touch module.
  • micropython-TTP229-BSF - MicroPython ESP8266/ESP32 driver for TTP229-BSF 16-key capacitive keypad in serial interface mode.
  • uFT6336U - MicroPython I2C driver for the Focus LCDs FT6336U capacitive touch panel controller IC.

Touch Resistive

Scheduling

  • micropython-mcron - MicroCRON is a time-based task scheduling program for MicroPython.
  • micropython-scron - SimpleCRON is a time-based task scheduling program inspired by the well-known CRON program for Unix systems.
  • Schedule A scheduler for uasyncio based applications. Schedule events at specified times and dates.

Storage

Database

EEPROM

  • micropython_eeprom - Cross platform MicroPython device drivers for memory chips (EEPROM, FRAM, Flash, PSRAM).
  • mb_24x256_512 - Very simple MicroPython module/driver for Microchip 24x256 and 24x512 I2C EEPROM devices.

Flash

FRAM

PSRAM

  • mb_PSRAM_64Mb_SPI - Very simple MicroPython module to use a generic 64Mbit PSRAM (ie Adafruit 4677) with a Raspberry Pi Pico (RP2040).

SRAM

  • mb_23LC1024 - Very simple MicroPython module to use a Microchip 23LC1024 SPI SRAM with a Raspberry Pi Pico (RP2040).
  • mb_47x16 - Very simple MicroPython module/driver for Microchip 47x16 EERAM devices (47L/47C).

Threading

  • MicroWorkers - A micro workers class that easily manages a pool of threads to optimise simultaneous jobs and jobs endings, for MicroPython (used on Pycom modules & ESP32).

User Interface

  • upymenu - MicroPython Menu for LCD Displays.

Community

Tutorials

Books

Frameworks

  • micrOS - MicroPython based IoT Framework.
  • terkin-datalogger - Flexible data logger application for MicroPython and CPython.
  • perthensis - Perthensis: an asynchronous framework for MicroPython.

Resources

Development

Code Generation

  • micropy-cli - Micropy Cli is a project management/generation tool for writing MicroPython code in modern IDEs such as VSCode.
  • micropython-stubber - Generate and use stubs for different MicroPython firmwares to use with vscode and/or pylint.
  • micropy-stubs - Automatically Generated Stub Packages for Micropy-Cli and whomever else.
  • micropython-extmod-generator - Generator for MicroPython external modules written in C.

Debugging

IDEs

Logging

Shells

On Device

  • upy-shell - A simple command line based shell for MicroPython.
  • Micropython-Editor - Small on-board editor for PyBoard, WiPy, ESP8266, ESP32, PyCom and Adafruit devices written in Python.

On Host

  • rshell - Copy or Sync files to Boards, enter REPL from your terminal.
  • ampy - MicroPython Tool - Utility to interact with a MicroPython board over a serial connection.
  • mpfshell - A simple shell based file explorer for ESP8266 and WiPy.
  • mpsync - A small tool that synchronizes a folder to a MicroPython board whenever it detects a change.
  • mpremote Powerful official shell supports mounting the host's current directory on the target. Run code without changing the target's filesystem.

Miscellaneous

Contributing

Contributions and suggestions are always welcome! Please take a look at the contribution guidelines first.

I will keep some pull requests open if I'm not sure whether those libraries are awesome, you could vote for them by adding ๐Ÿ‘ to them.

Awesome Rust build badge Track Awesome List

A curated list of Rust code and resources.

If you want to contribute, please read this.

Table of contents

Applications

See also Rust โ€” Production organizations running Rust in production.

  • alacritty โ€” A cross-platform, GPU enhanced terminal emulator
  • andschwa/rust-genetic-algorithm โ€” A genetic algorithm for academic benchmark problems build badge
  • asm-cli-rust โ€” An interactive assembly shell written in rust.
  • cloudflare/boringtun โ€” A Userspace WireGuard VPN Implementation build badge
  • datafusion โ€” Apache Arrow DataFusion and Ballista query engines
  • denoland/deno โ€” A secure JavaScript/TypeScript runtime built with V8, Rust, and Tokio Build Status
  • Factotum โ€” A system to programmatically run data pipelines build badge
  • fcsonline/drill โ€” A HTTP load testing application inspired by Ansible syntax build badge
  • Fractalide โ€” Simple Rust Microservices
  • habitat โ€” A tool created by Chef to build, deploy, and manage applications.
  • Herd โ€” an experimental HTTP load testing application
  • ivanceras/diwata โ€” A database administration tool for postgresql build badge
  • jedisct1/flowgger โ€” A fast, simple and lightweight data collector
  • kalker - A scientific calculator that supports math-like syntax with user-defined variables, functions, derivation, integration, and complex numbers. Cross platform + WASM support Build Status
  • kytan โ€” High Performance Peer-to-Peer VPN
  • linkerd/linkerd2-proxy โ€” Ultralight service mesh for Kubernetes.
  • MaidSafe โ€” A decentralized platform.
  • mdBook โ€” A command line utility to create books from markdown files Build Status
  • nicohman/eidolon โ€” A steam and drm-free game registry and launcher for linux and macosx build badge
  • notty โ€” A new kind of terminal
  • Pijul โ€” A patch-based distributed version control system
  • Rudr โ€” A Kubernetes implementation of the Open Application Model specification Build Status
  • rx โ€” Vi inspired Modern Pixel Art Editor
  • Servo โ€” A prototype web browser engine
  • tiny โ€” A terminal IRC client
  • trust-dns โ€” A DNS-server Build Status
  • wasmer โ€” A safe and fast WebAssembly runtime supporting WASI and Emscripten Build Status
  • Weld โ€” Full fake REST API generator build badge
  • wezterm โ€” A GPU-accelerated cross-platform terminal emulator and multiplexer
  • zellij โ€” A terminal multiplexer (workspace) with batteries included

Audio and Music

  • enginesound โ€” A GUI and command line application used to procedurally generate semi-realistic engine sounds. Featuring in-depth configuration, variable sample rate and a frequency analysis window.
  • Glicol โ€” Graph-oriented live coding language written in Rust for collaborative musicking in browsers.
  • ncspot - Cross-platform ncurses Spotify client, inspired by ncmpc and the likes. build badge
  • Polaris โ€” A music streaming application. build badge
  • Spotify TUI โ€” A Spotify client for the terminal written in Rust. Continuous Integration
  • Spotifyd โ€” An open source Spotify client running as a UNIX daemon. Continuous Integration

Cryptocurrencies

  • Bitcoin Satoshi's Vision [sv] โ€” A Rust library for working with Bitcoin SV .
  • cardano-cli โ€” Cardano Command Line Interface (CLI)
  • ChainX โ€” Fully Decentralized Interchain Crypto Asset Management on Polkadot.
  • CITA โ€” A high performance blockchain kernel for enterprise users.
  • coinbase-pro-rs โ€” Coinbase pro client in Rust, supports sync/async/websocket build badge
  • Diem โ€” Diemโ€™s mission is to enable a simple global currency and financial infrastructure that empowers billions of people.
  • ethaddrgen โ€” Custom Ethereum vanity address generator made in Rust build badge
  • Forest - Rust Filecoin implementation Build Status
  • Grin โ€” Evolution of the MimbleWimble protocol
  • hdwallet [hdwallet] โ€” BIP-32 HD wallet related key derivation utilities.
  • Holochain โ€” Scalable P2P alternative to blockchain for all those distributed apps you always wanted to build. The link to the old repo is this which is no longer maintained. Build Status
  • ibc-rs - Rust implementation of the Interblockchain Communication protocol
  • infincia/bip39-rs [bip39] โ€” Rust implementation of BIP39.
  • interBTC โ€” Trustless and fully decentralized Bitcoin bridge to Polkadot and Kusama.
  • Joystream โ€” A user governed video platform Build Status
  • Lighthouse โ€” Rust Ethereum 2.0 Client Build Status
  • near/nearcore โ€” decentralized smart-contract platform for low-end mobile devices.
  • Nervos CKB โ€” Nervos CKB is a public permissionless blockchain, the common knowledge layer of Nervos network.
  • Nimiq โ€” Rust implementation of Nimiq node
  • Parity-Bitcoin โ€” The Parity Bitcoin client build badge
  • Parity-Bridge โ€” Bridge between any two ethereum-based networks
  • Parity-Ethereum โ€” Fast, light, and robust Ethereum client
  • Parity-Zcash โ€” Rust implementation of the Zcash protocol
  • Phala-Network/phala-blockchain โ€” Confidential smart contract blockchain based on Intel SGX and Substrate
  • Polkadot โ€” Heterogeneous multiโ€‘chain technology with pooled security
  • rust-bitcoin โ€” Library with support for de/serialization, parsing and executing on data structures and network messages related to Bitcoin.
  • rust-cardano โ€” Rust implementation of Cardano primitives, helpers, and related applications
  • Solana โ€” Incredibly fast, highly scalable blockchain using Proof-of-History.
  • Substrate โ€” Generic modular blockchain template written in Rust
  • tendermint-rs - Rust implementation of Tendermint blockchain data structures and clients
  • wagyu [wagyu] โ€” Rust library for generating cryptocurrency wallets build badge
  • zcash โ€” Zcash is an implementation of the "Zerocash" protocol.

Database

  • Databend - A Modern Real-Time Data Processing & Analytics DBMS with Cloud-Native Architecture Release
  • indradb โ€” Rust based graph database build badge
  • Lucid โ€” High performance and distributed KV store accessible through a HTTP API. Build Status
  • Materialize - Streaming SQL database powered by Timely Dataflow :heavy_dollar_sign: Build status
  • noria [noria] โ€” Dynamically changing, partially-stateful data-flow for web application backends build badge
  • ParityDB โ€” Fast and reliable database, optimised for read operation
  • PumpkinDB โ€” an event sourcing database engine
  • seppo0010/rsedis โ€” A Redis reimplementation in Rust build badge
  • Skytable โ€” A multi-model NoSQL database GitHub Workflow Status
  • sled โ€” A (beta) modern embedded database Build Status
  • TerminusDB - open source graph database and document store Build Status
  • tikv โ€” A distributed KV database in Rust Build Status
  • vorot93/libmdbx-rs [mdbx-sys] โ€” Rust bindings for MDBX, a "fast, compact, powerful, embedded, transactional key-value database, with permissive license". This is a fork of mozilla/lmdb-rs with patches to make it work with libmdbx.
  • WooriDB - General purpose time serial database inspired by Crux and Datomic.

Emulators

See also crates matching keyword 'emulator'.

Games

See also Games Made With Piston.

Graphics

Image processing

  • Imager โ€” Automated image optimization.

Industrial automation

Observability

  • avito-tech/bioyino โ€” A high-performance scalable StatsD compatible server.
  • OpenTelemetry โ€” OpenTelemetry provides a single set of APIs, libraries, agents, and collector services to capture distributed traces and metrics from your application. You can analyze them using Prometheus, Jaeger, and other observability tools. GitHub Actions CI
  • Scaphandre - A power consumption monitoring agent, to track host and each service power consumption and enable designing systems and applications for more sustainability. Designed to fit any monitoring toolchain (already supports prometheus, warp10, riemann...).
  • vectordotdev/vector โ€” A High-Performance, Logs, Metrics, & Events Router.

Operating systems

See also A comparison of operating systems written in Rust. * 0x59616e/SteinsOS โ€” An OS for armv8-a architecture. * nebulet/nebulet โ€” A microkernel that implements a WebAssembly "usermode" that runs in Ring 0. * redox-os/redox โ€” build badge * thepowersgang/rust_os โ€” build badge * tock/tock โ€” A secure embedded operating system for Cortex-M based microcontrollers

Productivity

  • Bartib [Bartib] - A simple timetracker for the command line Tests
  • espanso โ€” A cross-platform Text Expander written in Rust Build Status
  • eureka โ€” A CLI tool to input and store your ideas without leaving the terminal
  • pier-cli/pier โ€” A central repository to manage (add, search metadata, etc.) all your one-liners, scripts, tools, and CLIs

Security tools

System tools

  • ajeetdsouza/zoxide โ€” A fast alternative to cd that learns your habits release
  • Alonely0/Voila โ€” Voila is a domain-specific language launched through CLI tool for operating with files and directories in massive amounts in a fast & reliable way. Linux build macOS build Windows build
  • bandwhich โ€” Terminal bandwidth utilization tool build badge
  • bottom - Yet another cross-platform graphical process/system monitor. GitHub Workflow Status (branch)
  • brocode/fblog โ€” Small command-line JSON Log viewer build badge
  • bustd - Lightweight process killer daemon to handle out-of-memory scenarios on Linux. GitHub Workflow Status (branch)
  • buster/rrun โ€” A command launcher for Linux, similar to gmrun build badge
  • cantino/mcfly - Fly through your shell history. Great Scott! build badge
  • crabz - Multi-threaded compression and decompression CLI tool Build Status
  • cristianoliveira/funzzy โ€” A configurable filesystem watcher inspired by entr build badge
  • dalance/procs โ€” A modern replacement for 'ps' written by Rust Regression
  • ddh โ€” Fast duplicate file finder build badge
  • diskonaut โ€” Terminal visual disk space navigator build badge
  • dust โ€” A more intuitive version of du
  • fselect โ€” Find files with SQL-like queries build badge
  • gitui - Blazing fast terminal client for git written in Rust. build
  • k0pernicus/zou โ€” A download accelerator
  • Kondo - CLI & GUI tool for deleting software project artifacts and reclaiming disk space
  • lotabout/rargs [rargs] โ€” xargs + awk with pattern matching support build badge
  • lotabout/skim โ€” A fuzzy finder in pure rust build badge
  • Luminarys/synapse โ€” Flexible and fast BitTorrent daemon. Build Status
  • m4b/bingrep โ€” Greps through binaries from various OSs and architectures, and colors them. build badge
  • mitnk/cicada โ€” A bash-like Unix shell build badge
  • mmstick/concurr โ€” Alternative to GNU Parallel w/ a client-server architecture
  • mmstick/fontfinder โ€” GTK3 application for previewing and installing Google's fonts
  • mmstick/parallel โ€” Reimplementation of GNU Parallel
  • mmstick/tv-renamer โ€” A tv series renaming application with an optional GTK3 frontend. build badge
  • mxseev/logram โ€” Push log files' updates to Telegram
  • nickgerace/gfold [gfold] - CLI tool to help keep track of multiple Git repositories build
  • nivekuil/rip - A safe and ergonomic alternative to rm build badge
  • ogham/exa โ€” A replacement for 'ls' build badge
  • orhun/kmon โ€” Linux Kernel Manager and Activity Monitor https://github.com/orhun/kmon/actions
  • ouch - Painless compression and decompression on the command-line GitHub Workflow Status (branch)
  • Peltoche/lsd โ€” An ls with a lot of pretty colors and awesome icons build
  • pop-os/popsicle โ€” GTK3 & CLI utility for flashing multiple USB devices in parallel
  • pop-os/system76-power โ€” Linux power management daemon (DBus-interface) with CLI tool.
  • pueue โ€” Manage your long running shell commands. GitHub Actions Workflow
  • redox-os/ion โ€” Next-generation system shell build badge
  • sharkdp/bat โ€” A cat(1) clone with wings. CICD
  • sharkdp/fd โ€” A simple, fast and user-friendly alternative to find. CICD
  • sitkevij/hex โ€” A colorized hexdump terminal utility. build badge
  • uutils/coreutils โ€” A cross-platform Rust rewrite of the GNU coreutils [CICD
  • watchexec โ€” Executes commands in response to file modifications build badge
  • XAMPPRocky/tokei โ€” counts the lines of code build badge

Task scheduling

  • delicate โ€” A lightweight and distributed task scheduling platform written in rust. Build Status

Text editors

  • amp โ€” Inspired by Vi/Vim. build badge
  • gchp/iota โ€” A simple text editor build badge
  • helix โ€” A post-modern modal text editor inspired by Neovim/Kakoune. build badge
  • ilai-deutel/kibi โ€” A tiny (โ‰ค1024 LOC) text editor with syntax highlighting, incremental search and more. build badge
  • lapce โ€” Lightning-fast and Powerful Code Editor written in Rust. build badge
  • mathall/rim โ€” Vim-like text editor written in Rust
  • ox โ€” An independent Rust text editor that runs in your terminal!
  • Remacs โ€” A community-driven port of Emacs to Rust. build badge
  • vamolessa/pepper [pepper] โ€” An opinionated modal editor to simplify code editing from the terminal build badge
  • xi-editor โ€” A modern editor with a backend written in Rust.
  • xray โ€” An experimental next-generation Electron-based text editor. build badge

Text processing

  • dmerejkowsky/ruplacer โ€” Find and replace text in source files Run tests
  • grex โ€” A command-line tool and library for generating regular expressions from user-provided test cases build badge
  • Lisprez/so_stupid_search โ€” A simple and fast string search tool for human beings
  • phiresky/ripgrep-all โ€” ripgrep, but also search in PDFs, E-Books, Office documents, zip, tar.gz, etc. Build Status
  • replicadse/complate โ€” An in-terminal text templating tool designed for standardizing messages (like for GIT commits). crates.io crates.io build badge
  • ripgrep โ€” combines the usability of The Silver Searcher with the raw speed of grep build badge
  • sd โ€” Intuitive find & replace CLI
  • sstadick/hck - A faster and more featureful drop in replacement for cut build badge
  • vishaltelangre/ff โ€” Find files (ff) by name! build badge
  • whitfin/bytelines [bytelines] โ€” Read input lines as byte slices for high efficiency.
  • whitfin/runiq โ€” an efficient way to filter duplicate lines from unsorted input.
  • xsv โ€” A fast CSV command line tool (slicing, indexing, selecting, searching, sampling, etc.) build badge

Image processing

Utilities

  • 1History โ€” Command line interface to backup Firefox/Chrome/Safari history to one SQLite file Build Status
  • brycx/checkpwn โ€” A Have I Been Pwned (HIBP) command-line utility tool that lets you easily check for compromised accounts and passwords.
  • evansmurithi/cloak โ€” A Command Line OTP (One Time Password) Authenticator application. CI build badge
  • fcsonline/tmux-thumbs โ€” A lightning fast version of tmux-fingers written in Rust, copy/pasting tmux like vimium/vimperator.
  • guoxbin/dtool โ€” A useful command-line tool collection to assist development including conversion, codec, hashing, encryption, etc. Build Status
  • nomino โ€” Batch rename utility for developers Build Status
  • raftario/licensor โ€” write licenses to stdout GitHub Actions
  • rustdesk/rustdesk โ€” A remote desktop software, great alternative to TeamViewer and AnyDesk.
  • tversteeg/emplace โ€” Synchronize installed packages on multiple machines
  • unrelentingtech/freepass โ€” The free password manager for power users.
  • vamolessa/verco [verco] โ€” A simple Git/Hg tui client focused on keyboard shortcuts
  • vaultwarden Build โ€” Alternative implementation of the Bitwarden server API written in Rust
  • yaa110/cb โ€” Command line interface to manage clipboard Build Status

Video

Virtualization

Web

  • cfal/tobaru - Port forwarder with allowlists, IP and TLS SNI/ALPN rule-based routing, iptables support, round-robin forwarding (load balancing), and hot reloading.
  • LemmyNet/lemmy โ€” A link aggregator / reddit clone for the fediverse Build Status
  • MASQ-Project/Node โ€” MASQ Node software provides a decentralized mesh-network of nodes for global users to access normal internet content - next evolution of tech beyond Tor & VPN build badge
  • Plume-org/Plume โ€” ActivityPub federating blogging application build badge
  • Revolt/delta - User-first chat platform built with modern web technologies.

Web Servers

  • joseluisq/static-web-server โ€” A blazing fast and asynchronous web server for static files-serving. โšก CI
  • mufeedvh/binserve โ€” A blazingly fast static web server with routing, templating, and security in a single binary you can set up with zero code build badge
  • ronanyeah/rust-hasura โ€” A demonstration of how a Rust GraphQL server can be used as a remote schema with Hasura Rust
  • svenstaro/miniserve โ€” A small, self-contained cross-platform CLI tool that allows you to just grab the binary and serve some file(s) via HTTP build badge
  • thecoshman/http โ€” Host These Things Please โ€” A basic http server for hosting a folder fast and simply build badge
  • TheWaWaR/simple-http-server โ€” simple static http server
  • wyhaya/see โ€” Static HTTP file server Build Status

Development tools

  • artifact โ€” the design doc tool made for developers Build Status
  • clippy โ€” Rust lints build badge
  • clog-tool/clog-cli โ€” generates a changelog from git metadata (conventional changelog) build badge
  • comtrya โ€” A configuration management tool for localhost / dotfiles build badge
  • create-rust-app โ€” Set up a modern rust+react web app by running one command. crate
  • dan-t/rusty-tags โ€” create ctags/etags for a cargo project and all of its dependencies build badge
  • datanymizer/datanymizer - Powerful database anonymizer with flexible rules build badge
  • delta โ€” A syntax-highlighter for git and diff outputbuild badge
  • dotenv-linter โ€” Linter for .env files build badge
  • fw โ€” workspace productivity booster Rust
  • geiger โ€” A program that list statistics related to usage of unsafe Rust code in a Rust crate and all its dependencies Build Status
  • git-journal โ€” The Git Commit Message and Changelog Generation Framework build badge
  • just โ€” A handy command runner for project-specific tasks build badge
  • mask โ€” A CLI task runner defined by a simple markdown file build badge
  • Module Linker โ€” Extension that adds <a> links to references in mod, use and extern crate statements at GitHub.
  • ptags โ€” A parallel universal-ctags wrapper for git repository Build Status
  • Racer โ€” code completion for Rust build badge
  • Rust Language Server โ€” A server that runs in the background, providing IDEs, editors, and other tools with information about Rust programs
  • Rust Search Extension โ€” A handy browser extension to search crates and docs in address bar (omnibox). Build Status
  • rust-lang/rustfix โ€” automatically applies the suggestions made by rustc
  • rustfmt โ€” A Rust code formatter build badge
  • Rustup โ€” the Rust toolchain installer build badge
  • scriptisto A language-agnostic "shebang interpreter" that enables you to write one file scripts in compiled languages. Build Status
  • semantic-rs โ€” automatic crate publishing build badge
  • synth โ€” A declarative data generation engine.

Build system

  • Cargo โ€” the Rust package manager
  • cargo-benchcmp โ€” A utility to compare Rust micro-benchmarks build badge
  • cargo-bitbake โ€” A cargo extension that can generate BitBake recipes utilizing the classes from meta-rust build badge
  • cargo-cache โ€” inspect/manage/clean your cargo cache (~/.cargo//${CARGO_HOME}), print sizes etc Build Status
  • cargo-check โ€” A wrapper around cargo rustc -- -Zno-trans which can be helpful for running a faster compile if you only need correctness checks build badge
  • cargo-count โ€” lists source code counts and details about cargo projects, including unsafe statistics build badge
  • cargo-deb โ€” Generates binary Debian packages build badge
  • cargo-deps โ€” build dependency graphs of Rust projects build badge
  • cargo-do โ€” run multiple cargo commands in a row build badge
  • cargo-ebuild โ€” cargo extension that can generate ebuilds using the in-tree eclasses build badge
  • cargo-edit โ€” allows you to add and list dependencies by reading/writing to your Cargo.toml file from the command line build badge
  • cargo-generate A generator of a rust project by leveraging a pre-existing git repository as a template.
  • cargo-graph โ€” updated fork of cargo-dot with additional features. Unmaintained, see cargo-deps build badge
  • cargo-info โ€” queries crates.io for crates details from command line build badge
  • cargo-license โ€” A cargo subcommand to quickly view the licenses of all dependencies. build badge
  • cargo-make โ€” Rust task runner and build tool. build badge
  • cargo-modules โ€” A cargo plugin for showing a tree-like overview of a crate's modules. build badge
  • cargo-multi โ€” runs specified cargo command on multiple crates build badge
  • cargo-outdated โ€” displays when newer versions of Rust dependencies are available, or out of date build badge
  • cargo-release โ€” tool for releasing git-managed cargo project, build, tag, publish, doc and push Rust
  • cargo-script โ€” lets people quickly and easily run Rust "scripts" which can make use of Cargo's package ecosystem build badge
  • cargo-tree โ€“ Cargo subcommand that visualizes a crate's dependency graph in a tree-like format CircleCI
  • cargo-update โ€” cargo subcommand for checking and applying updates to installed executables build badge
  • cargo-watch โ€” utility for cargo to compile projects when sources change build badge
  • dtolnay/cargo-expand โ€” Expand macros in your source code
  • CMake
  • Devolutions/CMakeRust โ€” useful for integrating a Rust library into a CMake project
  • SiegeLord/RustCMake โ€” an example project showing usage of CMake with Rust build badge
  • Github actions
  • icepuma/rust-action โ€” rust github action
  • peaceiris/actions-mdbook โ€” GitHub Actions for mdBook

Debugging

Deployment

Embedded

Rust Embedded

  • Arduino
  • avr-rust/ruduino Reusable components for the Arduino Uno.
  • Cross compiling
  • japaric/rust-cross โ€” everything you need to know about cross compiling Rust programs build badge
  • japaric/xargo โ€” effortless cross compilation of Rust programs to custom bare-metal targets like ARM Cortex-M build badge
  • Raspberry Pi
  • Ogeon/rust-on-raspberry-pi โ€” instructions for how to cross compile Rust projects for the Raspberry Pi .

FFI

See also Foreign Function Interface, The Rust FFI Omnibus (a collection of examples of using code written in Rust from other languages) and FFI examples written in Rust.

IDEs

See also Are we (I)DE yet? and Rust Tools.

Profiling

Services

  • deps.rs โ€” Detect outdated or insecure dependencies
  • docs.rs โ€” Automatic documentation generation of crates

Static analysis

[assert, static]

Testing

[test, testing]

  • Code Coverage
  • tarpaulin โ€” A code coverage tool designed for Rust build badge
  • Continuous Integration
  • trust โ€” A Travis CI and AppVeyor template to test your Rust crate on 5 architectures and publish binary releases of it for Linux, macOS and Windows
  • Frameworks and Runners
  • AlKass/polish โ€” Mini Testing/Test-Driven Framework Build Status Crates Package Status
  • cargo-dinghy - A cargo extension to simplify running library tests and benches on smartphones and other small processor devices.
  • cucumber Latest Version โ€” An implementation of the Cucumber testing framework for Rust. Fully native, no external test runners or dependencies. Build Status
  • demonstrate โ€” Declarative Testing Framework Build Status
  • rstest โ€” Fixture-based test framework for Rust Build Status
  • speculate โ€” An RSpec inspired minimal testing framework for Rust
  • Mocking and Test Data
  • asomers/mockall [mockall] โ€” A powerful mock object library for Rust. Cirrus Build Status
  • fake-rs โ€” A library for generating fake data build badge
  • goldenfile [goldenfile] - A library providing a simple API for goldenfile testing. build badge
  • httpmock โ€” HTTP mocking build badge
  • mockiato โ€” A strict, yet friendly mocking library for Rust 2018 build badge
  • mockito โ€” HTTP mocking build badge
  • nrxus/faux Latest Version โ€” A library to create mocks out of structs. build
  • Property Testing and Fuzzing
  • mutagen [mutagen) โ€” A source-level mutation testing framework (nightly only) build badge
  • proptest โ€” property testing framework inspired by the Hypothesis framework for Python build badge
  • quickcheck โ€” A Rust implementation of QuickCheck build badge
  • rust-fuzz/afl.rs โ€” A Rust fuzzer, using AFL build badge

Transpiling

  • BayesWitnesses/m2cgen โ€” A CLI tool to transpile trained classic machine learning models into a native Rust code with zero dependencies. GitHub Actions Status
  • immunant/c2rust โ€” C to Rust translator and cross checker built atop Clang/LLVM. Build Status
  • jameysharp/corrode โ€” A C to Rust translator written in Haskell.

Libraries

  • perf-monitor-rs โ€” A toolkit designed to be a foundation for applications to monitor their performance. crates.io
  • Phate6660/nixinfo [crate] โ€” A lib crate for gathering system info such as cpu, distro, environment, kernel, etc.

Artificial Intelligence

Genetic algorithms

  • innoave/genevo โ€” Execute genetic algorithm (GA) simulations in a customizable and extensible way.
  • m-decoster/RsGenetic โ€” Genetic Algorithm library in Rust. In maintenance mode.
  • Martin1887/oxigen โ€” Fast, parallel, extensible and adaptable genetic algorithm library. A example using this library solves the N Queens problem for N = 255 in only few seconds and using less than 1 MB of RAM.
  • pkalivas/radiate โ€” A customizable parallel genetic programming engine capable of evolving solutions for supervised, unsupervised, and reinforcement learning problems. Comes with complete and customizable implementation of NEAT and Evtree. Build StatusCrates.io
  • willi-kappler/darwin-rs โ€” Evolutionary algorithms with Rust Build Status

Machine learning

See [Machine learning]

See also About Rustโ€™s Machine Learning Community and Are we learning yet?.

Astronomy

[astronomy]

Asynchronous

  • async-std [async-std] - Async version of the Rust standard library CI
  • dpc/mioco โ€” Scalable, coroutine-based, asynchronous IO handling library build badge
  • mio โ€” MIO is a lightweight IO library for Rust with a focus on adding as little overhead as possible over the OS abstractions build badge
  • rust-lang/futures-rs โ€” Zero-cost futures in Rust build badge
  • TeaEntityLab/fpRust โ€” Monad/MonadIO, Handler, Coroutine/doNotation, Functional Programming features for Rust build badge
  • Xudong-Huang/may โ€” rust stackful coroutine library build badge
  • zonyitoo/coio-rs โ€” A coroutine I/O library with a working-stealing scheduler build badge

Audio and Music

[audio]

Authentication

  • constantoine/totp-rs [totp-rs] โ€” 2fa library to generate and verify TOTP-based tokens Build Status
  • Keats/jsonwebtoken โ€” JSON Web Token lib in rust Build Status
  • oauth2 โ€” Extensible, strongly-typed Rust OAuth2 client library Build Status
  • oxide-auth โ€” A OAuth2 server library, for use in combination with actix or other frontends, featuring a set of configurable and pluggable backends Build Status
  • sgrust01/jwtvault โ€” Async library to manage and orchestrate JWT workflow Build Status
  • yup-oauth2 โ€” An oauth2 client implementation providing the Device, Installed and Service Account flows Build Status

Automotive

Bioinformatics

  • Rust-Bio โ€” bioinformatics libraries in Rust.

Caching

Concurrency

Cloud

Command-line

Compression

Computation

Configuration

Cryptography

[crypto, cryptography]

Database

[database]

Data processing

  • amv-dev/yata โ€” high perfomance technical analysis library Build Status
  • bluss/ndarray โ€” N-dimensional array with array views, multidimensional slicing, and efficient operations
  • kernelmachine/utah โ€” Dataframe structure and operations in Rust
  • pola-rs/polars - Fast feature complete DataFrame library Build and test
  • weld-project/weld โ€” High-performance runtime for data analytics applications

Data streaming

Data structures

Data visualization

Date and time

[date, time]

Distributed systems

Domain driven design

Email

[email, imap, smtp]

Encoding

[encoding]

Filesystem

[filesystem] * Operations * pop-os/dbus-udisks2 [dbus-udisks2] - UDisks2 DBus API * pop-os/sys-mount [sys-mount] โ€” High level abstraction for the mount / umount2 system calls. * vitiral/path_abs [path_abs] โ€” Absolute serializable path types and associated methods. build badge * webdesus/fs_extra โ€” expanding opportunities standard library std::fs and std::io build badge * Temporary Files * rust-lang-deprecated/tempdir โ€” temporary directory library build badge * Stebalien/tempfile โ€” temporary file library build badge * Stebalien/xattr [xattr] โ€” list and manipulate unix extended file attributes build badge * zboxfs/zbox [zbox] โ€” Zero-details, privacy-focused embeddable file system. build badge

Functional Programming

[functional programming] * Prelude * JasonShin/fp-core.rs โ€” A library for functional programming in Rust * myrrlyn/tap - Suffix-Position Pipeline Behavior

Game development

See also Are we game yet? * Allegro * SiegeLord/RustAllegro โ€” Allegro 5 bindings build badge * Awesome Quads โ€” A curated list of links to miniquad/macroquad-related code & resources * Awesome wgpu โ€” A curated list of wgpu code and resources * bracket-lib (previously RLTK) * bracket-lib [bracket-lib] - The Roguelike Toolkit (RLTK), implemented for Rust. Rust * Challonge * vityafx/challonge-rs [challonge] โ€” Client library for the Challonge REST API. Helps to organize tournaments. CI * Corange * lucidscape/corange-rs โ€” Corange bindings * Entity-Component Systems (ECS) * amethyst/specs โ€” Specs Parallel ECS build badge * legion โ€” A feature rich high performance ECS library with minimal boilerplate build badge * Game Engines * Amethyst โ€” Data-oriented game engine - Crates.io license Crates.io * Bevy is a refreshingly simple data-driven game engine built in Rust. - Crates.io license Crates.io * ggez โ€” A lightweight game framework for making 2D games with minimum friction - Crates.io license Crates.io * harmony โ€” A modern 3D/2D game engine that uses wgpu * Kiss3d โ€” A Keep It Simple, Stupid 3d graphics engine written with Rust Crates.io * oxidator โ€” A real time strategy game/engine written with Rust and WebGPU * Piston โ€” Crates.io Crates.io Crates.io * RG3D โ€” Rust Game engine 3D Crates.io license Crates.io * Unrust โ€” unrust โ€” A pure rust based (webgl 2.0 / native) game engine * Godot * godot-rust/godot-rust [gdnative] - Rust bindings to the Godot game engine CI * SDL [sdl] * brson/rust-sdl โ€” SDL1 bindings build badge * Rust-SDL2/rust-sdl2 โ€” SDL2 bindings build badge * SFML * jeremyletang/rust-sfml โ€” SFML bindings * Tcod-rs * tomassedovic/tcod-rs โ€” Libtcod bindings for Rust. * Warning: Not maintained anymore * Toornament-rs * vityafx/toornament-rs - Toornament.com API bindings for Rust. CI Crates badge * Victorem * VictoremWinbringer/Victorem [Victorem] โ€” Easy UDP Game Server and UDP Client framework for creating simple 2D and 3D online game prototype build badge

Geospatial

[geo, gis]

Graphics

[graphics]

GUI

[gui]

  • autopilot-rs/autopilot-rs โ€” A simple, cross-platform GUI automation library for Rust.
  • Cocoa
  • servo/core-foundation-rs โ€” build badge
  • DioxusLabs/dioxus - a portable, performant, and ergonomic framework for building cross-platform user interfaces in Rust. rust ci
  • Druid [druid] โ€” Druid, a data-first Rust-native UI design toolkit. build badge
  • emilk/egui - Simple, fast, and highly portable immediate mode GUI library for Rust. egui runs on the web, natively, and in your favorite game engine. Build Status
  • emoon/rust_minifb โ€” minifb is a cross-platform window setup with optional bitmap rendering. It also comes with easy mouse and keyboard input. Primarily designed for prototyping
  • FLTK
  • fltk-rs โ€” FLTK Rust bindings Build
  • Flutter
  • flutter-rs โ€” Build flutter desktop app in dart & rust.
  • fschutt/azul โ€” A free, functional, IMGUI-oriented GUI framework for rapid development of desktop applications written in Rust, supported by the Mozilla WebRender rendering engine. build badge
  • GTK+ [gtk]
  • gtk-rs/gtk3-rs - GTK3 binding for rust CI
  • relm โ€” Asynchronous, GTK+-based, GUI library, inspired by Elm build badge
  • iced-rs/iced โ€” A cross-platform GUI library for Rust focused on simplicity and type-safety. Inspired by Elm.
  • ImGui
  • imgui-rs โ€” Rust bindings for ImGui Build Status
  • IUP
  • Kiss-ui โ€” A simple UI framework built on IUP Build Status
  • ivanceras/sauron-native - A truly native and cross platform GUI library. One unified code can be run as native GUI, Html Web and TUI. Build Status
  • libui
  • rust-native-ui/libui-rs โ€” libui bindings build badge.
  • Nuklear
  • nuklear-rust โ€” Rust bindings for Nuklear
  • OrbTk โ€” The Orbital Widget Toolkit is a multi platform (G)UI toolkit using SDL2 Build and test
  • PistonDevelopers/conrod โ€” An easy-to-use, immediate-mode, 2D GUI library written entirely in Rust build badge
  • Qt
  • cyndis/qmlrs โ€” QtQuick bindings build badge
  • rust-qt
  • White-Oak/qml-rust โ€” QML bindings. build badge
  • woboq/qmetaobject-rs โ€” Integrate Qml and Rust by building the QMetaObject at compile time. build badge
  • rise-ui โ€” Simple component-based cross-Platform GUI Toolkit for developing beautiful and user-friendly interfaces.
  • saurvs/nfd-rs โ€” nativefiledialog bindings
  • Sciter
  • sciter-sdk/rust-sciter โ€” Sciter bindings build badge
  • slint-ui/slint [slint] โ€” Slint is a toolkit to efficiently develop fluid graphical user interfaces for embedded devices and desktop applications. Build Status
  • tauri-apps/tauri โ€” Build smaller, faster, and more secure desktop applications with a web frontend, powered by WRY. test library
  • tauri-apps/wry - Webview Rendering librarY.

Image processing

Language specification

  • shnewto/bnf โ€” A library for parsing Backusโ€“Naur form context-free grammars. build badge

Logging

[log]

  • estk/log4rs โ€” highly configurable logging framework modeled after Java's Logback and log4j libraries CircleCI
  • jesusprubio/leg โ€” Elegant print for lazy devs. Make your CLIs nicer with minimal effort. Build Status
  • rust-lang/log โ€” Logging implementation for Rust Build Status
  • seanmonstar/pretty-env-logger โ€” A pretty, easy-to-use logger for Rust. Build Status
  • slog-rs/slog โ€” Structured, composable logging for Rust Build Status
  • tokio-rs/tracing โ€” An application level tracing framework for async-aware structured logging, error handling, metrics, and more Build Status

Macro

  • cute
  • mattgathu/cute โ€” Macro for Python-esque list comprehensions in Rust. Build Status
  • Linq-in-Rust - Macro and methods for C#-LINQ-like expressions. CI

Markup language

Mobile

Geal/rust_on_mobile

Network programming

Parsing

Peripherals

Platform specific

Scripting

[scripting]

Simulation

[simulation]

  • nyx-space - High fidelity, fast, reliable and validated astrodynamical toolkit library, used for spacecraft mission design and orbit determination Build Status

Task scheduling

  • delay-timer โ€” Time-manager of delayed tasks. Like crontab, but asynchronous tasks are possible. Build

Template engine

Text processing

Unsafe

  • zerocopy โ€” Utilities for safely reinterpreting arbitrary byte sequences as native Rust types

Virtualization

Web programming

See also Are we web yet? and Rust web framework comparison.

  • Client-side / WASM
  • cargo-web โ€” A Cargo subcommand for the client-side Web Build Status
  • sauron - Client side web framework which closely adheres to The Elm Architecture. Build Status
  • seed โ€” A Rust framework for creating web apps
  • stdweb โ€” A standard library for the client-side Web Build Status
  • yew โ€” Rust framework for making client web apps
  • HTTP Client
  • alexcrichton/curl-rust โ€” libcurl bindings build badge
  • async-graphql - A GraphQL server library implemented in Rust Build Status
  • DoumanAsh/yukikaze [yukikaze] โ€” Beautiful and elegant Yukikaze is little HTTP client library based on hyper. build badge
  • graphql-client โ€” Typed, correct GraphQL requests and responses in Rust. Github actions Status
  • hyperium/hyper โ€” an HTTP implementation CI
  • seanmonstar/reqwest โ€” an ergonomic HTTP Client for Rust. build badge
  • HTTP Server
  • actix/actix-web โ€” A lightweight async web framework for Rust with websocket support build badge
  • branca โ€” A Pure Rust implementation of Branca for Authenticated and Encrypted API tokens. build badge
  • carllerche/tower-web [tower-web] โ€” A fast, boilerplate free, web framework for Rust build badge
  • danclive/sincere โ€” A micro web framework for Rust(stable) based on hyper and multithreading. build badge
  • daogangtang/sapper โ€” A lightweight web framework built on async hyper, implemented in Rust language. build badge
  • GildedHonour/frank_jwt โ€” JSON Web Token implementation in Rust. build badge
  • Gotham โ€” A flexible web framework that does not sacrifice safety, security or speed. build badge
  • handlebars-rust โ€” an Iron web framework middleware. build badge
  • hyperium/hyper โ€” an HTTP implementation CI
  • Iron โ€” A middleware-based server framework build badge
  • Juniper โ€” GraphQL server library for Rust build badge
  • Nickel โ€” inspired by Express build badge
  • Ogeon/rustful โ€” A RESTful web framework for Rust build badge
  • oltdaniel/zap โ€” A lightning fast http framework for Rust
  • Rocket โ€” Rocket is web framework for Rust (nightly) with a focus on ease-of-use, expressability, and speed build badge
  • Rustless โ€” A REST-like API micro-framework inspired by Grape and Hyper build badge
  • Salvo โ€” an easy to use webframework base on hyper and tokio. build build
  • Saphir โ€” A progressive web framework with low-level control, without the pain.
  • tiny-http โ€” Low level HTTP server library build badge
  • tokio/axum - Ergonomic and modular web framework built with Tokio, Tower, and Hyper Build badge
  • tomaka/rouille โ€” Web framework in Rust build badge
  • Miscellaneous
  • cargonauts โ€” A web framework intended for building maintainable, well-factored web apps.
  • causal-agent/scraper [scraper] - HTML parsing and querying with CSS selectors. Build Status
  • osohq/oso [oso] - A policy engine for authorization that's embedded in your application. Build Status
  • pwoolcoc/soup [soup] โ€” A library similar to Python's BeautifulSoup, designed to enable quick and easy manipulation and querying of HTML documents. Build Status
  • pyros2097/rust-embed โ€” A macro to embed static assets into the rust binary
  • softprops/openapi โ€” A library for processing openapi spec files
  • tbot [tbot] - Make cool Telegram bots with Rust easily pipeline status
  • teloxide/teloxide - An elegant Telegram bots framework for Rust Build Status
  • utkarshkukreti/select.rs [select] โ€” A library to extract useful data from HTML documents, suitable for web scraping. Build Status
  • Reverse Proxy
  • sozu-proxy/sozu [sozu] โ€” A HTTP reverse proxy. CI
  • Static Site Generators
  • cobalt-org/cobalt.rs โ€” Static site generator written in Rust Build Status
  • FuGangqiang/mdblog.rs [mdblog] โ€” Static site generator from markdown files.
  • getzola/zola [zola] โ€” An opinionated static site generator with everything built-in. Build Status
  • leven-the-blog/leven [leven] โ€” A simple, parallelized blog generator. build badge
  • WebSocket
  • actix/sockjs โ€” A SockJS server for Rust build badge
  • housleyjk/ws-rs โ€” lightweight, event-driven WebSockets for Rust build badge
  • rust-websocket โ€” A framework for dealing with WebSocket connections (both clients and servers) build badge
  • snapview/tungstenite-rs โ€” Lightweight stream-based WebSocket implementation for Rust.
  • vi/websocat โ€” CLI for interacting with WebSockets, with functionality of Netcat, Curl and Socat. build badge
  • vityafx/urlshortener-rs โ€” A very simple urlshortener library for Rust. CI Crates badge

Registries

A registry allows you to publish your Rust libraries as crate packages, to share them with others publicly and privately.

  • Cloudsmith :heavy_dollar_sign: โ€” A fully managed package management SaaS, with first-class support for public and private Cargo/Rust registries (plus many others). Has a generous free-tier and is also completely free for open-source.
  • Crates โ€” The official public registry for Rust/Cargo.
  • w4/chartered - A private, authenticated, permissioned Cargo registry CI

Resources

License

CC0

Awesome Haskell Awesome

An auxiliary list of awesome Haskell links, frameworks, libraries and software. The part of the awesome projects line.

Basics

  • Alex - a lexical analyser generator for Haskell.
  • Cabal - a system for building and packaging Haskell libraries and programs.
  • GHC - the state-of-the-art optimizing native code compiler for Haskell.
  • GHCi - a bytecode interpreter and interactive REPL environment for Haskell.
  • Hackage - the Haskell community's central package archive.
  • Haddock - a tool for automatically generating documentation from annotated Haskell source code.
  • Happy - The Parser Generator for Haskell.
  • Hayoo - will search all packages from Hackage, including all function and type definitions.
  • Hoogle - a Haskell API search engine, which allows you to search many standard Haskell libraries by either function name, or by approximate type signature.
  • hsenv - a tool to create isolated Haskell environments. This allows a project to use a GHC version different of the currently installed.
  • Stack - a cross-platform tool to help on building Haskell projects. It includes support to create isolated Haskell environments and to automatically manage the dependencies of a project.
  • Stackage - "Stable Hackage," tools for creating a vetted set of packages from Hackage.
  • The Haskell Platform - a comprehensive, robust development environment for programming in Haskell.

Algorithmics

Audio, Music & Sound

  • Audio, music and sound - official Website Resources.


    • Audio - a collaborative Hackage list.
    • Codec - a collaborative Hackage list.
    • Graphics - a collaborative Hackage list.
    • Media - a collaborative Hackage list.
    • Music - a collaborative Hackage list.
    • Sound - a collaborative Hackage list.

Category Theory

Compilers

Concurrency & Parallelism

Configuration

  • Deiko-config - small typesafe library that uses HOCON config format
  • Dhall - A configuration language guaranteed to terminate
  • Configurator - A configuration management library which supports automatic, dynamic reloading in response to modifications to configuration files.

Cryptography & Hashing

Data Access

  • Haxl - a library for efficient, concurrent, concise data access.

Data Formats

  • JSON - a collaborative Hackage list.
  • PDF - a collaborative Hackage list.
  • XML - a collaborative Hackage list.
  • RSS - a collaborative Hackage list.

Data Science

Data Structures

Database

Development Tools

Distributed Computing

Documentation

Editors

Extensions

Games

  • Games - Official Website Resources.


    • Game - a collaborative Hackage list.
    • Game Engine - a collaborative Hackage list.

GUI

Graphics

  • Graphics - Official Website Resources.


    • Graphics - a collaborative Hackage list.

Network

  • Network - Official Website Resources


    • Network - a collaborative Hackage list.

Number Theory

  • Number Theory - a collaborative Hackage list.
  • Numeric - a collaborative Hackage list.
  • Numerical - a collaborative Hackage list.
  • Math - a collaborative Hackage list.

Web / Frameworks

Text Processing

  • Pandoc - is a library for converting from one markup format to another, and a command-line tool that uses this library.

Messaging

  • SimpleX Chat - the most private and secure open-source chat and applications platform - now with double-ratchet E2E encryption.
  • Stomp - is the Simple (or Streaming) Text Orientated Messaging Protocol. Resources.
  • amqp - client library for AMQP servers (currently only RabbitMQ).
  • IRC - a collaborative Hackage list for Internet Relay Chat (IRC).
  • IRC Client - a collaborative Hackage list.

Languages

  • Tools for interfacing with other languages - Official Website Resources.


    • Code Generation - a collaborative Hackage list.
    • FFI - a collaborative Hackage list.
    • FFI Tools - a collaborative Hackage list.
    • HTML - a collaborative Hackage list.
    • Java - a collaborative Hackage list.
    • Javascript - a collaborative Hackage list.
    • LaTex - a collaborative Hackage list.
    • Lua - a collaborative Hackage list.

    Additional languages on top of Haskell * Fay - a proper subset of Haskell that compiles to JavaScript. * Idris - A Dependently Typed Functional Programming Language * Copilot - a (Haskell DSL) stream language for generating hard real-time C code.

Operating Systems

Platforms

  • .NET - a collaborative Hackage list.
  • Apple - a collaborative Hackage list.
  • JVM - a collaborative Hackage list.
  • Mobile - a collaborative Hackage list.

Programming

Science

Streaming Processing

  • Conduit - a streaming data library. Resources.
  • IO-Streams - a collaborative Hackage list.
  • Pipes - is a clean and powerful stream processing library that lets you build and connect reusable streaming components. Resources.
  • HStreamDB - The streaming database built for IoT data storage and real-time processing.

Resources

Websites

Bloggers

Community

Tutorials

Video Tutorials

Courses

Conferences

Packages

  • Stackage - is a stable source of Haskell packages, "Stable Hackage".
  • Hackage - is the Haskell community's central package archive.
  • Application & Libraries - Official collections and Guide.
  • Hoogle - is a Haskell API search engine, which allows you to search many standard Haskell libraries by either function name, or by approximate type signature.
  • Hayoo - will search all packages from Hackage, including all function and type definitions.

Best Practices

License

CC0

awesome-purescript Awesome

A curated list of delightful libraries, tools and other shiny things for PureScript.

Build Tooling

Preludes

UI Libraries

CSS:

  • purescript-css - A clean, type-safe library for describing, manipulating and rendering CSS.

React-based:

Virtual-DOM based:

  • purescript-halogen - A declarative, type-safe UI library.
  • purescript-hedwig - Hedwig is a fast, type safe, declarative PureScript library for building web applications.
  • purescript-flame - Flame is a fast & simple framework for building web applications in PureScript inspired by purescript-hedwig and Elm

Signals/Behaviors/FRP:

URL Routers

Components

Asynchronicity and Parallelism

Effect Management

  • purescript-eff - The Eff monad, for handling native side effects.
  • purescript-effect - The Effect monad, for handling native side effects in PureScript v0.12.x.

Json Serialization

Binary Serialization

Testing

Learning Resources

Discovery

  • Module Linker - Extension that lets you browse docs by just clicking on import declarations on GitHub.
  • Pursuit

Editor and IDE Plugins

See Editor and tool support

Community

More Resources

Contribute

Contributions welcome! Read the contribution guidelines first.

License

CC0

To the extent possible under law, Pascal Hartig has waived all copyright and related or neighboring rights to this work.

Awesome Go

awesome-go

Build Status Awesome Slack Widget Netlify Status Track Awesome List

We use the Golang Bridge community slack for instant communication, follow the form here to join.

awesome-go - Curated list awesome Go frameworks, libraries and software | Product Hunt

Sponsorships:

Special thanks to

Awesome Go has no monthly fee, but we have employees who work hard to keep it running, with money raised we can repay the effort of each person involved! You can see how we calculate our billing and distribution as it is open to the entire community. Want to be a supporter of the project click here.

A curated list of awesome Go frameworks, libraries and software. Inspired by awesome-python.

Contributing:

Please take a quick gander at the contribution guidelines first. Thanks to all contributors; you rock!

If you see a package or project here that is no longer maintained or is not a good fit, please submit a pull request to improve this file. Thank you!

Contents

โฌ† back to top

Audio and Music

Libraries for manipulating audio.

  • flac - Native Go FLAC encoder/decoder with support for FLAC streams.
  • gaad - Native Go AAC bitstream parser.
  • GoAudio - Native Go Audio Processing Library.
  • gosamplerate - libsamplerate bindings for go.
  • id3v2 - ID3 decoding and encoding library for Go.
  • malgo - Mini audio library.
  • minimp3 - Lightweight MP3 decoder library.
  • mix - Sequence-based Go-native audio mixer for music apps.
  • music-theory - Music theory models in Go.
  • Oto - A low-level library to play sound on multiple platforms.
  • PortAudio - Go bindings for the PortAudio audio I/O library.
  • portmidi - Go bindings for PortMidi.

โฌ† back to top

Authentication and OAuth

Libraries for implementing authentications schemes.

  • authboss - Modular authentication system for the web. It tries to remove as much boilerplate and "hard things" as possible so that each time you start a new web project in Go, you can plug it in, configure, and start building your app without having to build an authentication system each time.
  • branca - branca token specification implementation for Golang 1.15+.
  • casbin - Authorization library that supports access control models like ACL, RBAC, ABAC.
  • cookiestxt - provides parser of cookies.txt file format.
  • go-email-normalizer - Golang library for providing a canonical representation of email address.
  • go-guardian - Go-Guardian is a golang library that provides a simple, clean, and idiomatic way to create powerful modern API and web authentication that supports LDAP, Basic, Bearer token and Certificate based authentication.
  • go-jose - Fairly complete implementation of the JOSE working group's JSON Web Token, JSON Web Signatures, and JSON Web Encryption specs.
  • gologin - chainable handlers for login with OAuth1 and OAuth2 authentication providers.
  • gorbac - provides a lightweight role-based access control (RBAC) implementation in Golang.
  • goth - provides a simple, clean, and idiomatic way to use OAuth and OAuth2. Handles multiple providers out of the box.
  • jeff - Simple, flexible, secure and idiomatic web session management with pluggable backends.
  • jwt - Lightweight JSON Web Token (JWT) library.
  • jwt - Safe, simple and fast JSON Web Tokens for Go.
  • jwt-auth - JWT middleware for Golang http servers with many configuration options.
  • loginsrv - JWT login microservice with plugable backends such as OAuth2 (Github), htpasswd, osiam.
  • oauth2 - Successor of goauth2. Generic OAuth 2.0 package that comes with JWT, Google APIs, Compute Engine and App Engine support.
  • osin - Golang OAuth2 server library.
  • otpgen - Library to generate TOTP/HOTP codes.
  • otpgo - Time-Based One-Time Password (TOTP) and HMAC-Based One-Time Password (HOTP) library for Go.
  • paseto - Golang implementation of Platform-Agnostic Security Tokens (PASETO).
  • permissions2 - Library for keeping track of users, login states and permissions. Uses secure cookies and bcrypt.
  • rbac - Minimalistic RBAC package for Go applications.
  • scope - Easily Manage OAuth2 Scopes In Go.
  • scs - Session Manager for HTTP servers.
  • securecookie - Efficient secure cookie encoding/decoding.
  • session - Go session management for web servers (including support for Google App Engine - GAE).
  • sessiongate-go - Go session management using the SessionGate Redis module.
  • sessions - Dead simple, highly performant, highly customizable sessions service for go http servers.
  • sessionup - Simple, yet effective HTTP session management and identification package.
  • sjwt - Simple jwt generator and parser.

โฌ† back to top

Blockchain

Tools for building blockchains.

  • cosmos-sdk - A Framework for Building Public Blockchains in the Cosmos Ecosystem.
  • go-ethereum - Official Go implementation of the Ethereum protocol.
  • gossamer - A Go implementation of the Polkadot Host.
  • solana-go - Go library to interface with Solana JSON RPC and WebSocket interfaces.
  • tendermint - High-performance middleware for transforming a state machine written in any programming language into a Byzantine Fault Tolerant replicated state machine using the Tendermint consensus and blockchain protocols.

โฌ† back to top

Bot Building

Libraries for building and working with bots.

  • echotron - An elegant and concurrent library for Telegram Bots in Go.
  • ephemeral-roles - A Discord bot for managing ephemeral roles based upon voice channel member presence.
  • go-chat-bot - IRC, Slack & Telegram bot written in Go.
  • go-joe - A general-purpose bot library inspired by Hubot but written in Go.
  • go-sarah - Framework to build bot for desired chat services including LINE, Slack, Gitter and more.
  • go-tgbot - Pure Golang Telegram Bot API wrapper, generated from swagger file, session-based router and middleware.
  • go-twitch-irc - Library to write bots for twitch.tv chat
  • Golang CryptoTrading Bot - A golang implementation of a console-based trading bot for cryptocurrency exchanges.
  • govkbot - Simple Go VK bot library.
  • hanu - Framework for writing Slack bots.
  • Kelp - official trading and market-making bot for the Stellar DEX. Works out-of-the-box, written in Golang, compatible with centralized exchanges and custom trading strategies.
  • larry - Larry ๐Ÿฆ is a really simple Twitter bot generator that tweets random repositories from Github built in Go.
  • margelet - Framework for building Telegram bots.
  • micha - Go Library for Telegram bot api.
  • olivia - A chatbot built with an artificial neural network.
  • slack-bot - Ready to use Slack Bot for lazy developers: Custom commands, Jenkins, Jira, Bitbucket, Github...
  • slacker - Easy to use framework to create Slack bots.
  • slackscot - Another framework for building Slack bots.
  • tbot - Telegram bot server with API similar to net/http.
  • telebot - Telegram bot framework written in Go.
  • telego - Telegram Bot API library for Golang with full one-to-one API implementation.
  • telegram-bot-api - Simple and clean Telegram bot client.
  • teleterm - Telegram Bot Exec Terminal Command.
  • Tenyks - Service oriented IRC bot using Redis and JSON for messaging.

โฌ† back to top

Build Automation

Libraries and tools helping with build automation.

  • 1build - Command line tool to frictionlessly manage project-specific commands.
  • anko - Simple application watcher for multiple programming languages.
  • gaper - Builds and restarts a Go project when it crashes or some watched file changes.
  • gilbert - Build system and task runner for Go projects.
  • goyek - Create build pipelines in Go.
  • mage - Mage is a make/rake-like build tool using Go.
  • mmake - Modern Make.
  • realize - Go build system with file watchers and live reload. Run, build and watch file changes with custom paths.
  • Task - simple "Make" alternative.
  • taskctl - Concurrent task runner.

โฌ† back to top

Command Line

Advanced Console UIs

Libraries for building Console Applications and Console User Interfaces.

  • asciigraph - Go package to make lightweight ASCII line graph โ•ญโ”ˆโ•ฏ in command line apps with no other dependencies.
  • aurora - ANSI terminal colors that supports fmt.Printf/Sprintf.
  • box-cli-maker - Make Highly Customized Boxes for your CLI.
  • cfmt - Contextual fmt inspired by bootstrap color classes.
  • cfmt - Simple and convenient formatted stylized output fully compatible with fmt library.
  • chalk - Intuitive package for prettifying terminal/console output.
  • colourize - Go library for ANSI colour text in terminals.
  • ctc - The non-invasive cross-platform terminal color library does not need to modify the Print method.
  • go-ataman - Go library for rendering ANSI colored text templates in terminals.
  • go-colorable - Colorable writer for windows.
  • go-colortext - Go library for color output in terminals.
  • go-isatty - isatty for golang.
  • go-prompt - Library for building a powerful interactive prompt, inspired by python-prompt-toolkit.
  • gocui - Minimalist Go library aimed at creating Console User Interfaces.
  • gommon/color - Style terminal text.
  • gookit/color - Terminal color rendering tool library, support 16 colors, 256 colors, RGB color rendering output, compatible with Windows.
  • marker - Easiest way to match and mark strings for colorful terminal outputs.
  • mpb - Multi progress bar for terminal applications.
  • progressbar - Basic thread-safe progress bar that works in every OS.
  • pterm - A library to beautify console output on every platform with many combinable components.
  • simpletable - Simple tables in terminal with Go.
  • spinner - Go package to easily provide a terminal spinner with options.
  • tabby - A tiny library for super simple Golang tables.
  • table - Small library for terminal color based tables .
  • tabular - Print ASCII tables from command line utilities without the need to pass large sets of data to the API.
  • termbox-go - Termbox is a library for creating cross-platform text-based interfaces.
  • termdash - Go terminal dashboard based on termbox-go and inspired by termui.
  • termenv - Advanced ANSI style & color support for your terminal applications.
  • termui - Go terminal dashboard based on termbox-go and inspired by blessed-contrib.
  • uilive - Library for updating terminal output in realtime.
  • uiprogress - Flexible library to render progress bars in terminal applications.
  • uitable - Library to improve readability in terminal apps using tabular data.
  • yacspin - Yet Another CLi Spinner package, for working with terminal spinners.

โฌ† back to top

Standard CLI

Libraries for building standard or basic Command Line applications.

  • acmd - Simple, useful and opinionated CLI package in Go.
  • argparse - Command line argument parser inspired by Python's argparse module.
  • argv - Go library to split command line string as arguments array using the bash syntax.
  • carapace - Command argument completion generator for spf13/cobra.
  • carapace-bin - Multi-shell multi-command argument completer.
  • cli - Feature-rich and easy to use command-line package based on golang struct tags.
  • cli - Simple and complete API for building command line interfaces in Go.
  • climax - Alternative CLI with "human face", in spirit of Go command.
  • clรฎr - A Simple and Clear CLI library. Dependency free.
  • cmd - Extends the standard flag package to support sub commands and more in idiomatic way.
  • cmdr - A POSIX/GNU style, getopt-like command-line UI Go library.
  • cobra - Commander for modern Go CLI interactions.
  • command-chain - A go library for configure and run command chains - such like pipelining in unix shells.
  • commandeer - Dev-friendly CLI apps: sets up flags, defaults, and usage based on struct fields and tags.
  • complete - Write bash completions in Go + Go command bash completion.
  • Dnote - A simple command line notebook with multi-device sync.
  • elvish - An expressive programming language and a versatile interactive shell.
  • env - Tag-based environment configuration for structs.
  • flag - Simple but powerful command line option parsing library for Go supporting subcommand.
  • flaggy - A robust and idiomatic flags package with excellent subcommand support.
  • flagvar - A collection of flag argument types for Go's standard flag package.
  • go-andotp - A CLI program to encrypt/decrypt andOTP files. Can be used as library as well.
  • go-arg - Struct-based argument parsing in Go.
  • go-commander - Go library to simplify CLI workflow.
  • go-flags - go command line option parser.
  • go-getoptions - Go option parser inspired on the flexibility of Perlโ€™s GetOpt::Long.
  • gocmd - Go library for building command line applications.
  • hiboot cli - cli application framework with auto configuration and dependency injection.
  • job - JOB, make your short-term command as a long-term job.
  • kingpin - Command line and flag parser supporting sub commands (superseded by kong; see below).
  • liner - Go readline-like library for command-line interfaces.
  • mitchellh/cli - Go library for implementing command-line interfaces.
  • mow.cli - Go library for building CLI applications with sophisticated flag and argument parsing and validation.
  • ops - Unikernel Builder/Orchestrator.
  • pflag - Drop-in replacement for Go's flag package, implementing POSIX/GNU-style --flags.
  • sand - Simple API for creating interpreters and so much more.
  • sflags - Struct based flags generator for flag, urfave/cli, pflag, cobra, kingpin and other libraries.
  • strumt - Library to create prompt chain.
  • subcmd - Another approach to parsing and running subcommands. Works alongside the standard flag package.
  • ts - Timestamp convert & compare tool.
  • ukautz/clif - Small command line interface framework.
  • urfave/cli - Simple, fast, and fun package for building command line apps in Go (formerly codegangsta/cli).
  • wlog - Simple logging interface that supports cross-platform color and concurrency.
  • wmenu - Easy to use menu structure for cli applications that prompts users to make choices.

โฌ† back to top

Configuration

Libraries for configuration parsing.

  • aconfig - Simple, useful and opinionated config loader.
  • cleanenv - Minimalistic configuration reader (from files, ENV, and wherever you want).
  • config - A lightweight yet powerful config package for Go projects.
  • config - Cloud native application configuration. Bind ENV to structs in only two lines.
  • config - JSON or YAML configuration wrapper with environment variables and flags parsing.
  • configuration - Library for initializing configuration structs from env variables, files, flags and 'default' tag.
  • configure - Provides configuration through multiple sources, including JSON, flags and environment variables.
  • configuro - opinionated configuration loading & validation framework from ENV and Files focused towards 12-Factor compliant applications.
  • confita - Load configuration in cascade from multiple backends into a struct.
  • conflate - Library/tool to merge multiple JSON/YAML/TOML files from arbitrary URLs, validation against a JSON schema, and application of default values defined in the schema.
  • env - Parse environment variables to Go structs (with defaults).
  • env - A lightweight package for loading environment variables into structs.
  • envcfg - Un-marshaling environment variables to Go structs.
  • envconf - Configuration from environment.
  • envconfig - Read your configuration from environment variables.
  • envh - Helpers to manage environment variables.
  • fig - Tiny library for reading configuration from a file and from environment variables (with validation & defaults).
  • gcfg - read INI-style configuration files into Go structs; supports user-defined types and subsections.
  • genv - Read environment variables easily with dotenv support.
  • go-aws-ssm - Go package that fetches parameters from AWS System Manager - Parameter Store.
  • go-conf - Simple library for application configuration based on annotated structs. It supports reading the configuration from environment variables, config files and command line parameters.
  • go-ini - A Go package that marshals and unmarshals INI-files.
  • go-ssm-config - Go utility for loading configuration parameters from AWS SSM (Parameter Store).
  • go-up - A simple configuration library with recursive placeholders resolution and no magic.
  • goConfig - Parses a struct as input and populates the fields of this struct with parameters from command line, environment variables and configuration file.
  • godotenv - Go port of Ruby's dotenv library (Loads environment variables from .env).
  • gofigure - Go application configuration made easy.
  • gone/jconf - Modular JSON configuration. Keep you config structs along with the code they configure and delegate parsing to submodules without sacrificing full config serialization.
  • gonfig - Tag-based configuration parser which loads values from different providers into typesafe struct.
  • gookit/config - application config manage(load,get,set). support JSON, YAML, TOML, INI, HCL. multi file load, data override merge.
  • harvester - Harvester, a easy to use static and dynamic configuration package supportig seeding, env vars and Consul integration.
  • hjson - Human JSON, a configuration file format for humans. Relaxed syntax, fewer mistakes, more comments.
  • hocon - Configuration library for working with the HOCON(a human-friendly JSON superset) format, supports features like environment variables, referencing other values, comments and multiple files.
  • ingo - Flags persisted in an ini-like config file.
  • ini - Go package to read and write INI files.
  • ini - INI Parser & Write Library, Unmarshal to Struct,Marshal to Json,Write File,watch file.
  • joshbetz/config - Small configuration library for Go that parses environment variables, JSON files, and reloads automatically on SIGHUP.
  • kelseyhightower/envconfig - Go library for managing configuration data from environment variables.
  • koanf - Light weight, extensible library for reading config in Go applications. Built in support for JSON, TOML, YAML, env, command line.
  • konfig - Composable, observable and performant config handling for Go for the distributed processing era.
  • kong - Command-line parser with support for arbitrarily complex command-line structures and additional sources of configuration such as YAML, JSON, TOML, etc (succesor to kingpin).
  • mini - Golang package for parsing ini-style configuration files.
  • nasermirzaei89/env - Simple useful package for read environment variables.
  • onion - Layer based configuration for Go, Supports JSON, TOML, YAML, properties, etcd, env, and encryption using PGP.
  • piper - Viper wrapper with config inheritance and key generation.
  • store - Lightweight configuration manager for Go.
  • swap - Instantiate/configure structs recursively, based on build environment. (YAML, TOML, JSON and env).
  • typenv - Minimalistic, zero dependency, typed environment variables library.
  • uConfig - Lightweight, zero-dependency, and extendable configuration management.
  • viper - Go configuration with fangs.
  • xdg - Go implementation of the XDG Base Directory Specification and XDG user directories.
  • xdg - Cross platform package that follows the XDG Standard.

โฌ† back to top

Continuous Integration

Tools for help with continuous integration.

  • CDS - Enterprise-Grade CI/CD and DevOps Automation Open Source Platform.
  • drone - Drone is a Continuous Integration platform built on Docker, written in Go.
  • duci - A simple ci server no needs domain specific languages.
  • gomason - Test, Build, Sign, and Publish your go binaries from a clean workspace.
  • gotestfmt - go test output for humans.
  • goveralls - Go integration for Coveralls.io continuous code coverage tracking system.
  • overalls - Multi-Package go project coverprofile for tools like goveralls.
  • roveralls - Recursive coverage testing tool.

โฌ† back to top

CSS Preprocessors

Libraries for preprocessing CSS files.

  • gcss - Pure Go CSS Preprocessor.
  • go-libsass - Go wrapper to the 100% Sass compatible libsass project.

โฌ† back to top

Data Structures

Generic datastructures and algorithms in Go.

  • algorithms - Algorithms and data structures.CLRS study.
  • bingo - Fast, zero-allocation, lexicographical-order-preserving packing of native types to bytes.
  • binpacker - Binary packer and unpacker helps user build custom binary stream.
  • bit - Golang set data structure with bonus bit-twiddling functions.
  • bitmap - Dense, zero-allocation, SIMD-enabled bitmap/bitset in Go.
  • bitset - Go package implementing bitsets.
  • bloom - Bloom filters implemented in Go.
  • bloom - Golang Bloom filter implementation.
  • bloomfilter - Yet another Bloomfilter implementation in Go, compatible with Java's Guava library.
  • boomfilters - Probabilistic data structures for processing continuous, unbounded streams.
  • cmap - a thread-safe concurrent map for go, support using interface{} as key and auto scale up shards.
  • concurrent-writer - Highly concurrent drop-in replacement for bufio.Writer.
  • conjungo - A small, powerful and flexible merge library.
  • count-min-log - Go implementation Count-Min-Log sketch: Approximately counting with approximate counters (Like Count-Min sketch but using less memory).
  • crunch - Go package implementing buffers for handling various datatypes easily.
  • cuckoo-filter - Cuckoo filter: a comprehensive cuckoo filter, which is configurable and space optimized compared with other implements, and all features mentioned in original paper is available.
  • cuckoofilter - Cuckoo filter: a good alternative to a counting bloom filter implemented in Go.
  • deque - A highly optimized double-ended queue.
  • deque - Fast ring-buffer deque (double-ended queue).
  • dict - Python-like dictionaries (dict) for Go.
  • dsu - Disjoint Set data structure implementation in Go.
  • encoding - Integer Compression Libraries for Go.
  • fsm - Finite-State Machine package.
  • gdcache - A pure non-intrusive cache library implemented by golang, you can use it to implement your own distributed cache.
  • go-adaptive-radix-tree - Go implementation of Adaptive Radix Tree.
  • go-datastructures - Collection of useful, performant, and thread-safe data structures.
  • go-edlib - Go string comparison and edit distance algorithms library (Levenshtein, LCS, Hamming, Damerau levenshtein, Jaro-Winkler, etc.) compatible with Unicode.
  • go-ef - A Go implementation of the Elias-Fano encoding.
  • go-geoindex - In-memory geo index.
  • go-mcache - Fast in-memory key:value store/cache library. Pointer caches.
  • go-rquad - Region quadtrees with efficient point location and neighbour finding.
  • gocache - A complete Go cache library with mutiple stores (memory, memcache, redis, ...), chainable, loadable, metrics cache and more.
  • goconcurrentqueue - Concurrent FIFO queue.
  • gods - Go Data Structures. Containers, Sets, Lists, Stacks, Maps, BidiMaps, Trees, HashSet etc.
  • gofal - fractional api for Go.
  • golang-set - Thread-Safe and Non-Thread-Safe high-performance sets for Go.
  • goset - A useful Set collection implementation for Go.
  • goskiplist - Skip list implementation in Go.
  • gostl - Data structure and algorithm library for go, designed to provide functions similar to C++ STL.
  • gota - Implementation of dataframes, series, and data wrangling methods for Go.
  • goterator - Iterator implementation to provide map and reduce functionalities.
  • hashsplit - Split byte streams into chunks, and arrange chunks into trees, with boundaries determined by content, not position.
  • hide - ID type with marshalling to/from hash to prevent sending IDs to clients.
  • hilbert - Go package for mapping values to and from space-filling curves, such as Hilbert and Peano curves.
  • hyperloglog - HyperLogLog implementation with Sparse, LogLog-Beta bias correction and TailCut space reduction.
  • iter - Go implementation of C++ STL iterators and algorithms.
  • levenshtein - Levenshtein distance and similarity metrics with customizable edit costs and Winkler-like bonus for common prefix.
  • levenshtein - Implementation to calculate levenshtein distance in Go.
  • memlog - An easy to use, lightweight, thread-safe and append-only in-memory data structure inspired by Apache Kafka.
  • merkle - Space-efficient computation of Merkle root hashes and inclusion proofs.
  • merkletree - Implementation of a merkle tree providing an efficient and secure verification of the contents of data structures.
  • mspm - Multi-String Pattern Matching Algorithm for information retrieval.
  • nan - Zero allocation Nullable structures in one library with handy conversion functions, marshallers and unmarshallers.
  • null - Nullable Go types that can be marshalled/unmarshalled to/from JSON.
  • ordered-concurrently - Go module that processes work concurrently and returns output in a channel in the order of input.
  • parapipe - FIFO Pipeline which parallels execution on each stage while maintaining the order of messages and results.
  • parsefields - Tools for parse JSON-like logs for collecting unique fields and events.
  • pipeline - An implementation of pipelines with fan-in and fan-out.
  • ptrie - An implementation of prefix tree.
  • remember-go - A universal interface for caching slow database queries (backed by redis, memcached, ristretto, or in-memory).
  • ring - Go implementation of a high performance, thread safe bloom filter.
  • roaring - Go package implementing compressed bitsets.
  • set - Simple set data structure implementation in Go using LinkedHashMap.
  • skiplist - Very fast Go Skiplist implementation.
  • skiplist - Skiplist implementation in Go.
  • slices - Functions that operate on slices; like package strings but adapted to work with slices.
  • timedmap - Map with expiring key-value pairs.
  • treap - Persistent, fast ordered map using tree heaps.
  • treemap - Generic key-sorted map using a red-black tree under the hood.
  • trie - Trie implementation in Go.
  • ttlcache - In-memory string-interface{} cache with various time-based expiration options and callbacks.
  • typ - Null Types, Safe primitive type conversion and fetching value from complex structures.
  • willf/bloom - Go package implementing Bloom filters.

โฌ† back to top

Database

Databases implemented in Go.

  • badger - Fast key-value store in Go.
  • bbolt - An embedded key/value database for Go.
  • bcache - Eventually consistent distributed in-memory cache Go library.
  • BigCache - Efficient key/value cache for gigabytes of data.
  • Bitcask - Bitcask is an embeddable, persistent and fast key-value (KV) database written in pure Go with predictable read/write performance, low latency and high throughput thanks to the bitcask on-disk layout (LSM+WAL).
  • buntdb - Fast, embeddable, in-memory key/value database for Go with custom indexing and spatial support.
  • cache - In-memory key:value store with expiration time, 0 dependencies, <100 LoC, 100% coverage.
  • cache2go - In-memory key:value cache which supports automatic invalidation based on timeouts.
  • clover - A lightweight document-oriented NoSQL database written in pure Golang.
  • clusteredBigCache - BigCache with clustering support and individual item expiration.
  • cockroach - Scalable, Geo-Replicated, Transactional Datastore.
  • Coffer - Simple ACID key-value database that supports transactions.
  • column - High-performance, columnar, embeddable in-memory store with bitmap indexing and transactions.
  • couchcache - RESTful caching micro-service backed by Couchbase server.
  • CovenantSQL - CovenantSQL is a SQL database on blockchain.
  • Databunker - Personally identifiable information (PII) storage service built to comply with GDPR and CCPA.
  • dgraph - Scalable, Distributed, Low Latency, High Throughput Graph Database.
  • diskv - Home-grown disk-backed key-value store.
  • dtm - A distributed transaction manager. Support XA, TCC, SAGA, Reliable Messages.
  • eliasdb - Dependency-free, transactional graph database with REST API, phrase search and SQL-like query language.
  • fastcache - fast thread-safe inmemory cache for big number of entries. Minimizes GC overhead.
  • GCache - Cache library with support for expirable Cache, LFU, LRU and ARC.
  • go-cache - In-memory key:value store/cache (similar to Memcached) library for Go, suitable for single-machine applications.
  • godis - A Golang implemented high-performance Redis server and cluster.
  • goleveldb - Implementation of the LevelDB key/value database in Go.
  • groupcache - Groupcache is a caching and cache-filling library, intended as a replacement for memcached in many cases.
  • hare - A simple database management system that stores each table as a text file of line-delimited JSON.
  • immudb - immudb is a lightweight, high-speed immutable database for systems and applications written in Go.
  • influxdb - Scalable datastore for metrics, events, and real-time analytics.
  • Kivik - Kivik provides a common Go and GopherJS client library for CouchDB, PouchDB, and similar databases.
  • ledisdb - Ledisdb is a high performance NoSQL like Redis based on LevelDB.
  • levigo - Levigo is a Go wrapper for LevelDB.
  • lotusdb - Fast k/v database compatible with lsm and b+tree.
  • Milvus - Milvus is a vector database for embedding management, analytics and search.
  • moss - Moss is a simple LSM key-value storage engine written in 100% Go.
  • nutsdb - Nutsdb is a simple, fast, embeddable, persistent key/value store written in pure Go. It supports fully serializable transactions and many data structures such as list, set, sorted set.
  • piladb - Lightweight RESTful database engine based on stack data structures.
  • pogreb - Embedded key-value store for read-heavy workloads.
  • prometheus - Monitoring system and time series database.
  • pudge - Fast and simple key/value store written using Go's standard library.
  • rosedb - An embedded k-v database based on LSM+WAL, supports string, list, hash, set, zset.
  • rqlite - The lightweight, distributed, relational database built on SQLite.
  • Scribble - Tiny flat file JSON store.
  • slowpoke - Key-value store with persistence.
  • tempdb - Key-value store for temporary items.
  • tidb - TiDB is a distributed SQL database. Inspired by the design of Google F1.
  • tiedot - Your NoSQL database powered by Golang.
  • ttlcache - In-memory key value storage with TTL for each record.
  • unitdb - Fast timeseries database for IoT, realtime messaging applications. Access unitdb with pubsub over tcp or websocket using github.com/unit-io/unitd application.
  • Vasto - A distributed high-performance key-value store. On Disk. Eventual consistent. HA. Able to grow or shrink without service interruption.
  • VictoriaMetrics - fast, resource-effective and scalable open source time series database. May be used as long-term remote storage for Prometheus. Supports PromQL.

Database schema migration.

  • atlas - A Database Toolkit. A CLI designed to help companies better work with their data.
  • avro - Discover SQL schemas and convert them to AVRO schemas. Query SQL records into AVRO bytes.
  • darwin - Database schema evolution library for Go.
  • go-fixtures - Django style fixtures for Golang's excellent built-in database/sql library.
  • go-pg-migrate - CLI-friendly package for go-pg migrations management.
  • go-pg-migrations - A Go package to help write migrations with go-pg/pg.
  • goavro - A Go package that encodes and decodes Avro data.
  • godfish - Database migration manager, works with native query language. Support for cassandra, mysql, postgres, sqlite3.
  • goose - Database migration tool. You can manage your database's evolution by creating incremental SQL or Go scripts.
  • gormigrate - Database schema migration helper for Gorm ORM.
  • migrate - Database migrations. CLI and Golang library.
  • migrator - Dead simple Go database migration library.
  • migrator - MySQL database migrator designed to run migrations to your features and manage database schema update with intuitive go code.
  • pravasan - Simple Migration tool - currently for MySQL but planning to soon support Postgres, SQLite, MongoDB, etc.
  • schema - Library to embed schema migrations for database/sql-compatible databases inside your Go binaries.
  • skeema - Pure-SQL schema management system for MySQL, with support for sharding and external online schema change tools.
  • soda - Database migration, creation, ORM, etc... for MySQL, PostgreSQL, and SQLite.
  • sql-migrate - Database migration tool. Allows embedding migrations into the application using go-bindata.
  • sqlize - Database migration generator. Allows generate sql migration from model and existing sql by differ them.

Database tools.

  • chproxy - HTTP proxy for ClickHouse database.
  • clickhouse-bulk - Collects small insterts and sends big requests to ClickHouse servers.
  • datagen - A fast data generator that's multi-table aware and supports multi-row DML.
  • dbbench - Database benchmarking tool with support for several databases and scripts.
  • go-mysql - Go toolset to handle MySQL protocol and replication.
  • go-mysql-elasticsearch - Sync your MySQL data into Elasticsearch automatically.
  • kingshard - kingshard is a high performance proxy for MySQL powered by Golang.
  • myreplication - MySql binary log replication listener. Supports statement and row based replication.
  • octillery - Go package for sharding databases ( Supports every ORM or raw SQL ).
  • orchestrator - MySQL replication topology manager & visualizer.
  • pg_timetable - Advanced scheduling for PostgreSQL.
  • pgweb - Web-based PostgreSQL database browser.
  • prep - Use prepared SQL statements without changing your code.
  • pREST - Simplify and accelerate development, โšก instant, realtime, high-performance on any Postgres application, existing or new.
  • rwdb - rwdb provides read replica capability for multiple database servers setup.
  • vitess - vitess provides servers and tools which facilitate scaling of MySQL databases for large scale web services.

SQL query builder, libraries for building and using SQL.

  • bqb - Lightweight and easy to learn query builder.
  • buildsqlx - Go database query builder library for PostgreSQL.
  • dbq - Zero boilerplate database operations for Go.
  • Dotsql - Go library that helps you keep sql files in one place and use them with ease.
  • gendry - Non-invasive SQL builder and powerful data binder.
  • godbal - Database Abstraction Layer (dbal) for go. Support SQL builder and get result easily.
  • goqu - Idiomatic SQL builder and query library.
  • gosql - SQL Query builder with better null values support.
  • hasql - Library for accessing multi-host SQL database installations.
  • igor - Abstraction layer for PostgreSQL that supports advanced functionality and uses gorm-like syntax.
  • jet - Framework for writing type-safe SQL queries in Go, with ability to easily convert database query result into desired arbitrary object structure.
  • mpath - MPTT (Modified Preorder Tree Traversal) package for SQL records - materialized path realisation.
  • ormlite - Lightweight package containing some ORM-like features and helpers for sqlite databases.
  • ozzo-dbx - Powerful data retrieval methods as well as DB-agnostic query building capabilities.
  • qry - Tool that generates constants from files with raw SQL queries.
  • sq - Type-safe SQL builder and struct mapper for Go.
  • sqlf - Fast SQL query builder.
  • sqlingo - A lightweight DSL to build SQL in Go.
  • sqrl - SQL query builder, fork of Squirrel with improved performance.
  • Squalus - Thin layer over the Go SQL package that makes it easier to perform queries.
  • Squirrel - Go library that helps you build SQL queries.
  • xo - Generate idiomatic Go code for databases based on existing schema definitions or custom queries supporting PostgreSQL, MySQL, SQLite, Oracle, and Microsoft SQL Server.

โฌ† back to top

Database Drivers

Libraries for connecting and operating databases.

  • Relational Databases
  • avatica - Apache Avatica/Phoenix SQL driver for database/sql.
  • bgc - Datastore Connectivity for BigQuery for go.
  • firebirdsql - Firebird RDBMS SQL driver for Go.
  • go-adodb - Microsoft ActiveX Object DataBase driver for go that uses database/sql.
  • go-mssqldb - Microsoft MSSQL driver for Go.
  • go-oci8 - Oracle driver for go that uses database/sql.
  • go-sql-driver/mysql - MySQL driver for Go.
  • go-sqlite3 - SQLite3 driver for go that uses database/sql.
  • godror - Oracle driver for Go, using the ODPI-C driver.
  • gofreetds - Microsoft MSSQL driver. Go wrapper over FreeTDS.
  • pgx - PostgreSQL driver supporting features beyond those exposed by database/sql.
  • pig - Simple pgx wrapper to execute and scan query results easily.
  • pq - Pure Go Postgres driver for database/sql.
  • Sqinn-Go - SQLite with pure Go.
  • sqlhooks - Attach hooks to any database/sql driver.

  • NoSQL Databases

  • aerospike-client-go - Aerospike client in Go language.
  • arangolite - Lightweight golang driver for ArangoDB.
  • asc - Datastore Connectivity for Aerospike for go.
  • forestdb - Go bindings for ForestDB.
  • go-couchbase - Couchbase client in Go.
  • go-pilosa - Go client library for Pilosa.
  • go-rejson - Golang client for redislabs' ReJSON module using Redigo golang client. Store and manipulate structs as JSON objects in redis with ease.
  • gocb - Official Couchbase Go SDK.
  • gocosmos - REST client and standard database/sql driver for Azure Cosmos DB.
  • gocql - Go language driver for Apache Cassandra.
  • godis - redis client implement by golang, inspired by jedis.
  • godscache - A wrapper for the Google Cloud Platform Go Datastore package that adds caching using memcached.
  • gomemcache - memcache client library for the Go programming language.
  • gorethink - Go language driver for RethinkDB.
  • goriak - Go language driver for Riak KV.
  • mgm - MongoDB model-based ODM for Go (based on official MongoDB driver).
  • mgo - (unmaintained) MongoDB driver for the Go language that implements a rich and well tested selection of features under a very simple API following standard Go idioms.
  • mongo-go-driver - Official MongoDB driver for the Go language.
  • neo4j - Neo4j Rest API Bindings for Golang.
  • Neo4j-GO - Neo4j REST Client in golang.
  • neoism - Neo4j client for Golang.
  • qmgo - The MongoDB driver for Go. Itโ€˜s based on official MongoDB driver but easier to use like Mgo.
  • redeo - Redis-protocol compatible TCP servers/services.
  • redigo - Redigo is a Go client for the Redis database.
  • redis - Redis client for Golang.
  • rueidis - Fast Redis RESP3 client with auto pipelining and server-assisted client side caching.
  • xredis - Typesafe, customizable, clean & easy to use Redis client.

  • Search and Analytic Databases.

  • bleve - Modern text indexing library for go.
  • elastic - Elasticsearch client for Go.
  • elasticsql - Convert sql to elasticsearch dsl in Go.
  • elastigo - Elasticsearch client library.
  • go-elasticsearch - Official Elasticsearch client for Go.
  • goes - Library to interact with Elasticsearch.
  • riot - Go Open Source, Distributed, Simple and efficient Search Engine.
  • skizze - probabilistic data-structures service and storage.

  • Multiple Backends.

  • cachego - Golang Cache component for multiple drivers.
  • cayley - Graph database with support for multiple backends.
  • dsc - Datastore connectivity for SQL, NoSQL, structured files.
  • gokv - Simple key-value store abstraction and implementations for Go (Redis, Consul, etcd, bbolt, BadgerDB, LevelDB, Memcached, DynamoDB, S3, PostgreSQL, MongoDB, CockroachDB and many more).

โฌ† back to top

Date and Time

Libraries for working with dates and times.

  • carbon - A simple, semantic and developer-friendly golang package for datetime.
  • carbon - Simple Time extension with a lot of util methods, ported from PHP Carbon library.
  • cronrange - Parses Cron-style time range expressions, checks if the given time is within any ranges.
  • date - Augments Time for working with dates, date ranges, time spans, periods, and time-of-day.
  • dateparse - Parse date's without knowing format in advance.
  • durafmt - Time duration formatting library for Go.
  • feiertage - Set of functions to calculate public holidays in Germany, incl. specialization on the states of Germany (Bundeslรคnder). Things like Easter, Pentecost, Thanksgiving...
  • go-persian-calendar - The implementation of the Persian (Solar Hijri) Calendar in Go (golang).
  • go-str2duration - Convert string to duration. Support time.Duration returned string and more.
  • go-sunrise - Calculate the sunrise and sunset times for a given location.
  • go-week - An efficient package to work with ISO8601 week dates.
  • gostradamus - A Go package for working with dates.
  • iso8601 - Efficiently parse ISO8601 date-times without regex.
  • kair - Date and Time - Golang Formatting Library.
  • now - Now is a time toolkit for golang.
  • NullTime - Nullable time.Time.
  • strftime - C99-compatible strftime formatter.
  • timespan - For interacting with intervals of time, defined as a start time and a duration.
  • timeutil - Useful extensions (Timedelta, Strftime, ...) to the golang's time package.
  • tuesday - Ruby-compatible Strftime function.

โฌ† back to top

Distributed Systems

Packages that help with building Distributed Systems.

  • arpc - More effective network communication, support two-way-calling, notify, broadcast.
  • celeriac - Library for adding support for interacting and monitoring Celery workers, tasks and events in Go.
  • consistent - Consistent hashing with bounded loads.
  • consistenthash - Consistent hashing with configurable replicas.
  • dht - BitTorrent Kademlia DHT implementation.
  • digota - grpc ecommerce microservice.
  • dot - distributed sync using operational transformation/OT.
  • doublejump - A revamped Google's jump consistent hash.
  • dragonboat - A feature complete and high performance multi-group Raft library in Go.
  • drmaa - Job submission library for cluster schedulers based on the DRMAA standard.
  • dynamolock - DynamoDB-backed distributed locking implementation.
  • dynatomic - A library for using DynamoDB as an atomic counter.
  • emitter-io - High performance, distributed, secure and low latency publish-subscribe platform built with MQTT, Websockets and love.
  • failured - adaptive accrual failure detector for distributed systems.
  • flowgraph - flow-based programming package.
  • gleam - Fast and scalable distributed map/reduce system written in pure Go and Luajit, combining Go's high concurrency with Luajit's high performance, runs standalone or distributed.
  • glow - Easy-to-Use scalable distributed big data processing, Map-Reduce, DAG execution, all in pure Go.
  • gmsec - A Go distributed systems development framework.
  • go-doudou - A gossip protocol and OpenAPI 3.0 spec based decentralized microservice framework. Built-in go-doudou cli focusing on low-code and rapid dev can power up your productivity.
  • go-health - Library for enabling asynchronous dependency health checks in your service.
  • go-jump - Port of Google's "Jump" Consistent Hash function.
  • go-kit - Microservice toolkit with support for service discovery, load balancing, pluggable transports, request tracking, etc.
  • go-micro - A distributed systems development framework.
  • go-mysql-lock - MySQL based distributed lock.
  • go-pdu - A decentralized identity-based social network.
  • go-sundheit - A library built to provide support for defining async service health checks for golang services.
  • go-zero - A web and rpc framework. It's born to ensure the stability of the busy sites with resilient design. Builtin goctl greatly improves the development productivity.
  • gorpc - Simple, fast and scalable RPC library for high load.
  • grpc-go - The Go language implementation of gRPC. HTTP/2 based RPC.
  • hprose - Very newbility RPC Library, support 25+ languages now.
  • jsonrpc - The jsonrpc package helps implement of JSON-RPC 2.0.
  • jsonrpc - JSON-RPC 2.0 HTTP client implementation.
  • Kratos - A modular-designed and easy-to-use microservices framework in Go.
  • liftbridge - Lightweight, fault-tolerant message streams for NATS.
  • lura - Ultra performant API Gateway framework with middlewares.
  • micro - A distributed systems runtime for the cloud and beyond.
  • NATS - Lightweight, high performance messaging system for microservices, IoT, and cloud native systems.
  • outboxer - Outboxer is a go library that implements the outbox pattern.
  • pglock - PostgreSQL-backed distributed locking implementation.
  • pjrpc - Golang JSON-RPC Server-Client with Protobuf spec.
  • raft - Golang implementation of the Raft consensus protocol, by HashiCorp.
  • raft - Go implementation of the Raft consensus protocol, by CoreOS.
  • rain - BitTorrent client and library.
  • redis-lock - Simplified distributed locking implementation using Redis.
  • resgate - Realtime API Gateway for building REST, real time, and RPC APIs, where all clients are synchronized seamlessly.
  • ringpop-go - Scalable, fault-tolerant application-layer sharding for Go applications.
  • rpcx - Distributed pluggable RPC service framework like alibaba Dubbo.
  • Semaphore - A straightforward (micro) service orchestrator.
  • sleuth - Library for master-less p2p auto-discovery and RPC between HTTP services (using ZeroMQ).
  • torrent - BitTorrent client package.

โฌ† back to top

Dynamic DNS

Tools for updating dynamic DNS records.

  • DDNS - Personal DDNS client with Digital Ocean Networking DNS as backend.
  • dyndns - Background Go process to regularly and automatically check your IP Address and make updates to (one or many) Dynamic DNS records for Google domains whenever your address changes.
  • GoDNS - A dynamic DNS client tool, supports DNSPod & HE.net, written in Go.

โฌ† back to top

Email

Libraries and tools that implement email creation and sending.

  • chasquid - SMTP server written in Go.
  • douceur - CSS inliner for your HTML emails.
  • email - A robust and flexible email library for Go.
  • email-verifier - A Go library for email verification without sending any emails.
  • go-dkim - DKIM library, to sign & verify email.
  • go-email-validator - Modular email validator for syntax, disposable, smtp, etc... checking.
  • go-imap - IMAP library for clients and servers.
  • go-message - Streaming library for the Internet Message Format and mail messages.
  • go-premailer - Inline styling for HTML mail in Go.
  • go-simple-mail - Very simple package to send emails with SMTP Keep Alive and two timeouts: Connect and Send.
  • Hectane - Lightweight SMTP client providing an HTTP API.
  • hermes - Golang package that generates clean, responsive HTML e-mails.
  • mailchain - Send encrypted emails to blockchain addresses written in Go.
  • mailgun-go - Go library for sending mail with the Mailgun API.
  • MailHog - Email and SMTP testing with web and API interface.
  • mailx - Mailx is a library that makes it easier to send email via SMTP. It is an enhancement of the golang standard library net/smtp.
  • SendGrid - SendGrid's Go library for sending email.
  • smtp - SMTP server protocol state machine.
  • smtpmock - Lightweight configurable multithreaded fake SMTP server. Mimic any SMTP behaviour for your test environment.
  • truemail-go - Configurable Golang email validator/verifier. Verify email via Regex, DNS, SMTP and even more.

โฌ† back to top

Embeddable Scripting Languages

Embedding other languages inside your go code.

  • anko - Scriptable interpreter written in Go.
  • binder - Go to Lua binding library, based on gopher-lua.
  • cel-go - Fast, portable, non-Turing complete expression evaluation with gradual typing.
  • ecal - A simple embeddable scripting language which supports concurrent event processing.
  • expr - Expression evaluation engine for Go: fast, non-Turing complete, dynamic typing, static typing.
  • gentee - Embeddable scripting programming language.
  • gisp - Simple LISP in Go.
  • go-duktape - Duktape JavaScript engine bindings for Go.
  • go-lua - Port of the Lua 5.2 VM to pure Go.
  • go-php - PHP bindings for Go.
  • go-python - naive go bindings to the CPython C-API.
  • goja - ECMAScript 5.1(+) implementation in Go.
  • golua - Go bindings for Lua C API.
  • gopher-lua - Lua 5.1 VM and compiler written in Go.
  • gval - A highly customizable expression language written in Go.
  • metacall - Cross-platform Polyglot Runtime which supports NodeJS, JavaScript, TypeScript, Python, Ruby, C#, WebAssembly, Java, Cobol and more.
  • ngaro - Embeddable Ngaro VM implementation enabling scripting in Retro.
  • prolog - Embeddable Prolog.
  • purl - Perl 5.18.2 embedded in Go.
  • tengo - Bytecode compiled script language for Go.

โฌ† back to top

Error Handling

Libraries for handling errors.

  • emperror - Error handling tools and best practices for Go libraries and applications.
  • eris - A better way to handle, trace, and log errors in Go. Compatible with the standard error library and github.com/pkg/errors.
  • errlog - Hackable package that determines responsible source code for an error (and some other fast-debugging features). Pluggable to any logger in-place.
  • errors - Drop-in replacement for the standard library errors package and github.com/pkg/errors. Provides various error handling primitives.
  • errors - Package that provides simple error handling primitives.
  • errors - Simple golang error handling with classification primitives.
  • errors - The most simple error wrapper with awesome performance and minimal memory overhead.
  • errors - Drop-in replacement for builting Go errors. This is a minimal error handling package with custom error types, user friendly messages, Unwrap & Is. With very easy to use and straightforward helper functions.
  • errorx - A feature rich error package with stack traces, composition of errors and more.
  • Falcon - A Simple Yet Highly Powerful Package For Error Handling.
  • go-multierror - Go (golang) package for representing a list of errors as a single error.
  • tracerr - Golang errors with stack trace and source fragments.

โฌ† back to top

File Handling

Libraries for handling files and file systems.

  • afero - FileSystem Abstraction System for Go.
  • afs - Abstract File Storage (mem, scp, zip, tar, cloud: s3, gs) for Go.
  • baraka - A library to process http file uploads easily.
  • bigfile - A file transfer system, support to manage files with http api, rpc call and ftp client.
  • checksum - Compute message digest, like MD5, SHA256, SHA1, CRC or BLAKE2s, for large files.
  • copy - Copy directory recursively.
  • flop - File operations library which aims to mirror feature parity with GNU cp.
  • gdu - Disk usage analyzer with console interface.
  • go-csv-tag - Load csv file using tag.
  • go-decent-copy - Copy files for humans.
  • go-exiftool - Go bindings for ExifTool, the well-known library used to extract as much metadata as possible (EXIF, IPTC, ...) from files (pictures, PDF, office, ...).
  • go-gtfs - Load gtfs files in go.
  • gofs - A file synchronization tool out of the box.
  • gut/yos - Simple and reliable package for file operations like copy/move/diff/list on files, directories and symbolic links.
  • higgs - A tiny cross-platform Go library to hide/unhide files and directories.
  • notify - File system event notification library with simple API, similar to os/signal.
  • opc - Load Open Packaging Conventions (OPC) files for Go.
  • parquet - Read and write parquet files.
  • pathtype - Treat paths as their own type instead of using strings.
  • pdfcpu - PDF processor.
  • skywalker - Package to allow one to concurrently go through a filesystem with ease.
  • stl - Modules to read and write STL (stereolithography) files. Concurrent algorithm for reading.
  • tarfs - Implementation of the FileSystem interface for tar files.
  • todotxt - Go library for Gina Trapani's todo.txt files, supports parsing and manipulating of task lists in the todo.txt format.
  • vfs - A pluggable, extensible, and opinionated set of filesystem functionality for Go across a number of filesystem types such as os, S3, and GCS.

โฌ† back to top

Financial

Packages for accounting and finance.

  • accounting - money and currency formatting for golang.
  • ach - A reader, writer, and valdiator for Automated Clearing House (ACH) files.
  • currency - Handles currency amounts, provides currency information and formatting.
  • currency - High performant & accurate currency computation package.
  • decimal - Arbitrary-precision fixed-point decimal numbers.
  • fastme - Fast extensible matching engine Go implementation.
  • go-finance - Comprehensive financial markets data in Go.
  • go-finance - Library of financial functions for time value of money (annuities), cash flow, interest rate conversions, bonds and depreciation calculations.
  • go-finance - Module to fetch exchange rates, check VAT numbers via VIES and check IBAN bank account numbers.
  • go-finnhub - Client for stock market, forex and crypto data from finnhub.io. Access real-time financial market data from 60+ stock exchanges, 10 forex brokers, and 15+ crypto exchanges.
  • go-money - Implementation of Fowler's Money pattern.
  • ofxgo - Query OFX servers and/or parse the responses (with example command-line client).
  • orderbook - Matching Engine for Limit Order Book in Golang.
  • payme - QR code generator (ASCII & PNG) for SEPA payments.
  • sleet - One unified interface for multiple Payment Service Providers (PsP) to process online payment.
  • techan - Technical analysis library with advanced market analysis and trading strategies.
  • ticker - Terminal stock watcher and stock position tracker.
  • transaction - Embedded transactional database of accounts, running in multithreaded mode.
  • vat - VAT number validation & EU VAT rates.

โฌ† back to top

Forms

Libraries for working with forms.

  • bind - Bind form data to any Go values.
  • binding - Binds form and JSON data from net/http Request to struct.
  • conform - Keeps user input in check. Trims, sanitizes & scrubs data based on struct tags.
  • form - Decodes url.Values into Go value(s) and Encodes Go value(s) into url.Values. Dual Array and Full map support.
  • formam - decode form's values into a struct.
  • forms - Framework-agnostic library for parsing and validating form/JSON data which supports multipart forms and files.
  • gorilla/csrf - CSRF protection for Go web applications & services.
  • httpin - Decode an HTTP request into a custom struct, including querystring, forms, HTTP headers, etc.
  • nosurf - CSRF protection middleware for Go.
  • qs - Go module for encoding structs into URL query parameters.
  • queryparam - Decode url.Values into usable struct values of standard or custom types.

โฌ† back to top

Functional

Packages to support functional programming in Go.

  • fpGo - Monad, Functional Programming features for Golang.
  • fuego - Functional Experiment in Go.
  • go-underscore - Useful collection of helpfully functional Go collection utilities.
  • gofp - A lodash like powerful utility library for Golang.

โฌ† back to top

Game Development

Awesome game development libraries.

  • Azul3D - 3D game engine written in Go.
  • Ebiten - dead simple 2D game library in Go.
  • engo - Engo is an open-source 2D game engine written in Go. It follows the Entity-Component-System paradigm.
  • g3n - Go 3D Game Engine.
  • go-astar - Go implementation of the A* path finding algorithm.
  • go-sdl2 - Go bindings for the Simple DirectMedia Layer.
  • go3d - Performance oriented 2D/3D math package for Go.
  • gonet - Game server skeleton implemented with golang.
  • goworld - Scalable game server engine, featuring space-entity framework and hot-swapping.
  • Leaf - Lightweight game server framework.
  • nano - Lightweight, facility, high performance golang based game server framework.
  • Oak - Pure Go game engine.
  • Pitaya - Scalable game server framework with clustering support and client libraries for iOS, Android, Unity and others through the C SDK.
  • Pixel - Hand-crafted 2D game library in Go.
  • prototype - Cross-platform (Windows/Linux/Mac) library for creating desktop games using a minimal API.
  • raylib-go - Go bindings for raylib, a simple and easy-to-use library to learn videogames programming.
  • termloop - Terminal-based game engine for Go, built on top of Termbox.
  • tile - Data-oriented and cache-friendly 2D Grid library (TileMap), includes pathfinding, observers and import/export.

โฌ† back to top

Generation and Generics

Tools to enhance the language with features like generics via code generation.

  • efaceconv - Code generation tool for high performance conversion from interface{} to immutable type without allocations.
  • gen - Code generation tool for โ€˜genericsโ€™-like functionality.
  • generis - Code generation tool providing generics, free-form macros, conditional compilation and HTML templating.
  • go-enum - Code generation for enums from code comments.
  • go-linq - .NET LINQ-like query methods for Go.
  • go-xray - Helpers for making the use of reflection easier.
  • goderive - Derives functions from input types.
  • gotype - Golang source code parsing, usage like reflect package.
  • goverter - Generate converters by defining an interface.
  • GoWrap - Generate decorators for Go interfaces using simple templates.
  • interfaces - Command line tool for generating interface definitions.
  • jennifer - Generate arbitrary Go code without templates.
  • pkgreflect - Go preprocessor for package scoped reflection.
  • typeregistry - A library to create type dynamically.

โฌ† back to top

Geographic

Geographic tools and servers

  • geoserver - geoserver Is a Go Package For Manipulating a GeoServer Instance via the GeoServer REST API.
  • gismanager - Publish Your GIS Data(Vector Data) to PostGIS and Geoserver.
  • godal - Go wrapper for GDAL.
  • mbtileserver - A simple Go-based server for map tiles stored in mbtiles format.
  • osm - Library for reading, writing and working with OpenStreetMap data and APIs.
  • pbf - OpenStreetMap PBF golang encoder/decoder.
  • S2 geojson - Convert geojson to s2 cells & demonstrating some S2 geometry features on map.
  • S2 geometry - S2 geometry library in Go.
  • simplefeatures - simplesfeatures is a 2D geometry library that provides Go types that model geometries, as well as algorithms that operate on them.
  • Tile38 - Geolocation DB with spatial index and realtime geofencing.
  • WGS84 - Library for Coordinate Conversion and Transformation (ETRS89, OSGB36, NAD83, RGF93, Web Mercator, UTM).

โฌ† back to top

Go Compilers

Tools for compiling Go to other languages.

  • c4go - Transpile C code to Go code.
  • esp32 - Transpile Go into Arduino code.
  • f4go - Transpile FORTRAN 77 code to Go code.
  • gopherjs - Compiler from Go to JavaScript.
  • tardisgo - Golang to Haxe to CPP/CSharp/Java/JavaScript transpiler.

โฌ† back to top

Goroutines

Tools for managing and working with Goroutines.

  • ants - A high-performance and low-cost goroutine pool in Go.
  • artifex - Simple in-memory job queue for Golang using worker-based dispatching.
  • async - An alternative sync library for Go (Future, Promise, Locks).
  • async - A safe way to execute functions asynchronously, recovering them in case of panic.
  • breaker - Flexible mechanism to make execution flow interruptible.
  • channelify - Transform your function to return channels for easy and powerful parallel processing.
  • concurrency-limiter - Concurrency limiter with support for timeouts , dynamic priority and context cancellation of goroutines.
  • conexec - A concurrent toolkit to help execute funcs concurrently in an efficient and safe way. It supports specifying the overall timeout to avoid blocking and uses goroutine pool to improve efficiency.
  • cyclicbarrier - CyclicBarrier for golang.
  • execpool - A pool built around exec.Cmd that spins up a given number of processes in advance and attaches stdin and stdout to them when needed. Very similar to FastCGI or Apache Prefork MPM but works for any command.
  • go-floc - Orchestrate goroutines with ease.
  • go-flow - Control goroutines execution order.
  • go-tools/multithreading - Manage a pool of goroutines using this lightweight library with a simple API.
  • go-trylock - TryLock support on read-write lock for Golang.
  • go-waitgroup - Like sync.WaitGroup with error handling and concurrency control.
  • go-workers - Easily and safely run workers for large data processing pipelines.
  • goccm - Go Concurrency Manager package limits the number of goroutines that allowed to run concurrently.
  • gohive - A highly performant and easy to use Goroutine pool for Go.
  • gollback - asynchronous simple function utilities, for managing execution of closures and callbacks.
  • gowl - Gowl is a process management and process monitoring tool at once. An infinite worker pool gives you the ability to control the pool and processes and monitor their status.
  • goworker - goworker is a Go-based background worker.
  • gowp - gowp is concurrency limiting goroutine pool.
  • gpool - manages a resizeable pool of context-aware goroutines to bound concurrency.
  • grpool - Lightweight Goroutine pool.
  • hands - A process controller used to control the execution and return strategies of multiple goroutines.
  • Hunch - Hunch provides functions like: All, First, Retry, Waterfall etc., that makes asynchronous flow control more intuitive.
  • kyoo - Provides an unlimited job queue and concurrent worker pools.
  • neilotoole/errgroup - Drop-in alternative to sync/errgroup, limited to a pool of N worker goroutines.
  • nursery - Structured concurrency in Go.
  • oversight - Oversight is a complete implementation of the Erlang supervision trees.
  • parallel-fn - Run functions in parallel.
  • pond - Minimalistic and High-performance goroutine worker pool written in Go.
  • pool - Limited consumer goroutine or unlimited goroutine pool for easier goroutine handling and cancellation.
  • queue - Gives you a sync.WaitGroup like queue group accessibility. Helps you to throttle and limit goroutines, wait for the end of the all goroutines and much more.
  • routine - go routine control with context, support: Main, Go, Pool and some useful Executors.
  • semaphore - Semaphore pattern implementation with timeout of lock/unlock operations based on channel and context.
  • semaphore - Fast resizable semaphore implementation based on CAS (faster than channel-based semaphore implementations).
  • stl - Software transactional locks based on Software Transactional Memory (STM) concurrency control mechanism.
  • threadpool - Golang threadpool implementation.
  • tunny - Goroutine pool for golang.
  • worker-pool - goworker is a Go simple async worker pool.
  • workerpool - Goroutine pool that limits the concurrency of task execution, not the number of tasks queued.

โฌ† back to top

GUI

Libraries for building GUI Applications.

Toolkits

  • app - Package to create apps with GO, HTML and CSS. Supports: MacOS, Windows in progress.
  • fyne - Cross platform native GUIs designed for Go based on Material Design. Supports: Linux, macOS, Windows, BSD, iOS and Android.
  • go-astilectron - Build cross platform GUI apps with GO and HTML/JS/CSS (powered by Electron).
  • go-gtk - Go bindings for GTK.
  • go-sciter - Go bindings for Sciter: the Embeddable HTML/CSS/script engine for modern desktop UI development. Cross platform.
  • gotk3 - Go bindings for GTK3.
  • gowd - Rapid and simple desktop UI development with GO, HTML, CSS and NW.js. Cross platform.
  • qt - Qt binding for Go (support for Windows / macOS / Linux / Android / iOS / Sailfish OS / Raspberry Pi).
  • ui - Platform-native GUI library for Go. Cross platform.
  • Wails - Mac, Windows, Linux desktop apps with HTML UI using built-in OS HTML renderer.
  • walk - Windows application library kit for Go.
  • webview - Cross-platform webview window with simple two-way JavaScript bindings (Windows / macOS / Linux).

Interaction

  • go-appindicator - Go bindings for libappindicator3 C library.
  • gosx-notifier - OSX Desktop Notifications library for Go.
  • mac-activity-tracker - OSX library to notify about any (pluggable) activity on your machine.
  • mac-sleep-notifier - OSX Sleep/Wake notifications in golang.
  • robotgo - Go Native cross-platform GUI system automation. Control the mouse, keyboard and other.
  • systray - Cross platform Go library to place an icon and menu in the notification area.
  • trayhost - Cross-platform Go library to place an icon in the host operating system's taskbar.
  • zenity - Cross-platform Go library and CLI to create simple dialogs that interact graphically with the user.

โฌ† back to top

Hardware

Libraries, tools, and tutorials for interacting with hardware.

  • arduino-cli - Official Arduino CLI and library. Can run standalone, or be incorporated into larger Go projects.
  • emgo - Go-like language for programming embedded systems (e.g. STM32 MCU).
  • ghw - Golang hardware discovery/inspection library.
  • go-osc - Open Sound Control (OSC) bindings for Go.
  • go-rpio - GPIO for Go, doesn't require cgo.
  • goroslib - Robot Operating System (ROS) library for Go.
  • joystick - a polled API to read the state of an attached joystick.
  • sysinfo - A pure Go library providing Linux OS / kernel / hardware system information.

โฌ† back to top

Images

Libraries for manipulating images.

  • bild - Collection of image processing algorithms in pure Go.
  • bimg - Small package for fast and efficient image processing using libvips.
  • cameron - An avatar generator for Go.
  • canvas - Vector graphics to PDF, SVG or rasterized image.
  • darkroom - An image proxy with changeable storage backends and image processing engines with focus on speed and resiliency.
  • draft - Generate High Level Microservice Architecture diagrams for GraphViz using simple YAML syntax.
  • geopattern - Create beautiful generative image patterns from a string.
  • gg - 2D rendering in pure Go.
  • gift - Package of image processing filters.
  • gltf - Efficient and robust glTF 2.0 reader, writer and validator.
  • go-cairo - Go binding for the cairo graphics library.
  • go-gd - Go binding for GD library.
  • go-nude - Nudity detection with Go.
  • go-opencv - Go bindings for OpenCV.
  • go-webcolors - Port of webcolors library from Python to Go.
  • go-webp - Library for encode and decode webp pictures, using libwebp.
  • gocv - Go package for computer vision using OpenCV 3.3+.
  • goimagehash - Go Perceptual image hashing package.
  • goimghdr - The imghdr module determines the type of image contained in a file for Go.
  • govatar - Library and CMD tool for generating funny avatars.
  • govips - A lightning fast image processing and resizing library for Go.
  • gowitness - Screenshoting webpages using go and headless chrome on command line.
  • gridder - A Grid based 2D Graphics library.
  • image2ascii - Convert image to ASCII.
  • imagick - Go binding to ImageMagick's MagickWand C API.
  • imaginary - Fast and simple HTTP microservice for image resizing.
  • imaging - Simple Go image processing package.
  • img - Selection of image manipulation tools.
  • ln - 3D line art rendering in Go.
  • mergi - Tool & Go library for image manipulation (Merge, Crop, Resize, Watermark, Animate).
  • mort - Storage and image processing server written in Go.
  • mpo - Decoder and conversion tool for MPO 3D Photos.
  • picfit - An image resizing server written in Go.
  • pt - Path tracing engine written in Go.
  • resize - Image resizing for Go with common interpolation methods.
  • rez - Image resizing in pure Go and SIMD.
  • scout - Scout is a standalone open source software solution for DIY video security.
  • smartcrop - Finds good crops for arbitrary images and crop sizes.
  • steganography - Pure Go Library for LSB steganography.
  • stegify - Go tool for LSB steganography, capable of hiding any file within an image.
  • svgo - Go Language Library for SVG generation.
  • tga - Package tga is a TARGA image format decoder/encoder.
  • webp-server - Simple and minimal image server capable of storing, resizing, converting and caching images.

โฌ† back to top

IoT (Internet of Things)

Libraries for programming devices of the IoT.

  • connectordb - Open-Source Platform for Quantified Self & IoT.
  • devices - Suite of libraries for IoT devices, experimental for x/exp/io.
  • eywa - Project Eywa is essentially a connection manager that keeps track of connected devices.
  • flogo - Project Flogo is an Open Source Framework for IoT Edge Apps & Integration.
  • gatt - Gatt is a Go package for building Bluetooth Low Energy peripherals.
  • gobot - Gobot is a framework for robotics, physical computing, and the Internet of Things.
  • huego - An extensive Philips Hue client library for Go.
  • iot - IoT is a simple framework for implementing a Google IoT Core device.
  • mainflux - Industrial IoT Messaging and Device Management Server.
  • periph - Peripherals I/O to interface with low-level board facilities.
  • sensorbee - Lightweight stream processing engine for IoT.

โฌ† back to top

Job Scheduler

Libraries for scheduling jobs.

  • cdule - Job scheduler library with database support
  • cheek - A simple crontab like scheduler that aims to offer a KISS approach to job scheduling.
  • clockwerk - Go package to schedule periodic jobs using a simple, fluent syntax.
  • cronticker - A ticker implementation to support cron schedules.
  • go-cron - Simple Cron library for go that can execute closures or functions at varying intervals, from once a second to once a year on a specific date and time. Primarily for web applications and long running daemons.
  • go-quartz - Simple, zero-dependency scheduling library for Go.
  • gocron - Easy and fluent Go job scheduling. This is an actively maintained fork of jasonlvhit/gocron.
  • goflow - A workflow orchestrator and scheduler for rapid prototyping of ETL/ML/AI pipelines.
  • gron - Define time-based tasks using a simple Go API and Gronโ€™s scheduler will run them accordingly.
  • gronx - Cron expression parser, task runner and daemon consuming crontab like task list.
  • JobRunner - Smart and featureful cron job scheduler with job queuing and live monitoring built in.
  • jobs - Persistent and flexible background jobs library.
  • leprechaun - Job scheduler that supports webhooks, crons and classic scheduling.
  • sched - A job scheduler with the ability to fast-forward time.
  • scheduler - Cronjobs scheduling made easy.
  • tasks - An easy to use in-process scheduler for recurring tasks in Go.

โฌ† back to top

JSON

Libraries for working with JSON.

  • ajson - Abstract JSON for golang with JSONPath support.
  • ask - Easy access to nested values in maps and slices. Works in combination with encoding/json and other packages that "Unmarshal" arbitrary data into Go data-types.
  • dynjson - Client-customizable JSON formats for dynamic APIs.
  • ej - Write and read JSON from different sources succinctly.
  • epoch - Contains primitives for marshaling/unmarshaling Unix timestamp/epoch to/from build-in time.Time type in JSON.
  • fastjson - Fast JSON parser and validator for Go. No custom structs, no code generation, no reflection.
  • gjo - Small utility to create JSON objects.
  • GJSON - Get a JSON value with one line of code.
  • go-jsonerror - Go-JsonError is ment to allow us to easily create json response errors that follow the JsonApi spec.
  • go-respond - Go package for handling common HTTP JSON responses.
  • gojq - JSON query in Golang.
  • gojson - Automatically generate Go (golang) struct definitions from example JSON.
  • JayDiff - JSON diff utility written in Go.
  • jettison - Fast and flexible JSON encoder for Go.
  • jscan - High performance zero-allocation JSON iterator.
  • JSON-to-Go - Convert JSON to Go struct.
  • JSON-to-Proto - Convert JSON to Protobuf online.
  • json2go - Advanced JSON to Go struct conversion. Provides package that can parse multiple JSON documents and create struct to fit them all.
  • jsonapi-errors - Go bindings based on the JSON API errors reference.
  • jsoncolor - Drop-in replacement for encoding/json that outputs colorized JSON.
  • jsondiff - JSON diff library for Go based on RFC6902 (JSON Patch).
  • jsonf - Console tool for highlighted formatting and struct query fetching JSON.
  • jsongo - Fluent API to make it easier to create Json objects.
  • jsonhal - Simple Go package to make custom structs marshal into HAL compatible JSON responses.
  • jsonic - Utilities to handle and query JSON without defining structs in a type safe manner.
  • jzon - JSON library with standard compatible API/behavior.
  • kazaam - API for arbitrary transformation of JSON documents.
  • mapslice-json - Go MapSlice for ordered marshal/ unmarshal of maps in JSON.
  • mp - Simple cli email parser. It currently takes stdin and outputs JSON.
  • OjG - Optimized JSON for Go is a high performance parser with a variety of additional JSON tools including JSONPath.
  • omg.jsonparser - Simple JSON parser with validation by condition via golang struct fields tags.
  • ujson - Fast and minimal JSON parser and transformer that works on unstructured JSON.
  • vjson - Go package for validating JSON objects with declaring a JSON schema with fluent API.

โฌ† back to top

Logging

Libraries for generating and working with log files.

  • distillog - distilled levelled logging (think of it as stdlib + log levels).
  • glg - glg is simple and fast leveled logging library for Go.
  • glo - PHP Monolog inspired logging facility with identical severity levels.
  • glog - Leveled execution logs for Go.
  • go-cronowriter - Simple writer that rotate log files automatically based on current date and time, like cronolog.
  • go-log - A logging library with strack traces, object dumping and optional timestamps.
  • go-log - Simple and configurable Logging in Go, with level, formatters and writers.
  • go-log - Log lib supports level and multi handlers.
  • go-log - Log4j implementation in Go.
  • go-logger - Simple logger of Go Programs, with level handlers.
  • gologger - Simple easy to use log lib for go, logs in Colored Console, Simple Console, File or Elasticsearch.
  • gomol - Multiple-output, structured logging for Go with extensible logging outputs.
  • gone/log - Fast, extendable, full-featured, std-lib source compatible log library.
  • httpretty - Pretty-prints your regular HTTP requests on your terminal for debugging (similar to http.DumpRequest).
  • journald - Go implementation of systemd Journal's native API for logging.
  • kemba - A tiny debug logging tool inspired by debug, great for CLI tools and applications.
  • log - An O(1) logging system that allows you to connect one log to multiple writers (e.g. stdout, a file and a TCP connection).
  • log - Structured logging package for Go.
  • log - Simple, configurable and scalable Structured Logging for Go.
  • log - Structured log interface for Go cleanly separates logging facade from its implementation.
  • log-voyage - Full-featured logging saas written in golang.
  • log15 - Simple, powerful logging for Go.
  • logdump - Package for multi-level logging.
  • logex - Golang log lib, supports tracking and level, wrap by standard log lib.
  • logger - Minimalistic logging library for Go.
  • logmatic - Colorized logger for Golang with dynamic log level configuration.
  • logo - Golang logger to different configurable writers.
  • logrus - Structured logger for Go.
  • logrusiowriter - io.Writer implementation using logrus logger.
  • logrusly - logrus plug-in to send errors to a Loggly.
  • logur - An opinionated logger interface and collection of logging best practices with adapters and integrations for well-known libraries (logrus, go-kit log, zap, zerolog, etc).
  • logutils - Utilities for slightly better logging in Go (Golang) extending the standard logger.
  • logxi - 12-factor app logger that is fast and makes you happy.
  • lumberjack - Simple rolling logger, implements io.WriteCloser.
  • mlog - Simple logging module for go, with 5 levels, an optional rotating logfile feature and stdout/stderr output.
  • noodlog - Parametrized JSON logging library which lets you obfuscate sensitive data and marshal any kind of content. No more printed pointers instead of values, nor escape chars for the JSON strings.
  • onelog - Onelog is a dead simple but very efficient JSON logger. It is the fastest JSON logger out there in all scenarios. Also, it is one of the logger with the lowest allocation.
  • ozzo-log - High performance logging supporting log severity, categorization, and filtering. Can send filtered log messages to various targets (e.g. console, network, mail).
  • phuslu/log - Structured Logging Made Easy.
  • rollingwriter - RollingWriter is an auto-rotate io.Writer implementation with multi policies to provide log file rotation.
  • seelog - Logging functionality with flexible dispatching, filtering, and formatting.
  • spew - Implements a deep pretty printer for Go data structures to aid in debugging.
  • sqldb-logger - A logger for Go SQL database driver without modify existing *sql.DB stdlib usage.
  • stdlog - Stdlog is an object-oriented library providing leveled logging. It is very useful for cron jobs.
  • structy/log - A simple to use log system, minimalist but with features for debugging and differentiation of messages.
  • tail - Go package striving to emulate the features of the BSD tail program.
  • xlog - Plugin architecture and flexible log system for Go, with level ctrl, multiple log target and custom log format.
  • xlog - Structured logger for net/context aware HTTP handlers with flexible dispatching.
  • yell - Yet another minimalistic logging library.
  • zap - Fast, structured, leveled logging in Go.
  • zerolog - Zero-allocation JSON logger.
  • zkits-logger - A powerful zero-dependency JSON logger.

โฌ† back to top

Machine Learning

Libraries for Machine Learning.

  • bayesian - Naive Bayesian Classification for Golang.
  • CloudForest - Fast, flexible, multi-threaded ensembles of decision trees for machine learning in pure Go.
  • ddt - Dynamic decision tree, create trees defining customizable rules.
  • eaopt - An evolutionary optimization library.
  • evoli - Genetic Algorithm and Particle Swarm Optimization library.
  • fonet - A Deep Neural Network library written in Go.
  • go-cluster - Go implementation of the k-modes and k-prototypes clustering algorithms.
  • go-deep - A feature-rich neural network library in Go.
  • go-fann - Go bindings for Fast Artificial Neural Networks(FANN) library.
  • go-featureprocessing - Fast and convenient feature processing for low latency machine learning in Go.
  • go-galib - Genetic Algorithms library written in Go / golang.
  • go-pr - Pattern recognition package in Go lang.
  • gobrain - Neural Networks written in go.
  • godist - Various probability distributions, and associated methods.
  • goga - Genetic algorithm library for Go.
  • GoLearn - General Machine Learning library for Go.
  • golinear - liblinear bindings for Go.
  • GoMind - A simplistic Neural Network Library in Go.
  • goml - On-line Machine Learning in Go.
  • gonet - Neural Network for Go.
  • Goptuna - Bayesian optimization framework for black-box functions written in Go. Everything will be optimized.
  • goRecommend - Recommendation Algorithms library written in Go.
  • gorgonia - graph-based computational library like Theano for Go that provides primitives for building various machine learning and neural network algorithms.
  • gorse - An offline recommender system backend based on collaborative filtering written in Go.
  • goscore - Go Scoring API for PMML.
  • gosseract - Go package for OCR (Optical Character Recognition), by using Tesseract C++ library.
  • libsvm - libsvm golang version derived work based on LIBSVM 3.14.
  • m2cgen - A CLI tool to transpile trained classic ML models into a native Go code with zero dependencies, written in Python with Go language support.
  • neat - Plug-and-play, parallel Go framework for NeuroEvolution of Augmenting Topologies (NEAT).
  • neural-go - Multilayer perceptron network implemented in Go, with training via backpropagation.
  • ocrserver - A simple OCR API server, seriously easy to be deployed by Docker and Heroku.
  • onnx-go - Go Interface to Open Neural Network Exchange (ONNX).
  • probab - Probability distribution functions. Bayesian inference. Written in pure Go.
  • randomforest - Easy to use Random Forest library for Go.
  • regommend - Recommendation & collaborative filtering engine.
  • shield - Bayesian text classifier with flexible tokenizers and storage backends for Go.
  • tfgo - Easy to use Tensorflow bindings: simplifies the usage of the official Tensorflow Go bindings. Define computational graphs in Go, load and execute models trained in Python.
  • Varis - Golang Neural Network.

โฌ† back to top

Messaging

Libraries that implement messaging systems.

  • ami - Go client to reliable queues based on Redis Cluster Streams.
  • amqp - Go RabbitMQ Client Library.
  • APNs2 - HTTP/2 Apple Push Notification provider for Go โ€” Send push notifications to iOS, tvOS, Safari and OSX apps.
  • Asynq - A simple, reliable, and efficient distributed task queue for Go built on top of Redis.
  • Beaver - A real time messaging server to build a scalable in-app notifications, multiplayer games, chat apps in web and mobile apps.
  • Benthos - A message streaming bridge between a range of protocols.
  • Bus - Minimalist message bus implementation for internal communication.
  • Centrifugo - Real-time messaging (Websockets or SockJS) server in Go.
  • Chanify - A push notification server send message to your iOS devices.
  • Commander - A high-level event driven consumer/producer supporting various "dialects" such as Apache Kafka.
  • Confluent Kafka Golang Client - confluent-kafka-go is Confluent's Golang client for Apache Kafka and the Confluent Platform.
  • dbus - Native Go bindings for D-Bus.
  • drone-line - Sending Line notifications using a binary, docker or Drone CI.
  • emitter - Emits events using Go way, with wildcard, predicates, cancellation possibilities and many other good wins.
  • event - Implementation of the pattern observer.
  • EventBus - The lightweight event bus with async compatibility.
  • gaurun-client - Gaurun Client written in Go.
  • Glue - Robust Go and Javascript Socket Library (Alternative to Socket.io).
  • go-mq - RabbitMQ client with declarative configuration.
  • go-notify - Native implementation of the freedesktop notification spec.
  • go-nsq - the official Go package for NSQ.
  • go-res - Package for building REST/real-time services where clients are synchronized seamlessly, using NATS and Resgate.
  • go-socket.io - socket.io library for golang, a realtime application framework.
  • go-vitotrol - Client library to Viessmann Vitotrol web service.
  • Gollum - A n:m multiplexer that gathers messages from different sources and broadcasts them to a set of destinations.
  • golongpoll - HTTP longpoll server library that makes web pub-sub simple.
  • gopush-cluster - gopush-cluster is a go push server cluster.
  • gorush - Push notification server using APNs2 and google GCM.
  • gosd - A library for scheduling when to dispatch a message to a channel.
  • guble - Messaging server using push notifications (Google Firebase Cloud Messaging, Apple Push Notification services, SMS) as well as websockets, a REST API, featuring distributed operation and message-persistence.
  • hare - A user friendly library for sending messages and listening to TCP sockets.
  • hub - A Message/Event Hub for Go applications, using publish/subscribe pattern with support for alias like rabbitMQ exchanges.
  • jazz - A simple RabbitMQ abstraction layer for queue administration and publishing and consuming of messages.
  • machinery - Asynchronous task queue/job queue based on distributed message passing.
  • mangos - Pure go implementation of the Nanomsg ("Scalability Protocols") with transport interoperability.
  • melody - Minimalist framework for dealing with websocket sessions, includes broadcasting and automatic ping/pong handling.
  • Mercure - Server and library to dispatch server-sent updates using the Mercure protocol (built on top of Server-Sent Events).
  • messagebus - messagebus is a Go simple async message bus, perfect for using as event bus when doing event sourcing, CQRS, DDD.
  • NATS Go Client - Lightweight and high performance publish-subscribe and distributed queueing messaging system - this is the Go library.
  • nsq-event-bus - A tiny wrapper around NSQ topic and channel.
  • oplog - Generic oplog/replication system for REST APIs.
  • pubsub - Simple pubsub package for go.
  • rabbus - A tiny wrapper over amqp exchanges and queues.
  • rabtap - RabbitMQ swiss army knife cli app.
  • RapidMQ - RapidMQ is a lightweight and reliable library for managing of the local messages queue.
  • redisqueue - redisqueue provides a producer and consumer of a queue that uses Redis streams.
  • rmqconn - RabbitMQ Reconnection. Wrapper over amqp.Connection and amqp.Dial. Allowing to do a reconnection when the connection is broken before forcing the call to the Close () method to be closed.
  • sarama - Go library for Apache Kafka.
  • Uniqush-Push - Redis backed unified push service for server-side notifications to mobile devices.
  • zmq4 - Go interface to ZeroMQ version 4. Also available for version 3 and version 2.

โฌ† back to top

Microsoft Office

  • unioffice - Pure go library for creating and processing Office Word (.docx), Excel (.xlsx) and Powerpoint (.pptx) documents.

Microsoft Excel

Libraries for working with Microsoft Excel.

  • excelize - Golang library for reading and writing Microsoft Excelโ„ข (XLSX) files.
  • go-excel - A simple and light reader to read a relate-db-like excel as a table.
  • goxlsxwriter - Golang bindings for libxlsxwriter for writing XLSX (Microsoft Excel) files.
  • xlsx - Library to simplify reading the XML format used by recent version of Microsoft Excel in Go programs.
  • xlsx - Fast and safe way to read/update your existing Microsoft Excel files in Go programs.

โฌ† back to top

Miscellaneous

Dependency Injection

Libraries for working with dependency injection.

  • alice - Additive dependency injection container for Golang.
  • container - A powerful IoC Container with fluent and easy-to-use interface.
  • di - A dependency injection container for go programming language.
  • dig - A reflection based dependency injection toolkit for Go.
  • dingo - A dependency injection toolkit for Go, based on Guice.
  • fx - A dependency injection based application framework for Go (built on top of dig).
  • gocontainer - Simple Dependency Injection Container.
  • goioc/di - Spring-inspired Dependency Injection Container.
  • google/wire - Automated Initialization in Go.
  • HnH/di - DI container library that is focused on clean API and flexibility.
  • kinit - Customizable dependency injection container with the global mode, cascade initialization and panic-safe finalization.
  • linker - A reflection based dependency injection and inversion of control library with components lifecycle support.
  • nject - A type safe, reflective framework for libraries, tests, and http endpoints, and service startup.
  • wire - Strict Runtime Dependency Injection for Golang.

โฌ† back to top

Project Layout

Unofficial set of patterns for structuring projects.

  • ardanlabs/service - A starter kit for building production grade scalable web service applications.
  • cookiecutter-golang - A Go application boilerplate template for quick starting projects following production best practices.
  • go-sample - A sample layout for Go application projects with the real code.
  • go-starter - An opinionated production-ready RESTful JSON backend template, highly integrated with VSCode DevContainers.
  • go-todo-backend - Go Todo Backend example using modular project layout for product microservice.
  • gobase - A simple skeleton for golang application with basic setup for real golang application.
  • golang-standards/project-layout - Set of common historical and emerging project layout patterns in the Go ecosystem. Note: despite the org-name they do not represent official golang standards, see this issue for more information. Nonetheless, some may find the layout useful.
  • golang-templates/seed - Go application GitHub repository template.
  • insidieux/inizio - Golang project layout generator with plugins.
  • modern-go-application - Go application boilerplate and example applying modern practices.
  • pagoda - Rapid, easy full-stack web development starter kit built in Go.
  • scaffold - Scaffold generates a starter Go project layout. Lets you focus on business logic implemented.
  • wangyoucao577/go-project-layout - Set of practices and discussions on how to structure Go project layout.

โฌ† back to top

Strings

Libraries for working with strings.

  • bexp - Go implementation of Brace Expansion mechanism to generate arbitrary strings.
  • go-formatter - Implements replacement fields surrounded by curly braces {} format strings.
  • gobeam/Stringy - String manipulation library to convert string to camel case, snake case, kebab case / slugify etc.
  • strutil - String utilities.
  • sttr - cross-platform, cli app to perform various operations on string.
  • xstrings - Collection of useful string functions ported from other languages.

โฌ† back to top

Uncategorized

These libraries were placed here because none of the other categories seemed to fit.

  • anagent - Minimalistic, pluggable Golang evloop/timer handler with dependency-injection.
  • antch - A fast, powerful and extensible web crawling & scraping framework.
  • archiver - Library and command for making and extracting .zip and .tar.gz archives.
  • autoflags - Go package to automatically define command line flags from struct fields.
  • avgRating - Calculate average score and rating based on Wilson Score Equation.
  • banner - Add beautiful banners into your Go applications.
  • base64Captcha - Base64captch supports digit, number, alphabet, arithmetic, audio and digit-alphabet captcha.
  • basexx - Convert to, from, and between digit strings in various number bases.
  • battery - Cross-platform, normalized battery information library.
  • bitio - Highly optimized bit-level Reader and Writer for Go.
  • browscap_go - GoLang Library for Browser Capabilities Project.
  • captcha - Package captcha provides an easy to use, unopinionated API for captcha generation.
  • conv - Package conv provides fast and intuitive conversions across Go types.
  • datacounter - Go counters for readers/writer/http.ResponseWriter.
  • faker - Fake data generator.
  • faker - Random fake data and struct generator for Go.
  • ffmt - Beautify data display for Humans.
  • gatus - Automated service health dashboard.
  • go-commandbus - A slight and pluggable command-bus for Go.
  • go-commons-pool - Generic object pool for Golang.
  • go-openapi - Collection of packages to parse and utilize open-api schemas.
  • go-resiliency - Resiliency patterns for golang.
  • go-unarr - Decompression library for RAR, TAR, ZIP and 7z archives.
  • gofakeit - Random data generator written in go.
  • gommit - Analyze git commit messages to ensure they follow defined patterns.
  • gopsutil - Cross-platform library for retrieving process and system utilization(CPU, Memory, Disks, etc).
  • gosh - Provide Go Statistics Handler, Struct, Measure Method.
  • gosms - Your own local SMS gateway in Go that can be used to send SMS.
  • gotoprom - Type-safe metrics builder wrapper library for the official Prometheus client.
  • gountries - Package that exposes country and subdivision data.
  • gtree - Provide CLI and Package for tree output and directories creation from Markdown or programmatically.
  • health - A simple and flexible health check library for Go.
  • health - Easy to use, extensible health check library.
  • healthcheck - An opinionated and concurrent health-check HTTP handler for RESTful services.
  • hostutils - A golang library for packing and unpacking FQDNs list.
  • indigo - Distributed unique ID generator of using Sonyflake and encoded by Base58.
  • lk - A simple licensing library for golang.
  • llvm - Library for interacting with LLVM IR in pure Go.
  • metrics - Library for metrics instrumentation and Prometheus exposition.
  • morse - Library to convert to and from morse code.
  • numa - NUMA is a utility library, which is written in go. It help us to write some NUMA-AWARED code.
  • openapi - OpenAPI 3.x parser.
  • pdfgen - HTTP service to generate PDF from Json requests.
  • persian - Some utilities for Persian language in go.
  • sandid - Every grain of sand on earth has its own ID.
  • shellwords - A Golang library to manipulate strings according to the word parsing rules of the UNIX Bourne shell.
  • shortid - Distributed generation of super short, unique, non-sequential, URL friendly IDs.
  • shoutrrr - Notification library providing easy access to various messaging services like slack, mattermost, gotify and smtp among others.
  • stateless - A fluent library for creating state machines.
  • stats - Monitors Go MemStats + System stats such as Memory, Swap and CPU and sends via UDP anywhere you want for logging etc...
  • turtle - Emojis for Go.
  • url-shortener - A modern, powerful, and robust URL shortener microservice with mysql support.
  • VarHandler - Generate boilerplate http input and output handling.
  • varint - A faster varying length integer encoder/decoder than the one provided in the standard library.
  • xdg - FreeDesktop.org (xdg) Specs implemented in Go.
  • xkg - X Keyboard Grabber.
  • xz - Pure golang package for reading and writing xz-compressed files.

โฌ† back to top

Natural Language Processing

Libraries for working with human languages.

See also Text Processing.

Language Detection

  • detectlanguage - Language Detection API Go Client. Supports batch requests, short phrase or single word language detection.
  • getlang - Fast natural language detection package.
  • guesslanguage - Functions to determine the natural language of a unicode text.
  • whatlanggo - Natural language detection package for Go. Supports 84 languages and 24 scripts (writing systems e.g. Latin, Cyrillic, etc).

Morphological Analyzers

  • go-stem - Implementation of the porter stemming algorithm.
  • go2vec - Reader and utility functions for word2vec embeddings.
  • golibstemmer - Go bindings for the snowball libstemmer library including porter 2.
  • gosentiwordnet - Sentiment analyzer using sentiwordnet lexicon in Go.
  • govader - Go implementation of VADER Sentiment Analysis.
  • kagome - JP morphological analyzer written in pure Go.
  • libtextcat - Cgo binding for libtextcat C library. Guaranteed compatibility with version 2.2.
  • nlp - Extract values from strings and fill your structs with nlp.
  • nlp - Go Natural Language Processing library supporting LSA (Latent Semantic Analysis).
  • paicehusk - Golang implementation of the Paice/Husk Stemming Algorithm.
  • porter - This is a fairly straightforward port of Martin Porter's C implementation of the Porter stemming algorithm.
  • porter2 - Really fast Porter 2 stemmer.
  • RAKE.go - Go port of the Rapid Automatic Keyword Extraction Algorithm (RAKE).
  • snowball - Snowball stemmer port (cgo wrapper) for Go. Provides word stem extraction functionality Snowball native.
  • spaGO - Self-contained Machine Learning and Natural Language Processing library in Go.
  • spelling-corrector - A spelling corrector for the Spanish language or create your own.

Slugifiers

  • go-slugify - Make pretty slug with multiple languages support.
  • slug - URL-friendly slugify with multiple languages support.
  • Slugify - Go slugify application that handles string.

Tokenizers

  • gojieba - This is a Go implementation of jieba which a Chinese word splitting algorithm.
  • gotokenizer - A tokenizer based on the dictionary and Bigram language models for Golang. (Now only support chinese segmentation)
  • gse - Go efficient text segmentation; support english, chinese, japanese and other.
  • MMSEGO - This is a GO implementation of MMSEG which a Chinese word splitting algorithm.
  • prose - Library for text processing that supports tokenization, part-of-speech tagging, named-entity extraction, and more. English only.
  • segment - Go library for performing Unicode Text Segmentation as described in Unicode Standard Annex #29
  • sentences - Sentence tokenizer: converts text into a list of sentences.
  • shamoji - The shamoji is word filtering package written in Go.
  • stemmer - Stemmer packages for Go programming language. Includes English and German stemmers.
  • textcat - Go package for n-gram based text categorization, with support for utf-8 and raw text.

Translation

  • go-i18n - Package and an accompanying tool to work with localized text.
  • go-localize - Simple and easy to use i18n (Internationalization and localization) engine - used for translating locale strings.
  • go-mystem - CGo bindings to Yandex.Mystem - russian morphology analyzer.
  • go-pinyin - CN Hanzi to Hanyu Pinyin converter.
  • gotext - GNU gettext utilities for Go.
  • icu - Cgo binding for icu4c C library detection and conversion functions. Guaranteed compatibility with version 50.1.
  • iuliia-go - Transliterate Cyrillic โ†’ Latin in every possible way.
  • t - Another i18n pkg for golang, which follows GNU gettext style and supports .po/.mo files: t.T (gettext), t.N (ngettext), etc. And it contains a cmd tool xtemplate, which can extract messages as a pot file from text/html template.

Transliteration

  • enca - Minimal cgo bindings for libenca, which detects character encodings.
  • go-unidecode - ASCII transliterations of Unicode text.
  • gounidecode - Unicode transliterator (also known as unidecode) for Go.
  • transliterator - Provides one-way string transliteration with supporting of language-specific transliteration rules.

โฌ† back to top

Networking

Libraries for working with various layers of the network.

  • arp - Package arp implements the ARP protocol, as described in RFC 826.
  • buffstreams - Streaming protocolbuffer data over TCP made easy.
  • canopus - CoAP Client/Server implementation (RFC 7252).
  • cidranger - Fast IP to CIDR lookup for Go.
  • dhcp6 - Package dhcp6 implements a DHCPv6 server, as described in RFC 3315.
  • dns - Go library for working with DNS.
  • dnsmonster - Passive DNS Capture/Monitoring Framework.
  • easytcp - A light-weight TCP framework written in Go (Golang), built with message router. EasyTCP helps you build a TCP server easily fast and less painful.
  • ether - Cross-platform Go package for sending and receiving ethernet frames.
  • ethernet - Package ethernet implements marshaling and unmarshaling of IEEE 802.3 Ethernet II frames and IEEE 802.1Q VLAN tags.
  • fasthttp - Package fasthttp is a fast HTTP implementation for Go, up to 10 times faster than net/http.
  • fortio - Load testing library and command line tool, advanced echo server and web UI. Allows to specify a set query-per-second load and record latency histograms and other useful stats and graph them. Tcp, Http, gRPC.
  • ftp - Package ftp implements a FTP client as described in RFC 959.
  • ftpserverlib - Fully featured FTP server library.
  • gaio - High performance async-io networking for Golang in proactor mode.
  • gev - gev is a lightweight, fast non-blocking TCP network library based on Reactor mode.
  • gldap - gldap provides an ldap server implementation and you provide handlers for its ldap operations.
  • gmqtt - Gmqtt is a flexible, high-performance MQTT broker library that fully implements the MQTT protocol V3.1.1.
  • gnet - gnet is a high-performance, lightweight, non-blocking, event-driven networking framework written in pure Go.
  • gNxI - A collection of tools for Network Management that use the gNMI and gNOI protocols.
  • go-getter - Go library for downloading files or directories from various sources using a URL.
  • go-powerdns - PowerDNS API bindings for Golang.
  • go-stun - Go implementation of the STUN client (RFC 3489 and RFC 5389).
  • gobgp - BGP implemented in the Go Programming Language.
  • gohooks - GoHooks make it easy to send and consume secured web-hooks from a Go application. Inspired by Spatie's Laravel Webhook Client and Server.
  • golibwireshark - Package golibwireshark use libwireshark library to decode pcap file and analyse dissection data.
  • gopacket - Go library for packet processing with libpcap bindings.
  • gopcap - Go wrapper for libpcap.
  • goshark - Package goshark use tshark to decode IP packet and create data struct to analyse packet.
  • gosnmp - Native Go library for performing SNMP actions.
  • gotcp - Go package for quickly writing tcp applications.
  • grab - Go package for managing file downloads.
  • graval - Experimental FTP server framework.
  • HTTPLab - HTTPLabs let you inspect HTTP requests and forge responses.
  • httpproxy - HTTP proxy handler and dialer.
  • iplib - Library for working with IP addresses (net.IP, net.IPNet), inspired by python ipaddress and ruby ipaddr
  • jazigo - Jazigo is a tool written in Go for retrieving configuration for multiple network devices.
  • kcp-go - KCP - Fast and Reliable ARQ Protocol.
  • kcptun - Extremely simple & fast udp tunnel based on KCP protocol.
  • lhttp - Powerful websocket framework, build your IM server more easily.
  • linkio - Network link speed simulation for Reader/Writer interfaces.
  • llb - It's a very simple but quick backend for proxy servers. Can be useful for fast redirection to predefined domain with zero memory allocation and fast response.
  • mdns - Simple mDNS (Multicast DNS) client/server library in Golang.
  • mqttPaho - The Paho Go Client provides an MQTT client library for connection to MQTT brokers via TCP, TLS or WebSockets.
  • nbio - Pure Go 1000k+ connections solution, support tls/http1.x/websocket and basically compatible with net/http, with high-performance and low memory cost, non-blocking, event-driven, easy-to-use.
  • netpoll - A high-performance non-blocking I/O networking framework, which focused on RPC scenarios, developed by ByteDance.
  • NFF-Go - Framework for rapid development of performant network functions for cloud and bare-metal (former YANFF).
  • packet - Send packets over TCP and UDP. It can buffer messages and hot-swap connections if needed.
  • panoptes-stream - A cloud native distributed streaming network telemetry (gNMI, Juniper JTI and Cisco MDT).
  • peerdiscovery - Pure Go library for cross-platform local peer discovery using UDP multicast.
  • portproxy - Simple TCP proxy which adds CORS support to API's which don't support it.
  • publicip - Package publicip returns your public facing IPv4 address (internet egress).
  • quic-go - An implementation of the QUIC protocol in pure Go.
  • raw - Package raw enables reading and writing data at the device driver level for a network interface.
  • sftp - Package sftp implements the SSH File Transfer Protocol as described in https://filezilla-project.org/specs/draft-ietf-secsh-filexfer-02.txt.
  • ssh - Higher-level API for building SSH servers (wraps crypto/ssh).
  • sslb - It's a Super Simples Load Balancer, just a little project to achieve some kind of performance.
  • stun - Go implementation of RFC 5389 STUN protocol.
  • tcp_server - Go library for building tcp servers faster.
  • tspool - A TCP Library use worker pool to improve performance and protect your server.
  • utp - Go uTP micro transport protocol implementation.
  • vssh - Go library for building network and server automation over SSH protocol.
  • water - Simple TUN/TAP library.
  • webrtc - A pure Go implementation of the WebRTC API.
  • winrm - Go WinRM client to remotely execute commands on Windows machines.
  • xtcp - TCP Server Framework with simultaneous full duplex communication, graceful shutdown, and custom protocol.

โฌ† back to top

HTTP Clients

Libraries for making HTTP requests.

  • gentleman - Full-featured plugin-driven HTTP client library.
  • go-cleanhttp - Get easily stdlib HTTP client, which does not share any state with other clients.
  • go-http-client - Make http calls simply and easily.
  • go-req - Declarative golang HTTP client.
  • go-retryablehttp - Retryable HTTP client in Go.
  • grequests - A Go "clone" of the great and famous Requests library.
  • heimdall - An enhanced http client with retry and hystrix capabilities.
  • httpc - A customizable and simple HTTP client library. Only depend on the stdlib HTTP client.
  • httpretry - Enriches the default go HTTP client with retry functionality.
  • pester - Go HTTP client calls with retries, backoff, and concurrency.
  • req - Simple Go HTTP client with Black Magic (Less code and More efficiency).
  • request - HTTP client for golang. If you have experience about axios or requests, you will love it. No 3rd dependency.
  • requests - HTTP requests for Gophers. Uses context.Context and doesn't hide the underlying net/http.Client, making it compatible with standard Go APIs. Also includes testing tools.
  • resty - Simple HTTP and REST client for Go inspired by Ruby rest-client.
  • rq - A nicer interface for golang stdlib HTTP client.
  • sling - Sling is a Go HTTP client library for creating and sending API requests.

โฌ† back to top

OpenGL

Libraries for using OpenGL in Go.

  • gl - Go bindings for OpenGL (generated via glow).
  • glfw - Go bindings for GLFW 3.
  • go-glmatrix - Go port of glMatrix library.
  • goxjs/gl - Go cross-platform OpenGL bindings (OS X, Linux, Windows, browsers, iOS, Android).
  • goxjs/glfw - Go cross-platform glfw library for creating an OpenGL context and receiving events.
  • mathgl - Pure Go math package specialized for 3D math, with inspiration from GLM.

โฌ† back to top

ORM

Libraries that implement Object-Relational Mapping or datamapping techniques.

  • cacheme - Schema based, typed Redis caching/memoize framework for Go.
  • ent - An entity framework for Go. Simple, yet powerful ORM for modeling and querying data.
  • go-firestorm - A simple ORM for Google/Firebase Cloud Firestore.
  • go-pg - PostgreSQL ORM with focus on PostgreSQL specific features and performance.
  • go-queryset - 100% type-safe ORM with code generation and MySQL, PostgreSQL, Sqlite3, SQL Server support based on GORM.
  • go-sql - A easy ORM for mysql.
  • go-sqlbuilder - A flexible and powerful SQL string builder library plus a zero-config ORM.
  • go-store - Simple and fast Redis backed key-value store library for Go.
  • GORM - The fantastic ORM library for Golang, aims to be developer friendly.
  • gormt - Mysql database to golang gorm struct.
  • gorp - Go Relational Persistence, ORM-ish library for Go.
  • grimoire - Grimoire is a database access layer and validation for golang. (Support: MySQL, PostgreSQL and SQLite3).
  • lore - Simple and lightweight pseudo-ORM/pseudo-struct-mapping environment for Go.
  • marlow - Generated ORM from project structs for compile time safety assurances.
  • pop/soda - Database migration, creation, ORM, etc... for MySQL, PostgreSQL, and SQLite.
  • Prisma - Prisma Client Go, Typesafe database access for Go.
  • reform - Better ORM for Go, based on non-empty interfaces and code generation.
  • rel - Modern Database Access Layer for Golang - Testable, Extendable and Crafted Into a Clean and Elegant API.
  • SQLBoiler - ORM generator. Generate a featureful and blazing-fast ORM tailored to your database schema.
  • upper.io/db - Single interface for interacting with different data sources through the use of adapters that wrap mature database drivers.
  • XORM - Simple and powerful ORM for Go. (Support: MySQL, MyMysql, PostgreSQL, Tidb, SQLite3, MsSql and Oracle).
  • Zoom - Blazing-fast datastore and querying engine built on Redis.

โฌ† back to top

Package Management

Official tooling for dependency and package management

  • go modules - Modules are the unit of source code interchange and versioning. The go command has direct support for working with modules, including recording and resolving dependencies on other modules.

Official experimental tooling for package management

  • dep - Go dependency tool.
  • vgo - Versioned Go.

Unofficial libraries for package and dependency management.

  • glide - Manage your golang vendor and vendored packages with ease. Inspired by tools like Maven, Bundler, and Pip.
  • godep - dependency tool for go, godep helps build packages reproducibly by fixing their dependencies.
  • gom - Go Manager - bundle for go.
  • goop - Simple dependency manager for Go (golang), inspired by Bundler.
  • gop - Build and manage your Go applications out of GOPATH.
  • gopm - Go Package Manager.
  • govendor - Go Package Manager. Go vendor tool that works with the standard vendor file.
  • gpm - Barebones dependency manager for Go.
  • johnny-deps - Minimal dependency version using Git.
  • modgv - Converts 'go mod graph' output into Graphviz's DOT language.
  • mvn-golang - plugin that provides way for auto-loading of Golang SDK, dependency management and start build environment in Maven project infrastructure.
  • nut - Vendor Go dependencies.
  • VenGO - create and manage exportable isolated go virtual environments.

โฌ† back to top

Performance

  • jaeger - A distributed tracing system.
  • pixie - No instrumentation tracing for Golang applications via eBPF.
  • profile - Simple profiling support package for Go.
  • statsviz - Live visualization of your Go application runtime statistics.
  • tracer - Simple, lightweight tracing.

โฌ† back to top

Query Language

  • api-fu - Comprehensive GraphQL implementation.
  • dasel - Query and update data structures using selectors from the command line. Comparable to jq/yq but supports JSON, YAML, TOML and XML with zero runtime dependencies.
  • gojsonq - A simple Go package to Query over JSON Data.
  • gqlgen - go generate based graphql server library.
  • graphql - graphql parser + utilities.
  • graphql - GraphQL server with a focus on ease of use.
  • graphql-go - Implementation of GraphQL for Go.
  • gws - Apollos' "GraphQL over Websocket" client and server implementation.
  • jsonpath - A query library for retrieving part of JSON based on JSONPath syntax.
  • jsonql - JSON query expression library in Golang.
  • jsonslice - Jsonpath queries with advanced filters.
  • rql - Resource Query Language for REST API.
  • rqp - Query Parser for REST API. Filtering, validations, both AND, OR operations are supported directly in the query.
  • straf - Easily Convert Golang structs to GraphQL objects.

โฌ† back to top

Resource Embedding

  • debme - Create an embed.FS from an existing embed.FS subdirectory.
  • esc - Embeds files into Go programs and provides http.FileSystem interfaces to them.
  • fileb0x - Simple tool to embed files in go with focus on "customization" and ease to use.
  • go-resources - Unfancy resources embedding with Go.
  • go.rice - go.rice is a Go package that makes working with resources such as HTML, JS, CSS, images, and templates very easy.
  • mule - Embed external resources like images, movies ... into Go source code to create single file binaries using go generate. Focussed on simplicity.
  • packr - The simple and easy way to embed static files into Go binaries.
  • rebed - Recreate folder structures and files from Go 1.16's embed.FS type
  • statics - Embeds static resources into go files for single binary compilation + works with http.FileSystem + symlinks.
  • statik - Embeds static files into a Go executable.
  • templify - Embed external template files into Go code to create single file binaries.
  • vfsgen - Generates a vfsdata.go file that statically implements the given virtual filesystem.

โฌ† back to top

Science and Data Analysis

Libraries for scientific computing and data analyzing.

  • assocentity - Package assocentity returns the average distance from words to a given entity.
  • bradleyterry - Provides a Bradley-Terry Model for pairwise comparisons.
  • calendarheatmap - Calendar heatmap in plain Go inspired by Github contribution activity.
  • chart - Simple Chart Plotting library for Go. Supports many graphs types.
  • dataframe-go - Dataframes for machine-learning and statistics (similar to pandas).
  • decimal - Package decimal implements arbitrary-precision decimal floating-point arithmetic.
  • evaler - Simple floating point arithmetic expression evaluator.
  • ewma - Exponentially-weighted moving averages.
  • geom - 2D geometry for golang.
  • go-dsp - Digital Signal Processing for Go.
  • go-estimate - State estimation and filtering algorithms in Go.
  • go-gt - Graph theory algorithms written in "Go" language.
  • godesim - Extended/multivariable ODE solver framework for event-based simulations with simple API.
  • goent - GO Implementation of Entropy Measures.
  • gohistogram - Approximate histograms for data streams.
  • gonum - Gonum is a set of numeric libraries for the Go programming language. It contains libraries for matrices, statistics, optimization, and more.
  • gonum/plot - gonum/plot provides an API for building and drawing plots in Go.
  • goraph - Pure Go graph theory library(data structure, algorithm visualization).
  • gosl - Go scientific library for linear algebra, FFT, geometry, NURBS, numerical methods, probabilities, optimisation, differential equations, and more.
  • GoStats - GoStats is an Open Source GoLang library for math statistics mostly used in Machine Learning domains, it covers most of the Statistical measures functions.
  • graph - Library of basic graph algorithms.
  • jsonl-graph - Tool to manipulate JSONL graphs with graphviz support.
  • ode - Ordinary differential equation (ODE) solver which supports extended states and channel-based iteration stop conditions.
  • orb - 2D geometry types with clipping, GeoJSON and Mapbox Vector Tile support.
  • pagerank - Weighted PageRank algorithm implemented in Go.
  • piecewiselinear - Tiny linear interpolation library.
  • PiHex - Implementation of the "Bailey-Borwein-Plouffe" algorithm for the hexadecimal number Pi.
  • rootfinding - root-finding algorithms library for finding roots of quadratic functions.
  • sparse - Go Sparse matrix formats for linear algebra supporting scientific and machine learning applications, compatible with gonum matrix libraries.
  • stats - Statistics package with common functions missing from the Golang standard library.
  • streamtools - general purpose, graphical tool for dealing with streams of data.
  • TextRank - TextRank implementation in Golang with extendable features (summarization, weighting, phrase extraction) and multithreading (goroutine) support.
  • triangolatte - 2D triangulation library. Allows translating lines and polygons (both based on points) to the language of GPUs.

โฌ† back to top

Security

Libraries that are used to help make your application more secure.

  • acmetool - ACME (Let's Encrypt) client tool with automatic renewal.
  • acra - Network encryption proxy to protect database-based applications from data leaks: strong selective encryption, SQL injections prevention, intrusion detection system.
  • age - A simple, modern and secure encryption tool (and Go library) with small explicit keys, no config options, and UNIX-style composability.
  • argon2-hashing - light wrapper around Go's argon2 package that closely mirrors with Go's standard library Bcrypt and simple-scrypt package.
  • argon2pw - Argon2 password hash generation with constant-time password comparison.
  • autocert - Auto provision Let's Encrypt certificates and start a TLS server.
  • BadActor - In-memory, application-driven jailer built in the spirit of fail2ban.
  • Cameradar - Tool and library to remotely hack RTSP streams from surveillance cameras.
  • certificates - An opinionated tool for generating tls certificates.
  • CertMagic - Mature, robust, and powerful ACME client integration for fully-managed TLS certificate issuance and renewal.
  • dongle - A simple, semantic and developer-friendly golang package for encoding&decoding and encryption&decryption.
  • firewalld-rest - A rest application to dynamically update firewalld rules on a linux server.
  • go-generate-password - Password generator that can be used on the cli or as a library.
  • go-htpasswd - Apache htpasswd Parser for Go.
  • go-password-validator - Password validator based on raw cryptographic entropy values.
  • go-yara - Go Bindings for YARA, the "pattern matching swiss knife for malware researchers (and everyone else)".
  • goArgonPass - Argon2 password hash and verification designed to be compatible with existing Python and PHP implementations.
  • goSecretBoxPassword - A probably paranoid package for securely hashing and encrypting passwords.
  • Interpol - Rule-based data generator for fuzzing and penetration testing.
  • lego - Pure Go ACME client library and CLI tool (for use with Let's Encrypt).
  • memguard - A pure Go library for handling sensitive values in memory.
  • nacl - Go implementation of the NaCL set of API's.
  • optimus-go - ID hashing and Obfuscation using Knuth's Algorithm.
  • passlib - Futureproof password hashing library.
  • secret - Prevent your secrets from leaking into logs, std* etc.
  • secure - HTTP middleware for Go that facilitates some quick security wins.
  • secureio - An keyexchanging+authenticating+encrypting wrapper and multiplexer for io.ReadWriteCloser based on XChaCha20-poly1305, ECDH and ED25519.
  • simple-scrypt - Scrypt package with a simple, obvious API and automatic cost calibration built-in.
  • ssh-vault - encrypt/decrypt using ssh keys.
  • sslmgr - SSL certificates made easy with a high level wrapper around acme/autocert.
  • themis - high-level cryptographic library for solving typical data security tasks (secure data storage, secure messaging, zero-knowledge proof authentication), available for 14 languages, best fit for multi-platform apps.

โฌ† back to top

Serialization

Libraries and tools for binary serialization.

  • asn1 - Asn.1 BER and DER encoding library for golang.
  • bambam - generator for Cap'n Proto schemas from go.
  • bel - Generate TypeScript interfaces from Go structs/interfaces. Useful for JSON RPC.
  • binstruct - Golang binary decoder for mapping data into the structure.
  • cbor - Small, safe, and easy CBOR encoding and decoding library.
  • colfer - Code generation for the Colfer binary format.
  • csvutil - High Performance, idiomatic CSV record encoding and decoding to native Go structures.
  • elastic - Convert slices, maps or any other unknown value across different types at run-time, no matter what.
  • fixedwidth - Fixed-width text formatting (UTF-8 supported).
  • fwencoder - Fixed width file parser (encoding and decoding library) for Go.
  • go-capnproto - Cap'n Proto library and parser for go.
  • go-codec - High Performance, feature-Rich, idiomatic encode, decode and rpc library for msgpack, cbor and json, with runtime-based OR code-generation support.
  • go-lctree - Provides a CLI and primitives to serialize and deserialize LeetCode binary trees.
  • gogoprotobuf - Protocol Buffers for Go with Gadgets.
  • goprotobuf - Go support, in the form of a library and protocol compiler plugin, for Google's protocol buffers.
  • jsoniter - High-performance 100% compatible drop-in replacement of "encoding/json".
  • mapstructure - Go library for decoding generic map values into native Go structures.
  • php_session_decoder - GoLang library for working with PHP session format and PHP Serialize/Unserialize functions.
  • pletter - A standard way to wrap a proto message for message brokers.
  • structomap - Library to easily and dynamically generate maps from static structures.
  • unitpacking - Library to pack unit vectors into as fewest bytes as possible.

โฌ† back to top

Server Applications

  • algernon - HTTP/2 web server with built-in support for Lua, Markdown, GCSS and Amber.
  • Caddy - Caddy is an alternative, HTTP/2 web server that's easy to configure and use.
  • consul - Consul is a tool for service discovery, monitoring and configuration.
  • cortex-tenant - Prometheus remote write proxy that adds add Cortex tenant ID header based on metric labels.
  • devd - Local webserver for developers.
  • discovery - A registry for resilient mid-tier load balancing and failover.
  • dudeldu - A simple SHOUTcast server.
  • dummy - Run mock server based off an API contract with one command.
  • Easegress - A cloud native high availability/performance traffic orchestration system with observability and extensibility.
  • etcd - Highly-available key value store for shared configuration and service discovery.
  • Euterpe - Self-hosted music streaming server with built-in web UI and REST API.
  • Fider - Fider is an open platform to collect and organize customer feedback.
  • Flagr - Flagr is an open-source feature flagging and A/B testing service.
  • flipt - A self contained feature flag solution written in Go and Vue.js
  • go-feature-flag - A feature flag solution, with only a YAML file in the backend (S3, GitHub, HTTP, local file ...), no server to install, just add a file in a central system and refer to it.
  • go-proxy-cache - Simple Reverse Proxy with Caching, written in Go, using Redis.
  • jackal - An XMPP server written in Go.
  • lets-proxy2 - Reverse proxy for handle https with issue certificates in fly from lets-encrypt.
  • minio - Minio is a distributed object storage server.
  • Moxy - Moxy is a simple mocker and proxy application server, you can create mock endpoints as well as proxy requests in case no mock exists for the endpoint.
  • nginx-prometheus - Nginx log parser and exporter to Prometheus.
  • nsq - A realtime distributed messaging platform.
  • protoxy - A proxy server that converts JSON request bodies to Protocol Buffers.
  • psql-streamer - Stream database events from PostgreSQL to Kafka.
  • riemann-relay - Relay to load-balance Riemann events and/or convert them to Carbon.
  • RoadRunner - High-performance PHP application server, load-balancer and process manager.
  • SFTPGo - Fully featured and highly configurable SFTP server with optional FTP/S and WebDAV support. It can serve local filesystem and Cloud Storage backends such as S3 and Google Cloud Storage.
  • simple-jwt-provider - Simple and lightweight provider which exhibits JWTs, supports login, password-reset (via mail) and user management.
  • Trickster - HTTP reverse proxy cache and time series accelerator.
  • Wish - Make SSH apps, just like that!

โฌ† back to top

Stream Processing

Libraries and tools for stream processing and reactive programming.

  • go-streams - Go stream processing library.
  • machine - Go library for writing and generating stream workers with built in metrics and traceability.
  • stream - Go Stream, like Java 8 Stream: Filter/Map/FlatMap/Peek/Sorted/ForEach/Reduce...

โฌ† back to top

Template Engines

Libraries and tools for templating and lexing.

  • ace - Ace is an HTML template engine for Go, inspired by Slim and Jade. Ace is a refinement of Gold.
  • amber - Amber is an elegant templating engine for Go Programming Language It is inspired from HAML and Jade.
  • ego - Lightweight templating language that lets you write templates in Go. Templates are translated into Go and compiled.
  • extemplate - Tiny wrapper around html/template to allow for easy file-based template inheritance.
  • fasttemplate - Simple and fast template engine. Substitutes template placeholders up to 10x faster than text/template.
  • gofpdf - PDF document generator with high level support for text, drawing and images.
  • gospin - Article spinning and spintax/spinning syntax engine, useful for A/B, testing pieces of text/articles and creating more natural conversations.
  • got - A Go code generator inspired by Hero and Fasttemplate. Has include files, custom tag definitions, injected Go code, language translation, and more.
  • goview - Goview is a lightweight, minimalist and idiomatic template library based on golang html/template for building Go web application.
  • hero - Hero is a handy, fast and powerful go template engine.
  • jet - Jet template engine.
  • liquid - Go implementation of Shopify Liquid templates.
  • maroto - A maroto way to create PDFs. Maroto is inspired in Bootstrap and uses gofpdf. Fast and simple.
  • pongo2 - Django-like template-engine for Go.
  • quicktemplate - Fast, powerful, yet easy to use template engine. Converts templates into Go code and then compiles it.
  • raymond - Complete handlebars implementation in Go.
  • Razor - Razor view engine for Golang.
  • Soy - Closure templates (aka Soy templates) for Go, following the official spec.
  • sprig - Useful template functions for Go templates.
  • tbd - A really simple way to create text templates with placeholders - exposes extra builtin Git repo metadata.

โฌ† back to top

Testing

Libraries for testing codebases and generating test data.

  • Testing Frameworks
  • apitest - Simple and extensible behavioural testing library for REST based services or HTTP handlers that supports mocking external http calls and rendering of sequence diagrams.
  • assert - Basic Assertion Library used along side native go testing, with building blocks for custom assertions.
  • badio - Extensions to Go's testing/iotest package.
  • baloo - Expressive and versatile end-to-end HTTP API testing made easy.
  • biff - Bifurcation testing framework, BDD compatible.
  • charlatan - Tool to generate fake interface implementations for tests.
  • commander - Tool for testing cli applications on windows, linux and osx.
  • covergates - Self-hosted code coverage report review and management service.
  • cupaloy - Simple snapshot testing addon for your test framework.
  • dbcleaner - Clean database for testing purpose, inspired by database_cleaner in Ruby.
  • dsunit - Datastore testing for SQL, NoSQL, structured files.
  • embedded-postgres - Run a real Postgres database locally on Linux, OSX or Windows as part of another Go application or test.
  • endly - Declarative end to end functional testing.
  • fixenv - Fixture manage engine, inspired by pytest fixtures.
  • flute - HTTP client testing framework.
  • frisby - REST API testing framework.
  • gherkingen - BDD boilerplate generator and framework.
  • ginkgo - BDD Testing Framework for Go.
  • gnomock - integration testing with real dependencies (database, cache, even Kubernetes or AWS) running in Docker, without mocks.
  • go-carpet - Tool for viewing test coverage in terminal.
  • go-cmp - Package for comparing Go values in tests.
  • go-hit - Hit is an http integration test framework written in golang.
  • go-mutesting - Mutation testing for Go source code.
  • go-testdeep - Extremely flexible golang deep comparison, extends the go testing package.
  • go-testpredicate - Test predicate style assertions library with extensive diagnostics output.
  • go-vcr - Record and replay your HTTP interactions for fast, deterministic and accurate tests.
  • goblin - Mocha like testing framework fo Go.
  • goc - Goc is a comprehensive coverage testing system for The Go Programming Language.
  • gocheck - More advanced testing framework alternative to gotest.
  • GoConvey - BDD-style framework with web UI and live reload.
  • gocrest - Composable hamcrest-like matchers for Go assertions.
  • godog - Cucumber or Behat like BDD framework for Go.
  • gofight - API Handler Testing for Golang Router framework.
  • gogiven - YATSPEC-like BDD testing framework for Go.
  • gomatch - library created for testing JSON against patterns.
  • gomega - Rspec like matcher/assertion library.
  • GoSpec - BDD-style testing framework for the Go programming language.
  • gospecify - This provides a BDD syntax for testing your Go code. It should be familiar to anybody who has used libraries such as rspec.
  • gosuite - Brings lightweight test suites with setup/teardown facilities to testing by leveraging Go1.7's Subtests.
  • gotest.tools - A collection of packages to augment the go testing package and support common patterns.
  • Hamcrest - fluent framework for declarative Matcher objects that, when applied to input values, produce self-describing results.
  • httpexpect - Concise, declarative, and easy to use end-to-end HTTP and REST API testing.
  • is - Professional lightweight testing mini-framework for Go.
  • jsonassert - Package for verifying that your JSON payloads are serialized correctly.
  • omg.testingtools - The simple library for change a values of private fields for testing.
  • restit - Go micro framework to help writing RESTful API integration test.
  • schema - Quick and easy expression matching for JSON schemas used in requests and responses.
  • stop-and-go - Testing helper for concurrency.
  • testcase - Idiomatic testing framework for Behavior Driven Development.
  • testfixtures - A helper for Rails' like test fixtures to test database applications.
  • Testify - Sacred extension to the standard go testing package.
  • testmd - Convert markdown snippets into testable go code.
  • testsql - Generate test data from SQL files before testing and clear it after finished.
  • testza - Full-featured test framework with nice colorized output.
  • trial - Quick and easy extendable assertions without introducing much boilerplate.
  • Tt - Simple and colorful test tools.
  • wstest - Websocket client for unit-testing a websocket http.Handler.

  • Mock

  • counterfeiter - Tool for generating self-contained mock objects.
  • genmock - Go mocking system with code generator for building calls of the interface methods.
  • go-localstack - Tool for using localstack in AWS testing.
  • go-sqlmock - Mock SQL driver for testing database interactions.
  • go-txdb - Single transaction based database driver mainly for testing purposes.
  • gock - Versatile HTTP mocking made easy.
  • gomock - Mocking framework for the Go programming language.
  • govcr - HTTP mock for Golang: record and replay HTTP interactions for offline testing.
  • hoverfly - HTTP(S) proxy for recording and simulating REST/SOAP APIs with extensible middleware and easy-to-use CLI.
  • httpmock - Easy mocking of HTTP responses from external resources.
  • minimock - Mock generator for Go interfaces.
  • mockery - Tool to generate Go interfaces.
  • mockhttp - Mock object for Go http.ResponseWriter.
  • mockit - Allows functions and method easy mocking, without defining new types; it's similar to Mockito for Java.
  • timex - A test-friendly replacement for the native time package.

  • Fuzzing and delta-debugging/reducing/shrinking.

  • go-fuzz - Randomized testing system.
  • gofuzz - Library for populating go objects with random values.
  • Tavor - Generic fuzzing and delta-debugging framework.

  • Selenium and browser control tools.

  • cdp - Type-safe bindings for the Chrome Debugging Protocol that can be used with browsers or other debug targets that implement it.
  • chromedp - a way to drive/test Chrome, Safari, Edge, Android Webviews, and other browsers supporting the Chrome Debugging Protocol.
  • ggr - a lightweight server that routes and proxies Selenium WebDriver requests to multiple Selenium hubs.
  • playwright-go - browser automation library to control Chromium, Firefox and WebKit with a single API.
  • rod - A Devtools driver to make web automation and scraping easy.
  • selenoid - alternative Selenium hub server that launches browsers within containers.

  • Fail injection

  • failpoint - An implementation of failpoints for Golang.

โฌ† back to top

Text Processing

Libraries for parsing and manipulating texts.

See also Natural Language Processing.

Formatters

  • address - Handles address representation, validation and formatting.
  • align - A general purpose application that aligns text.
  • bytes - Formats and parses numeric byte values (10K, 2M, 3G, etc.).
  • go-fixedwidth - Fixed-width text formatting (encoder/decoder with reflection).
  • go-humanize - Formatters for time, numbers, and memory size to human readable format.
  • gotabulate - Easily pretty-print your tabular data with Go.
  • textwrap - Wraps text at end of lines. Implementation of textwrap module from Python.

Markup Languages

  • bafi - Universal JSON, BSON, YAML, XML translator to ANY format using templates.
  • bbConvert - Converts bbCode to HTML that allows you to add support for custom bbCode tags.
  • blackfriday - Markdown processor in Go.
  • github_flavored_markdown - GitHub Flavored Markdown renderer (using blackfriday) with fenced code block highlighting, clickable header anchor links.
  • go-output-format - Output go structures into multiple formats (YAML/JSON/etc) in your command line app.
  • go-toml - Go library for the TOML format with query support and handy cli tools.
  • goq - Declarative unmarshaling of HTML using struct tags with jQuery syntax (uses GoQuery).
  • html-to-markdown - Convert HTML to Markdown. Even works with entire websites and can be extended through rules.
  • htmlquery - An XPath query package for HTML, lets you extract data or evaluate from HTML documents by an XPath expression.
  • mxj - Encode / decode XML as JSON or map[string]interface{}; extract values with dot-notation paths and wildcards. Replaces x2j and j2x packages.
  • toml - TOML configuration format (encoder/decoder with reflection).

Parsers/Encoders/Decoders

  • allot - Placeholder and wildcard text parsing for CLI tools and bots.
  • codetree - Parses indented code (python, pixy, scarlet, etc.) and returns a tree structure.
  • commonregex - A collection of common regular expressions for Go.
  • did - DID (Decentralized Identifiers) Parser and Stringer in Go.
  • doi - Document object identifier (doi) parser in Go.
  • editorconfig-core-go - Editorconfig file parser and manipulator for Go.
  • encdec - Package provides a generic interface to encoders and decodersa.
  • go-nmea - NMEA parser library for the Go language.
  • go-vcard - Parse and format vCard.
  • gofeed - Parse RSS and Atom feeds in Go.
  • gographviz - Parses the Graphviz DOT language.
  • gonameparts - Parses human names into individual name parts.
  • ltsv - High performance LTSV (Labeled Tab Separated Value) reader for Go.
  • normalize - Sanitize, normalize and compare fuzzy text.
  • omniparser - A versatile ETL library that parses text input (CSV/txt/JSON/XML/EDI/X12/EDIFACT/etc) in streaming fashion and transforms data into JSON output using data-driven schema.
  • parseargs-go - string argument parser that understands quotes and backslashes.
  • parth - URL path segmentation parsing.
  • sdp - SDP: Session Description Protocol [RFC 4566].
  • sh - Shell parser and formatter.
  • when - Natural EN and RU language date/time parser with pluggable rules.
  • xj2go - Convert xml or json to go struct.

Regular Expressions

  • genex - Count and expand Regular Expressions into all matching Strings.
  • go-wildcard - Simple and lightweight wildcard pattern matching.
  • goregen - Library for generating random strings from regular expressions.
  • regroup - Match regex expression named groups into go struct using struct tags and automatic parsing.

Sanitation

Scrapers

  • colly - Fast and Elegant Scraping Framework for Gophers.
  • dataflowkit - Web scraping Framework to turn websites into structured data.
  • GoQuery - GoQuery brings a syntax and a set of features similar to jQuery to the Go language.
  • gospider - A simple golang spider/scraping framework,build a spider in 3 lines. migrated from goribot
  • pagser - Pagser is a simple, extensible, configurable parse and deserialize html page to struct based on goquery and struct tags for golang crawler.
  • Tagify - Produces a set of tags from given source.
  • xurls - Extract urls from text.

RSS

  • podcast - iTunes Compliant and RSS 2.0 Podcast Generator in Golang
  • syndfeed - A syndication feed for Atom 1.0 and RSS 2.0.

Utility/Miscellaneous

  • go-runewidth - Functions to get fixed width of the character or string.
  • go-zero-width - Zero-width character detection and removal for Go.
  • kace - Common case conversions covering common initialisms.
  • petrovich - Petrovich is the library which inflects Russian names to given grammatical case.
  • radix - Fast string sorting algorithm.
  • TySug - Alternative suggestions with respect to keyboard layouts.

โฌ† back to top

Third-party APIs

Libraries for accessing third party APIs.

โฌ† back to top

Utilities

General utilities and tools to make your life easier.

  • apm - Process manager for Golang applications with an HTTP API.
  • backscanner - A scanner similar to bufio.Scanner, but it reads and returns lines in reverse order, starting at a given position and going backward.
  • beyond - The Go tool that will drive you to the AOP world!
  • blank - Verify or remove blanks and whitespace from strings.
  • bleep - Perform any number of actions on any set of OS signals in Go.
  • boilr - Blazingly fast CLI tool for creating projects from boilerplate templates.
  • changie - Automated changelog tool for preparing releases with lots of customization options.
  • chyle - Changelog generator using a git repository with multiple configuration possibilities.
  • circuit - An efficient and feature complete Hystrix like Go implementation of the circuit breaker pattern.
  • circuitbreaker - Circuit Breakers in Go.
  • clipboard - ๐Ÿ“‹ cross-platform clipboard package in Go.
  • clockwork - A simple fake clock for golang.
  • cmd - Library for executing shell commands on osx, windows and linux.
  • command - Command pattern for Go with thread safe serial and parallel dispatcher.
  • copy - Package for fast copying structs of different types.
  • copy-pasta - Universal multi-workstation clipboard that uses S3 like backend for the storage.
  • countries - Full implementation of ISO-3166-1, ISO-4217, ITU-T E.164, Unicode CLDR and IANA ccTLD standarts.
  • create-go-app - A powerful CLI for create a new production-ready project with backend (Golang), frontend (JavaScript, TypeScript) & deploy automation (Ansible, Docker) by running one command.
  • cryptgo - Crytpgo is a TUI based application written purely in Go to monitor and observe cryptocurrency prices in real time!
  • ctop - Top-like interface (e.g. htop) for container metrics.
  • ctxutil - A collection of utility functions for contexts.
  • cvt - Easy and safe convert any value to another type.
  • dbt - A framework for running self-updating signed binaries from a central, trusted repository.
  • Death - Managing go application shutdown with signals.
  • Deepcopier - Simple struct copying for Go.
  • delve - Go debugger.
  • dlog - Compile-time controlled logger to make your release smaller without removing debug calls.
  • equalizer - Quota manager and rate limiter collection for Go.
  • ergo - The management of multiple local services running over different ports made easy.
  • evaluator - Evaluate an expression dynamicly based on s-expression. It's simple and easy to extend.
  • filetype - Small package to infer the file type checking the magic numbers signature.
  • filler - small utility to fill structs using "fill" tag.
  • filter - provide filtering, sanitizing, and conversion of Go data.
  • fzf - Command-line fuzzy finder written in Go.
  • generate - runs go generate recursively on a specified path or environment variable and can filter by regex.
  • ghokin - Parallelized formatter with no external dependencies for gherkin (cucumber, behat...).
  • git-time-metric - Simple, seamless, lightweight time tracking for Git.
  • go-actuator - Production ready features for Go based web frameworks.
  • go-astitodo - Parse TODOs in your GO code.
  • go-bind-plugin - go:generate tool for wrapping symbols exported by golang plugins (1.8 only).
  • go-bsdiff - Pure Go bsdiff and bspatch libraries and CLI tools.
  • go-clip - A minimalistic clipboard manager for Mac.
  • go-convert - Package go-convert enables you to convert a value into another type.
  • go-countries - Lightweight lookup over ISO-3166 codes.
  • go-dry - DRY (don't repeat yourself) package for Go.
  • go-funk - Modern Go utility library which provides helpers (map, find, contains, filter, chunk, reverse, ...).
  • go-health - Health package simplifies the way you add health check to your services.
  • go-httpheader - Go library for encoding structs into Header fields.
  • go-lock - go-lock is a lock library implementing read-write mutex and read-write trylock without starvation.
  • go-pkg - A go toolkit.
  • go-problemdetails - Go package for working with Problem Details.
  • go-rate - Timed rate limiter for Go.
  • go-safe - Panic-safe sandbox.
  • go-sitemap-generator - XML Sitemap generator written in Go.
  • go-trigger - Go-lang global event triggerer, Register Events with an id and trigger the event from anywhere from your project.
  • go-type - Library providing Go types for store/validation and transfer of ISO-4217, ISO-3166, and other types.
  • goback - Go simple exponential backoff package.
  • goctx - Get your context value with high performance.
  • godaemon - Utility to write daemons.
  • godropbox - Common libraries for writing Go services/applications from Dropbox.
  • gohper - Various tools/modules help for development.
  • golarm - Fire alarms with system events.
  • golog - Easy and lightweight CLI tool to time track your tasks.
  • gopencils - Small and simple package to easily consume REST APIs.
  • goplaceholder - a small golang lib to generate placeholder images.
  • goreadability - Webpage summary extractor using Facebook Open Graph and arc90's readability.
  • goreleaser - Deliver Go binaries as fast and easily as possible.
  • goreporter - Golang tool that does static analysis, unit testing, code review and generate code quality report.
  • goseaweedfs - SeaweedFS client library with almost full features.
  • gostrutils - Collections of string manipulation and conversion functions.
  • gotenv - Load environment variables from .env or any io.Reader in Go.
  • goval - Evaluate arbitrary expressions in Go.
  • gpath - Library to simplify access struct fields with Go's expression in reflection.
  • grofer - A system and resource monitoring tool written in Golang!
  • gubrak - Golang utility library with syntactic sugar. It's like lodash, but for golang.
  • handy - Many utilities and helpers like string handlers/formatters and validators.
  • hostctl - A CLI tool to manage /etc/hosts with easy commands.
  • htcat - Parallel and Pipelined HTTP GET Utility.
  • hub - wrap git commands with additional functionality to interact with github from the terminal.
  • hystrix-go - Implements Hystrix patterns of programmer-defined fallbacks aka circuit breaker.
  • immortal - *nix cross-platform (OS agnostic) supervisor.
  • intrinsic - Use x86 SIMD without writing any assembly code.
  • jsend - JSend's implementation writen in Go.
  • jump - Jump helps you navigate faster by learning your habits.
  • koazee - Library inspired in Lazy evaluation and functional programming that takes the hassle out of working with arrays.
  • lets-go - Go module that provides common utilities for Cloud Native REST API development. Also contains AWS Specific utilities.
  • limiters - Rate limiters for distributed applications in Golang with configurable back-ends and distributed locks.
  • lo - A Lodash like Go library based on Go 1.18+ Generics (map, filter, contains, find...)
  • lrserver - LiveReload server for Go.
  • mani - CLI tool to help you manage multiple repositories.
  • mc - Minio Client provides minimal tools to work with Amazon S3 compatible cloud storage and filesystems.
  • mergo - Helper to merge structs and maps in Golang. Useful for configuration default values, avoiding messy if-statements.
  • mimemagic - Pure Go ultra performant MIME sniffing library/utility.
  • mimesniffer - A MIME type sniffer for Go.
  • mimetype - Package for MIME type detection based on magic numbers.
  • minify - Fast minifiers for HTML, CSS, JS, XML, JSON and SVG file formats.
  • minquery - MongoDB / mgo.v2 query that supports efficient pagination (cursors to continue listing documents where we left off).
  • moldova - Utility for generating random data based on an input template.
  • mole - cli app to easily create ssh tunnels.
  • mongo-go-pagination - Mongodb Pagination for official mongodb/mongo-go-driver package which supports both normal queries and Aggregation pipelines.
  • mssqlx - Database client library, proxy for any master slave, master master structures. Lightweight and auto balancing in mind.
  • multitick - Multiplexor for aligned tickers.
  • myhttp - Simple API to make HTTP GET requests with timeout support.
  • netbug - Easy remote profiling of your services.
  • nfdump - Read nfdump netflow files.
  • nostromo - CLI for building powerful aliases.
  • objwalker - Walk by go objects with reflection.
  • okrun - go run error steamroller.
  • olaf - Twitter Snowflake implemented in Go.
  • onecache - Caching library with support for multiple backend stores (Redis, Memcached, filesystem etc).
  • panicparse - Groups similar goroutines and colorizes stack dump.
  • pattern-match - Pattern matching libray.
  • peco - Simplistic interactive filtering tool.
  • pgo - Convenient functions for PHP community.
  • pm - Process (i.e. goroutine) manager with an HTTP API.
  • ptr - Package that provide functions for simplified creation of pointers from constants of basic types.
  • rclient - Readable, flexible, simple-to-use client for REST APIs.
  • repeat - Go implementation of different backoff strategies useful for retrying operations and heartbeating.
  • request - Go HTTP Requests for Humansโ„ข.
  • rerate - Redis-based rate counter and rate limiter for Go.
  • rerun - Recompiling and rerunning go apps when source changes.
  • rest-go - A package that provide many helpful methods for working with rest api.
  • retry - The most advanced functional mechanism to perform actions repetitively until successful.
  • retry - A simple but highly configurable retry package for Go.
  • retry - Simple and easy retry mechanism package for Go.
  • retry - A pretty simple library to ensure your work to be done.
  • retry-go - Retrying made simple and easy for golang.
  • robustly - Runs functions resiliently, catching and restarting panics.
  • rospo - Simple and reliable ssh tunnels with embedded ssh server in Golang.
  • scan - Scan golang sql.Rows directly to structs, slices, or primitive types.
  • scany - Library for scanning data from a database into Go structs and more.
  • serve - A static http server anywhere you need.
  • set - Performant and flexible struct mapping and loose type conversion.
  • shutdown - App shutdown hooks for os.Signal handling.
  • silk - Read silk netflow files.
  • slice - Type-safe functions for common Go slice operations.
  • sliceconv - Slice conversion between primitive types.
  • slicer - Makes working with slices easier.
  • sorty - Fast Concurrent / Parallel Sorting.
  • sqlx - provides a set of extensions on top of the excellent built-in database/sql package.
  • sshman - SSH Manager for authorized_keys files on multiple remote servers.
  • statiks - Fast, zero-configuration, static HTTP filer server.
  • Storm - Simple and powerful toolkit for BoltDB.
  • structs - Implement simple functions to manipulate structs.
  • throttle - Throttle is an object that will perform exactly one action per duration.
  • tik - Simple and easy timing wheel package for Go.
  • tome - Tome was designed to paginate simple RESTful APIs.
  • toolbox - Slice, map, multimap, struct, function, data conversion utilities. Service router, macro evaluator, tokenizer.
  • ugo - ugo is slice toolbox with concise syntax for Go.
  • UNIS - Common Architectureโ„ข for String Utilities in Go.
  • usql - usql is a universal command-line interface for SQL databases.
  • util - Collection of useful utility functions. (strings, concurrency, manipulations, ...).
  • wuzz - Interactive cli tool for HTTP inspection.
  • xferspdy - Xferspdy provides binary diff and patch library in golang.

โฌ† back to top

UUID

Libraries for working with UUIDs.

  • goflake - A small, scalable, & serverless unique ID generator for use in distributed systems. Inspired by Twitters Snowflake.
  • goid - Generate and Parse RFC4122 compliant V4 UUIDs.
  • gouid - Generate cryptographically secure random string IDs with just one allocation.
  • nanoid - A tiny and efficient Go unique string ID generator.
  • sno - Compact, sortable and fast unique IDs with embedded metadata.
  • ulid - Go implementation of ULID (Universally Unique Lexicographically Sortable Identifier).
  • uniq - No hassle safe, fast unique identifiers with commands.
  • uuid - Generate, encode, and decode UUIDs v1 with fast or cryptographic-quality random node identifier.
  • uuid - Implementation of Universally Unique Identifier (UUID). Supports both creation and parsing of UUIDs. Actively maintained fork of satori uuid.
  • uuid - Go package for UUIDs based on RFC 4122 and DCE 1.1: Authentication and Security Services.
  • wuid - An extremely fast unique number generator, 10-135 times faster than UUID.
  • xid - Xid is a globally unique id generator library, ready to be safely used directly in your server code.

โฌ† back to top

Validation

Libraries for validation.

  • checkdigit - Provide check digit algorithms (Luhn, Verhoeff, Damm) and calculators (ISBN, EAN, JAN, UPC, etc.).
  • gody - :balloon: A lightweight struct validator for Go.
  • govalid - Fast, tag-based validation for structs.
  • govalidator - Validators and sanitizers for strings, numerics, slices and structs.
  • govalidator - Validate Golang request data with simple rules. Highly inspired by Laravel's request validation.
  • jio - jio is a json schema validator similar to joi.
  • ozzo-validation - Supports validation of various data types (structs, strings, maps, slices, etc.) with configurable and extensible validation rules specified in usual code constructs instead of struct tags.
  • terraform-validator - A norms and conventions validator for Terraform.
  • validate - Go package for data validation and filtering. support validate Map, Struct, Request(Form, JSON, url.Values, Uploaded Files) data and more features.
  • validate - This package provides a framework for writing validations for Go applications.
  • validator - Go Struct and Field validation, including Cross Field, Cross Struct, Map, Slice and Array diving.
  • Validator - A lightweight model validator written in Go.Contains VFs:Min, Max, MinLength, MaxLength, Length, Enum, Regex.

โฌ† back to top

Version Control

Libraries for version control.

  • froggit-go - Froggit-Go is a Go library, allowing to perform actions on VCS providers.
  • gh - Scriptable server and net/http middleware for GitHub Webhooks.
  • git2go - Go bindings for libgit2.
  • githooks - Per-repo and shared Git hooks with version control and auto update.
  • glab - An open-source GitLab command line tool bringing GitLab's cool features to your command line.
  • go-git - highly extensible Git implementation in pure Go.
  • go-vcs - manipulate and inspect VCS repositories in Go.
  • hercules - gaining advanced insights from Git repository history.
  • hgo - Hgo is a collection of Go packages providing read-access to local Mercurial repositories.

โฌ† back to top

Video

Libraries for manipulating video.

  • gmf - Go bindings for FFmpeg av* libraries.
  • go-astisub - Manipulate subtitles in GO (.srt, .stl, .ttml, .webvtt, .ssa/.ass, teletext, .smi, etc.).
  • go-astits - Parse and demux MPEG Transport Streams (.ts) natively in GO.
  • go-m3u8 - Parser and generator library for Apple m3u8 playlists.
  • go-mpd - Parser and generator library for MPEG-DASH manifest files.
  • goav - Comprehensive Go bindings for FFmpeg.
  • gortsplib - Pure Go RTSP server and client library.
  • gst - Go bindings for GStreamer.
  • libgosubs - Subtitle format support for go. Supports .srt, .ttml, and .ass.
  • libvlc-go - Go bindings for libvlc 2.X/3.X/4.X (used by the VLC media player).
  • m3u8 - Parser and generator library of M3U8 playlists for Apple HLS.
  • v4l - Video capture library for Linux, written in Go.

โฌ† back to top

Web Frameworks

Full stack web frameworks.

  • aah - Scalable, performant, rapid development Web framework for Go.
  • Aero - High-performance web framework for Go, reaches top scores in Lighthouse.
  • Air - An ideally refined web framework for Go.
  • appy - An opinionated productive web framework that helps scaling business easier.
  • Banjo - Very simple and fast web framework for Go.
  • Beego - beego is an open-source, high-performance web framework for the Go programming language.
  • Buffalo - Bringing the productivity of Rails to Go!
  • Confetti Framework - Confetti is a Go web application framework with an expressive, elegant syntax. Confetti combines the elegance of Laravel and the simplicity of Go.
  • Echo - High performance, minimalist Go web framework.
  • Fiber - An Express.js inspired web framework build on Fasthttp.
  • Fireball - More "natural" feeling web framework.
  • Flamingo - Framework for pluggable web projects. Including a concept for modules and offering features for DI, Configareas, i18n, template engines, graphql, observability, security, events, routing & reverse routing etc.
  • Flamingo Commerce - Providing e-commerce features using clean architecture like DDD and ports and adapters, that you can use to build flexible e-commerce applications.
  • Gearbox - A web framework written in Go with a focus on high performance and memory optimization.
  • Gin - Gin is a web framework written in Go! It features a martini-like API with much better performance, up to 40 times faster. If you need performance and good productivity.
  • Ginrpc - Gin parameter automatic binding tool,gin rpc tools.
  • Gizmo - Microservice toolkit used by the New York Times.
  • go-json-rest - Quick and easy way to setup a RESTful JSON API.
  • go-rest - Small and evil REST framework for Go.
  • Goa - Goa provides a holistic approach for developing remote APIs and microservices in Go.
  • goa - goa is just like koajs for golang, it is a flexible, light, high-performance and extensible web framework based on middleware.
  • Golax - A non Sinatra fast HTTP framework with support for Google custom methods, deep interceptors, recursion and more.
  • Golf - Golf is a fast, simple and lightweight micro-web framework for Go. It comes with powerful features and has no dependencies other than the Go Standard Library.
  • Gondola - The web framework for writing faster sites, faster.
  • gongular - Fast Go web framework with input mapping/validation and (DI) Dependency Injection.
  • GoTuna - Minimalistic web framework for Go with mux router, middlewares, sessions, templates, embedded views and static files.
  • goweb - Web framework with routing, websockets, logging, middleware, static file server (optional gzip), and automatic TLS.
  • Goyave - Feature-complete REST API framework aimed at clean code and fast development, with powerful built-in functionalities.
  • hiboot - hiboot is a high performance web application framework with auto configuration and dependency injection support.
  • Huma - Framework for modern REST/GraphQL APIs with built-in OpenAPI 3, generated documentation, and a CLI.
  • Macaron - Macaron is a high productive and modular design web framework in Go.
  • mango - Mango is a modular web-application framework for Go, inspired by Rack, and PEP333.
  • Microservice - The framework for the creation of microservices, written in Golang.
  • neo - Neo is minimal and fast Go Web Framework with extremely simple API.
  • patron - Patron is a microservice framework following best cloud practices with a focus on productivity.
  • Resoursea - REST framework for quickly writing resource based services.
  • REST Layer - Framework to build REST/GraphQL API on top of databases with mostly configuration over code.
  • Revel - High-productivity web framework for the Go language.
  • rex - Rex is a library for modular development built upon gorilla/mux, fully compatible with net/http.
  • rk-boot - A bootstrapper library for building enterprise go microservice with Gin and gRPC quickly and easily.
  • rux - Simple and fast web framework for build golang HTTP applications.
  • tango - Micro & pluggable web framework for Go.
  • tigertonic - Go framework for building JSON web services inspired by Dropwizard.
  • uAdmin - Fully featured web framework for Golang, inspired by Django.
  • utron - Lightweight MVC framework for Go(Golang).
  • vox - A golang web framework for humans, inspired by Koa heavily.
  • WebGo - A micro-framework to build web apps; with handler chaining, middleware and context injection. With standard library compliant HTTP handlers(i.e. http.HandlerFunc).
  • YARF - Fast micro-framework designed to build REST APIs and web services in a fast and simple way.

โฌ† back to top

Middlewares

Actual middlewares

  • client-timing - An HTTP client for Server-Timing header.
  • CORS - Easily add CORS capabilities to your API.
  • formjson - Transparently handle JSON input as a standard form POST.
  • go-fault - Fault injection middleware for Go.
  • go-server-timing - Add/parse Server-Timing header.
  • Limiter - Dead simple rate limit middleware for Go.
  • ln-paywall - Go middleware for monetizing APIs on a per-request basis with the Lightning Network (Bitcoin).
  • mid - Miscellaneous HTTP middleware features: idiomatic error return from handlers; receive/respond with JSON data; request tracing; and more.
  • rk-gin - Middleware for Gin framework with logging, metrics, auth, tracing etc.
  • rk-grpc - Middleware for gRPC with logging, metrics, auth, tracing etc.
  • Tollbooth - Rate limit HTTP request handler.
  • XFF - Handle X-Forwarded-For header and friends.

Libraries for creating HTTP middlewares

  • alice - Painless middleware chaining for Go.
  • catena - http.Handler wrapper catenation (same API as "chain").
  • chain - Handler wrapper chaining with scoped data (net/context-based "middleware").
  • go-wrap - Small middlewares package for net/http.
  • gores - Go package that handles HTML, JSON, XML and etc. responses. Useful for RESTful APIs.
  • interpose - Minimalist net/http middleware for golang.
  • mediary - add interceptors to http.Client to allow dumping/shaping/tracing/... of requests/responses.
  • muxchain - Lightweight middleware for net/http.
  • negroni - Idiomatic HTTP middleware for Golang.
  • render - Go package for easily rendering JSON, XML, and HTML template responses.
  • renderer - Simple, lightweight and faster response (JSON, JSONP, XML, YAML, HTML, File) rendering package for Go.
  • rye - Tiny Go middleware library (with canned Middlewares) that supports JWT, CORS, Statsd, and Go 1.7 context.
  • stats - Go middleware that stores various information about your web application.

โฌ† back to top

Routers

  • alien - Lightweight and fast http router from outer space.
  • bellt - A simple Go HTTP router.
  • Bone - Lightning Fast HTTP Multiplexer.
  • Bxog - Simple and fast HTTP router for Go. It works with routes of varying difficulty, length and nesting. And he knows how to create a URL from the received parameters.
  • chi - Small, fast and expressive HTTP router built on net/context.
  • fasthttprouter - High performance router forked from httprouter. The first router fit for fasthttp.
  • FastRouter - a fast, flexible HTTP router written in Go.
  • goblin - A golang http router based on trie tree.
  • gocraft/web - Mux and middleware package in Go.
  • Goji - Goji is a minimalistic and flexible HTTP request multiplexer with support for net/context.
  • goroute - Simple yet powerful HTTP request multiplexer.
  • GoRouter - GoRouter is a Server/API micro framework, HTTP request router, multiplexer, mux that provides request router with middleware supporting net/context.
  • gowww/router - Lightning fast HTTP router fully compatible with the net/http.Handler interface.
  • httprouter - High performance router. Use this and the standard http handlers to form a very high performance web framework.
  • httptreemux - High-speed, flexible tree-based HTTP router for Go. Inspiration from httprouter.
  • lars - Is a lightweight, fast and extensible zero allocation HTTP router for Go used to create customizable frameworks.
  • mux - Powerful URL router and dispatcher for golang.
  • ngamux - Simple HTTP router for Go.
  • ozzo-routing - An extremely fast Go (golang) HTTP router that supports regular expression route matching. Comes with full support for building RESTful APIs.
  • pure - Is a lightweight HTTP router that sticks to the std "net/http" implementation.
  • Siesta - Composable framework to write middleware and handlers.
  • vestigo - Performant, stand-alone, HTTP compliant URL Router for go web applications.
  • violetear - Go HTTP router.
  • xmux - High performance muxer based on httprouter with net/context support.
  • xujiajun/gorouter - A simple and fast HTTP router for Go.

โฌ† back to top

WebAssembly

  • dom - DOM library.
  • go-canvas - Library to use HTML5 Canvas, with all drawing within go code.
  • tinygo - Go compiler for small places. Microcontrollers, WebAssembly, and command-line tools. Based on LLVM.
  • vert - Interop between Go and JS values.
  • wasmbrowsertest - Run Go WASM tests in your browser.
  • webapi - Bindings for DOM and HTML generated from WebIDL.

โฌ† back to top

Windows

  • d3d9 - Go bindings for Direct3D9.
  • go-ole - Win32 OLE implementation for golang.
  • gosddl - Converter from SDDL-string to user-friendly JSON. SDDL consist of four part: Owner, Primary Group, DACL, SACL.

โฌ† back to top

XML

Libraries and tools for manipulating XML.

  • XML-Comp - Simple command line XML comparer that generates diffs of folders, files and tags.
  • xml2map - XML to MAP converter written Golang.
  • xmlwriter - Procedural XML generation API based on libxml2's xmlwriter module.
  • xpath - XPath package for Go.
  • xquery - XQuery lets you extract data from HTML/XML documents using XPath expression.
  • zek - Generate a Go struct from XML.

Zero Trust

Libraries and tools to implement Zero Trust architectures.

  • Cosign - Container Signing, Verification and Storage in an OCI registry.
  • in-toto - Go implementation of the in-toto (provides a framework to protect the integrity of the software supply chain) python reference implementation.
  • Spiffe-Vault - Utilizes Spiffe JWT authentication with Hashicorp Vault for secretless authentication.
  • Spire - SPIRE (the SPIFFE Runtime Environment) is a toolchain of APIs for establishing trust between software systems across a wide variety of hosting platforms.

Code Analysis

Source code analysis tools, also known as Static Application Security Testing (SAST) Tools.

  • apicompat - Checks recent changes to a Go project for backwards incompatible changes.
  • ChainJacking - Find which of your Go lang direct GitHub dependencies is susceptible to ChainJacking attack.
  • dupl - Tool for code clone detection.
  • errcheck - Errcheck is a program for checking for unchecked errors in Go programs.
  • gcvis - Visualise Go program GC trace data in real time.
  • go-checkstyle - checkstyle is a style check tool like java checkstyle. This tool inspired by java checkstyle, golint. The style referred to some points in Go Code Review Comments.
  • go-cleanarch - go-cleanarch was created to validate Clean Architecture rules, like a The Dependency Rule and interaction between packages in your Go projects.
  • go-critic - source code linter that brings checks that are currently not implemented in other linters.
  • go-mod-outdated - An easy way to find outdated dependencies of your Go projects.
  • go-outdated - Console application that displays outdated packages.
  • goast-viewer - Web based Golang AST visualizer.
  • GoCover.io - GoCover.io offers the code coverage of any golang package as a service.
  • goimports - Tool to fix (add, remove) your Go imports automatically.
  • golang-ifood-sdk - iFood API SDK.
  • golines - Formatter that automatically shortens long lines in Go code.
  • GoLint - Golint is a linter for Go source code.
  • Golint online - Lints online Go source files on GitHub, Bitbucket and Google Project Hosting using the golint package.
  • GoPlantUML - Library and CLI that generates text plantump class diagram containing information about structures and interfaces with the relationship among them.
  • goreturns - Adds zero-value return statements to match the func return types.
  • gosimple - gosimple is a linter for Go source code that specialises on simplifying code.
  • gostatus - Command line tool, shows the status of repositories that contain Go packages.
  • lint - Run linters as part of go test.
  • php-parser - A Parser for PHP written in Go.
  • staticcheck - staticcheck is go vet on steroids, applying a ton of static analysis checks you might be used to from tools like ReSharper for C#.
  • tarp - tarp finds functions and methods without direct unit tests in Go source code.
  • tickgit - CLI and go package for surfacing code comment TODOs (in any language) and applying a git blameto identify the author.
  • todocheck - Static code analyser which links TODO comments in code with issues in your issue tracker.
  • unconvert - Remove unnecessary type conversions from Go source.
  • unused - unused checks Go code for unused constants, variables, functions and types.
  • validate - Automatically validates struct fields with tags.

โฌ† back to top

Editor Plugins

Plugin for text editors and IDEs.

  • coc-go language server extension for Vim/Neovim - This plugin adds gopls features to Vim/Neovim.
  • Go Doc - A Visual Studio Code extension for showing definition in output and generating go doc.
  • Go plugin for JetBrains IDEs - Go plugin for JetBrains IDEs.
  • go-language-server - A wrapper to turn the VSCode go extension into a language server supporting the language-server-protocol.
  • go-mode - Go mode for GNU/Emacs.
  • go-plus - Go (Golang) Package For Atom That Adds Autocomplete, Formatting, Syntax Checking, Linting and Vetting.
  • gocode - Autocompletion daemon for the Go programming language.
  • goimports-reviser - Formatting tool for imports.
  • goprofiling - This extension adds benchmark profiling support for the Go language to VS Code.
  • GoSublime - Golang plugin collection for the text editor SublimeText 3 providing code completion and other IDE-like features.
  • gounit-vim - Vim plugin for generating Go tests based on the function's or method's signature.
  • theia-go-extension - Go language support for the Theia IDE.
  • vim-compiler-go - Vim plugin to highlight syntax errors on save.
  • vim-go - Go development plugin for Vim.
  • vscode-go - Extension for Visual Studio Code (VS Code) which provides support for the Go language.
  • Watch - Runs a command in an acme win on file changes.

โฌ† back to top

Go Generate Tools

  • generic - flexible data type for Go.
  • genny - Elegant generics for Go.
  • gocontracts - brings design-by-contract to Go by synchronizing the code with the documentation.
  • godal - Generate orm models corresponding to golang by specifying sql ddl file, which can be used by gorm.
  • gonerics - Idiomatic Generics in Go.
  • gotests - Generate Go tests from your source code.
  • gounit - Generate Go tests using your own templates.
  • hasgo - Generate Haskell inspired functions for your slices.
  • re2dfa - Transform regular expressions into finite state machines and output Go source code.
  • TOML-to-Go - Translates TOML into a Go type in the browser instantly.
  • xgen - XSD (XML Schema Definition) parser and Go/C/Java/Rust/TypeScript code generator.

โฌ† back to top

Go Tools

  • colorgo - Wrapper around go command for colorized go build output.
  • depth - Visualize dependency trees of any package by analyzing imports.
  • docs - Automatically generate RESTful API documentation for GO projects - aligned with Open API Specification standard.
  • generator-go-lang - A Yeoman generator to get new Go projects started.
  • go-callvis - Visualize call graph of your Go program using dot format.
  • go-james - Go project skeleton creator, builds and tests your projects without the manual setup.
  • go-pkg-complete - Bash completion for go and wgo.
  • go-swagger - Swagger 2.0 implementation for go. Swagger is a simple yet powerful representation of your RESTful API.
  • godbg - Implementation of Rusts dbg! macro for quick and easy debugging during development.
  • gomodrun - Go tool that executes and caches binaries included in go.mod files.
  • gotestdox - Show Go test results as readable sentences.
  • gothanks - GoThanks automatically stars your go.mod github dependencies, sending this way some love to their maintainers.
  • igo - An igo to go transpiler (new language features for Go language!)
  • modver - Compare two versions of a Go module to check the version-number change required (major, minor, or patchlevel), according to semver rules.
  • OctoLinker - Navigate through go files efficiently with the OctoLinker browser extension for GitHub.
  • richgo - Enrich go test outputs with text decorations.
  • roumon - Monitor current state of all active goroutines via a command line interface.
  • rts - RTS: response to struct. Generates Go structs from server responses.
  • typex - Examine Go types and their transitive dependencies, alternatively export results as TypeScript value objects (or types) declaration.

โฌ† back to top

Software Packages

Software written in Go.

โฌ† back to top

DevOps Tools

  • abbreviate - abbreviate is a tool turning long strings in to shorter ones with configurable seperaters, for example to embed branch names in to deployment stack IDs.
  • aptly - aptly is a Debian repository management tool.
  • aurora - Cross-platform web-based Beanstalkd queue server console.
  • awsenv - Small binary that loads Amazon (AWS) environment variables for a profile.
  • Balerter - A self-hosted script-based alerting manager.
  • Blast - A simple tool for API load testing and batch jobs.
  • bombardier - Fast cross-platform HTTP benchmarking tool.
  • bosun - Time Series Alerting Framework.
  • cassowary - Modern cross-platform HTTP load-testing tool written in Go.
  • Ddosify - High-performance load testing tool, written in Golang.
  • DepCharge - Helps orchestrating the execution of commands across the many dependencies in larger projects.
  • docker-go-mingw - Docker image for building Go binaries for Windows with MinGW toolchain.
  • Dockerfile-Generator - A go library and an executable that produces valid Dockerfiles using various input channels.
  • dogo - Monitoring changes in the source file and automatically compile and run (restart).
  • drone-jenkins - Trigger downstream Jenkins jobs using a binary, docker or Drone CI.
  • drone-scp - Copy files and artifacts via SSH using a binary, docker or Drone CI.
  • Dropship - Tool for deploying code via cdn.
  • easyssh-proxy - Golang package for easy remote execution through SSH and SCP downloading via ProxyCommand.
  • fac - Command-line user interface to fix git merge conflicts.
  • gaia - Build powerful pipelines in any programming language.
  • ghorg - Quickly clone an entire org/users repositories into one directory - Supports GitHub, GitLab, Gitea, and Bitbucket.
  • Gitea - Fork of Gogs, entirely community driven.
  • gitea-github-migrator - Migrate all your GitHub repositories, issues, milestones and labels to your Gitea instance.
  • go-furnace - Hosting solution written in Go. Deploy your Application with ease on AWS, GCP or DigitalOcean.
  • go-selfupdate - Enable your Go applications to self update.
  • gobrew - gobrew lets you easily switch between multiple versions of go.
  • godbg - Web-based gdb front-end application.
  • Gogs - A Self Hosted Git Service in the Go Programming Language.
  • gonative - Tool which creates a build of Go that can cross compile to all platforms while still using the Cgo-enabled versions of the stdlib packages.
  • govvv - โ€œgo buildโ€ wrapper to easily add version information into Go binaries.
  • gox - Dead simple, no frills Go cross compile tool.
  • goxc - build tool for Go, with a focus on cross-compiling and packaging.
  • grapes - Lightweight tool designed to distribute commands over ssh with ease.
  • GVM - GVM provides an interface to manage Go versions.
  • Hey - Hey is a tiny program that sends some load to a web application.
  • httpref - httpref is a handy CLI reference for HTTP methods, status codes, headers, and TCP and UDP ports.
  • jcli - Jenkins CLI allows you manage your Jenkins as an easy way.
  • kala - Simplistic, modern, and performant job scheduler.
  • kcli - Command line tool for inspecting kafka topics/partitions/messages.
  • kool - Command line tool for managing Docker environments as an easy way.
  • kubernetes - Container Cluster Manager from Google.
  • kwatch - Monitor & detect crashes in your Kubernetes(K8s) cluster instantly.
  • lstags - Tool and API to sync Docker images across different registries.
  • lwc - A live-updating version of the UNIX wc command.
  • manssh - manssh is a command line tool for managing your ssh alias config easily.
  • Mantil - Go specific framework for building serverless applications on AWS that enables you to focus on pure Go code while Mantil takes care of the infrastructure.
  • Mizu - API traffic viewer for Kubernetes enabling you to view all API communication between microservices, multiprotocol support: HTTP1.1, HTTP/2, AMQP, Kafka, Redis.
  • Moby - Collaborative project for the container ecosystem to assemble container-based systems.
  • Mora - REST server for accessing MongoDB documents and meta data.
  • ostent - collects and displays system metrics and optionally relays to Graphite and/or InfluxDB.
  • Packer - Packer is a tool for creating identical machine images for multiple platforms from a single source configuration.
  • Pewpew - Flexible HTTP command line stress tester.
  • Pomerium - Pomerium is an identity-aware access proxy.
  • Rodent - Rodent helps you manage Go versions, projects and track dependencies.
  • s3-proxy - S3 Proxy with GET, PUT and DELETE methods and authentication (OpenID Connect and Basic Auth).
  • s3gof3r - Small utility/library optimized for high speed transfer of large objects into and out of Amazon S3.
  • s5cmd - Blazing fast S3 and local filesystem execution tool.
  • Scaleway-cli - Manage BareMetal Servers from Command Line (as easily as with Docker).
  • script - Making it easy to write shell-like scripts in Go for DevOps and system administration tasks.
  • sg - Benchmarks a set of HTTP endpoints (like ab), with possibility to use the response code and data between each call for specific server stress based on its previous response.
  • skm - SKM is a simple and powerful SSH Keys Manager, it helps you to manage your multiple SSH keys easily!
  • StatusOK - Monitor your Website and REST APIs.Get Notified through Slack, E-mail when your server is down or response time is more than expected.
  • terraform-provider-openapi - Terraform provider plugin that dynamically configures itself at runtime based on an OpenAPI document (formerly known as swagger file) containing the definitions of the APIs exposed.
  • traefik - Reverse proxy and load balancer with support for multiple backends.
  • trubka - A CLI tool to manage and troubleshoot Apache Kafka clusters with the ability of generically publishing/consuming protocol buffer and plain text events to/from Kafka.
  • uTask - Automation engine that models and executes business processes declared in yaml.
  • Vegeta - HTTP load testing tool and library. It's over 9000!
  • webhook - Tool which allows user to create HTTP endpoints (hooks) that execute commands on the server.
  • Wide - Web-based IDE for Teams using Golang.
  • winrm-cli - Cli tool to remotely execute commands on Windows machines.

โฌ† back to top

Other Software

  • Better Go Playground - Go playground with syntax highlight, code completion and other features.
  • blocky - Fast and lightweight DNS proxy as ad-blocker for local network with many features.
  • borg - Terminal based search engine for bash snippets.
  • boxed - Dropbox based blog engine.
  • Cherry - Tiny webchat server in Go.
  • Circuit - Circuit is a programmable platform-as-a-service (PaaS) and/or Infrastructure-as-a-Service (IaaS), for management, discovery, synchronization and orchestration of services and hosts comprising cloud applications.
  • Comcast - Simulate bad network connections.
  • confd - Manage local application configuration files using templates and data from etcd or consul.
  • crawley - Web scraper/crawler for cli.
  • croc - Easily and securely send files or folders from one computer to another.
  • Docker - Open platform for distributed applications for developers and sysadmins.
  • Documize - Modern wiki software that integrates data from SaaS tools.
  • dp - Through SDK for data exchange with blockchain, developers can get easy access to DAPP development.
  • drive - Google Drive client for the commandline.
  • Duplicacy - A cross-platform network and cloud backup tool based on the idea of lock-free deduplication.
  • Gebug - A tool that makes debugging of Dockerized Go applications super easy by enabling Debugger and Hot-Reload features, seamlessly.
  • gfile - Securely transfer files between two computers, without any third party, over WebRTC.
  • Go Package Store - App that displays updates for the Go packages in your GOPATH.
  • go-peerflix - Video streaming torrent client.
  • goblin - Golang binaries in a curl, built by goblins.
  • GoBoy - Nintendo Game Boy Color emulator written in Go.
  • gocc - Gocc is a compiler kit for Go written in Go.
  • GoDocTooltip - Chrome extension for Go Doc sites, which shows function description as tooltip at function list.
  • GoLand - Full featured cross-platform Go IDE.
  • Gor - Http traffic replication tool, for replaying traffic from production to stage/dev environments in real-time.
  • Guora - A self-hosted Quora like web application written in Go.
  • hoofli - Generate PlantUML diagrams from Chrome or Firefox network inspections.
  • hugo - Fast and Modern Static Website Engine.
  • ide - Browser accessible IDE. Designed for Go with Go.
  • ipe - Open source Pusher server implementation compatible with Pusher client libraries written in GO.
  • joincap - Command-line utility for merging multiple pcap files together.
  • Juju - Cloud-agnostic service deployment and orchestration - supports EC2, Azure, Openstack, MAAS and more.
  • Leaps - Pair programming service using Operational Transforms.
  • lgo - Interactive Go programming with Jupyter. It supports code completion, code inspection and 100% Go compatibility.
  • limetext - Lime Text is a powerful and elegant text editor primarily developed in Go that aims to be a Free and open-source software successor to Sublime Text.
  • LiteIDE - LiteIDE is a simple, open source, cross-platform Go IDE.
  • mockingjay - Fake HTTP servers and consumer driven contracts from one configuration file. You can also make the server randomly misbehave to help do more realistic performance tests.
  • myLG - Command Line Network Diagnostic tool written in Go.
  • naclpipe - Simple NaCL EC25519 based crypto pipe tool written in Go.
  • Neo-cowsay - ๐Ÿฎ cowsay is reborn. for a New Era.
  • nes - Nintendo Entertainment System (NES) emulator written in Go.
  • Orbit - A simple tool for running commands and generating files from templates.
  • peg - Peg, Parsing Expression Grammar, is an implementation of a Packrat parser generator.
  • Plik - Plik is a temporary file upload system (Wetransfer like) in Go.
  • protoncheck - ProtonMail module for waybar/polybar/yabar/i3blocks.
  • restic - De-duplicating backup program.
  • scc - Sloc Cloc and Code, a very fast accurate code counter with complexity calculations and COCOMO estimates.
  • Seaweed File System - Fast, Simple and Scalable Distributed File System with O(1) disk seek.
  • shell2http - Executing shell commands via http server (for prototyping or remote control).
  • snap - Powerful telemetry framework.
  • Snitch - Simple way to notify your team and many tools when someone has deployed any application via Tsuru.
  • Stack Up - Stack Up, a super simple deployment tool - just Unix - think of it like 'make' for a network of servers.
  • stew - An independent package manager for compiled binaries.
  • syncthing - Open, decentralized file synchronization tool and protocol.
  • tcpdog - eBPF based TCP observability.
  • tcpprobe - TCP tool for network performance and path monitoring, including socket statistics.
  • term-quiz - Quizzes for your terminal.
  • toxiproxy - Proxy to simulate network and system conditions for automated tests.
  • tsuru - Extensible and open source Platform as a Service software.
  • vaku - CLI & API for folder-based functions in Vault like copy, move, and search.
  • vFlow - High-performance, scalable and reliable IPFIX, sFlow and Netflow collector.
  • wellington - Sass project management tool, extends the language with sprite functions (like Compass).
  • woke - Detect non-inclusive language in your source code.

โฌ† back to top

Resources

Where to discover new Go libraries.

โฌ† back to top

Benchmarks

โฌ† back to top

Conferences

โฌ† back to top

E-Books

E-books for purchase

Free e-books

โฌ† back to top

Gophers

โฌ† back to top

Meetups

Add the group of your city/country here (send PR)

โฌ† back to top

Style Guides

โฌ† back to top

Social Media

Twitter

โฌ† back to top

Reddit

โฌ† back to top

Websites

โฌ† back to top

Tutorials

โฌ† back to top

Awesome Scala Awesome

A community driven list of useful Scala libraries, frameworks and software. This is not a catalog of all the libraries, just a starting point for your explorations. Inspired by awesome-python. Other amazingly awesome lists can be found in the awesome-awesomeness list.

Also awesome is Scaladex, the searchable, tagged, and centralized index of Scala libraries.

Projects with over 500 stargazers are in bold.

Contributing

Your contributions are always welcome! Please submit a pull request or create an issue to add a new framework, library or software to the list. Do not submit a project that hasnโ€™t been updated in the past 6 months or is not awesome.

Don't modify README.md in your pull request. It is automatically generated. Modify template.md instead.

Table of Contents

Archive and Compression

Name | Description | GitHub Activity ---- | ----------- | --------------- SevenZ4S | SevenZip library for Scala, easy to use. | GitHub stars GitHub commit activity

Artificial Intelligence

Name | Description | GitHub Activity ---- | ----------- | --------------- cilib | Typesafe, purely functional Computational Intelligence | GitHub stars GitHub commit activity

Database

Database access libraries in Scala.

Name | Description | GitHub Activity ---- | ----------- | --------------- akka-persistence-gcp-datastore | akka-persistence-gcp-datastore is a journal and snapshot store plugin for akka-persistence using google cloud firestore in datastore mode. | GitHub stars GitHub commit activity anorm | The Anorm database library | GitHub stars GitHub commit activity casbah | Casbah is now officially end-of-life (EOL). | GitHub stars GitHub commit activity clickhouse-scala-client | Clickhouse Scala Client with Reactive Streams support | GitHub stars GitHub commit activity couchbase-jvm-clients | The Couchbase Monorepo for JVM Clients: Java, Scala, io-coreโ€ฆ | GitHub stars GitHub commit activity couchdb-scala | A purely functional Scala client for CouchDB | GitHub stars GitHub commit activity doobie | Functional JDBC layer for Scala. | GitHub stars GitHub commit activity elastic4s | Elasticsearch Scala Client - Reactive, Non Blocking, Type Safe, HTTP Client | GitHub stars GitHub commit activity etcd4s | Scala etcd client implementing V3 APIs | GitHub stars GitHub commit activity finagle-postgres | PostgreSQL protocol support for Finagle | GitHub stars GitHub commit activity laserdisc | A Future-free Fs2 native pure FP Redis client | GitHub stars GitHub commit activity mysql-binlog-stream | None | GitHub stars GitHub commit activity longevity | A Persistence Framework for Scala and NoSQL | GitHub stars GitHub commit activity lucene4s | Light-weight convenience wrapper around Lucene to simplify complex tasks and add Scala sugar. | GitHub stars GitHub commit activity mapperdao | A Scala ORM library | GitHub stars GitHub commit activity morpheus | Reactive type-safe Scala driver for SQL databases | GitHub stars GitHub commit activity neotypes | Scala lightweight, type-safe, asynchronous driver for neo4j | GitHub stars GitHub commit activity phantom | Schema safe, type-safe, reactive Scala driver for Cassandra/Datastax Enterprise | GitHub stars GitHub commit activity pulsar4s | Idiomatic, typesafe, and reactive Scala client for Apache Pulsar | GitHub stars GitHub commit activity zio-quill | Compile-time Language Integrated Queries for Scala | GitHub stars GitHub commit activity reactivecouchbase-rs-core | New ReactiveCouchbase driver using reactive-streams | GitHub stars GitHub commit activity ReactiveMongo | :leaves: Non-blocking, Reactive MongoDB Driver for Scala | GitHub stars GitHub commit activity rediscala | Non-blocking, Reactive Redis driver for Scala (with Sentinel support) | GitHub stars GitHub commit activity relate | Performant database access in Scala | GitHub stars GitHub commit activity salat | Salat is a simple serialization library for case classes. | GitHub stars GitHub commit activity sangria | Scala GraphQL implementation | GitHub stars GitHub commit activity scala-activerecord | ActiveRecord-like ORM library for Scala | GitHub stars GitHub commit activity scala-forklift | Type-safe data migration tool for Slick, Git and beyond. | GitHub stars GitHub commit activity scala-redis | A scala library for connecting to a redis server, or a cluster of redis nodes using consistent hashing on the client side. | GitHub stars GitHub commit activity scala-sql | scala SQL api | GitHub stars GitHub commit activity scalarelational | Type-Safe framework for defining, modifying, and querying SQL databases | GitHub stars GitHub commit activity scalikejdbc | A tidy SQL-based DB access library for Scala developers. This library naturally wraps JDBC APIs and provides you easy-to-use APIs. | GitHub stars GitHub commit activity scanamo | Simpler DynamoDB access for Scala | GitHub stars GitHub commit activity scredis | Non-blocking, ultra-fast Scala Redis client built on top of Akka IO, used in production at Livestream | GitHub stars GitHub commit activity scruid | Scala + Druid: Scruid. A library that allows you to compose queries in Scala, and parse the result back into typesafe classes. | GitHub stars GitHub commit activity shade | Memcached client for Scala | GitHub stars GitHub commit activity slick | Scala Language Integrated Connection Kit. Slick is a modern database query and access library for Scala | GitHub stars GitHub commit activity slick-pg | Slick extensions for PostgreSQL | GitHub stars GitHub commit activity squeryl | A Scala DSL for talking with databases with minimum verbosity and maximum type safety | GitHub stars GitHub commit activity molecule | Non-blocking asynchronous domain-customizable database query language for Scala and Scala.js against the Datomic database. | GitHub stars GitHub commit activity zio-redis | A ZIO-based redis client | GitHub stars GitHub commit activity skunk | A data access library for Scala + Postgres. | GitHub stars GitHub commit activity

Messaging

Name | Description | GitHub Activity ---- | ----------- | --------------- op-rabbit | The Opinionated RabbitMQ Library for Scala and Akka | GitHub stars GitHub commit activity

Graphical User Interfaces

Libraries for creation of graphical user interfaces

Name | Description | GitHub Activity ---- | ----------- | --------------- scalafx | ScalaFX simplifies creation of JavaFX-based user interfaces in Scala | GitHub stars GitHub commit activity

Web Frameworks

Scala frameworks for web development.

Name | Description | GitHub Activity ---- | ----------- | --------------- analogweb-scala | Tiny High Performance HTTP Server for Scala | GitHub stars GitHub commit activity chaos | A lightweight framework for writing REST services in Scala. | GitHub stars GitHub commit activity cask | Cask: a Scala HTTP micro-framework | GitHub stars GitHub commit activity colossus | I/O and Microservice library for Scala | GitHub stars GitHub commit activity finatra | Fast, testable, Scala services built on TwitterServer and Finagle | GitHub stars GitHub commit activity framework | Lift Framework | GitHub stars GitHub commit activity peregrine | Async lightweight Scala web framework | GitHub stars GitHub commit activity playframework | Play Framework | GitHub stars GitHub commit activity pagelets | A module for the Play Framework to build highly modular applications | GitHub stars GitHub commit activity reactive | A simple FRP library and a web UI framework built on it | GitHub stars GitHub commit activity scalajs-react | Facebook's React on Scala.JS | GitHub stars GitHub commit activity scalatra | Tiny Scala high-performance, async web framework, inspired by Sinatra | GitHub stars GitHub commit activity skinny-framework | :monorail: "Scala on Rails" - A full-stack web app framework for rapid development in Scala | GitHub stars GitHub commit activity unfiltered | A toolkit for servicing HTTP requests in Scala | GitHub stars GitHub commit activity xitrum | Async and clustered Scala web framework and HTTP(S) server | GitHub stars GitHub commit activity youi | Next generation user interface and application development in Scala and Scala.js for web, mobile, and desktop. | GitHub stars GitHub commit activity

Reactive Web Frameworks

Scala libraries for Reactive Web development

Name | Description | GitHub Activity ---- | ----------- | --------------- Binding.scala | Reactive data-binding for Scala | GitHub stars GitHub commit activity korolev | Single Page Applications running on the server side. | GitHub stars GitHub commit activity udash-core | Scala framework for building beautiful and maintainable web applications. | GitHub stars GitHub commit activity vertx-lang-scala | Vert.x for Scala | GitHub stars GitHub commit activity

Data Binding and Validation

Scala libraries for data binding and validation

Name | Description | GitHub Activity ---- | ----------- | --------------- accord | Accord: A sane validation library for Scala | GitHub stars GitHub commit activity dupin | Minimal, idiomatic, customizable validation Scala library. | GitHub stars GitHub commit activity octopus | Scala library for boilerplate-free validation | GitHub stars GitHub commit activity veto | If you don't agree with the data | GitHub stars GitHub commit activity

i18n

Scala libraries for i18n.

Name | Description | GitHub Activity ---- | ----------- | --------------- scala-xgettext | Scala compiler plugin that acts like GNU xgettext command to extract i18n strings in Scala source code files to Gettext .po file | GitHub stars GitHub commit activity scaposer | GNU Gettext .po file loader for Scala | GitHub stars GitHub commit activity

Authentication

Libraries for implementing authentications schemes.

Name | Description | GitHub Activity ---- | ----------- | --------------- akka-http-session | Web & mobile client-side akka-http sessions, with optional JWT support | GitHub stars GitHub commit activity aws-request-signer | Scala library to sign HTTP requests to AWS services. | GitHub stars GitHub commit activity OAuth2-mock-play | An implementation of an OAuth2 server designed for mocking/testing | GitHub stars GitHub commit activity play-googleauth | Simple play module for authenticating against Google | GitHub stars GitHub commit activity play-pac4j | Security library for Play framework 2 in Java and Scala: OAuth, CAS, SAML, OpenID Connect, LDAP, JWT... | GitHub stars GitHub commit activity play2-auth | Play2.x Authentication and Authorization module | GitHub stars GitHub commit activity scala-oauth2-provider | OAuth 2.0 server-side implementation written in Scala | GitHub stars GitHub commit activity securesocial | A module that provides OAuth, OAuth2 and OpenID authentication for Play Framework applications | GitHub stars GitHub commit activity

Cryptography

Cryptography and Encryption Libraries.

Name | Description | GitHub Activity ---- | ----------- | --------------- scrypto | Cryptographic primitives for Scala | GitHub stars GitHub commit activity tsec | Type-safe general-cryptography library - https://jmcardon.github.io/tsec/ | GitHub stars GitHub commit activity jose | Extensible JOSE library for Scala | GitHub stars GitHub commit activity

Testing

Libraries for code testing.

Name | Description | GitHub Activity ---- | ----------- | --------------- cornichon | Scala DSL for testing HTTP JSON API | GitHub stars GitHub commit activity gatling | Modern Load Testing as Code | GitHub stars GitHub commit activity minitest | The super light testing library for Scala and Scala.js | GitHub stars GitHub commit activity mockito-scala | Mockito for Scala language | GitHub stars GitHub commit activity munit | Scala testing library with actionable errors and extensible APIs | GitHub stars GitHub commit activity scalacheck | Property-based testing for Scala | GitHub stars GitHub commit activity scalameter | Microbenchmarking and performance regression testing framework for the JVM platform. | GitHub stars GitHub commit activity ScalaMock | Native Scala mocking framework | GitHub stars GitHub commit activity scalaprops | property based testing library for Scala | GitHub stars GitHub commit activity scalatest | A testing tool for Scala and Java developers | GitHub stars GitHub commit activity scalive | Connect a Scala REPL to running JVM processes without any prior setup | GitHub stars GitHub commit activity specs2 | Software Specifications for Scala | GitHub stars GitHub commit activity stryker4s | Mutation testing for Scala | GitHub stars GitHub commit activity weaver-test | A test framework that runs everything in parallel. | GitHub stars GitHub commit activity testcontainers-scala | Docker containers for testing in scala | GitHub stars GitHub commit activity utest | A simple testing framework for Scala | GitHub stars GitHub commit activity

JSON

Libraries for work with json.

Name | Description | GitHub Activity ---- | ----------- | --------------- argonaut | Purely functional JSON parser and library in scala. | GitHub stars GitHub commit activity borer | Efficient CBOR and JSON (de)serialization in Scala | GitHub stars GitHub commit activity circe | Yet another JSON library for Scala | GitHub stars GitHub commit activity diffson | A scala diff/patch library for Json | GitHub stars GitHub commit activity jackson-module-scala | Add-on module for Jackson (https://github.com/FasterXML/jackson) to support Scala-specific datatypes | GitHub stars GitHub commit activity jawn | Jawn is for parsing jay-sawn (JSON) | GitHub stars GitHub commit activity json4s | JSON library | GitHub stars GitHub commit activity jsoniter-scala | Scala macros for compile-time generation of safe and ultra-fast JSON codecs | GitHub stars GitHub commit activity json | Persist-Json, a Fast Json Parser Written in Scala | GitHub stars GitHub commit activity ninny-json | JSON typeclasses that know the difference between null and absent fields | GitHub stars GitHub commit activity play-json | The Play JSON library | GitHub stars GitHub commit activity pushka | ABANDONED Pure Scala serialization library with annotations | GitHub stars GitHub commit activity sbt-json | sbt plugin that generates Scala case classes for easy, statically typed and implicit access of JSON data e.g. from API responses | GitHub stars GitHub commit activity scala-jsonapi | Scala support library for integrating the JSON API spec with Spray, Play! or Circe | GitHub stars GitHub commit activity ScalaJack | Fast JSON parser/generator for Scala | GitHub stars GitHub commit activity spray-json | A lightweight, clean and simple JSON implementation in Scala | GitHub stars GitHub commit activity

YAML

Libraries for work with YAML.

Name | Description | GitHub Activity ---- | ----------- | --------------- moultingyaml | Scala wrapper for SnakeYAML | GitHub stars GitHub commit activity

CSV

Libraries for work with CSV.

Name | Description | GitHub Activity ---- | ----------- | --------------- fm-flatfile | Scala Library for Reading Flat File Data (CSV/TSV/XLS/XLSX) | GitHub stars GitHub commit activity kantan.csv | CSV handling library for Scala | GitHub stars GitHub commit activity scala-csv | CSV Reader/Writer for Scala | GitHub stars GitHub commit activity spata | Functional, stream-based CSV processor for Scala | GitHub stars GitHub commit activity

Serialization

Libraries for serializing and deserializing data for storage or transport.

Name | Description | GitHub Activity ---- | ----------- | --------------- avro-codegen | Scala code generator for Avro schemas. | GitHub stars GitHub commit activity borer | Efficient CBOR and JSON (de)serialization in Scala | GitHub stars GitHub commit activity avro4s | Avro schema generation and serialization / deserialization for Scala | GitHub stars GitHub commit activity chill | Scala extensions for the Kryo serialization library | GitHub stars GitHub commit activity msgpack-scala | MessagePack serializer implementation for Scala / msgpack.org[Scala] | GitHub stars GitHub commit activity ScalaPB | Protocol buffer compiler for Scala. | GitHub stars GitHub commit activity scodec | Scala combinator library for working with binary data | GitHub stars GitHub commit activity scrooge | A Thrift parser/generator | GitHub stars GitHub commit activity upickle | uPickle: a simple, fast, dependency-free JSON & Binary (MessagePack) serialization library for Scala | GitHub stars GitHub commit activity

Science and Data Analysis

Libraries for scientific computing, data analysis and numerical processing.

Name | Description | GitHub Activity ---- | ----------- | --------------- algebird | Abstract Algebra for Scala | GitHub stars GitHub commit activity axle | Axle Domain Specific Language for Scientific Cloud Computing and Visualization | GitHub stars GitHub commit activity BigDL | Building Large-Scale AI Applications for Distributed Big Data | GitHub stars GitHub commit activity breeze | Breeze is a numerical processing library for Scala. | GitHub stars GitHub commit activity Clustering4Ever | C4E, a JVM friendly library written in Scala for both local and distributed (Spark) Clustering. | GitHub stars GitHub commit activity doddle-model | :cake: doddle-model: machine learning in Scala. | GitHub stars GitHub commit activity figaro | Figaro Programming Language and Core Libraries | GitHub stars GitHub commit activity libra | A dimensional analysis library based on dependent types | GitHub stars GitHub commit activity LoMRF | LoMRF is an open-source implementation of Markov Logic Networks | GitHub stars GitHub commit activity mgo | Purely functional genetic algorithms for multi-objective optimisation | GitHub stars GitHub commit activity MLLib | Machine Learning framework for Spark | nd4s | ND4S: N-Dimensional Arrays for Scala. Scientific Computing a la Numpy. Based on ND4J. | GitHub stars GitHub commit activity NDScala | N-dimensional arrays in Scala 3. Think NumPy ndarray, but type-safe over shapes, array/axis labels & numeric data types | GitHub stars GitHub commit activity numsca | numsca is numpy for scala | GitHub stars GitHub commit activity onnx-scala | An ONNX (Open Neural Network eXchange) API and backend for typeful, functional deep learning in Scala 3 | GitHub stars GitHub commit activity openmole | Workflow engine for exploration of simulation models using high throughput computing | GitHub stars GitHub commit activity Optimus | Optimus is a mathematical programming library for Scala. | GitHub stars GitHub commit activity OscaR | a Scala toolkit for solving Operations Research problems | rings | Rings: efficient JVM library for polynomial rings | GitHub stars GitHub commit activity smile | Statistical Machine Intelligence & Learning Engine | GitHub stars GitHub commit activity spark-notebook | Interactive and Reactive Data Science using Scala and Spark. | GitHub stars GitHub commit activity spire | Powerful new number types and numeric abstractions for Scala. | GitHub stars GitHub commit activity squants | The Scala API for Quantities, Units of Measure and Dimensional Analysis | GitHub stars GitHub commit activity Synapses | A group of neural-network libraries for functional and mainstream languages | GitHub stars GitHub commit activity tensorflow_scala | TensorFlow API for the Scala Programming Language | GitHub stars GitHub commit activity zeppelin | Web-based notebook that enables data-driven, interactive data analytics and collaborative documents with SQL, Scala and more. | GitHub stars GitHub commit activity

Big Data

Name | Description | GitHub Activity ---- | ----------- | --------------- BIDMach | CPU and GPU-accelerated Machine Learning Library | GitHub stars GitHub commit activity flink | Apache Flink | GitHub stars GitHub commit activity gridscale | Scala library for accessing various file, batch systems, job schedulers and grid middlewares. | GitHub stars GitHub commit activity kafka | Mirror of Apache Kafka | GitHub stars GitHub commit activity alpakka-kafka | Alpakka Kafka connector - Alpakka is a Reactive Enterprise Integration library for Java and Scala, based on Reactive Streams and Akka. | GitHub stars GitHub commit activity scalding | A Scala API for Cascading | GitHub stars GitHub commit activity schemer | Schema registry for CSV, TSV, JSON, AVRO and Parquet schema. Supports schema inference and GraphQL API. | GitHub stars GitHub commit activity scio | A Scala API for Apache Beam and Google Cloud Dataflow. | GitHub stars GitHub commit activity Scrunch | A Scala wrapper for Apache Crunch which provides a framework for writing, testing, and running MapReduce pipelines. | spark | Apache Spark - A unified analytics engine for large-scale data processing | GitHub stars GitHub commit activity sparkplug | Spark package to "plug" holes in data using SQL based rules โšก๏ธ ๐Ÿ”Œ | GitHub stars GitHub commit activity sparta | Real Time Analytics and Data Pipelines based on Spark Streaming | GitHub stars GitHub commit activity summingbird | Streaming MapReduce with Scalding and Storm | GitHub stars GitHub commit activity Vegas | The missing MatPlotLib for Scala + Spark | GitHub stars GitHub commit activity gallia-core | A schema-aware Scala library for data transformation | GitHub stars GitHub commit activity

Command Line Interfaces

Libraries for creation of command line interfaces

Name | Description | GitHub Activity ---- | ----------- | --------------- clist | Command Line Interface Scala Toolkit | GitHub stars GitHub commit activity decline | A composable command-line parser for Scala. | GitHub stars GitHub commit activity mainargs | A small, convenient, dependency-free library for command-line argument parsing in Scala | GitHub stars GitHub commit activity scallop | a simple Scala CLI parsing library | GitHub stars GitHub commit activity scopt | command line options parsing for Scala | GitHub stars GitHub commit activity

Image processing and image analysis

2D and 3D image processing and image analysis

Name | Description | GitHub Activity ---- | ----------- | --------------- scala-phash | Image comparison by hash codes | GitHub stars GitHub commit activity scalismo | Scalable Image Analysis and Shape Modelling | GitHub stars GitHub commit activity scrimage | Java, Scala and Kotlin image processing library | GitHub stars GitHub commit activity

Sound processing and music

Name | Description | GitHub Activity ---- | ----------- | --------------- Chromaprint.scala | Chromaprint/AcoustID audio fingerprinting for the JVM | GitHub stars GitHub commit activity ScalaCollider | A Scala sound synthesis library based on SuperCollider. | GitHub stars GitHub commit activity

Functional Reactive Programming

Event streams, signals, observables, etc.

Name | Description | GitHub Activity ---- | ----------- | --------------- fs2 | Compositional, streaming I/O library for Scala | GitHub stars GitHub commit activity iteratee | Iteratees for Cats | GitHub stars GitHub commit activity monix | Asynchronous, Reactive Programming for Scala and Scala.js. | GitHub stars GitHub commit activity reactors | A concurrent reactive programming framework. | GitHub stars GitHub commit activity reactor-scala-extensions | A scala extension for Project Reactor's Flux and Mono | GitHub stars GitHub commit activity REScala | REScala - reactive programming in OO applications | GitHub stars GitHub commit activity RxScala | RxScala โ€“ Reactive Extensions for Scala โ€“ a library for composing asynchronous and event-based programs using observable sequences | GitHub stars GitHub commit activity scala.rx | An experimental library for Functional Reactive Programming in Scala | GitHub stars GitHub commit activity zio | ZIO โ€” A type-safe, composable library for async and concurrent programming in Scala | GitHub stars GitHub commit activity SynapseGrid | SynapseGrid is a framework for constructing dynamic low latency data flow systems. | GitHub stars GitHub commit activity vertx-lang-scala | Vert.x for Scala | GitHub stars GitHub commit activity wire-signals | A small and effective event-handling library for Scala | GitHub stars GitHub commit activity

Modularization and Dependency Injection

Modularization of applications, dependency injection, etc.

Name | Description | GitHub Activity ---- | ----------- | --------------- airframe | Essential Building Blocks for Scala | GitHub stars GitHub commit activity izumi | Productivity-oriented collection of lightweight fancy stuff for Scala toolchain | GitHub stars GitHub commit activity macwire | Lightweight and Nonintrusive Scala Dependency Injection Library | GitHub stars GitHub commit activity scala-guice | Scala extensions for Google Guice | GitHub stars GitHub commit activity scaldi | Lightweight Scala Dependency Injection Library | GitHub stars GitHub commit activity sclasner | Scala classpath scanner | GitHub stars GitHub commit activity subcut | Scala Uniquely Bound Classes Under Traits | GitHub stars GitHub commit activity jam | Incredibly simple DI Scala library. | GitHub stars GitHub commit activity

Distributed Systems

Libraries and frameworks for writing distributed applications.

Name | Description | GitHub Activity ---- | ----------- | --------------- akka | Build highly concurrent, distributed, and resilient message-driven applications on the JVM | GitHub stars GitHub commit activity akka-tracing | A distributed tracing extension for Akka. Provides integration with Play framework, Spray and Akka HTTP. | GitHub stars GitHub commit activity annette | Platform to build distributed, scalable, enterprise-wide business applications | GitHub stars GitHub commit activity curiodb | Distributed NoSQL Database | GitHub stars GitHub commit activity finagle | A fault tolerant, protocol-agnostic RPC system | GitHub stars GitHub commit activity glokka | Library to register and lookup actors by names in an Akka cluster | GitHub stars GitHub commit activity lagom | Reactive Microservices for the JVM | GitHub stars GitHub commit activity parapet | A purely functional library to build distributed and event-driven systems | GitHub stars GitHub commit activity poppet | Minimal, type-safe RPC Scala library. | GitHub stars GitHub commit activity reactors | A foundational framework for distributed programming. | GitHub stars GitHub commit activity

Extensions

Scala extensions.

Name | Description | GitHub Activity ---- | ----------- | --------------- Ammonite | Scala Scripting | GitHub stars GitHub commit activity better-files | Simple, safe and intuitive Scala I/O | GitHub stars GitHub commit activity blindsight | Blindsight is a Scala logging API with DSL based structured logging, fluent logging, semantic logging, flow logging, and context aware logging. | GitHub stars GitHub commit activity cassovary | Cassovary is a simple big graph processing library for the JVM | GitHub stars GitHub commit activity cats | Lightweight, modular, and extensible library for functional programming. | GitHub stars GitHub commit activity chimney | Scala library for boilerplate-free, type-safe data transformations | GitHub stars GitHub commit activity chronoscala | A JSR-310 port of nscala_time | GitHub stars GitHub commit activity Dsl.scala | A framework to create embedded Domain-Specific Languages in Scala | GitHub stars GitHub commit activity each | A macro library that converts native imperative syntax to scalaz's monadic expressions | GitHub stars GitHub commit activity eff | Eff monad for cats - https://atnos-org.github.io/eff | GitHub stars GitHub commit activity enableIf.scala | A library that toggles Scala code at compile-time, like #if in C/C++ | GitHub stars GitHub commit activity enumeratum | A type-safe, reflection-free, powerful enumeration implementation for Scala with exhaustive pattern match warnings and helpful integrations. | GitHub stars GitHub commit activity Freasy-Monad | Easy way to create Free Monad using Scala macros with first-class Intellij support. | GitHub stars GitHub commit activity freedsl | Practical effect composition library based on abstract wrapping type and the free monad | GitHub stars GitHub commit activity freestyle | A cohesive & pragmatic framework of FP centric Scala libraries | GitHub stars GitHub commit activity hamsters | A mini Scala utility library | GitHub stars GitHub commit activity lamma | Lamma schedule generator for Scala is a professional schedule generation library for periodic schedules like fixed income coupon payment, equity deravitive fixing date generation etc. | GitHub stars GitHub commit activity larray | Large off-heap arrays and mmap files for Scala and Java | GitHub stars GitHub commit activity log4s | High-performance SLF4J wrapper for Scala. | GitHub stars GitHub commit activity izumi | Productivity-oriented collection of lightweight fancy stuff for Scala toolchain | GitHub stars GitHub commit activity Monocle | Optics library for Scala | GitHub stars GitHub commit activity nscala-time | A new Scala wrapper for Joda Time based on scala-time | GitHub stars GitHub commit activity quicklens | Modify deeply nested case class fields | GitHub stars GitHub commit activity scala-records | Labeled records for Scala based on structural refinement types and macros. | GitHub stars GitHub commit activity refined | Refinement types for Scala | GitHub stars GitHub commit activity scala-async | An asynchronous programming facility for Scala | GitHub stars GitHub commit activity scala-graph | Graph for Scala is intended to provide basic graph functionality seamlessly fitting into the Scala Collection Library. Like the well known members of scala.collection, Graph for Scala is an in-memory graph library aiming at editing and traversing graphs, finding cycles etc. in a user-friendly way. | GitHub stars GitHub commit activity scala-logging | Convenient and performant logging library for Scala wrapping SLF4J. | GitHub stars GitHub commit activity scalameta | Library to read, analyze, transform and generate Scala programs | GitHub stars GitHub commit activity Scalactic | Small library of utilities related to quality that helps keeping code clear and correct. | scalaz | Principled Functional Programming in Scala | GitHub stars GitHub commit activity scribe | The fastest logging library in the world. Built from scratch in Scala and programmatically configurable. | GitHub stars GitHub commit activity shapeless | Generic programming for Scala | GitHub stars GitHub commit activity simulacrum | First class syntax support for type classes in Scala | GitHub stars GitHub commit activity squid | Squid โ€“ type-safe metaprogramming and compilation framework for Scala | GitHub stars GitHub commit activity tinylog | tinylog is a lightweight logging framework for Java, Kotlin, Scala, and Android | GitHub stars GitHub commit activity util | Wonderful reusable code from Twitter | GitHub stars GitHub commit activity

Misc

Projects that don't fit into any specific category.

Name | Description | GitHub Activity ---- | ----------- | --------------- Agora | Library of vote-counting algorithms for elections. | Ammonite | Scala Scripting | GitHub stars GitHub commit activity aws4s | Non-blocking AWS SDK for Scala exposing strongly-typed APIs built on top of http4s, fs2 and cats | GitHub stars GitHub commit activity bootzooka | Simple project to quickly start developing a Scala-based microservice or web application, without the need to write login, user registration etc. | GitHub stars GitHub commit activity eclair | A scala implementation of the Lightning Network. | GitHub stars GitHub commit activity fansi | Scala/Scala.js library for manipulating Fancy Ansi colored strings | GitHub stars GitHub commit activity figlet4s | ASCII-art banners in Scala | GitHub stars GitHub commit activity fs2-aws | fs2 utilities to interact with AWS | GitHub stars GitHub commit activity google4s | A lean, functional library for Google Cloud Services in Scala | GitHub stars GitHub commit activity google-api-scala | This API is a wrapper for the google java libraries. Currently mapping Admin Directory, Drive, and Calendar. | GitHub stars GitHub commit activity mailgun4s | Mailgun API implementation in Scala | GitHub stars GitHub commit activity managerial | A zero-dependency Scala library for managing resources monadically | GitHub stars GitHub commit activity media4s | Scala command-line wrapper around ffmpeg, ffprobe, ImageMagick, and other tools relating to media. | GitHub stars GitHub commit activity miniboxing-plugin | Miniboxing is a program transformation that improves the performance of Scala generics when used with primitive types. It can speed up generic collections by factors between 1.5x and 22x, while maintaining bytecode duplication to a minimum. You can easily add miniboxing to your sbt project: | GitHub stars GitHub commit activity ostinato | A chess library that runs on the server (Scala) and on the browser (ScalaJS). | GitHub stars GitHub commit activity play-swagger | Swagger spec generator for play framework | GitHub stars GitHub commit activity PPrint | Pretty-printing value, types and type-signatures in Scala | GitHub stars GitHub commit activity pureconfig | A boilerplate-free library for loading configuration files | GitHub stars GitHub commit activity REPLesent | A neat little tool to build presentations using the Scala REPL | GitHub stars GitHub commit activity scala-ssh | Remote shell access via SSH for your Scala applications | GitHub stars GitHub commit activity scala-stm | A library-based Software Transactional Memory (STM) for Scala, coupled with transactional sets and maps | GitHub stars GitHub commit activity Scavenger | An experimental automated theorem prover. | service-chassis | A scala chassis to get your applications and services bootstrapped quickly | GitHub stars GitHub commit activity spliff | Efficient diffing in Scala | GitHub stars GitHub commit activity

Android

Scala libraries and wrappers for Android development.

Name | Description | GitHub Activity ---- | ----------- | --------------- sbt-android | An easy-to-use sbt plugin for working with all Android projects | GitHub stars GitHub commit activity scaloid | Scaloid makes your Android code easy to understand and maintain. | GitHub stars GitHub commit activity

HTTP

Scala libraries and wrappers for HTTP clients.

Name | Description | GitHub Activity ---- | ----------- | --------------- akka-http | The Streaming-first HTTP server/module of Akka | GitHub stars GitHub commit activity reboot | Scala wrapper for the Java AsyncHttpClient. | GitHub stars GitHub commit activity finch | Scala combinator library for building Finagle HTTP services | GitHub stars GitHub commit activity fintrospect | Implement fast, type-safe HTTP webservices for Finagle | GitHub stars GitHub commit activity http4s | A minimal, idiomatic Scala interface for HTTP | GitHub stars GitHub commit activity jefe | Manages installation, updating, downloading, launching, error reporting, and more for your application. | GitHub stars GitHub commit activity lolhttp | An HTTP Server and Client library for Scala. | GitHub stars GitHub commit activity requests-scala | A Scala port of the popular Python Requests HTTP client: flexible, intuitive, and straightforward to use. | GitHub stars GitHub commit activity RosHTTP | Unified Scala.js + Scala HTTP client API | GitHub stars GitHub commit activity scalaj-http | Simple scala wrapper for HttpURLConnection. OAuth included. | GitHub stars GitHub commit activity scalaxb | scalaxb is an XML data binding tool for Scala. | GitHub stars GitHub commit activity sttp | The Scala HTTP client you always wanted! | GitHub stars GitHub commit activity tapir | Declarative, type-safe web endpoints library | GitHub stars GitHub commit activity endpoints4s | Describe HTTP endpoints in Scala and derive clients, servers, and documentation | GitHub stars GitHub commit activity

Semantic Web

Scala libraries for interactions with the Web of Data, and other RDF tools.

Name | Description | GitHub Activity ---- | ----------- | --------------- banana-rdf | Banana RDF | GitHub stars GitHub commit activity scowl | A Scala DSL for programming with the OWL API. | GitHub stars GitHub commit activity

Metrics and Monitoring

Scala libraries for gathering metrics and monitoring applications.

Name | Description | GitHub Activity ---- | ----------- | --------------- metrics-scala | The scala API for Dropwizard's Metrics. | GitHub stars GitHub commit activity

Parsing

Scala libraries for creating parsers.

Name | Description | GitHub Activity ---- | ----------- | --------------- atto | friendly little parsers | GitHub stars GitHub commit activity fastparse | Writing Fast Parsers Fast in Scala | GitHub stars GitHub commit activity parboiled2 | A macro-based PEG parser generator for Scala 2.10+ | GitHub stars GitHub commit activity scala-parser-combinators | simple combinator-based parsing for Scala. formerly part of the Scala standard library, now a separate community-maintained module | GitHub stars GitHub commit activity cats-parse | A parsing library for the cats ecosystem | GitHub stars GitHub commit activity scallion | LL(1) parser combinators in Scala | GitHub stars GitHub commit activity

Sbt plugins

Sbt plugins to make your life easier.

Name | Description | GitHub Activity ---- | ----------- | --------------- better-monadic-for | Desugaring scala for without implicit withFilters | GitHub stars GitHub commit activity coursier | Pure Scala Artifact Fetching | GitHub stars GitHub commit activity mdoc | Typechecked markdown documentation for Scala | GitHub stars GitHub commit activity sbt-api-mappings | An Sbt plugin that fills apiMappings for common Scala libraries. | GitHub stars GitHub commit activity sbt-apidoc | A port of apidocjs https://apidocjs.com to sbt, to document REST Api | GitHub stars GitHub commit activity sbt-assembly | Deploy รผber-JARs. Restart processes. (port of codahale/assembly-sbt) | GitHub stars GitHub commit activity sbt-buildinfo | I know this because build.sbt knows this. | GitHub stars GitHub commit activity sbt-ci-release | sbt plugin to automate Sonatype releases from GitHub Actions | GitHub stars GitHub commit activity sbt-dependency-check | SBT Plugin for OWASP DependencyCheck. Monitor your dependencies and report if there are any publicly known vulnerabilities (e.g. CVEs). :rainbow: | GitHub stars GitHub commit activity sbt-docker | Create Docker images directly from sbt | GitHub stars GitHub commit activity sbt-doctest | Doctest for scala | GitHub stars GitHub commit activity sbt-ghpages | git, site and ghpages support for sbt projects. | GitHub stars GitHub commit activity sbt-groll | sbt plugin to roll the Git history | GitHub stars GitHub commit activity sbt-header | sbt-header is an sbt plugin for creating file headers, e.g. copyright headers | GitHub stars GitHub commit activity sbt-hepek | Sbt plugin for rendering Scala objects to files. And more! | GitHub stars GitHub commit activity sbt-ide-settings | SBT plugin for tweaking various IDE settings | GitHub stars GitHub commit activity sbt-jmh | "Trust no one, bench everything." - sbt plugin for JMH (Java Microbenchmark Harness) | GitHub stars GitHub commit activity sbt-microsites | An sbt plugin to create awesome microsites for your project | GitHub stars GitHub commit activity mima | A tool for catching binary incompatibility in Scala | GitHub stars GitHub commit activity sbt-native-packager | sbt Native Packager | GitHub stars GitHub commit activity sbt-pack | A sbt plugin for creating distributable Scala packages. | GitHub stars GitHub commit activity sbt-pgp | PGP plugin for sbt | GitHub stars GitHub commit activity sbt-release | A release plugin for sbt | GitHub stars GitHub commit activity sbt-revolver | An SBT plugin for dangerously fast development turnaround in Scala | GitHub stars GitHub commit activity sbt-scala-js-map | A Sbt plugin that configures source mapping for Scala.js projects hosted on Github | GitHub stars GitHub commit activity sbt-scalafmt | sbt plugin for Scalafmt | GitHub stars GitHub commit activity sbt-scoverage | sbt plugin for scoverage | GitHub stars GitHub commit activity sbt-site | Site generation for sbt | GitHub stars GitHub commit activity sbt-sonatype | A sbt plugin for publishing Scala/Java projects to the Maven central. | GitHub stars GitHub commit activity sbt-unidoc | sbt plugin to create a unified Scaladoc or Javadoc API document across multiple subprojects. | GitHub stars GitHub commit activity sbt-updates | sbt plugin that can check Maven and Ivy repositories for dependency updates | GitHub stars GitHub commit activity sbt-eclipse | Plugin for sbt to create Eclipse project definitions | GitHub stars GitHub commit activity scala-clippy | Good advice for Scala compiler errors | GitHub stars GitHub commit activity splain | better implicit errors for scala | GitHub stars GitHub commit activity tut | doc/tutorial generator for scala | GitHub stars GitHub commit activity xsbt-web-plugin | Servlet support for sbt | GitHub stars GitHub commit activity

XML / HTML

XML and HTML generation and processing

Name | Description | GitHub Activity ---- | ----------- | --------------- scala-scraper | A Scala library for scraping content from HTML pages | GitHub stars GitHub commit activity xs4s | XML Streaming for Scala including FS2/cats support | GitHub stars GitHub commit activity

Markdown

Name | Description | GitHub Activity ---- | ----------- | --------------- Laika | Text Markup Transformer for sbt and Scala applications, transforming Markdown and reStructuredText to HTML, EPUB and PDF | GitHub stars GitHub commit activity

JavaScript

JavaScript generation and interop libraries.

Name | Description | GitHub Activity ---- | ----------- | --------------- scalafiddle-editor | Web user interface for ScalaFiddle | GitHub stars GitHub commit activity scala-js | Scala.js, the Scala to JavaScript compiler | GitHub stars GitHub commit activity

Scheduling

Name | Description | GitHub Activity ---- | ----------- | --------------- akka-quartz-scheduler | Quartz Extension and utilities for cron-style scheduling in Akka | GitHub stars GitHub commit activity

Templating

Web templating engines.

Name | Description | GitHub Activity ---- | ----------- | --------------- beard | A lightweight, logicless templating engine, written in Scala and inspired by Mustache | GitHub stars GitHub commit activity scalatags | ScalaTags is a small XML/HTML construction library for Scala. | GitHub stars GitHub commit activity scalate | Scalate is a Scala based template engine which supports HAML, Mustache and JSP, Erb and Velocity style syntaxes. | GitHub stars GitHub commit activity twirl | Twirl is Play's default template engine | GitHub stars GitHub commit activity hepek | Typesafe HTML templates in pure Scala. Static site generator included! Play and ScalaJS support! | GitHub stars GitHub commit activity

Tools

Name | Description | GitHub Activity ---- | ----------- | --------------- scala-trace-debug | Macro based print debugging. Locates log statements in your IDE. | GitHub stars GitHub commit activity bloop | Bloop is a build server and CLI tool to compile, test and run Scala fast from any editor or build tool. | GitHub stars GitHub commit activity codacy-scalameta | Codacy tool for Scalameta | GitHub stars GitHub commit activity coursier | Pure Scala Artifact Fetching | GitHub stars GitHub commit activity dregex | Dregex is a JVM library that implements a regular expression engine using deterministic finite automata (DFA). It supports some Perl-style features and yet retains linear matching time, and also offers set operations. | GitHub stars GitHub commit activity fast-string-interpolator | Scala macro that generates ultra-fast string interpolators. | GitHub stars GitHub commit activity fastring | Extremely fast string formatting | GitHub stars GitHub commit activity gitbucket | A Git platform powered by Scala with easy installation, high extensibility & GitHub API compatibility | GitHub stars GitHub commit activity giter8 | a command line tool to apply templates defined on GitHub | GitHub stars GitHub commit activity metals | Scala language server with rich IDE features ๐Ÿš€ | GitHub stars GitHub commit activity mill | Your shiny new Java/Scala build tool! | GitHub stars GitHub commit activity pos | Macro based print debugging. Locates debug statements in your IDE. Supports logging. | GitHub stars GitHub commit activity sbt | sbt, the interactive build tool | GitHub stars GitHub commit activity scalafix | Refactoring and linting tool for Scala | GitHub stars GitHub commit activity Scalafmt | Code formatter for Scala | scalariform | Scala source code formatter | GitHub stars GitHub commit activity scalastyle | scalastyle | GitHub stars GitHub commit activity Scalatex | Programmable, Typesafe Document Generation | GitHub stars GitHub commit activity scapegoat | Scala compiler plugin for static code analysis | GitHub stars GitHub commit activity wartremover | Flexible Scala code linting tool | GitHub stars GitHub commit activity stone | URL (de)construct. Withers. | GitHub stars GitHub commit activity scalajs-router | ScalaJS frontend router | GitHub stars GitHub commit activity scala2plantuml | Scala2PlantUML generates PlantUML diagrams from Scala code. | GitHub stars GitHub commit activity

Geospatial

Libraries to aid with geospatial calculations and artifacts.

Name | Description | GitHub Activity ---- | ----------- | --------------- geotrellis | GeoTrellis is a geographic data processing engine for high performance applications. | GitHub stars GitHub commit activity osm4scala | Scala and Spark library focused on reading OpenStreetMap Pbf files. | GitHub stars GitHub commit activity rtree2d | RTree2D is a 2D immutable R-tree for ultra-fast nearest and intersection queries in plane and spherical coordinates | GitHub stars GitHub commit activity sfcurve | LocationTech SFCurve is a Scala library for the creation, transformation, and querying of space-filling curves | GitHub stars GitHub commit activity stac4s | a scala library with primitives to build applications using the SpatioTemporal Asset Catalogs specification | GitHub stars GitHub commit activity franklin | A STAC/OGC API Features Web Service | GitHub stars GitHub commit activity

Devops

DevOps related tools and libraries.

Name | Description | GitHub Activity ---- | ----------- | --------------- skuber | A Scala Kubernetes client library | GitHub stars GitHub commit activity

Learning Scala

Nice books, blogs and other resources to learn Scala

Books

Exercises

Tutorials and courses

Commercial courses

  • Foundations of Functional Programming in Scala - a professional video course with exercises covering covers functional principles, custom IO (effects) and functional design.
  • Scala Algorithms - a collection of nearly 100 algorithms in pure-functional Scala with test cases, explanations and a web-based IDE. Built with http4s & Scala.js.

Community Members' Blogs

  • http://lihaoyi.com
  • http://warski.org/blog
  • https://degoes.net/articles
  • http://eed3si9n.com/category/tags/scala
  • https://danielwestheide.com/tags/scala
  • https://kubuszok.com/tags/#scala
  • http://debasishg.blogspot.com
  • http://appliedscala.com/blog
  • http://blog.higher-order.com
  • http://ktoso.github.io/scala-types-of-types
  • http://scalaprof.blogspot.com
  • http://torre.me.uk/docs/scala
  • https://alvinalexander.com
  • https://blog.bruchez.name/search/label/scala
  • https://github.com/lemastero/scala_typeclassopedia
  • https://pchiusano.github.io
  • https://beyondthelines.net
  • https://manuel.bernhardt.io/blog

Company Blogs

  • Functional Works / Learn - Quality resources maintained by functional works
  • http://allaboutscala.com/
  • http://enear.github.io/
  • https://blog.knoldus.com/tag/scala/
  • https://blog.scalac.io/tags/Scala/
  • https://blog.softwaremill.com/tagged/scala
  • https://medium.com/disney-streaming/tagged/thisweekinscala
  • https://www.codacy.com/blog/
  • Scala Times - Weekly newsletter about scala

Podcasts

  • The Scala Logs - Interviewing developers, open source contributors, subject matter experts, and the like to talk about FP, Scala, open source, and their interests.
  • Scala Love - Podcast about the Scala Programming Language and its community
  • CoRecursive Interviews - In-depth Interviews with software developers, often on the subject of scala libraries and functional programming.

Misc.

Awesome Scala Native Awesome

Scala Native

Scala Native is an optimising ahead-of-time compiler for the Scala programming language. Traditionally, a virtual machine, the JVM, was required to run Scala programs. Scala Native taps into the compiler to emit LLVM intermediate representation rather than JVM bytecode. Then, the LLVM compiler infrastructure is used to produce native libraries and executables. Given that Scala Native executables are stand-alone programs, they generally have a shorter start-up time and low memory consumption. This opens up new avenues to deploy Scala programs where previously the virtual machine would be the limiting factor. For example, developers could write programs for the command line or embedded devices.

Contents

Tutorials and Examples

Build Tools

  • sbt - Scala's standard build tool.
  • Mill - Build tool striving for simplicity, inspired by Bazel.
  • Bloop - Scala build server and command-line tool for fast developer workflows.
  • Seed - Build tool based on Bloop. Focuses on user experience and cross-platform builds, inspired by Cargo.

Functional Programming

  • Shapeless - Library for generic programming.
  • Squants - DSL for quantities, units of measure and dimensional analysis.
  • scalaz - Type classes and instances for data structures.
  • nobox - Immutable primitive array wrapper without boxing.
  • PPrint - Pretty-print values and types.
  • SourceCode - Implicits providing meta data similar to __LINE__ in C.
  • reactify - Functional Reactive Programming framework for Scala.
  • chimney - Boilerplate-free data transformations.
  • Quicklens - Modify deeply nested case class fields.
  • Cats - Abstractions for functional programming in Scala.

Unit Tests

Bindings

File Formats and Parsers

Databases

  • JDBC - Port of the database access layer JDBC to Scala Native.
  • SQLite4S - Port of the Java library Sqlite4java. Includes bindings for the SQLite native library.
  • libpq4s - Scala wrapper around the async PostgreSQL C library libpq.

Web Development

  • Trail - Routing library.
  • sttp - HTTP Client library.
  • snunit - Scala Native HTTP server based on NGINX Unit.

Concurrency

  • scala-native-loop - Event loop and async-oriented IO for Scala Native
  • castor - Lightweight, typed Actor library for Scala.

Logging

Console

Robotics

Programs

Infrastructure

Licence

Creative Commons Licence
This work is licenced under a Creative Commons Attribution 4.0 International Licence.

A categorized community-driven collection of awesome Ruby libraries, tools, frameworks and software. The essential Ruby to build modern Apps and Web Apps.

Sharing, suggestions and contributions are always welcome! Please take a look at the contribution guidelines and quality standard first.

Thanks to all contributors, you're awesome and this wouldn't be possible without you!

Admin Interface

  • ActiveAdmin - A Ruby on Rails framework for creating elegant backends for website administration.
  • ActiveScaffold - ActiveScaffold provides quick and powerful user interfaces for CRUD (create, read, update, delete) operations for Rails applications. It's excellent for generating admin interfaces, managing Data-Heavy Applications, creating Widgets or for quick prototyping. ActiveScaffold is completly customizable and offers a bunch of additional features including searching, pagination, layout control and overrides of fields, forms and templates.
  • Administrate - A Rails engine that helps you put together a super-flexible admin dashboard, by Thoughtbot.
  • Avo - Avo is a next-generation framework that empowers developers and teams to create fantastic admin panels for Ruby on Rails projects in hours, not days or weeks. Fast, extendable, with a developer-friendly API, it just works out of the box.
  • bhf - A simple to use Rails-Engine-Gem that offers an admin interface for trusted user.
  • MotorAdmin - A low-code Admin panel and Business Intelligence Rails engine. No DSL - configurable from the UI.
  • RailsAdmin - A Rails engine that provides an easy-to-use interface for managing your data.
  • Trestle - A modern, responsive admin framework for Rails. Build a back-end in minutes that will grow with the needs of your application.

Analytics

  • Ahoy - A solid foundation to track visits and events in Ruby, JavaScript, and native apps.
  • Impressionist - Rails Plugin that tracks impressions and page views.
  • Legato - Model analytics reports and queries against the official Google Analytics Reporting API.
  • Rack::Tracker - Rack middleware that can be hooked up to multiple services and exposing them in a unified fashion.
  • Staccato - Track analytics into the official Google Analytics Collection API.

API Builder and Discovery

  • ActiveModel::Serializers - JSON serialization of objects.
  • Acts_As_Api - Easy And Fun, in creating XML/JSON responses in Rails 3,4,5 and 6.
  • Blanket - A dead simple API wrapper.
  • Blueprinter - Simple, Fast, and Declarative Serialization Library for Ruby.
  • cache_crispies - Speedy Rails JSON serialization with built-in caching.
  • Crepe - The thin API stack.
  • Grape - An opinionated micro-framework for creating REST-like APIs in Ruby.
  • Her - an ORM that maps REST resources to Ruby objects. Designed to build applications that are powered by a RESTful API instead of a database.
  • jbuilder - Create JSON structures via a Builder-style DSL.
  • jsonapi-rb โ€“ Efficient and convenient JSON API (de)serialization library.
  • jsonapi-serializer - A fast JSON:API serializer for Ruby Objects.
  • JSONAPI::Resources - JSONAPI::Resources, or "JR", provides a framework for developing a server that complies with the JSON API specification.
  • JSONAPI::Utils - JSONAPI::Utils is built on top of JSONAPI::Resources taking advantage of its resource-driven style and bringing an easy way to build modern JSON APIs with no or less learning curve.
  • Jsonite - A tiny, HAL-compliant JSON presenter for your APIs.
  • Pliny - Opinionated template Sinatra app for writing excellent APIs in Ruby.
  • rabl - General ruby templating with json, bson, xml, plist and msgpack support.
  • Roar - Resource-Oriented Architectures in Ruby.
  • Spyke - Interact with REST services in an ActiveRecord-like manner.
  • Version Cake - An unobtrusive way to version APIs in your Rails app.
  • versionist - A plugin for versioning Rails based RESTful APIs.

Assets

  • Asset Sync - Synchronises Assets between Rails and S3.
  • Autoprefixer - Parse CSS and add vendor prefixes to rules by Can I Use.
  • Bourbon - A Lightweight Sass Tool Set.
  • bower-rails - Bower support for Rails projects.
  • Emoji - Exposes the Phantom Open Emoji library unicode/image assets and APIs for working with them.
  • Less Rails - The dynamic stylesheet language for the Rails asset pipeline.
  • Rails Assets - Bundler to Bower proxy.
  • Sass - Sass makes CSS fun again.
  • Sprockets - Rack-based asset packaging system.
  • Torba - Bower-less bundler for Sprockets.
  • Webpacker - Use Webpack to manage app-like JavaScript modules in Rails.
  • Vite Ruby - Use Vite.js as a modern assets pipeline in Ruby and Rails apps.

Authentication and OAuth

  • Authlogic - Authlogic is a clean, simple, and unobtrusive ruby authentication solution.
  • Clearance - Small and simple email & password based authentication for Rails.
  • Devise - A flexible authentication solution for Rails based on Warden.
  • JWT - JSON Web Token implementation in Ruby.
  • Knock - Seamless JWT authentication for Rails API.
  • Monban - A very simple and extensible user authentication library for rails.
  • OmniAuth - A library that standardizes multi-provider authentication utilizing Rack middleware.
  • Rodauth - Authentication and account management framework for Rack applications.
  • Shield - Authentication protocol for use in your routing and model context.
  • Sorcery - Magical Authentication for Rails 4, and Rails 5.
  • warden - General Rack Authentication Framework.
  • OAuth:
  • Doorkeeper - An OAuth2 provider for Rails.
  • OAuth2 - A Ruby wrapper for the OAuth 2.0 protocol.
  • Rodauth-Oauth - A rodauth OAuth and OpenID provider plugin.

Authorization

  • acl9 - Acl9 is a role-based authorization system that provides a concise DSL for securing your Rails application.
  • AccessGranted - Multi-role and whitelist based authorization gem for Rails.
  • ActionPolicy - Authorization framework for Ruby and Rails applications. Composable, extensible and performant.
  • CanCanCan - Continuation of CanCan, an authorization Gem for Ruby on Rails.
  • Consul - A scope-based authorization solution for Ruby on Rails.
  • Petergate - Easy to use and read action and content based authorizations.
  • Pundit - Minimal authorization through OO design and pure Ruby classes.

Automation

  • ActiveWorkflow - An intelligent process and workflow automation platform based on software agents.
  • Danger - Automate your team's conventions surrounding code review.
  • Huginn - Huginn is a system for building agents that perform automated tasks for you online.
  • Neovim - Ruby bindings for Neovim to make your own neovim editor plugins in Ruby.
  • Runbook - A framework and Ruby DSL for progressive system automation.
  • Breadcrumbs on Rails - A simple Ruby on Rails plugin for creating and managing a breadcrumb navigation for a Rails project.
  • Gretel - A Ruby on Rails plugin that makes it easy yet flexible to create breadcrumbs.
  • loaf - Manages and displays breadcrumb trails in Rails app - lean & mean.
  • Simple Navigation - A ruby gem for creating navigation (html list, link list or breadcrumbs with multiple levels) for your Rails 2, 3 & 4, Sinatra or Padrino.

Business logic

  • ActiveInteraction - Manage application specific business logic.
  • Interactor - Interactor provides a common interface for performing complex interactions in a single request.
  • Light Service - Series of Actions with an emphasis on simplicity.
  • Mutations - Compose your business logic into commands that sanitize and validate input.
  • Surrounded - Encapsulated related objects in a single system to add behavior during runtime. Extensible implementation of DCI.
  • Waterfall - A slice of functional programming to chain ruby services and blocks, thus providing a new approach to flow control.
  • wisper - A micro library providing Ruby objects with Publish-Subscribe capabilities.

Caching

  • Action caching for Action Pack - Action caching for Action Pack.
  • Dalli - A high performance pure Ruby client for accessing memcached servers.
  • Garner - A set of Rack middleware and cache helpers that implement various caching strategies.
  • IdentityCache - A blob level caching solution to plug into ActiveRecord.
  • Kashmir - Kashmir is a Ruby DSL that makes serializing and caching objects a snap.
  • Readthis - High performance, pooled, ActiveSupport compliant caching with Redis.
  • Record Cache - Cache Active Model Records in Rails 3.
  • redis-store - Redis Store provides a full set of stores (Cache, I18n, Session, HTTP Cache) for modern Ruby frameworks like: Ruby on Rails, Sinatra, Rack, Rack::Cache and I18n. It supports object marshalling, timeouts, single or multiple nodes, and namespaces.
  • Second Level Cache - Write-Through and Read-Through caching library for ActiveRecord 4.

Captchas and anti-spam

  • ActsAsTextcaptcha - Protection for Rails models with text-based logic question captchas (from Rob Tuley's textcaptcha.com)
  • Invisible Captcha - Unobtrusive and flexible spam protection based on the honeypot strategy. It also provides a time-sensitive form submission.
  • Rakismet - Easy Akismet and TypePad AntiSpam integration for Rails.
  • reCAPTCHA - reCaptcha API helpers for ruby apps.
  • Voight-Kampff - A Ruby gem that detects bots, spiders, crawlers and replicants.

CLI Builder

  • Clamp - A command-line application framework.
  • cmdparse - An advanced command line parser supporting nested commands.
  • Commander - The complete solution for Ruby command-line executables.
  • GLI - Git-Like Interface Command Line Parser.
  • Hanami CLI - General purpose Command Line Interface (CLI) framework for Ruby.
  • Main - A class factory and DSL for generating command line programs real quick.
  • Optimist - A commandline option parser for Ruby that just gets out of your way.
  • Rake - A make-like build utility for Ruby.
  • Runfile - Build command line applications per project with ease. Rake-inspired, Docopt inside.
  • Slop - Simple Lightweight Option Parsing.
  • Terrapin - A small command line library (Formerly Cocaine).
  • Thor - A toolkit for building powerful command-line interfaces.
  • TTY - Toolbox for developing CLI clients.

CLI Utilities

  • Awesome Print - Pretty print your Ruby objects with style -- in full color and with proper indentation
  • Betty - Friendly English-like interface for your command line. Don't remember a command? Ask Betty.
  • colorize - Extends String class or add a ColorizedString with methods to set text color, background color and text effects.
  • colorls - Beautifies the ls command, with color and font-awesome icons.
  • formatador - STDOUT text formatting.
  • Paint - Simple and fast way to set ANSI terminal colors.
  • Pastel - Terminal output styling with intuitive and clean API.
  • Ru - Ruby in your shell.
  • Ruby/Progressbar - The most flexible text progress bar library for Ruby.
  • Tabulo - Plain text table generator with a DRY, column-based API.
  • TablePrint - Slice your data from multiple DB tables into a single CLI view.
  • Terminal Table - Ruby ASCII Table Generator, simple and feature rich.
  • Tmuxinator - Create and manage complex tmux sessions easily.
  • Whirly - A simple, colorful and customizable terminal spinner library for Ruby.

Cloud

  • AWS SDK for Ruby - The official AWS SDK for Ruby.
  • browse-everything - Multi-provider Rails engine providing access to files in cloud storage.
  • Fog - The Ruby cloud services library.
  • humidifier - Programmatically generate and manage AWS CloudFormation templates, stacks, and change sets.

CMS

  • Alchemy CMS - A powerful, userfriendly and flexible Open Source Rails CMS.
  • Camaleon CMS - A dynamic and advanced content management system based on Ruby on Rails 4.
  • ComfortableMexicanSofa - Powerful Rails 5.2+ CMS Engine.
  • Fae - Flexible, open source, Rails CMS engine.
  • LocomotiveCMS - A simple but powerful CMS based on Liquid templates and Mongodb database.
  • Publify - A self hosted Web publishing platform on Rails.
  • PushType - A next generation, open source content management system for Ruby on Rails.
  • Radiant - A no-fluff, open source content management system designed for small teams.
  • Refinery CMS - An open source Ruby on Rails content management system for Rails 5.2+.
  • Spina CMS - A beautiful CMS for Rails developers.
  • Storytime - Rails 4+ CMS and blogging engine, with a core focus on content.

Code Analysis and Metrics

  • Brakeman - A static analysis security vulnerability scanner for Ruby on Rails applications.
  • Coverband - Rack middleware to help measure production code coverage.
  • Fasterer - Make your Rubies go faster with this command line tool highly inspired by fast-ruby and Sferik's talk at Baruco Conf.
  • Flay - Flay analyzes code for structural similarities. Differences in literal values, variable, class, method names, whitespace, programming style, braces vs do/end, etc are all ignored. Making this totally rad.
  • Flog - Flog reports the most tortured code in an easy to read pain report. The higher the score, the more pain the code is in.
  • fukuzatsu - Complexity analysis tool with a rich web front-end.
  • MetricFu - A fist full of code metrics.
  • Pippi - A utility for finding suboptimal Ruby class API usage, focused on runtime analysis.
  • Pronto - Quick automated code review of your changes.
  • rails_best_practices - A code metric tool for rails projects.
  • Reek - Code smell detector for Ruby.
  • Rubycritic - A Ruby code quality reporter.
  • Scientist - A Ruby library for carefully refactoring critical paths.
  • SimpleCov - Code coverage for Ruby 1.9+ with a powerful configuration library and automatic merging of coverage across test suites.
  • Sorbet - A static type checker for Ruby.
  • Suture - A Ruby gem that helps you refactor your legacy code.
  • Traceroute - A Rake task gem that helps you find the dead routes and actions for your Rails 3+ app

Code Formatting

  • niceql - A dependentless SQL and SQL errors formatting and colorizing. ActiveRecord seemless integration.
  • prettier - A prettier plugin for the Ruby language.
  • RuboCop - A static code analyzer, based on the community Ruby style guide.
  • Rubocop Rails - A RuboCop extension focused on enforcing Rails best practices and coding conventions.
  • Rubocop Rspec - Code style checking for RSpec files
  • Rubocop Performance - A RuboCop extension focused on code performance checks.
  • Standard - Ruby Style Guide, with linter & automatic code fixer

Code Highlighting

  • CodeRay - Fast and easy syntax highlighting for selected languages.
  • pygments.rb - A Ruby wrapper for the Python pygments syntax highlighter.
  • Rouge - A pure Ruby code highlighter that is compatible with Pygments.

Code Loaders

  • Zeitwerk - An efficient and thread-safe Ruby code loader.

Coding Style Guides

  • Best-Ruby - Ruby Tricks, Idiomatic Ruby, Refactoring & Best Practices.
  • fast-ruby - Writing Fast Ruby. Collect Common Ruby idioms.
  • Fundamental Ruby - Fundamental programming ruby with examples. Threads, design patterns, data structures, OOP SOLID principle, algorithms.
  • Rails style guide - Community-driven Rails best practices and style for Rails 3 and 4.
  • RSpec style guide - Better Specs { rspec guidelines with ruby }.
  • Ruby Operators - A webpage showing awesome names for different Ruby operators.
  • Ruby style guide - Community-driven Ruby coding style.

Concurrency and Parallelism

  • Concurrent Ruby - Modern concurrency tools including agents, futures, promises, thread pools, supervisors, and more. Inspired by Erlang, Clojure, Scala, Go, Java, JavaScript, and classic concurrency patterns.
  • EventMachine - An event-driven I/O and lightweight concurrency library for Ruby.
  • forkoff - brain-dead simple parallel processing for ruby.
  • Parallel - Run any code in parallel Processes (> use all CPUs) or Threads (> speedup blocking operations). Best suited for map-reduce or e.g. parallel downloads/uploads.

Configuration

  • Chamber - Surprisingly customizable convention-based approach to managing your app's configuration.
  • Configatron - Simple and feature rich configuration system for Ruby apps.
  • Configus - Helps you easily manage environment specific settings.
  • dotenv - Loads environment variables from .env.
  • Econfig - Flexible configuration for Rails applications.
  • ENVied - ensure presence and type of your app's ENV-variables
  • Envyable - The simplest YAML to ENV config loader.
  • Figaro - Simple, Heroku-friendly Rails app configuration using ENV and a single YAML file.
  • Global - Provides accessor methods for your configuration data.
  • RailsConfig - Multi-environment yaml settings for Rails3.
  • Sail - A lightweight Rails engine that brings an admin panel for managing configuration settings on a live Rails app.

Core Extensions

  • ActiveSupport - A collection of utility classes and standard library extensions.
  • Addressable - Addressable is a replacement for the URI implementation that is part of Ruby's standard library. It more closely conforms to RFC 3986, RFC 3987, and RFC 6570 (level 4), providing support for IRIs and URI templates.
  • Bitwise - Fast, memory efficient bitwise operations on large binary strings
  • Finishing Moves - Small, focused, incredibly useful methods added to core Ruby classes. Includes the endlessly useful nil_chain.
  • Docile - A tiny library that lets you map a DSL (domain specific language) to your Ruby objects in a snap.
  • dry-rb - dry-rb is a collection of next-generation Ruby libraries, each intended to encapsulate a common task.
  • Hamster - Efficient, immutable, and thread-safe collection classes for Ruby.
  • Hanami::Utils - Lightweight, non-monkey-patch class utilities for Hanami and Ruby app.
  • Ruby Facets - The premiere collection of general purpose method extensions and standard additions for Ruby.
  • Trick Bag - Assorted Ruby classes and methods to simplify and enhance your code.
  • Attributes
  • ActiveAttr - What ActiveModel left out.
  • Virtus - Attributes on Steroids for Plain Old Ruby Objects.
  • AttrExtras - Takes some boilerplate out of Ruby with methods like attr_initialize.
  • Hash
  • Hashie - A collection of tools that extend Hashes and make them more useful.
  • String
  • string_pattern - Generate strings supplying a simple pattern.

Country Data

  • Carmen - A repository of geographic regions.
  • Countries - All sorts of useful information about every country packaged as pretty little country objects.
  • i18n_data - country/language names and 2-letter-code pairs, in 85 languages, for country/language i18n.
  • normalize_country - Convert country names and codes to a standard, includes a conversion program for XMLs, CSVs and DBs.
  • Phonelib - Ruby gem for phone validation and formatting using Google libphonenumber library data.
  • Phony - Fast international phone number (E164 standard) normalizing, splitting and formatting.
  • validates_zipcode - Postal code / zipcode validation for Rails, supporting 233 country codes.

CRM

  • Fat Free CRM - An open source Ruby on Rails based customer relationship management platform.
  • Hitobito - An open source Ruby on Rails based community management solution.

Cryptocurrencies and Blockchains

  • Blockchain Lite - Build your own blockchains with crypto hashes; revolutionize the world with blockchains, blockchains, blockchains one block at a time.
  • Ciri - Ruby implementation of Ethereum.
  • MoneyTree - A Ruby implementation of Bitcoin HD Wallets (Hierarchical Deterministic) BIP32.
  • Peatio - Most Advanced Cryptocurrency open-source assets exchange.

Dashboards

  • Blazer - Simple data viewer using only SQL. Output to table, chart, and maps.
  • Smashing - Smashing is a Sinatra based framework that lets you build beautiful dashboards. This project is the maintained spiritual successor to the Dashing framework.
  • Dashing-Rails - The exceptionally handsome dashboard framework for Rails.

Data Processing and ETL

  • attr-gather - A gem for creating workflows that "enhance" entities with extra attributes. At a high level, attr-gather provides a process to fetch information from many data sources (such as third party APIs, legacy databases, etc.) in a fully parallelized fashion.
  • CSV Reader - A modern tabular data (line-by-line records) reader supports "classic" CSV but also CSV Numerics, CSV <3 JSON, CSV <3 YAML, tab, space or fixed width fields (FWF) and many more flavors and dialects.
  • Kiba - A lightweight data processing / ETL framework for Ruby.
  • ruby-stemmer - It Provides Snowball algorithm for stemming purposes.

Data Visualization

  • Chartkick - Create beautiful Javascript charts with one line of Ruby.
  • GeoPattern - Create beautiful generative geometric background images from a string.
  • LazyHighCharts - A simple and extremely flexible way to use HighCharts from ruby code. Tested on Ruby on Rails, Sinatra and Nanoc, but it should work with others too.
  • ApexCharts.rb - Awesome charts for your ruby app. Works on any ruby app, including Rails app. It even works on plain HTML+ERB files.
  • RailRoady - Ruby on Rails 3/4 model and controller UML class diagram generator.
  • Rails Erd - Generate Entity-Relationship Diagrams for Rails applications.
  • Ruby/GraphViz - Ruby interface to the GraphViz graphing tool.

Database Drivers

  • Cassandra Driver - A pure ruby driver for Apache Cassandra with asynchronous io and configurable load balancing, reconnection and retry policies.
  • mongo-ruby-driver - MongoDB Ruby driver.
  • mysql2 - A modern, simple and very fast Mysql library for Ruby (binding to libmysql).
  • Neography - A thin Ruby wrapper to the Neo4j Rest API.
  • Redic - Lightweight Redis Client.
  • redis-rb - A Ruby client that tries to match Redis' API one-to-one, while still providing an idiomatic interface.
  • ruby-pg - Ruby interface to PostgreSQL 8.3 and later.
  • SQLite3 - Ruby bindings for the SQLite3 embedded database.
  • SQL Server - The SQL Server adapter for ActiveRecord.
  • TinyTDS - FreeTDS bindings for Ruby using DB-Library.

Database Tools

  • connection_pool - Generic connection pooling for Ruby, that can be used with anything, e.g. Redis, Dalli, etc.
  • Database Cleaner - Database Cleaner is a set of strategies for cleaning your database in Ruby.
  • Database Consistency - An easy way to check that application constraints and database constraints are in sync.
  • Foreigner - Adds foreign key helpers to migrations and correctly dumps foreign keys to schema.rb.
  • Large Hadron Migrator - Online MySQL schema migrations without locking the table.
  • Lol DBA - Scan your models and displays a list of columns that probably should be indexed.
  • Polo - Creates sample database snapshots to work with real world data in development.
  • PgHero - Postgres insights made easy.
  • Rails DB - Database Viewer and SQL Query Runner.
  • Rein - Database constraints made easy for ActiveRecord.
  • Scenic - Versioned database views for Rails.
  • SchemaPlus - SchemaPlus provides a collection of enhancements and extensions to ActiveRecord
  • SecondBase - Seamless second database integration for Rails. SecondBase provides support for Rails to manage dual databases by extending ActiveRecord tasks that create, migrate, and test your application.
  • Seedbank - Seedbank allows you to structure your Rails seed data instead of having it all dumped into one large file.
  • Seed dump - Rails 4 task to dump (parts) of your database to db/seeds.rb.
  • Seed Fu - Advanced seed data handling for Rails.
  • Standby - Read from standby databases for ActiveRecord (formerly Slavery).
  • Upsert - Upsert on MySQL, PostgreSQL, and SQLite3. Transparently creates functions (UDF) for MySQL and PostgreSQL; on SQLite3, uses INSERT OR IGNORE.

Date and Time Processing

  • biz - Time calculations using business hours.
  • business_time - Support for doing time math in business hours and days.
  • ByStar - Find ActiveRecord objects by year, month, fortnight, week and more!
  • Chronic - A natural language date/time parser written in pure Ruby.
  • groupdate - The simplest way to group temporal data in ActiveRecord, arrays and hashes.
  • holidays - A collection of Ruby methods to deal with statutory and other holidays.
  • ice_cube - A date recurrence library which allows easy creation of recurrence rules and fast querying.
  • local_time - Rails Engine for cache-friendly, client-side local time.
  • montrose - a simple library for expressing, serializing, and enumerating recurring events in Ruby.
  • stamp - Format dates and times based on human-friendly examples, not arcane strftime directives.
  • time_diff - Calculates the difference between two time.
  • timezone - Accurate current and historical timezones and transformations, with support for Geonames and Google latitude - longitude timezone lookups.
  • TZinfo - Provides daylight savings aware transformations between times in different timezones.
  • validates_timeliness - Date and time validation plugin for ActiveModel and Rails.
  • working_hours - A modern ruby gem allowing to do time calculation with working hours.
  • yymmdd - Tiny DSL for idiomatic date parsing and formatting.

Debugging Tools

  • Byebug - A simple to use, feature rich debugger for Ruby 2.
  • did_you_mean - Adds class, method & attribute suggestions to error messages.
  • Pry Byebug - Pry navigation commands via byebug.
  • pry-rails - Avoid repeating yourself, use pry-rails instead of copying the initializer to every rails project. This is a small gem which causes rails console to open pry. It therefore depends on pry.
  • Seeing Is Believing - Displays the results of every line of code in your file.
  • tapping_device - A tool that allows you to inspect your program from an Object's perspective.
  • Xray - A development tool that reveals your UI's bones.

Decorators

  • Draper - Draper adds an object-oriented layer of presentation logic to your Rails application.
  • Decent Exposure - A helper for creating declarative interfaces in controllers.
  • Responders - A set of Rails responders to dry up your application.
  • ShowFor - Quickly show a model information with I18n features. Like form_for for displaying model data.

DevOps Tools

  • Backup - Provides an elegant DSL in Ruby for performing backups on UNIX-like systems.
  • BOSH - Cloud Foundry BOSH is an open source tool chain for release engineering, deployment and lifecycle management of large scale distributed services.
  • Capistrano - A remote server automation and deployment tool written in Ruby.
  • Centurion - A mass deployment tool for Docker fleets.
  • Chef - A systems integration framework, built to bring the benefits of configuration management to your entire infrastructure.
  • Einhorn - Einhorn will open one or more shared sockets and run multiple copies of your process. You can seamlessly reload your code, dynamically reconfigure Einhorn, and more.
  • Itamae - Simple and lightweight configuration management tool inspired by Chef.
  • Lita - ChatOps for Ruby: A pluggable chat bot framework usable with any chat service.
  • Logstash - Logs/event transport, processing, management, search.
  • Mina - Really fast deployer and server automation tool.
  • Puppet - An automated administrative engine for your Linux, Unix, and Windows systems, performs administrative tasks (such as adding users, installing packages, and updating server configurations) based on a centralized specification.
  • Rubber - The rubber plugin enables relatively complex multi-instance deployments of RubyOnRails applications to Amazon's Elastic Compute Cloud (EC2).
  • SSHKey - SSH private and public key generator in pure Ruby (RSA & DSA).
  • Sunzi - Server provisioning utility for minimalists
  • Ruby-LXC - Native ruby binding for Linux containers.
  • Vagrant - Create and configure lightweight, reproducible, and portable development environments.

Diff

  • Diffy - Easy Diffing With Ruby.
  • gemdiff - Find source repositories for gems. Open, compare, and update outdated gem versions.
  • JsonCompare - Returns the difference between two JSON files.

Discover

Where to discover new Ruby libraries, projects and trends.

  • Awesome Ruby @LibHunt - Your go-to Ruby Toolbox. The Awesome Ruby collection + ordering by popularity, additional metadata and comparisons.
  • GitHub Trending - Find what repositories the GitHub community is most excited about today.
  • Open Source Rails - A gallery of the best open source rack and Ruby on Rails web applications.
  • Ruby Bookmarks - Ruby and Ruby on Rails bookmarks collection.
  • RubyDaily - Community driven news.
  • RubyFlow - Ruby Programming Community Link Blog.
  • Ruby Land - A well maintained Ruby/Rails aggregator that contains news, opinions, tutorials, and more.
  • Ruby Rogues - Weekly panel discussion about programming, primarily in Ruby.
  • Ruby Weekly - A free, onceโ€“weekly e-mail round-up of Ruby news and articles.
  • The Ruby Bibliography - Research papers about Ruby.
  • The Ruby Toolbox - A comprehensive catalog of Ruby and Rails plug-ins, gems, tools and resources for Ruby developers with popularity ratings based on GitHub watchers and Gem downloads.

Documentation

  • Annotate - Add a comment documenting the current schema to the top or bottom of each of your ActiveRecord models.
  • Apipie - Rails API documentation and display tool using Ruby syntax.
  • Asciidoctor - A fast, Ruby-based text processor & publishing toolchain for converting AsciiDoc to HTML5, DocBook, EPUB3, PDF & more.
  • Documentation - A Rails engine to provide the ability to add documentation to a Rails application.
  • GitHub Changelog Generator - Automatically generate change log from your tags, issues, labels and pull requests on GitHub.
  • Gollum - A simple, Git-powered wiki with a sweet API and local frontend.
  • grape-swagger - Add swagger compliant documentation to your Grape API.
  • Hanna - An RDoc formatter built with simplicity, beauty and ease of browsing in mind.
  • Hologram - A markdown based documentation system for style guides. It parses comments in your CSS and helps you turn them into a beautiful style guide.
  • Inch - Inch is a documentation measurement and evalutation tool for Ruby code, based on YARD.
  • RDoc - RDoc produces HTML and command-line documentation for Ruby projects.
  • rspec_api_documentation - Automatically generate API documentation from RSpec.
  • YARD - YARD enables the user to generate consistent, usable documentation that can be exported to a number of formats very easily.

E-Commerce and Payments

  • Active Merchant - A simple payment abstraction library extracted from Shopify.
  • Braintree - Braintree Ruby bindings.
  • Conekta - Conekta Ruby bindings.
  • credit_card_validations - A ruby gem for validating credit card numbers, generating valid numbers, Luhn checks.
  • Paypal Merchant SDK - Official Paypal Merchant SDK for Ruby.
  • Piggybak - Modular, Extensible open-source ecommerce solution for Ruby on Rails.
  • ROR Ecommerce - A Rails e-commerce platform.
  • Solidus - An open source, eCommerce application for high volume retailers.
  • Spree - Spree is a complete open source e-commerce solution for Ruby on Rails.
  • SquareConnect - Square's SDK for payments and other Square APIs.
  • stripe-ruby - Stripe Ruby bindings.
  • Workarea - An extensible, high-performance eCommerce platform depended on by some of the world's top retailers.

Ebook

  • Bookshop - Bookshop is a an open-source agile book development and publishing framework for authors, editors.
  • Gepub - A generic EPUB library for Ruby : supports EPUB 3.
  • Mobi - A Ruby way to read MOBI format metadata.
  • Review - Re:VIEW is flexible document format/conversion system.

Email

  • Ahoy Email - Analytics and tracking for e-mails.
  • Gibbon - API wrapper for the Mailchimp e-mail marketing platform.
  • Griddler - Simplify receiving email in Rails.
  • Incoming - Incoming! helps you receive email in your Rack apps.
  • LetterOpener - Preview mail in the browser instead of sending.
  • Mail - A Really Ruby Mail Library.
  • MailCatcher - Catches mail and serves it through a dream.
  • MailForm - Send e-mail straight from forms in Rails with I18n, validations, attachments and request information.
  • Maily - A Rails Engine to manage, test and navigate through all your email templates of your app, being able to preview them directly in your browser.
  • MidiSmtpServer - The highly customizable ruby SMTP-Service library with builtin support for AUTH and SSL/STARTTLS, 8BITMIME and SMTPUTF8, IPv4 and IPv6 and more.
  • Pony - The express way to send mail from Ruby.
  • Postal - A fully featured open source mail delivery platform for incoming & outgoing e-mail.
  • premailer-rails - CSS styled emails without the hassle.
  • Roadie - Roadie tries to make sending HTML emails a little less painful by inlining stylesheets and rewriting relative URLs for you inside your emails.
  • Sup - A curses threads-with-tags style email client.
  • Truemail - Configurable framework agnostic plain Ruby email validator/verifier. Verify email via Regex, DNS and SMTP. Be sure that email address valid and exists.

Encryption

  • bcrypt-ruby - bcrypt-ruby is a Ruby binding for the OpenBSD bcrypt() password hashing algorithm.
  • RbNaCl - Ruby binding to the Networking and Cryptography (NaCl) library.
  • Sym - A time-saving symmetric encryption gem based on OpenSSL that uses 256bit (password-encrypted) keys. Read the key from STDIN, a file, ENV or, on a Mac: OS-X Keychain.
  • Symmetric Encryption - Transparently encrypt ActiveRecord, Mongoid, and MongoMapper attributes. Encrypt passwords in configuration files. Encrypt entire files at rest.
  • Themis - crypto library for painless data security, providing symmetric and asymmetric encryption, secure sockets with forward secrecy, for mobile and server platforms.

Environment Management

  • chruby - Change your current Ruby. No shims, no crazy options or features, ~90 LOC.
  • fry - Simple ruby version manager for fish.
  • gem_home - A tool for changing your $GEM_HOME.
  • rbenv - Use rbenv to pick a Ruby version for your application and guarantee that your development environment matches production.
  • ruby-build - Compile and install Ruby.
  • ruby-install - Installs Ruby, JRuby, Rubinius, MagLev or MRuby.
  • RVM - RVM is a command-line tool which allows you to easily install, manage, and work with multiple ruby environments from interpreters to sets of gems.
  • Tokaido - Ruby, Rails, SQLite and Redis encapsulated in a single drag-and-drop OS X app, designed to make installing a working RoR environment easy for beginners.
  • Uru - Uru is a lightweight, multi-platform command line tool that helps you use the multiple rubies on your 32/64-bit Linux, OS X, or Windows systems.

Error Handling

  • Airbrake - The official Airbrake library for Ruby on Rails (and other Rack based frameworks).
  • Better Errors - Better error page for Rack apps.
  • Bugsnag - Error monitoring for Rails, Sinatra, Rack, and plain Ruby apps.
  • Errbit - The open source, self-hosted error catcher.
  • Exception Handler - Custom error pages.
  • Exception Notification - A set of notifiers for sending notifications when errors occur in a Rack/Rails application.
  • Honeybadger - Exception, uptime, and performance monitoring for Ruby.
  • Nesty - Nested exceptions for Ruby.
  • Raven Ruby - Raven is a Ruby client for Sentry.
  • Rollbar - Easy and powerful exception and error tracking for your applications.

Event Sourcing

  • Eventide Project - Pub/sub, event sourcing, and evented autonomous services backed by the Message DB message store.
  • Rails Event Store (RES) - A library for publishing, consuming, storing and retrieving events. It's your best companion for going with an event-driven architecture for your Rails application.

Feature Flippers and A/B Testing

  • Motorhead - A Rails Engine framework that helps safe and rapid feature prototyping.
  • flipper - Feature flipping for ANYTHING. Make turning features on/off so easy that everyone does it. Whatever your data store, throughput, or experience.
  • Rollout - Feature flippers.
  • Split - Rack Based AB testing framework.
  • Vanity - an A/B testing framework for Rails that is datastore agnostic.

File Upload

  • attache - Standalone image and file server to decouple your app from file management concerns.
  • CarrierWave - Classier solution for file uploads for Rails, Sinatra and other Ruby web frameworks.
  • DragonFly - A Ruby gem for on-the-fly processing - suitable for image uploading in Rails, Sinatra and much more!.
  • PaperClip - Easy file attachment management for ActiveRecord. Deprecated as of May 14, 2018.
  • rack-secure-upload - Upload files securely.
  • Refile - A modern file upload library for Ruby applications, Refile is an attempt by CarrierWave's original author to fix the design mistakes and overengineering in CarrierWave.
  • Shrine - Toolkit for handling file uploads in Ruby.

File System Listener

  • Guard - A command line tool to easily handle events on file system modifications.
  • Guard::LiveReload - Automatically reload your browser when 'view' files are modified.
  • Listen - The Listen gem listens to file modifications and notifies you about the changes.
  • Rerun - Restarts an app when the filesystem changes. Uses growl and FSEventStream if on OS X.

Form Builder

  • Cocoon - Dynamic nested forms using jQuery made easy; works with formtastic, simple_form or default forms.
  • ComfyBootstrapForm - Rails form builder that makes it easy to create forms with Bootstrap 4 markup
  • Formtastic - A Rails form builder plugin with semantically rich and accessible markup.
  • Rails Bootstrap Forms - Rails form builder that makes it super easy to create beautiful-looking forms with Twitter Bootstrap 3+.
  • Rapidfire - Making dynamic surveys should be easy!
  • Reform - Gives you a form object with validations and nested setup of models. It is completely framework-agnostic and doesn't care about your database.
  • Simple Form - Rails forms made easy.

Game Development and Graphics

  • Dragon Ruby - DragonRuby is a zero dependency, cross platform, Ruby runtime built on top of mRuby, libSDL, and LLVM. Write Ruby on any OS and deploy to PC, Mac, Linux, iOS, Android, Raspberry Pi, WASM, Nintendo Switch, Sony Playstation, and Microsoft Xbox.
  • Gosu - A 2D game development library for the Ruby and C++ programming languages.
  • Mittsu - Mittsu makes 3D graphics easier by providing an abstraction over OpenGL, and is based heavily off of THREE.js.
  • Ruby 2D - Create cross-platform 2D applications, games, and visualizations with ease.

Gem Generators

  • Gemsmith - A command line interface for smithing new Ruby gems.
  • Hoe - Hoe is a Rake/RubyGems helper for project Rakefiles.

Geolocation

  • Geocoder - A complete geocoding solution for Ruby. With Rails it adds geocoding (by street or IP address), reverse geocoding (find street address based on given coordinates), and distance queries.
  • geoip - Searches a GeoIP database for a given host or IP address, and returns information about the country where the IP address is allocated, and the city, ISP and other information.
  • Geokit - Geokit gem provides geocoding and distance/heading calculations.
  • Google Maps for Rails - Enables easy Google map + overlays creation in Ruby apps.
  • rgeo - Geospatial data library. Spatial data types, geometric and spherical calculations, and WKT/WKB serialization.

Git Tools

  • ginatra - A web frontend for Git repositories.
  • git-auto-bisect - Find the commit that broke master.
  • git_curate - Peruse and delete git branches ergonomically.
  • git_reflow - An automated quality control workflow for Agile teams.
  • git-spelunk - Dig through git blame history.
  • git-whence - Find which merge a commit came from.
  • Git Lint - Analyzes Git commits for consistent quality.
  • Overcommit - A fully configurable and extendable Git hook manager.
  • Rugged - Ruby bindings to libgit2.

GraphQL

GUI

  • Glimmer - Ruby DSL for SWT
  • qtbindings - Allows the QT Gui toolkit to be used from Ruby.
  • Ruby-GNOME - Ruby language bindings for the GNOME development environment.
  • Shoes - Shoes makes building little graphical programs for Mac, Windows, and Linux super simple.

HTML/XML Parsing

  • HappyMapper - Object to XML mapping library, using Nokogiri.
  • HTML::Pipeline - HTML processing filters and utilities.
  • Nokogiri - An HTML, XML, SAX, and Reader parser with XPath and CSS selector support.
  • Oga - An XML/HTML parser written in Ruby. Oga does not require system libraries such as libxml, making it easier and faster to install on various platforms.
  • Ox - A fast XML parser and Object marshaller.
  • ROXML - Custom mapping and bidirectional marshalling between Ruby and XML using annotation-style class methods, via Nokogiri or LibXML.

HTTP Clients and tools

  • Accept Language - A tiny library for parsing the Accept-Language header from browsers (as defined in RFC 2616).
  • excon - Usable, fast, simple Ruby HTTP 1.1. It works great as a general HTTP(s) client and is particularly well suited to usage in API clients.
  • Faraday - an HTTP client lib that provides a common interface over many adapters (such as Net::HTTP) and embraces the concept of Rack middleware when processing the request/response cycle.
  • Device Detector - A precise and fast user agent parser and device detector, backed by the largest and most up-to-date user agent database.
  • Http Client - Gives something like the functionality of libwww-perl (LWP) in Ruby.
  • HTTP - The HTTP Gem: a simple Ruby DSL for making HTTP requests.
  • HTTPX - Pure ruby HTTP client, supports HTTP/2 and HTTP/1, concurrent requests, plugin system for extended features (cookies, retries, following redirects, proxy, streaming...).
  • httparty - Makes http fun again!
  • Http-2 - Pure Ruby implementation of HTTP/2 protocol
  • Patron - Patron is a Ruby HTTP client library based on libcurl.
  • RESTClient - Simple HTTP and REST client for Ruby, inspired by microframework syntax for specifying actions.
  • Savon - Savon is a SOAP client for the Ruby programming language.
  • Sawyer - Secret user agent of HTTP, built on top of Faraday.
  • Sniffer โ€“ Tool to log and debug outgoing HTTP requests across multiple ruby libraries.
  • Typhoeus - Typhoeus wraps libcurl in order to make fast and reliable requests.

Image Processing

  • FastImage - FastImage finds the size or type of an image given its uri by fetching as little as needed.
  • ImageProcessing - High-level image processing wrapper for libvips and ImageMagick/GraphicsMagick
  • MiniMagick - A ruby wrapper for ImageMagick or GraphicsMagick command line.
  • Phasion - Ruby wrapper around pHash, the perceptual hash library for detecting duplicate multimedia files.
  • PSD.rb - Parse Photoshop files in Ruby with ease.
  • RMagick - RMagick is an interface between Ruby and ImageMagick.
  • ruby-vips - A binding for the libvips image processing library.
  • Skeptick - Skeptick is an all-purpose DSL for building and running ImageMagick commands.

Implementations/Compilers

  • JRuby - A Java implementation of the Ruby language.
  • MRuby - Lightweight Ruby. Can be linked and embedded in your application.
  • Opal - Ruby to Javascript compiler.
  • Rubinius - An implementation of the Ruby programming language. Rubinius includes a bytecode virtual machine, Ruby syntax parser, bytecode compiler, generational garbage collector, just-in-time (JIT) native machine code compiler, and Ruby Core and Standard libraries.
  • TruffleRuby - A high performance implementation of the Ruby programming language. Built on the GraalVM by Oracle Labs.

Internationalization

  • FastGettext - Ruby internationalization tool with less memory, simple, clean namespace and threadsafe.
  • Globalize - Globalize builds on the I18n API in Ruby on Rails to add model translations to ActiveRecord models.
  • i18n-tasks - Manage missing and unused translations with the awesome power of static analysis.
  • i18n - Ruby Internationalization and localization solution.
  • mini_i18n - Minimalistic, flexible and fast Internationalization library. It supports localization, interpolations, pluralization, fallbacks, nested keys and more.
  • rails-i18n - Repository for collecting Locale data for Rails I18n as well as other interesting, Rails related I18n stuff.
  • r18n - Advanced i18n library for Rails, Sinatra, desktop apps, models, works well with complex languages like Russian.
  • Termit - Translations with speech synthesis in your terminal.
  • Tolk - A web interface for doing i18n translations packaged as a Rails engine.
  • twitter-cldr-rb - Ruby implementation of the ICU (International Components for Unicode) that uses the Common Locale Data Repository to format dates, plurals, and more.

IRB

  • Clipboard - Access to the system clipboard on Linux, MacOS and Windows.
  • irbtools - Improvements for Ruby's IRB.
  • Looksee - A tool for illustrating the ancestry and method lookup path of objects. Handy for exploring unfamiliar codebases.
  • Pry - A powerful alternative to the standard IRB shell for Ruby.
  • rib - A lightweight and extensible IRB replacement.

Logging

  • Fluentd - Fluentd collects events from various data sources and writes them to files, database or other types of storages.
  • HttpLog - Log outgoing HTTP requests.
  • Log4r - Log4r is a comprehensive and flexible logging library for use in Ruby programs.
  • Logging - A flexible logging library for use in Ruby programs based on the design of Java's log4j library.
  • Lograge - An attempt to tame Rails' default policy to log everything.
  • MongoDB Logger - MongoDB logger for Rails.
  • Scrolls - Simple logging.
  • Semantic Logger - Scalable, next generation enterprise logging for Ruby.
  • Syslogger - A drop-in replacement for the standard Logger Ruby library, that logs to the syslog instead of a log file.
  • Yell - Your Extensible Logging Library.

Machine Learning

  • AI4R - Algorithms covering several Artificial intelligence fields.
  • Awesome Machine Learning with Ruby - A Curated List of Ruby Machine Learning Links and Resources.
  • m2cgen - A CLI tool to transpile trained classic ML models into a native Ruby code with zero dependencies.
  • PredictionIO Ruby SDK - The PredictionIO Ruby SDK provides a convenient API to quickly record your users' behavior and retrieve personalized predictions for them.
  • rb-libsvm - Ruby language bindings for LIBSVM. SVM is a machine learning and classification algorithm.
  • ruby-fann - Ruby library for interfacing with FANN (Fast Artificial Neural Network).
  • rumale - A machine learning library with interfaces similar to Scikit-Learn.
  • TensorFlow - The end-to-end machine learning platform for Ruby.
  • Torch.rb - Deep learning for Ruby, powered by LibTorch.
  • weka - Machine learning and data mining algorithms for JRuby.

Markdown Processors

  • kramdown - Kramdown is yet-another-markdown-parser but fast, pure Ruby, using a strict syntax definition and supporting several common extensions.
  • markdown_helper - A markdown pre-processor implementing file inclusion and page TOC (table of contents).
  • Maruku - A pure-Ruby Markdown-superset interpreter.
  • Redcarpet - A fast, safe and extensible Markdown to (X)HTML parser.
  • word-to-markdown - Gem to convert Microsoft Word documents to Markdown.

Measurements

  • Measured - Wrapper objects which encapsulate measurements and their associated units in Ruby.
  • Ruby Units - Provides classes and methods to perform unit math and conversions.

Mobile Development

  • dryrun - Try any Android library on your smartphone directly from the command line.
  • fastlane - Connect all iOS deployment tools into one streamlined workflow.
  • PubNub - Real-time Push Service in the Cloud.
  • Ruboto - A platform for developing full stand-alone apps for Android using the Ruby language and libraries.
  • RubyMotion - A revolutionary toolchain that lets you quickly develop and test full-fledged native iOS and OS X applications for iPhone, iPad, Mac and Android.

Money

  • eu_central_bank - A gem that calculates the exchange rate using published rates from European Central Bank.
  • Monetize - A library for converting various objects into Money objects.
  • Money - A Ruby Library for dealing with money and currency conversion.

Music and Sound

  • Coltrane - A music theory library with a command-line interface.
  • Maestro - A Slack-Powered music bot for Spotify
  • Sonic Pi - A live coding synth for everyone originally designed to support computing and music lessons.

Natural Language Processing

  • Awesome NLP with Ruby - Awesome List for Practical Natural Language Processing done in Ruby.
  • Parslet - A small Ruby library for constructing parsers in the PEG (Parsing Expression Grammar) fashion.
  • pocketsphinx-ruby - Ruby speech recognition with Pocketsphinx.
  • Pragmatic Segmenter - Pragmatic Segmenter is a rule-based sentence boundary detection gem that works out-of-the-box across many languages.
  • Ruby Natural Language Processing Resources - Collection of links to Ruby Natural Language Processing (NLP) libraries, tools and software.
  • Sentimental - Simple sentiment analysis with Ruby.
  • Text - A collection of text algorithms including Levenshtein distance, Metaphone, Soundex 2, Porter stemming & White similarity.
  • Treat - Treat is a toolkit for natural language processing and computational linguistics in Ruby.
  • Treetop - PEG (Parsing Expression Grammar) parser.
  • Words Counted - A highly customisable Ruby text analyser and word counter.

Networking

  • Dnsruby - A pure Ruby DNS client library which implements a stub resolver. It aims to comply with all DNS RFCs.
  • RubyDNS - A high-performance DNS server which can be easily integrated into other projects or used as a stand-alone daemon.

Notifications

  • Noticed - ActionMailer-like Notification System for your Ruby on Rails app.
  • Ruby Push Notifications - iOS, Android and Windows Phone Push notifications made easy.
  • Rpush - The push notification service for Ruby which supports Apple Push Notification Service, Google Cloud Messaging, Amazon Device Messaging and Windows Phone Push Notification Service.
  • webpush - Encryption Utilities for Web Push protocol.

Optimizations

  • bootsnap - Boot large Ruby/Rails apps faster.
  • fast_blank - Provides a C-optimized method for determining if a string is blank.
  • fast_underscore - Provides a C-optimized method for transforming a string from any capitalization into underscore-separated
  • yajl-ruby - A streaming JSON parsing and encoding library for Ruby (C bindings to yajl).

ORM/ODM

  • ActiveRecord - Object-relational mapping in Rails.
  • Hanami::Model - A lean Repository-pattern based ORM framework for Hanami and modern Ruby applications.
  • Mongoid - An ODM (Object-Document-Mapper) framework for MongoDB in Ruby.
  • MongoModel - Ruby ODM for interfacing with MongoDB databases.
  • Neo4j.rb - A Neo4j OGM (Object-Graph-Mapper) for use in Ruby on Rails and Rack frameworks heavily inspired by ActiveRecord.
  • NoBrainer - A RethinkDB ORM for Ruby
  • Ohm - Object-hash mapping library for Redis.
  • Redis-Objects - Redis Objects provides a Rubyish interface to Redis, by mapping Redis data types to Ruby objects, via a thin layer over the redis gem.
  • ROM - Ruby Object Mapper (ROM) is an experimental Ruby library with the goal to provide powerful object mapping capabilities without limiting the full power of your datastore.
  • Sequel - Sequel is a simple, flexible, and powerful SQL database access toolkit for Ruby.

ORM/ODM Extensions

  • Auditing and Versioning
  • acts_as_archival - ActiveRecord plugin for atomic object tree archiving.
  • ActsAsParanoid - ActiveRecord plugin allowing you to hide and restore records without actually deleting them.
  • Audited - Audited is an ORM extension for ActiveRecord & MongoMapper that logs all changes to your models.
  • Destroyed At - Allows you to "destroy" an object without deleting the record or associated records.
  • Discard - A simple ActiveRecord mixin to add conventions for flagging records as discarded.
  • Logidze - Database changes log for Rails.
  • marginalia - Attach comments to your ActiveRecord queries. By default, it adds the application, controller, and action names as a comment at the end of each query.
  • mongoid-history - Multi-user non-linear history tracking, auditing, undo, redo for mongoid.
  • PaperTrail - Track changes to your ActiveRecord models' data for auditing or versioning.
  • Paranoia - A re-implementation of acts_as_paranoid for Rails 3 and 4, using much, much, much less code.
  • PermenantRecords - Soft-delete your ActiveRecord records, like an explicit version of ActsAsParanoid.
  • Bit array
  • ActiveFlag - Store up to 64 multiple flags in a single integer column with ActiveRecord.
  • Bitfields - Save migrations and columns by storing multiple booleans in a single integer.
  • Import
  • ActiveRecord Import - a library for bulk inserting data using ActiveRecord.
  • bulk_insert - A little ActiveRecord extension for helping to insert lots of rows in a single insert statement.
  • data_miner - Download, pull out of a ZIP/TAR/GZ/BZ2 archive, parse, correct, and import XLS, ODS, XML, CSV, HTML, etc. into your ActiveRecord models.
  • ferry - A ruby gem for easy data transfer.
  • Misc
  • arel_extensions - Extending Arel: more "rubyish" syntax, functions for strings, dates, math... and add native extensions for some DBs.
  • ActiveRecord::Turntable - A database sharding extension for ActiveRecord.
  • ActiveValidators - An exhaustive collection of off-the-shelf and tested ActiveModel/ActiveRecord validations.
  • DeepPluck - Allow you to pluck attributes from nested associations without loading a bunch of records.
  • Enumerize - Enumerated attributes with I18n and ActiveRecord/Mongoid/MongoMapper support.
  • Goldiloader - Automatic ActiveRecord eager loading.
  • Rating - A true Bayesian rating system with scope and cache enabled.
  • Multi-tenancy
  • Acts As Tennant - Add multi-tenancy to a Rails app through a shared database strategy.
  • Apartment - Multi-tenancy for Rails and ActiveRecord.
  • Milia - Non-invasive multi-tenancy for Rails which supports Devise authentication out of the box.
  • Social
  • Merit - Adds reputation behavior to Rails apps in the form of Badges, Points, and Rankings for ActiveRecord or Mongoid.
  • PublicActivity - Provides easy activity tracking for your ActiveRecord, Mongoid 3 and MongoMapper models in Rails 3 and 4. Similar to Github's Public Activity.
  • Simple Feed - Fast and highly scalable read-optimized social activity feed library in pure Ruby, backed by Redis.
  • Unread - Manage read/unread status of ActiveRecord objects - and it's fast.
  • Sorting
  • ActsAsList - Provides the capabilities for sorting and reordering a number of objects in a list.
  • ranked-model - A modern row sorting library for ActiveRecord. It uses ARel aggressively and is better optimized than most other libraries.
  • Tree
  • ActsAsTree - Extends ActiveRecord to add simple support for organizing items into parentโ€“children relationships.
  • Ancestry - Organise ActiveRecord model into a tree structure using a variation on the materialised path pattern.
  • Awesome Nested Set - Awesome Nested Set is an implementation of the nested set pattern for ActiveRecord models.
  • Closure Tree - Easily and efficiently make your ActiveRecord models support hierarchies using a Closure Table.
  • Mongoid Tree - A tree structure for Mongoid documents using the materialized path pattern.

Package Management

  • Gems
  • Bundler - Manage your application's gem dependencies with less pain.
  • RubyGems - Community's gem hosting service.
  • Cloudsmith - A fully managed package management SaaS with support for Rubygems (and many others).
  • Packages and Applications
  • Berkshelf - A Chef Cookbook manager.
  • CocoaPods - The Objective-C dependency manager.
  • fpm - Effing package management! Build packages for multiple platforms (deb, rpm, etc) with great ease and sanity.
  • Linuxbrew - A fork of Homebrew for Linux.
  • Homebrew-cask - A CLI workflow for the administration of Mac applications distributed as binaries.
  • Homebrew - The missing package manager for OS X.
  • Traveling Ruby - Traveling Ruby lets you create self-contained Ruby app packages for Linux and OS X.

Pagination

  • Kaminari - A Scope & Engine based, clean, powerful, customizable and sophisticated paginator for modern web app frameworks and ORMs.
  • order_query - A keyset pagination library to find the next or previous record(s) relative to the current one efficiently, e.g. for infinite scroll.
  • Pagy - Pagy is the ultimate pagination gem that outperforms the others in each and every benchmark and comparison. More details can be found on Pagy Wiki.
  • will_paginate - A pagination library that integrates with Ruby on Rails, Sinatra, Merb, DataMapper and Sequel.

PDF

  • CombinePDF - A Pure ruby library to merge or stump PDF files, number pages and more.
  • HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby.
  • InvoicePrinter - Super simple PDF invoicing in Ruby (built on top of Prawn).
  • Kitabu - A framework for creating e-books from Markdown/Textile text markup using Ruby.
  • Pdfkit - HTML+CSS to PDF using wkhtmltopdf.
  • Prawn - Fast, Nimble PDF Writer for Ruby.
  • RGhost - RGhost is a document creation and conversion API.
  • Squid - Squid ยท A Ruby library to plot charts in PDF files
  • Wicked Pdf - PDF generator (from HTML) plugin for Ruby on Rails.

Performance Monitoring

  • Instrumental - Measure your application in real time with Instrumental.
  • New Relic - Find and fix Ruby errors with New Relic application monitoring and troubleshooting.
  • RoRvsWild - Performances and exceptions monitoring for Rails developers.
  • Scout - Scout Ruby Application Monitoring Agent.
  • Skylight - A smart profiler for your Rails apps that visualizes request performance.

Presentation Programs

  • Slide Show (S9) - Write your slides / talks / presentations in plain text with markdown formatting conventions and generate (static) web pages; template packs incl. deck.js, impress.js, reveal.js, shower, s6, s5 and more.

Process Management and Monitoring

  • Bluepill - Simple process monitoring tool.
  • Eye - Process monitoring tool. Inspired from Bluepill and God.
  • Foreman - Manage Procfile-based applications.
  • God - An easy to configure, easy to extend monitoring framework written in Ruby.
  • Health Monitor Rails - A mountable Rails plug-in to check health of services (Database, Cache, Sidekiq, Redis, e.t.c.) used by the Rails app.
  • Procodile - Run processes in the background (and foreground) on Mac & Linux from a Procfile.
  • RedisWebManager - Web interface that allows you to manage easily your Redis instance (see keys, memory used, connected client, etc...).

Processes

  • childprocess - Cross-platform ruby library for managing child processes.
  • posix-spawn - Fast Process::spawn for Rubys >= 1.8.7 based on the posix_spawn() system interfaces.

Profiler and Optimization

  • batch-loader โ€“ A generic lazy batching mechanism to avoid N+1 DB queries, HTTP queries, etc.
  • benchmark-ips - Provides iteration per second benchmarking for Ruby.
  • bullet - Help to kill N+1 queries and unused eager loading.
  • Derailed Benchmarks - A series of things you can use to benchmark any Rack based app.
  • Peek - Visual status bar showing Rails performance.
  • rack-mini-profiler - Profiler for your development and production Ruby rack apps.
  • Rbkit - profiler for Ruby. With a GUI.
  • rbspy - Sampling profiler for any Ruby process.
  • ruby-prof - A code profiler for MRI rubies.
  • stackprof - A sampling call-stack profiler for ruby 2.1+.
  • test-prof - Ruby Tests Profiling Toolbox

QR

  • RQRCode - RQRCode is a library for creating and rendering QR codes into various formats.

Queues and Messaging

  • Backburner - Backburner is a beanstalkd-powered job queue that can handle a very high volume of jobs.
  • Bunny - Bunny is a popular, easy to use, well-maintained Ruby client for RabbitMQ (3.3+).
  • Delayed::Job - Database backed asynchronous priority queue.
  • GoodJob - GoodJob is a multithreaded, Postgres-based, ActiveJob backend for Ruby on Rails.
  • Gush - A parallel runner for complex workflows using only Redis and Sidekiq.
  • Karafka - Framework used to simplify Apache Kafka (a distributed streaming platform) based Ruby applications development.
  • March Hare - Idiomatic, fast and well-maintained JRuby client for RabbitMQ.
  • Resque - A Redis-backed Ruby library for creating background jobs.
  • Que - A Ruby job queue that uses PostgreSQL's advisory locks for speed and reliability.
  • RocketJob - Enterprise Batch Processing System focused on performance, scalability, reliability, and visibility of every job in the system. Outgrown existing solutions? Or, start small and scale up later.
  • Shoryuken - A super efficient AWS SQS thread based message processor for Ruby.
  • Sidekiq - A full-featured background processing framework for Ruby. It aims to be simple to integrate with any modern Rails application and much higher performance than other existing solutions.
  • Sneakers - A fast background processing framework for Ruby and RabbitMQ.
  • Sucker Punch - A single process background processing library using Celluloid. Aimed to be Sidekiq's little brother.

Rails Application Generators

  • Bootstrappers - Bootstrappers generates a base Rails app using Bootstrap template and other goodies.
  • Hobo - The web app builder for Rails.
  • orats - Opinionated rails application templates.
  • Rails Composer - The Rails generator on steroids for starter apps.
  • railsnew.io - The simplest way to generate a new Rails app with (or without!) all the bells and whistles.
  • Raygun - Builds applications with the common customization stuff already done.
  • Suspenders - Suspenders is the base Rails application used at thoughtbot.

Robotics

  • Arli - Arli is the CLI tool for searching, installing, and packaging Arduino libraries with a project using a YAML-based Arlifile. It's a "Bundler for Arduino Development".
  • Artoo - Next generation robotics framework with support for different platforms: Arduino, Leap Motion, Pebble, Raspberry Pi, etc.

RSS

  • Feed normalizer - Extensible Ruby wrapper for Atom and RSS parsers.
  • Feedjira - A feed fetching and parsing library.
  • feedparser - A feed parser and normalizer (Atom, RSS, JSON, etc) library.
  • Simple rss - A simple, flexible, extensible, and liberal RSS and Atom reader.
  • Stringer - A self-hosted, anti-social RSS reader.

Serverless

  • FaaStRuby - Serverless Software Development Platform for Ruby and Crystal developers.
  • Jets - A Ruby Serverless Framework to create and deploy serverless microservices with ease, and to seamlessly glue AWS services.

Scheduling

  • minicron - A system to manage and monitor cron jobs.
  • que-scheduler - A lightweight cron scheduler for the async job worker Que.
  • resque-scheduler - A light-weight job scheduling system built on top of Resque.
  • rufus-scheduler - Job scheduler for Ruby (at, cron, in and every jobs).
  • Sidekiq-Cron - A scheduling add-on for Sidekiq.
  • Simple Scheduler - An enhancement for Heroku Scheduler + Sidekiq for scheduling jobs at specific times with a readable YML file.
  • Whenever - A Ruby gem that provides a clear syntax for writing and deploying cron jobs.

Scientific

  • Bindings
  • PyCall - Calling Python functions from the Ruby language.
  • ruby-opencv - An OpenCV wrapper for Ruby.
  • Classifiers
  • classifier-reborn - An active fork of Classifier, and general module to allow Bayesian and other types of classifications.
  • Data analysis/structures
  • daru - A library for storage, analysis, manipulation and visualization of data in pure Ruby.
  • Daru::View - A library for easy and interactive plotting on Jupyter Notebooks and web applications.
  • Rgl - A framework for graph data structures and algorithms.
  • Numerical arrays
  • NMatrix - Fast numerical linear algebra library for Ruby.
  • Numo::NArray - N-dimensional Numerical Array for Ruby.
  • mdarray - Multi dimensional array implemented for JRuby inspired by NumPy.
  • Red Data Tools - Data processing tools for Ruby.
  • SciRuby - Tools for scientific computation in Ruby/Rails.
  • IRuby - A Ruby kernel for Jupyter.
  • statsample - A suite for basic and advanced statistics on Ruby.
  • statsample-timeseries - Bioruby Statsample TimeSeries.
  • statsample-glm - Generalized Linear Models extension for Statsample.
  • distribution - Statistical Distributions multi library wrapper.
  • minimization - Minimization algorithms on pure Ruby.
  • Specific
  • BioRuby - Library for developing bioinformatics software.
  • bloomfilter-rb - BloomFilter(s) in Ruby: Native counting filter + Redis counting/non-counting filters.
  • decisiontree - A ruby library which implements ID3 (information gain) algorithm for decision tree learning.
  • Utilities
  • algorithms - Library with documentation on when to use a particular structure/algorithm.
  • jaro_winkler - Ruby & C implementation of Jaro-Winkler distance algorithm which supports UTF-8 string.
  • primes-utils - A Rubygem which provides a suite of extremely fast utility methods for testing and generating primes.
  • Roots - A Rubygem which provides utilities to find all the nth roots of real and complex values.
  • smarter_csv - Ruby Gem for smarter importing of CSV Files as Array(s) of Hashes.
  • chewy - High-level Elasticsearch Ruby framework based on the official elasticsearch-ruby client.
  • elasticsearch-ruby - Ruby integrations for Elasticsearch.
  • elastics - Simple ElasticSearch client with support for migrations and ActiveRecord integration.
  • has_scope - Has scope allows you to easily create controller filters based on your resources named scopes.
  • Mongoid Search - Simple full text search implementation for Mongoid.
  • pg_search - Builds ActiveRecord named scopes that take advantage of PostgreSQL's full text search.
  • ransack - Object-based searching.
  • Rroonga - The Ruby bindings of Groonga.
  • scoped_search - Adds a scope supporting search queries and autocompletion against existing fields on ActiveRecord models and associations.
  • SearchCop - Extends your ActiveRecord models to support fulltext search engine like queries via simple query strings and hash-based queries.
  • Searchkick - Searchkick learns what your users are looking for. As more people search, it gets smarter and the results get better. Itโ€™s friendly for developers - and magical for your users.
  • Sunspot - A Ruby library for expressive, powerful interaction with the Solr search engine.
  • textacular - Exposes full text search capabilities from PostgreSQL, and allows you to declare full text indexes. Textacular extends ActiveRecord with named_scope methods making searching easy and fun!
  • Thinking Sphinx - A library for connecting ActiveRecord to the Sphinx full-text search tool.

Security

  • BeEF - BeEF is short for The Browser Exploitation Framework. It is a penetration testing tool that focuses on the web browser.
  • bundler-audit - Patch-level security verification for Bundler.
  • Metasploit - World's most used penetration testing software.
  • Rack::Attack - Rack middleware for blocking & throttling abusive requests.
  • Rack::Protection - Rack middleware for protecting against typical Web attacks.
  • SecureHeaders - Automatically apply several headers that are related to security, including: Content Security Policy (CSP), HTTP Strict Transport Security (HSTS), X-Frame-Options (XFO), X-XSS-Protection, X-Content-Type-Options, X-Download-Options & X-Permitted-Cross-Domain-Policies.

Services and Apps

Online tools, services and APIs to simplify development.

  • AppSignal - Better monitoring for your Rails applications.
  • Codacy - Automated Code Review for Ruby, Rails, JS, PHP, Python etc. Security, Coverage & Quality.
  • CodeClimate - Quality & security analysis for Ruby on Rails and Javascript.
  • GitHub - Powerful collaboration, code review, and code management for open source and private projects.
  • Gitlab CI - Integrate with your GitLab to run tests for your projects.
  • GitLab - Open source software to collaborate on code.
  • HoundCI - Review your Ruby code for style guide violations.
  • Inch CI - Documentation badges for Ruby projects.
  • OctoLinker - Navigate through projects on GitHub.com efficiently with the OctoLinker browser extension.
  • SemaphoreCI - Hosted continuous integration and deployment service for open source and private projects.
  • Sider - Automated Code Review with GitHub PR. Monitoring Style Violations, Quality, Security, Dependencies.
  • Travis CI - Test and Deploy Your Code with Confidence.

SEO

  • FriendlyId - The "Swiss Army bulldozer" of slugging and permalink plugins for Active Record.
  • MetaTags - A gem to make your Rails application SEO-friendly.
  • prerender_rails - Rails middleware gem for prerendering javascript-rendered pages on the fly for SEO.
  • SitemapGenerator - A framework-agnostic XML Sitemap generator written in Ruby.

Social Networking

  • Decidim - free open-source participatory democracy for cities and organizations
  • diaspora* - A privacy aware, distributed, open source social network.
  • Discourse - A platform for community discussion. Free, open, simple.
  • Mailboxer - A private message system for Rails applications.
  • Mastodon - A GNU Social-compatible microblogging server.
  • Social Shares - A gem to check how many times url was shared in social networks.
  • Thredded - Rails 4.2+ forums/messageboards engine. Its goal is to be as simple and feature rich as possible.

Spreadsheets and Documents

  • AXLSX - An excel xlsx generation library.
  • Docsplit - Gem to convert Microsoft Word (and other) documents into images, pdf, pages or text.
  • Roo - Implements read access for all spreadsheet types and read/write access for Google spreadsheets.
  • spreadsheet_architect - Spreadsheet Architect is a library that allows you to create XLSX, ODS, or CSV spreadsheets super easily from ActiveRecord relations, plain Ruby objects, or tabular data.

State Machines

  • AASM - State machines for Ruby classes (plain Ruby, Rails Active Record, Mongoid).
  • FiniteMachine - A plain Ruby state machine with a straightforward and expressive syntax.
  • MicroMachine - A minimal finite state machine implementation in less than 50 lines of code.
  • simple_states - A super-slim statemachine-like support library.
  • Statesman - A statesmanlike state machine library.
  • state_machines - Adds support for creating state machines for attributes on any Ruby class.
  • transitions - A ruby state machine implementation.
  • Workflow - A finite-state-machine-inspired API for modeling and interacting with what we tend to refer to as 'workflow'.

Static Site Generation

  • Bridgetown - A Webpack-aware, Ruby-powered static site generator for the modern Jamstack era.
  • High Voltage - Easily include static pages in your Rails app.
  • Jekyll - Transform your plain text into static websites and blogs.
  • Awesome Jekyll - A collection of awesome Jekyll tools, plugins, themes, guides and much more.
  • Middleman - A static site generator using all the shortcuts and tools in modern web development.
  • Nanoc - A static site generator, fit for building anything from a small personal blog to a large corporate web site.
  • Photish - Generate a highly configurable static website from a photo collection.
  • webgen - webgen is a fast, powerful and extensible static website generator.

Template Engine

  • Curly - A template language that completely separates structure and logic.
  • Haml - HTML Abstraction Markup Language.
  • Liquid - Safe, customer facing template language for flexible web apps.
  • Mustache - Logic-less Ruby templates.
  • Slim - A template language whose goal is reduce the syntax to the essential parts without becoming cryptic.
  • Tilt - Generic interface to multiple Ruby template engines.

Testing

  • Frameworks
  • RSpec - Behaviour Driven Development for Ruby.
    • Formatters
    • Emoji-RSpec - Custom Emoji Formatters for RSpec.
    • Fuubar - The instafailing RSpec progress bar formatter.
    • Nyan Cat - Nyan Cat inspired RSpec formatter!
  • Aruba - Testing command line applications with cucumber and rspec.
  • Bacon - A small RSpec clone.
  • Capybara - Acceptance test framework for web applications.
  • Cucumber - BDD that talks to domain experts first and code second.
  • Cutest - Isolated tests in Ruby.
  • Fix - Specing framework for Ruby.
  • Howitzer - Ruby based framework for acceptance testing
  • minitest - minitest provides a complete suite of testing facilities supporting TDD, BDD, mocking, and benchmarking.
  • Mocha - Mocha is a mocking and stubbing library for Ruby.
  • RR - A test double framework that features a rich selection of double techniques and a terse syntax.
  • shoulda-matchers - Provides Test::Unit- and RSpec-compatible one-liners that test common Rails functionality. These tests would otherwise be much longer, more complex, and error-prone.
  • Spinach - Spinach is a high-level BDD framework that leverages the expressive Gherkin language (used by Cucumber) to help you define executable specifications of your application or library's acceptance criteria.
  • TestBench - TestBench is a principled test framework for Ruby and MRuby aiming to offer precisely what is needed to test well-designed code effectively and easily.
  • Test::Unit - Test::Unit is a xUnit family unit testing framework for Ruby.
  • Fake Data
  • Fabrication - A simple and powerful object generation library.
  • factory_bot - A library for setting up Ruby objects as test data.
  • Fake Person - Uses some of the most popular given & surnames in the US & UK.
  • faker - A library for generating fake data such as names, addresses, and phone numbers.
  • ffaker - A faster Faker, generates dummy data, rewrite of faker.
  • Forgery - Easy and customizable generation of forged data.
  • Mock
  • ActiveMocker - Generate mocks from ActiveRecord models for unit tests that run fast because they donโ€™t need to load Rails or a database.
  • DnsMock - Ruby DNS mock. Mimic any DNS records for your test environment and even more.
  • DuckRails - Tool for mocking API endpoints quickly & dynamically.
  • TestXml - TestXml is a small extension for testing XML/HTML.
  • WebMock - Library for stubbing and setting expectations on HTTP requests.
  • WebDrivers
  • Selenium WebDriver - Ruby bindings for WebDriver.
  • API Taster - A quick and easy way to visually test your Rails application's API.
  • Poltergeist - A PhantomJS driver for Capybara.
  • Watir - Web application testing in Ruby.
  • Extra
  • Appraisal - Appraisal integrates with bundler and rake to test your library against different versions of dependencies.
  • CQL - CQL is a library for making queries against Cucumber style test suites.
  • cuke_modeler - An modeling library for .feature files that is an abstration layer on top of the gherkin gem, providing a stable base upon which to build other Gherkin related tools.
  • gitarro - Run, retrigger, handle all type and OS-independent tests against your GitHub Pull Requests.
  • Knapsack - Optimal test suite parallelisation across CI nodes for RSpec, Cucumber, Minitest, Spinach and Turnip.
  • mutant - Mutant is a mutation testing tool for Ruby.
  • Parallel Tests - Speedup Test::Unit + RSpec + Cucumber by running parallel on multiple CPUs (or cores).
  • power_assert - Power Assert for Ruby.
  • Ruby-JMeter - A Ruby based DSL for building JMeter test plans.
  • Spring - Preloads your rails environment in the background for faster testing and Rake tasks.
  • timecop - Provides "time travel" and "time freezing" capabilities, making it dead simple to test time-dependent code.
  • vcr - Record your test suite's HTTP interactions and replay them during future test runs for fast, deterministic, accurate tests.
  • Wraith - A responsive screenshot comparison tool.
  • Zapata - Who has time to write tests? This is a revolutionary tool to make them write themselves.

Third-party APIs

  • Buffer - Buffer API Ruby Library
  • discordrb - An implementation of the Discord API.
  • Dropbox - Ruby client for Dropbox API v2.
  • fb_graph2 - A full-stack Facebook Graph API wrapper.
  • flickr - A Ruby interface to the Flickr API.
  • gitlab - Ruby wrapper and CLI for the GitLab API.
  • google-api-ads-ruby - Google Adwords Ruby client
  • gmail - A Rubyesque interface to Gmail, with all the tools you'll need.
  • hipchat-rb - HipChat HTTP API Wrapper in Ruby with Capistrano hooks.
  • instagram-ruby-gem - The official gem for the Instagram REST and Search APIs.
  • itunes_store_transporter - Ruby wrapper around Apple's iTMSTransporter program.
  • linkedin - Provides an easy-to-use wrapper for LinkedIn's REST APIs.
  • Octokit - Ruby toolkit for the GitHub API.
  • Pusher - Ruby server library for the Pusher API.
  • Restforce - A Ruby client for the Salesforce REST api.
  • ruby-gmail - A Rubyesque interface to Gmail.
  • ruby-trello - Implementation of the Trello API for Ruby.
  • simple-slack-bot - You can easily make Slack Bot.
  • Slack Notifier - A simple wrapper for posting to Slack channels.
  • Slack ruby gem - A Ruby wrapper for the Slack API.
  • soundcloud-ruby - Official SoundCloud API Wrapper for Ruby.
  • t - A command-line power tool for Twitter.
  • terjira - A command-line power tool for Jira.
  • tweetstream - A simple library for consuming Twitter's Streaming API.
  • twilio-ruby - A module for using the Twilio REST API and generating valid TwiML.
  • twitter - A Ruby interface to the Twitter API.
  • wikipedia - Ruby client for the Wikipedia API.
  • Yt - An object-oriented Ruby client for YouTube API V3.

Video

  • Streamio FFMPEG - Simple yet powerful wrapper around the ffmpeg command for reading metadata and transcoding movies.
  • Video Transcoding - Tools to transcode, inspect and convert videos.

View components

  • Cells - View Components for Rails.
  • Komponent - An opinionated way of organizing front-end code in Rails, based on components.
  • ViewComponent - View components for Rails.

View helpers

  • active_link_to - View helper to manage "active" state of a link.
  • auto_html - Rails extension for transforming URLs to appropriate resource (image, link, YouTube, Vimeo video...).
  • Bh - Bootstrap Helpers for Ruby.
  • gon - If you need to send some data to your js files and you don't want to do this with long way through views and parsing - use gon.
  • PluggableJs - Page-specific javascript for Rails applications with the ability of passing data from a controller.
  • render_async - Render partials to your views asynchronously and increase load performance of your pages.

Web Crawling

  • LinkThumbnailer - Ruby gem that generates thumbnail images and videos from a given URL. Much like popular social website with link preview.
  • Kimurai - A modern web scraping framework written in Ruby which works out of box with Headless Chromium/Firefox, PhantomJS, or simple HTTP requests and allows to scrape and interact with JavaScript rendered websites.
  • Mechanize - Mechanize is a ruby library that makes automated web interaction easy.
  • MetaInspector - Ruby gem for web scraping purposes.
  • Spidr - A versatile Ruby web spidering library that can spider a site, multiple domains, certain links or infinitely. Spidr is designed to be fast and easy to use.
  • Upton - A batteries-included framework for easy web-scraping.
  • Wombat - Web scraper with an elegant DSL that parses structured data from web pages.

Web Frameworks

  • Camping - A web microframework which consistently stays at less than 4kB of code.
  • Cuba - A microframework for web development.
  • Hobbit - A minimalistic microframework built on top of Rack.
  • Hanami - It aims to bring back Object Oriented Programming to web development, leveraging on a stable API, a minimal DSL, and plain objects.
  • Hyperstack - A Complete Isomorphic Ruby Framework using React and Opal.
  • Padrino - A full-stack ruby framework built upon Sinatra.
  • Pakyow - A framework for building modern web-apps in Ruby. It helps you build working software faster with a development process that remains friendly to both designers and developers.
  • Rack::App - Bare bone minimalistic framework for building rack apps.
  • Ramaze - A simple, light and modular open-source web application framework written in Ruby.
  • Roda - A routing tree web framework.
  • Ruby on Rails - A web-application framework that includes everything needed to create database-backed web applications according to the Model-View-Controller (MVC) pattern.
  • Scorched - Light-weight, inheritable and composable web framework, inspired by Sinatra.
  • Sinatra - Classy web-development dressed in a DSL.
  • Syro - Simple router for web applications.
  • Trailblazer - Trailblazer is a thin layer on top of Rails. It gently enforces encapsulation, an intuitive code structure and gives you an object-oriented architecture.

Web Servers

  • Agoo - A high performance HTTP server for Ruby that includes GraphQL and WebSocket support.
  • Falcon - A high-performance web server for Ruby, supporting HTTP/1, HTTP/2 and TLS.
  • Iodine - An non-blocking HTTP and Websocket web server optimized for Linux/BDS/macOS and Ruby MRI.
  • Phusion Passenger - Fast and robust web server and application server.
  • Puma - A modern, concurrent web server for Ruby.
  • Rack - A common Ruby web server interface. By itself, it's just a specification and utility library, but all Ruby web servers implement this interface.
  • Thin - Tiny, fast & funny HTTP server.
  • TorqueBox - A Ruby application server built on JBoss AS7 and JRuby.
  • Unicorn - Rack HTTP server for fast clients and Unix.

WebSocket

  • AnyCable โ€“ Polyglot replacement for Ruby WebSocket servers with Action Cable protocol.
  • CableReady - CableReady completes the ActionCable story and expands the utility of web sockets in your Rails app.
  • Faye - A set of tools for simple publish-subscribe messaging between web clients.
  • Firehose - Build realtime Ruby web applications.
  • Slanger - Open Pusher implementation compatible with Pusher libraries.
  • StimulusReflex - Build reactive applications with the Rails tooling you already know and love.

Awesome Clojure Awesome

Awesome macros usage

Answers why the lisp shines, killer features in action

  • core.async - transforms AST into CSP programs
  • cloroutine - suspends and continuations (coroutines)
  • missionary - a reactive dataflow programming toolkit
  • photon - realtime web, like Meteor, but for Clojure(Script)
  • metaclj - staged compilation
  • meander - transparent data transformation using datastructure pattermatching
  • proteus - introduce mutable variables (don't use, just learn how to map your mind into immutable world)

Advanced datastructures

  • specter: an elegant API for querying and transforming nested and recursive data
  • meander: transparent data transformation (defined as pattern-matching)
  • Persistent AVL trees: persistent sorted maps and sets with log-time rank queries
  • Finger Tree: double-list, counted-double-list, counted-sorted-set
  • Hitchhiker Tree: create fast, snapshottable, massively scalable databases
  • Hierarchical set
  • Ordered: ordered sets and maps
  • Lazy Map: whose values are only calculated when accessed
  • Duratom: persisted atoms
  • Durable Queue: queue persisted on disk
  • bifurcan: linear map/set/list (stores entries contiguously in memory), ;writtern in java, but test suite (read: usage examples) in clojure

Web Framework

Actually don't search rails/django here, but compose them by yourself * Compojure * Compojure-api * Luminus * Duct * Pedestal * Datsys * yada * Hoplon * Fulcro * Coast * Reitit * Tadam

Dependency injection

Managed lifecycle of stateful objects

Build Automation and Package management

Libraries for project build automation and package/dependency management.

Version Control Management

Code utilities for interacting with VCS software

Date and Time

Libraries for working with dates and times.

GUI

Audio

HTTP

Libraries for working with HTTP.

  • clj-http : Apache HttpComponents client wrapper
  • http-kit : Simple, high-performance event-driven HTTP client and server
  • ring : HTTP server abstraction
  • kvlt : Uniform, asychronous client interface for HTTP across JVM / Node / browsers
  • aleph : Async client/server based on Netty, with defaults for HTTP, TCP and UDP
  • hato : An HTTP client for Clojure, wrapping JDK 11's HttpClient

Database

Databases and database client libraries

Connection pools

Database connection pools

Structural Migrations

Keeps database and others in sync

Redis

JSON

Database Cli

ORM and SQL generation

DSL for SQL generation. * Walkable * Korma * Specql * stch-library/sql * sqlingvo * sqlium * honeysql * Toucan

Security

Authentication, authorization and other security related libraries.

RESTful API

Libraries for developing RESTful APIs.

GraphQL API

Libraries for developing GraphQL APIs.

Emails

HTML Manipulation

Libraries for working with HTML.

Data Validation

Libraries for validating data.

Type System

Optional type system for Clojure

Pattern Matching

Async processing

Monads

WebSocket

Testing

Webdriver automation

Code Analysis and Linter

Science and Data Analysis

Libraries, extended REPLs, and other tools for scientific and statistical data anylysis and visualization.

Machine Learning

Computer Vision

Text Processing

Parsing

Exceptions and Error Handling

Rule-based Programming

Editor Plugins

Documentation

Utilities and libraries for (non-LP) code and project documentation

Literate Programming

Archives and Compression

Miscellaneous

Debugging

CI

Project Management

Terminal UI

Graphviz

Guides

Video tutorials

YouTube

Websites

Twitter

Exercises

Awesome ClojureScript

A community driven list of ClojureScript books, frameworks, libraries and wrappers.


Resources

Books

  • ClojureScript Unraveled โ€“ An open source book about the ClojureScript language that covers all the language features, how to use the compiler and the tooling for building applications and libraries.
  • ClojureScript: Up and Running โ€“ An introduction to ClojureScript written by big guns of Clojure Stuart Sierra and Luke VanderHart.
  • Etudes for ClojureScript โ€“ A hands-on-book of 30 companion exercises or รฉtudes for introducing ClojureScript.
  • Learning ClojureScript โ€“ Master the art of agile single page web application development with ClojureScript.
  • Transforming Data with ClojureScript โ€“ A beginner's guide to ClojureScript with interactive examples and exercises, "focusing on the main task that programming doesโ€”transforming data".

Courses

  • ClojureScript Koans โ€“ A great way to start learning Clojure and ClojureScript on the web with interactive challanges.
  • Lambda Island โ€“ A full-stack web development course including front-end with ClojureScript, back-end with Clojure, language essentials, security, internet standards and system administration.
  • Learn Reagent โ€“ An introduction to ClojureScript with Reagent for developers. 1 hour free content is available. learn re-frame is its follow up.
  • Learning ClojureScript โ€“ A 2h 11m long introduction to Clojurescript by O'Really Online Learning. Also available on Udemy.

Videos

Awesome ClojureScript

Canvas

  • Monet โ€“ A small ClojureScript library to make it easier to work with canvas and visuals.
  • Quamolit โ€“ A tiny declarative animation library , inspired by React.

Client/Server Communication

  • cljs-ajax โ€“ A simple Ajax client for ClojureScript and Clojure.
  • Fetch โ€“ A ClojureScript library that makes client/server interaction painless.

Code Analysis

  • kibit โ€“ Static code analyzer to find patterns of code that could be rewritten with a more idiomatic function or macro.

Data Serialization

  • Cljson โ€“ Clojure/ClojureScript library for accelerated browser data deserialization.
  • Transit โ€“ A data interchange format and set of libraries for conveying values between applications written in different programming languages.

Data Visualization

  • C2 โ€“ It lets you declaratively create HTML and SVG markup based on data.

Database

  • Datascript โ€“ An immutable in-memory database and Datalog query engine in ClojureScript.
  • Jaki โ€“ A simple ClojureScript CouchDB client.
  • Konserve โ€“ A clojuresque key-value/document store protocol with core.async.
  • specql โ€“ Library for simple PostgreSQL queries with namespaced keys.

Development

  • Ambly โ€“ A ClojureScript REPL into iOS JavaScriptCore.
  • cljs-devtools โ€“ Better presentation of ClojureScript values in Chrome Devtools.
  • Devcards โ€“ Devcards aims to provide a visual REPL experience for ClojureScript.
  • Instaparse โ€“ It aims to be the simplest way to build parsers in ClojureScript.
  • lein-cljsbuild โ€“ A Leiningen plugin to make ClojureScript development easy.
  • lein-figwheel โ€“ Leiningen plugin that pushes ClojureScript code changes to the client.
  • Lumo โ€“ Fast, cross-platform, standalone ClojureScript environment.
  • Planck โ€“ A stand-alone ClojureScript REPL for macOS and Linux based on JavaScriptCore.
  • Ribol โ€“ Conditional restarts for clojure/clojurescript.
  • shadow-cljs โ€“ ClojureScript compilation made easy
  • Truss โ€“ An opinionated assertions API for Clojure/ClojureScript.

Document Object Model

  • cljs-binding โ€“ It binds html elements to ClojureScript functions.
  • Crate โ€“ A ClojureScript implementation of Hiccup.
  • Dominator โ€“ Virtual-Dom in ClojureScript.
  • Dommy โ€“ A no-nonsense ClojureScript templating and DOM manipulation library.
  • Enfocus โ€“ A DOM manipulation and templating library for ClojureScript inspired by Enlive.
  • Freactive โ€“ A high-performance, pure Clojurescript, declarative DOM library inspired by reagent, om, reflex and hiccup.
  • Hiccups โ€“ A ClojureScript port of the Hiccup.
  • Hickory โ€“ It parses HTML into Clojure data structures, so you can analyze, transform, and output back to HTML.
  • json-html โ€“ Provide JSON and get a DOM node with a human representation of that JSON.
  • Kioo โ€“ DOM manipulation and templating library for Facebook's React and Om in ClojureScript.
  • Respo โ€“ A responsive DOM library, inspired by React.
  • Sablono โ€“ Lisp/Hiccup style templating for Facebook's React in ClojureScript.

Documentation

  • codox โ€“ A tool for generating API documentation from Clojure or ClojureScript source code.

Graphics

  • geom โ€“ A 2D/3D geometry toolkit for Clojure/Clojurescript.
  • Quil โ€“ A processing and graphics programming library.

HTTP Handler

  • Castra โ€“ An HTTP remote procedure call handler for Clojure.

Internationalization

  • Tempura โ€“ A Clojure(Script) i18n library, succeeding Tower
  • Tower โ€“ A Clojure(Script) i18n & L10n library.

JavaScript Interoperability

  • CLJSJS โ€“ An easy way for Clojurescript developers to depend on Javascript libraries.
  • Jayq โ€“ A ClojureScript wrapper for jQuery.
  • Purnam โ€“ A ClojureScript library designed to provide better clojurescript/javascript interop, testing and documentation tools.
  • Pylon โ€“ A Javascript class system in 100% Clojurescript.

CSS tools

  • Garden โ€“ A library for rendering CSS in Clojure and ClojureScript.
  • stylefy โ€“ stylefy makes it possible to define UI component styles as Clojure data and attach them into components easily without writing CSS selectors

Miscellaneous

  • Automat โ€“ A Clojure(Script) library for defining and using finite-state automata, inspired by Ragel.
  • Bardo โ€“ A Clojure(Script) library for functional interpolation and transitions.
  • core.async โ€“ A Clojure(Script) library designed to provide facilities for async programming and communication.
  • Entanglement โ€“ It creates atoms from other atoms and links the data together.
  • inflections-clj โ€“ Rails-like inflection library for Clojure and ClojureScript.
  • Keybind โ€“ Library for handling key bindings (shortcuts) in browser.
  • markdown-clj โ€“ Markdown parser in Clojure/ClojureScript.
  • namespacefy โ€“ A simple Clojure(Script) library which aims to make it easy to keep map keys namespaced, no matter where your data comes from.
  • om-tools โ€“ It aims to provide higher-order abstractions and utilities frequently useful when building components with Om's API.
  • reforms โ€“ Beautiful Bootstrap 3 forms for Om and Reagent.
  • reagent-forms โ€“ Bootstrap form components for Reagent.
  • Sepal.clj โ€“ A library to generate Clojure code from a vector of strings and vectors with macro system.

React.js Interface

  • Brutha โ€“ A simple and functional ClojureScript interface to React.
  • cljsx โ€“ JSX for Clojure and ClojureScript, also works with Inferno, Nerv, Preact, Snabbdome and others.
  • hx โ€“ A simple, easy to use library for React development in ClojureScript.
  • Om โ€“ A powerful interface to React, makes use of its object oriented structures.
  • Quiescent โ€“ It favors functional style, fully stateless.
  • re-com โ€“ A ClojureScript library of reusable components for Reagent.
  • Reagent โ€“ Minimalistic, feature complete.
  • Rum โ€“ Decomplected, extensible, simple.

Reactive Programming

  • Javelin โ€“ A Functional Reactive Programming library for ClojureScript.
  • Manifold-cljs โ€“ A port of Manifold to ClojureScript.
  • Reagi โ€“ An FRP library for Clojure and ClojureScript, built on top of core.async.
  • rx-cljs โ€“ A ClojureScript wrapper for Reactive Extensions (Rx) for Javascript.
  • Yolk โ€“ A thin ClojureScript wrapper around bacon.js.

Routing

  • Bidi โ€“ A Clojure(script) data driven routing library.
  • Router โ€“ Bidirectional Ring router for Clojure/Script. REST oriented.
  • Secretary โ€“ A client-side router for ClojureScript.
  • Silk โ€“ An isomorphic routing library for Clojure & ClojureScript.

State Management

  • component โ€“ Managed lifecycle of stateful objects in Clojure(Script).
  • hodgepodge โ€“ A idiomatic ClojureScript interface to HTML5 Storage.
  • mount โ€“ A beautifl idiomatic state management library.
  • plato โ€“ Incrementally persists atom state to Local Storage in ClojureScript.
  • storage-atom โ€“ ClojureScript atoms backed by HTML5 web storage.
  • Tuck โ€“ A micro framework for building Reagent apps that have a clean separation of view code and event processing code.
  • Waltz โ€“ A ClojureScript library that helps manage state in client-side applications using non-deterministic finite state machines.

Testing

  • cljs.test โ€“ Integrated test framework for ClojureScript (merged from clojurescript.test)
  • Expectations โ€“ A minimalist's unit testing framework.
  • Speclj โ€“ A TDD/BDD framework for Clojure and ClojureScript.
  • test.check โ€“ A generative property-based testing tool inspired by QuickCheck.

Validation

  • Bouncer โ€“ A validation DSL for Clojure & Clojurescript applications.
  • form-validator-cljs โ€“ Validate forms with spec and fn.
  • Validateur โ€“ A Clojure validation library inspired by Ruby's ActiveModel.

Web Framework & Template

  • atw-om โ€“ A web application template with Clojure/Compojure, ClojureScript/Om & core.async.
  • Chestnut โ€“ An Application template for ClojureScript/Om with live reloading.
  • Clops โ€“ An opinionated, full stack and easy to use web framework.
  • descjop โ€“ A template for Web based desktop application with Electron.
  • electron-template โ€“ A template for creating web based desktop applications with Electron, ClojureScript and Reagent.
  • Fulcro โ€“ A library for development of single-page full-stack web applications in clj/cljs.
  • Hoplon โ€“ Write everything in Clojure and ClojureScript, clientside and serverside.
  • Keechma โ€“ Micro frontend framework for ClojureScript and Reagent.
  • Luminus โ€“ It aims to provide a robust, scalable, and easy to use platform.
  • Macchiato โ€“ It aims to provide an easy to use platform for Node.js.
  • Mies โ€“ A minimal ClojureScript project template.
  • Mr-Clean โ€“ A reagent compatible library without react.js dependency.
  • Precept โ€“ A declarative programming framework.
  • re-frame โ€“ A Reagent Framework For Writing SPAs, in Clojurescript.
  • Tenzing โ€“ A ClojureScript template with no backend that uses Boot.
  • WebFUI โ€“ Client-Side Web Framework for ClojureScript.

WebSockets

  • Chord โ€“ Designed to bridge the gap between the triad of CLJ/CLJS, web-sockets and core.async.
  • Sente โ€“ Clojure(Script) + core.async + WebSockets/Ajax.

Contributing

All contributions are welcome. Please read Contributing before opening a pull request. tl;dr - is for bullets, โ€“ is for seperators between the link and the description and lists should be alphabetically ordered.

License

CC0

Han Tuzun has dedicated the work to the public domain by waiving all of his rights to the work worldwide under copyright law, including all related and neighboring rights, to the extent allowed by law.

You can copy, modify, distribute and perform the work, even for commercial purposes, all without asking permission.

Awesome Elixir Build Status Awesome

A curated list of amazingly awesome Elixir libraries, resources, and shiny things inspired by awesome-php.

If you think a package should be added, please add a :+1: (:+1:) at the according issue or create a new one.

There are other sites with curated lists of elixir packages which you can have a look at.

Actors

Libraries and tools for working with actors and such.

  • bpe - Business Process Engine in Erlang. (Doc).
  • dflow - Pipelined flow processing engine.
  • exactor - Helpers for easier implementation of actors in Elixir.
  • exos - A Port Wrapper which forwards cast and call to a linked Port.
  • flowex - Railway Flow-Based Programming with Elixir GenStage.
  • mon_handler - A minimal GenServer that monitors a given GenEvent handler.
  • pool_ring - Create a pool based on a hash ring.
  • poolboy - A hunky Erlang worker pool factory.
  • pooler - An OTP Process Pool Application.
  • sbroker - Sojourn-time based active queue management library.
  • workex - Backpressure and flow control in EVM processes.

Algorithms and Data structures

Libraries and implementations of algorithms and data structures.

  • array - An Elixir wrapper library for Erlang's array.
  • aruspex - Aruspex is a configurable constraint solver, written purely in Elixir.
  • bimap - Pure Elixir implementation of bidirectional maps and multimaps.
  • bitmap - Pure Elixir implementation of bitmaps.
  • blocking_queue - BlockingQueue is a simple queue implemented as a GenServer. It has a fixed maximum length established when it is created.
  • bloomex - A pure Elixir implementation of Scalable Bloom Filters.
  • clope - Elixir implementation of CLOPE: A Fast and Effective Clustering Algorithm for Transactional Data.
  • combination - Elixir library to generate combinations and permutations from Enumerable collection.
  • count_buffer - Buffer a large set of counters and flush periodically.
  • cuckoo - A pure Elixir implementation of Cuckoo Filters.
  • cuid - Collision-resistant ids optimized for horizontal scaling and sequential lookup performance, written in Elixir.
  • data_morph - Create Elixir structs from data.
  • dataframe - Package providing functionality similar to Python's Pandas or R's data.frame().
  • datastructures - A collection of protocols, implementations and wrappers to work with data structures.
  • def_memo - A memoization macro (defmemo) for elixir using a genserver backing store.
  • dlist - Deque implementations in Elixir.
  • eastar - A* graph pathfinding in pure Elixir.
  • ecto_materialized_path - Tree structure, hierarchy and ancestry for the ecto models.
  • ecto_state_machine - Finite state machine pattern implemented on Elixir and adopted for Ecto.
  • elistrix - A latency / fault tolerance library to help isolate your applications from an uncertain world of slow or failed services.
  • emel - A simple and functional machine learning library written in elixir.
  • erlang-algorithms - Implementations of popular data structures and algorithms.
  • exconstructor - An Elixir library for generating struct constructors that handle external data with ease.
  • exfsm - Simple elixir library to define a static FSM.
  • exkad - A kademlia implementation in Elixir.
  • exmatrix - ExMatrix is a small library for working with matrices, originally developed for testing matrix multiplication in parallel.
  • exor_filter - Nif for xor_filters. 'Faster and Smaller Than Bloom and Cuckoo Filters'.
  • ezcryptex - Thin layer on top of Cryptex.
  • flow - Computational parallel flows on top of GenStage.
  • fnv - Pure Elixir implementation of Fowlerโ€“Nollโ€“Vo hash functions.
  • fsm - Finite state machine as a functional data structure.
  • fuse - This application implements a so-called circuit-breaker for Erlang.
  • gen_fsm - A generic finite state-machine - Elixir wrapper around OTP's gen_fsm.
  • graphmath - An Elixir library for performing 2D and 3D mathematics.
  • hash_ring_ex - A consistent hash-ring implementation for Elixir.
  • hypex - Fast Elixir implementation of HyperLogLog.
  • indifferent - Indifferent access for Elixir maps/list/tuples with custom key conversion.
  • isaac - Isaac is an elixir module for ISAAC: a fast cryptographic random number generator.
  • jumper - Jump consistent hash implementation in Elixir (without NIFs).
  • key2value - Erlang 2-way Set Associative Map.
  • lfsr - Elixir implementation of a binary Galois Linear Feedback Shift Register.
  • loom - A CRDT library with ฮด-CRDT support.
  • luhn - Luhn algorithm in Elixir.
  • lz4 - LZ4 bindings for Erlang for fast data compressing.
  • machinery - A state machine library for structs in general, it integrates with Phoenix out of the box.
  • mason - Coerce maps into structs. This is helpful e.g. when you interface a REST API and want to create a struct from the response.
  • matrex - A blazing fast matrix library for Elixir/Erlang with C implementation using CBLAS.
  • merkle_tree - A Merkle hash tree implementation in Elixir.
  • minmaxlist - Elixir library extending Enum.min_by/2, Enum.max_by/2 and Enum.min_max_by/2 to return a list of results instead of just one.
  • mmath - A library for performing math on number 'arrays' in binaries.
  • monad - Haskell inspired monads in Elixir stylish syntax.
  • monadex - Upgrade your Elixir pipelines with monads.
  • murmur - A pure Elixir implementation of the non-cryptographic hash Murmur3.
  • nary_tree - An Elixir implementation of generic n-ary tree data structure.
  • natural_sort - Elixir natural sort implementation for lists of strings.
  • navigation_tree - A navigation tree representation with helpers to generate HTML out of it.
  • parallel_stream - A parallel stream implementation for Elixir.
  • paratize - Elixir library providing some handy parallel processing (execution) facilities that support configuring number of workers and timeout.
  • parex - Parallel Execute (Parex) is an Elixir module for executing multiple (slow) processes in parallel.
  • qex - Wraps :queue, with improved API and Inspect, Collectable and Enumerable protocol implementations.
  • ratio - Adds Rational Numbers and allows them to be used in common arithmatic operations. Also supports conversion between Floats and Rational Numbers.
  • red_black_tree - Red-Black tree implementation in Elixir.
  • remodel - An Elixir presenter package used to transform map structures.
  • rendezvous - Implementation of the Rendezvous or Highest Random Weight (HRW) hashing algorithm in Elixir.
  • rock - Elixir implementation of ROCK: A Robust Clustering Algorithm for Categorical Attributes.
  • sfmt - SIMD-oriented Fast Mersenne Twister (SFMT) for Erlang.
  • simhash - Simhash implementation using Siphash and N-grams.
  • sleeplocks - BEAM friendly spinlocks for Elixir/Erlang.
  • sorted_set - Sorted Sets for Elixir.
  • spacesaving - stream count distinct element estimation using the "space saving" algorithm.
  • structurez - A playground for data structures in Elixir.
  • supermemo - An Elixir implementation of the Supermemo 2 algorithm.
  • tfidf - An Elixir implementation of term frequencyโ€“inverse document frequency.
  • the_fuzz - Fuzzy string-matching algorithm implementations.
  • tinymt - Tiny Mersenne Twister (TinyMT) for Erlang.
  • trie - Erlang Trie Implementation.
  • witchcraft - Common algebraic structures and functions for Elixir.
  • zipper_tree - Variadic arity tree with a zipper for Elixir.

Applications

Standalone applications. * CaptainFact - A collaborative, real-time video fact-checking platform. (Docs). * chat - A tiny text chat sample based on N2O. * Consolex - Consolex is a tool that allows you to attach a web based console to any mix project. * dragonfly_server - Elixir app to serve Dragonfly images. * exchat - A Slack-like app by Elixir, Phoenix & React (redux). * Exon - A โ€œmess managerโ€ developed in Elixir and provides a simple API to manage & document your stuff. (Docs). * ExShop - Digital goods shop & blog created using Phoenix framework. * Hydra - A multi-headed beast: API gateway, request cache, and data transformations. * Igthorn - Cryptocurrecy trading platform / trading bot with admin panel. * majremind - A self-maintained database of your updated server which tells you which one needs to be updated. * medex - Medical Examination - application for register health check callbacks and represent their state via HTTP. * medusa_server - A simple cowboy web server written in Elixir to stack images. (Docs). * Nvjorn - A multi-protocol network services monitor written in Elixir using Poolboy. * Phoenix Battleship - The Good Old game built with Elixir, Phoenix Framework, React and Redux. * Phoenix Toggl - Toggl tribute done in Elixir, Phoenix Framework, React and Redux. * Phoenix Trello - Trello tribute done in Elixir, Phoenix Framework, React and Redux. * poxa - Open Pusher implementation, compatible with Pusher libraries. * Queerlink - A simple yet efficient URL shortening service written in Elixir. * RemoteRetro - A real-time application for conducting Agile retrospectives at remoteretro.org written in Elixir/Phoenix/React. * Sprint Poker - Online estimation tool for Agile teams, written using Elixir Lang, Phoenix Framework and React. * Startup Job - An umbrella project to search startup jobs scraped from websites written in Elixir/Phoenix and React/Redux. * Tai - A composable, real time, cryptocurrency market data and trade execution toolkit. * tty2048 - Terminal-based 2048 game written in Elixir. * uai_shot - A multiplayer ship game built with Elixir, Phoenix Framework and Phaser. * workbench - From Idea to Execution - Manage your trading operation across a globally distributed cluster.

Artificial Intelligence

When your code becomes smarter than you.

  • Exnn - Evolutive Neural Networks framework ร  la G.Sher written in Elixir. (Docs).
  • Neat-Ex - An Elixir implementation of the NEAT algorithm. (Docs).
  • Runhyve - Runhyve is complete virtual machines manager for bhyve on FreeBSD. It's written in Elixir and uses Phoenix framework.
  • simple_bayes - A Simple Bayes / Naive Bayes implementation in Elixir.
  • Synapses - A lightweight library for neural networks.

Audio and Sounds

Libraries working with sounds and tones.

  • erlaudio - Erlang PortAudio bindings.
  • firmata - This package implements the Firmata protocol.
  • synthex - A signal synthesis library.

Authentication

Libraries for implementing authentication schemes.

  • aeacus - A simple configurable identity/password authentication module (Compatible with Ecto/Phoenix).
  • apache_passwd_md5 - Apache/APR Style Password Hashing.
  • aws_auth - AWS Signature Version 4 Signing Library for Elixir.
  • basic_auth - Elixir Plug to easily add HTTP basic authentication to an app.
  • coherence - Coherence is a full featured, configurable authentication system for Phoenix. (Docs).
  • doorman - Tools to make Elixir authentication simple and flexible.
  • elixir_auth_google - The simplest way to add Google OAuth authentication ("Sign in with Google") to your Elixir/Phoenix app.
  • github_oauth - A simple github oauth library.
  • goth - OAuth 2.0 library for server to server applications via Google Cloud APIs.
  • guardian - An authentication framework for use with Elixir applications. (Docs).
  • guardian_db - An extension to Guardian that tracks tokens in your application's database to prevent playback. (Docs).
  • guardian_redis - Redis repository for Guardian DB. (Docs).
  • htpasswd - Apache htpasswd file reader/writer in Elixir.
  • mojoauth - MojoAuth implementation in Elixir.
  • oauth2 - An OAuth 2.0 client library for Elixir.
  • oauth2_facebook - A Facebook OAuth2 Provider for Elixir.
  • oauth2_github - A GitHub OAuth2 Provider for Elixir.
  • oauth2cli - Simple OAuth2 client written for Elixir.
  • oauth2ex - Another OAuth 2.0 client library for Elixir.
  • oauther - An OAuth 1.0 implementation for Elixir.
  • passwordless_auth - Simple passwordless login or 2-factor / multi-factor authentication for Elixir.
  • phauxth - Authentication library for Phoenix 1.3 and other Plug-based apps.
  • phoenix_client_ssl - Client SSL Authentication Plugs for Phoenix and other Plug-based apps.
  • phx_gen_auth - An authentication system generator for Phoenix 1.5 applications.
  • pow - Robust, modular, and extendable user authentication system (Website - Doc).
  • samly - SAML SP SSO made easy (Doc).
  • sesamex - Another simple and flexible authentication solution in 5 minutes!.
  • sigaws - AWS Signature V4 signing and verification library (Doc).
  • ueberauth - An Elixir Authentication System for Plug-based Web Applications.
  • ueberauth_auth0 - An Ueberauth strategy for using Auth0 to authenticate your users.
  • ueberauth_cas - Central Authentication Service strategy for รœberauth.
  • ueberauth_facebook - Facebook OAuth2 Strategy for รœberauth.
  • ueberauth_foursquare - Foursquare OAuth2 Strategy for รœberauth.
  • ueberauth_github - A GitHub strategy for รœberauth.
  • ueberauth_google - A Google strategy for รœberauth.
  • ueberauth_identity - A simple username/password strategy for รœberauth.
  • ueberauth_line - LINE Strategy for รœberauth.
  • ueberauth_microsoft - A Microsoft strategy for รœberauth.
  • ueberauth_slack - A Slack strategy for รœberauth.
  • ueberauth_twitter - Twitter Strategy for รœberauth.
  • ueberauth_vk - vk.com Strategy for รœberauth.
  • ueberauth_weibo - Weibo OAuth2 Strategy for รœberauth.
  • zachaeus - An easy to use licensing system, based on asymmetric cryptography.

Authorization

Libraries for implementing Authorization handling.

  • authorize - Rule based authorization, for advanced authorization rules.
  • bodyguard - A flexible authorization library for Phoenix applications.
  • canada - A simple authorization library that provides a friendly interface using declarative permission rules.
  • canary - An authorization library for Elixir applications that restricts what resources the current user is allowed to access. (Docs).
  • speakeasy - Middleware based authentication and authorization for Absinthe GraphQL powered by Bodyguard.
  • terminator - Database based authorization (ACL), with custom DSL rules for requiring needed permissions. (Docs).

Behaviours and Interfaces

Definitions how something should behave, like Interfaces from OOP-World

  • connection - Connection behaviour for connection processes. The API is superset of the GenServer API.
  • gen_state_machine - Elixir wrapper for gen_statem.
  • stockastic - Simple Elixir wrapper for the Stockfighter API.

Benchmarking

Running code to see how long it takes, which is faster and/or if improvements have been made.

  • benchee - Easy and extensible benchmarking in Elixir!
  • benchfella - Benchmarking tool for Elixir.
  • bmark - A benchmarking tool for Elixir.

Bittorrent

Sharing is caring with Elixir

  • bento - An incredibly fast, correct, pure-Elixir Bencoding library.
  • tracker_request - Dealing with bittorrent tracker requests and responses.
  • wire - Encode and decode bittorrent peer wire protocol messages with Elixir.

BSON

Libraries and implementations working with BSON.

  • BSONMap - Elixir package that applies a function to each document in a BSON file and has a low memory consumption.
  • cyanide - An Elixir BSON encoding/decoding library.

Build Tools

Project build and automation tools.

  • active - Recompilation and Reloading on FileSystem changes.
  • coffee_rotor - Rotor plugin to compile CoffeeScript files.
  • dismake - Mix compiler running make.
  • etude - Parallel computation coordination compiler for Erlang/Elixir.
  • ExMake - A modern, scriptable, dependency-based build tool loosely based on Make principles.
  • Exscript - Elixir escript library.
  • mad - Small and Fast Rebar Replacement.
  • pc - A rebar3 port compiler.
  • reaxt - React template into your Elixir application for server rendering.
  • rebar3_abnfc_plugin - Rebar3 abnfc compiler.
  • rebar3_asn1_compiler - Plugin for compiling ASN.1 modules with Rebar3.
  • rebar3_auto - Rebar3 plugin to auto compile and reload on file change.
  • rebar3_diameter_compiler - Compile diameter .dia files in rebar3 projects.
  • rebar3_eqc - A rebar3 plugin to enable the execution of Erlang QuickCheck properties.
  • rebar3_exunit - A plugin to run Elixir ExUnit tests from rebar3 build tool.
  • rebar3_idl_compiler - This is a plugin for compiling Erlang IDL files using Rebar3.
  • rebar3_live - Rebar3 live plugin.
  • rebar3_neotoma_plugin - Rebar3 neotoma (Parser Expression Grammar) compiler.
  • rebar3_protobuffs - rebar3 protobuffs provider using protobuffs from Basho.
  • rebar3_run - Run a release with one simple command.
  • rebar3_yang_plugin - Rebar3 yang compiler.
  • reltool_util - Erlang reltool utility functionality application.
  • relx - A release assembler for Erlang.
  • remix - Automatic recompilation of Mix code on file change.
  • rotor - Super-simple build system for Elixir.
  • sass_elixir - A sass plugin for Elixir projects.

Caching

Libraries for caching data.

  • cachex - A powerful caching library for Elixir with a wide featureset.
  • con_cache - ConCache is an ETS based key/value storage.
  • elixir_locker - Locker is an Elixir wrapper for the locker Erlang library that provides some useful libraries that should make using locker a bit easier.
  • gen_spoxy - Caching made fun.
  • jc - In-memory, distributable cache with pub/sub, JSON-query and consistency support.
  • locker - Atomic distributed "check and set" for short-lived keys.
  • lru_cache - Simple LRU Cache, implemented with ets.
  • memoize - A memoization macro that easily cache function.
  • nebulex - A fast, flexible and extensible distributed and local caching library for Elixir.
  • stash - A straightforward, fast, and user-friendly key/value store.

Chatting

Chatting via IRC, Slack, HipChat and other systems using Elixir.

  • alice - A Slack bot framework for Elixir.
  • chatty - A basic IRC client that is most useful for writing a bot.
  • cog - Cog is an open chatops platform that gives you a secure, collaborative command line right in your chat window.
  • ExGram - a library to build Telegram Bots, you can use the low-level methods and models or use the really opinionated framework included. (Docs).
  • ExIrc - IRC client adapter for Elixir projects.
  • ExMustang - A simple, clueless slackbot and collection of responders.
  • Guri - Automate tasks using chat messages.
  • hedwig - XMPP Client/Bot Framework for Elixir.(Docs).
  • hipchat_elixir - HipChat client library for Elixir, based on httpc.
  • kaguya - A small, powerful, and modular IRC bot.
  • slacker - A bot library for the Slack chat service.
  • yocingo - Create your own Telegram Bot.

Cloud Infrastructure and Management

Applications, tools and libraries for your own cloud service.

  • aws - AWS clients for Elixir.
  • Bonny - Kubernetes Operator Development Framework.
  • Cloudi - CloudI is for back-end server processing tasks that require soft-realtime transaction.
  • discovery - An OTP application for auto-discovering services with Consul.
  • erlcloud - Cloud Computing library for Erlang (Amazon EC2, S3, SQS, SimpleDB, Mechanical Turk, ELB). (Docs).
  • ex_aws - AWS client, supporting Dynamo, Kinesis, Lambda, SQS, and S3.
  • ex_riak_cs - Riak CS API client.
  • fleet_api - A simple wrapper for the Fleet (CoreOS) API. Can be used with etcd tokens or via direct node URLs.
  • Gandi - Gandi Wrapper for Leaseweb infrastructure.
  • IElixir - Jupyter's kernel for Elixir programming language.
  • k8s - Kubernetes Elixir client with CRD support, multi-cluster support, pluggable auth, and configurable middleware.
  • Kazan - Kubernetes client for Elixir, generated from the k8s open API specifications.
  • Kubex - Kubernetes client and integration for Elixir, written in pure Elixir.
  • Leaseweb - Elixir Wrapper for Leaseweb infrastructure.
  • libcluster - Automatic cluster formation/healing for Elixir applications.(Docs).
  • nodefinder - Strategies for automatic node discovery in Erlang.
  • nomad - Create cloud portable Elixir and Phoenix apps. Write once, use everywhere!
  • sidejob - Parallel worker and capacity limiting library for Erlang.
  • sidetask - SideTask is an alternative to Task.Supervisor using Basho's sidejob library with parallelism and capacity limiting.
  • skycluster - Automatic Erlang cluster formation, messaging and management for Elixir/Erlang applications. Integrated with Kubernetes.

Code Analysis

Libraries and tools for code base analysis, parsing, and manipulation.

  • belvedere - An example of CircleCI integration with Elixir.
  • coverex - Coverage Reports for Elixir.
  • credo - A static code analysis tool with a focus on code consistency and teaching Elixir. (Docs).
  • DepViz - A visual tool to help developers understand Elixir recompilation in their projects. (Code).
  • dialyxir - Mix tasks to simplify use of Dialyzer in Elixir projects.(Docs).
  • dogma - A code style linter for Elixir, powered by shame.(Docs).
  • excoveralls - Coverage report tool for Elixir with coveralls.io integration.
  • exprof - A simple code profiler for Elixir, using eprof.

Command Line Applications

Anything helpful for building CLI applications.

  • anubis - Command-Line application framework for Elixir.
  • ex_cli - User friendly CLI apps for Elixir.
  • ex_prompt - Helper package to add interactivity to your command line applications as easy as possible.
  • firex - Firex is a library for automatically generating command line interfaces (CLIs) from an elixir module.
  • getopt - Command-line options parser for Erlang.
  • loki - Library for creating interactive command-line application.
  • optimus - Command-line option parser for Elixir inspired by clap.rs.
  • phoenix-cli - Command-line interface for Phoenix Framework like Rails commands.
  • progress_bar - Command-line progress bars and spinners.
  • ratatouille - A TUI (terminal UI) kit for Elixir.
  • scribe - Pretty-print tables of Elixir structs and maps. Inspired by hirb.
  • table_rex - Generate configurable ASCII style tables for display.
  • tabula - Pretty print list of Ecto query results / maps in ascii tables (GitHub Markdown/OrgMode).

Configuration

Libraries and tools working with configurations

  • confex - Helper module that provides a nice way to read environment configuration at runtime.
  • configparser_ex - A simple Elixir parser for the same kind of files that Python's configparser library handles.
  • conform - Easy release configuration for Elixir apps.
  • dotenv - A port of dotenv to Elixir.
  • ex_conf - Simple Elixir Configuration Management.
  • figaro - Simple Elixir project configuration.
  • figaro_elixir - Environmental variables manager for Elixir.
  • hush - Read and inject configuration at runtime, and in release mode with support for multiple providers.
  • hush_aws_secrets_manager - AWS Secrets Manager provider for hush.
  • hush_gcp_secret_manager - Google Secret Manager provider for hush.
  • sweetconfig - Read YAML configuration files from any point at your app.

Cryptography

Encrypting and decrypting data

  • aescmac - AES CMAC (RFC 4493) in Elixir.
  • cipher - Elixir crypto library to encrypt/decrypt arbitrary binaries.
  • cloak - Cloak makes it easy to use encryption with Ecto.(Docs).
  • comeonin - Password hashing (argon2, bcrypt, pbkdf2_sha512) library for Elixir.(https://hexdocs.pm/comeonin/api-reference.html).
  • crypto_rsassa_pss - RSASSA-PSS Public Key Cryptographic Signature Algorithm for Erlang.
  • elixir_tea - TEA implementation in Elixir.
  • ex_bcrypt - Elixir wrapper for the OpenBSD bcrypt password hashing algorithm.
  • ex_crypto - Elixir wrapper for Erlang crypto and public_key modules. Provides sensible defaults for many crypto functions to make them easier to use.(Docs).
  • exgpg - Use gpg from Elixir.
  • ntru_elixir - Elixir wrapper for libntru. A post quantum cryptography system.
  • one_time_pass_ecto - One-time password library for Elixir.
  • pot - Erlang library for generating one time passwords compatible with Google Authenticator.
  • rsa - public_key cryptography wrapper for Elixir.
  • rsa_ex - Library for working with RSA keys.
  • siphash-elixir - Elixir implementation of the SipHash hash family.
  • tea_crypto - Tiny Encryption Algorithm implementation.

CSV

Libraries and implementations working with CSV.

  • cesso - CSV handling library for Elixir.
  • csv - CSV Decoding and Encoding for Elixir.
  • csv2sql - A fast and fully automated CSV to database importer.
  • csvlixir - A CSV reading/writing application for Elixir.
  • ecsv - Fast libcsv-based stream parser for Elixir.
  • ex_csv - CSV for Elixir.
  • nimble_csv - A simple and fast CSV parsing and dumping library for Elixir.

Date and Time

Libraries for working with dates and times.

  • block_timer - Macros to use :timer.apply_after and :timer.apply_interval with a block.
  • calendar - Calendar is a date and time library for Elixir.
  • calendarific - Calendarific is a wrapper for the holiday API Calendarific.
  • calixir - Calixir is a port of the Lisp calendar software calendrica-4.0 to Elixir.
  • chronos - An Elixir date/time library.
  • cocktail - Elixir date recurrence library based on iCalendar events.
  • cronex - Cron like system you can mount in your supervision tree.
  • crontab - A Cron Expressions Parser, Composer & Date Candidate Finder.
  • emojiclock - An Elixir module for giving you an emoji clock for a given hour.
  • ex_ical - ICalendar parser.
  • filtrex - A library for performing and validating complex SQL-like filters from a client (e.g. smart filters).
  • good_times - Expressive and easy to use datetime functions.
  • jalaali - Jalaali calendar implementation for Elixir.
  • milliseconds - Simple library to work with milliseconds in Elixir.
  • moment - Parse, validate, manipulate, and display dates in Elixir.
  • open_hours - Time calculations using business hours.
  • quantum - Cron-like job scheduler for Elixir applications.
  • repeatex - Natural language parsing for repeating dates.
  • tiktak - Fast and lightweight web scheduler written in Elixir.
  • timelier - A cron-style scheduler for Elixir.
  • timex - Easy to use Date and Time modules for Elixir.
  • timex_interval - A date/time interval library for Elixir projects, based on Timex.
  • tzdata - The timezone database in Elixir.

Debugging

Libraries and tools for debugging code and applications.

  • beaker - Statistics and Metrics library for Elixir.
  • booter - Boot an Elixir application, step by step.
  • dbg - Distributed tracing for Elixir.
  • eflame - Flame Graph profiler for Erlang.
  • eh - A tool to look up Elixir documentation from the command line.
  • eper - Erlang performance and debugging tools.
  • ether - Ether provides functionality to hook Elixir into the Erlang debugger.
  • ex_debug_toolbar - A toolbar for Phoenix projects to interactively debug code and display useful information about requests: logs, timelines, database queries etc.
  • exrun - Distributed tracing for Elixir with rate limiting and simple macro-based interface.
  • extrace - Elixir wrapper for Recon Trace.
  • git_hooks - Add git hooks to Elixir projects.
  • observer_cli - Visualize Elixir & Erlang nodes on the command line, it aims to helpe developers debug production systems.
  • quaff - The Debug module provides a simple helper interface for running Elixir code in the erlang graphical debugger.
  • rexbug - An Elixir wrapper for the redbug production-friendly Erlang tracing debugger.
  • visualixir - A process visualizer for remote BEAM nodes.

Deployment

Installing and running your code automatically on other machines.

  • akd - Capistrano like, Configurable, and easy to set up Elixir Deployment Automation Framework.
  • ansible-elixir-stack - 1-command setup & deploys to servers, with first-class support for Phoenix apps.
  • bootleg - Simple deployment and server automation for Elixir.
  • bottler - Bottler is a collection of tools that aims to help you generate releases, ship them to your servers, install them there, and get them live on production.
  • edeliver - Deployment for Elixir and Erlang.
  • elixir-on-docker - A project template to get started developing clustered Elixir applications for cloud environments.
  • exdm - Deploy Elixir applications via mix tasks.
  • exreleasy - Dead simple and Mix friendly tool for releasing Elixir applications.
  • gatling - Collection of mix tasks to automatically create a exrm release from git and launch/upgrade it on your server.
  • Gigalixir - A fully-featured PaaS designed for Elixir. Supports clustering, hot upgrades, and remote console/observer. Free to try without a credit card.
  • heroku-buildpack-elixir - Heroku buildpack to deploy Elixir apps to Heroku.

Documentation

Libraries and tools for creating documentation.

  • blue_bird - BlueBird is a library written in the Elixir programming language for the Phoenix framework. It lets you generate API documentation in the API Blueprint format from annotations in controllers and automated tests.
  • bureaucrat - Generate Phoenix API documentation from tests.
  • ex_doc - ExDoc is a tool to generate documentation for your Elixir projects.
  • ex_doc_dash - Formatter for ExDoc to generate docset documentation for use in Dash.app.
  • hexdocset - Convert hex doc to Dash.app's docset format.
  • inch-ci - Documentation badges for Ruby & Elixir.
  • maru_swagger - Add swagger compliant documentation to your maru API.
  • phoenix_api_docs - Generate API Blueprint documentation from controllers and tests in the Phoenix framework.
  • phoenix_swagger - Provides swagger integration to the Phoenix framework.
  • xcribe - Generate API documentation from tests using Swagger (OpenAPI) or API Blueprint specification.

Domain-specific language

Specialized computer languages for a particular application domain.

ECMAScript

Implementations working with JavaScript, JScript or ActionScript.

  • elixirscript - A transcompiler from Elixir to Javascript.
  • estree - A implementation of the SpiderMonkey Parser API in Elixir.
  • phoenix_gon - Allow you to pass Phoenix environment or controller variables to JavaScript without problems.
  • phoenix_routes_js - Phoenix routes helpers in JavaScript code and browser console.

Email

Working with Email and stuff.

  • bamboo - Composable, testable and adapter based email library. Out of the box support for rendering with Phoenix and a plug for previewing sent emails in dev.
  • burnex - Burner email (temporary address) detector.
  • echo - A meta-notification system; Echo checks notification preferences & dispatches notifications.
  • ex_postmark - Postmark adapter for sending template emails in Elixir.
  • gen_smtp - A generic Erlang SMTP server and client that can be extended via callback modules.
  • gmail - A simple Gmail REST API client for Elixir.
  • mail - An RFC2822 implementation in Elixir, built for composability.
  • mailer - A simple SMTP mailer.
  • mailibex - Library containing Email-related implementations in Elixir: dkim, spf, dmark, mimemail, smtp.
  • mailman - Mailman provides a clean way of defining mailers in your Elixir applications.
  • pop3mail - Pop3 client to download email (including attachments) from the inbox via the commandline or Elixir API.
  • ravenx - Notification dispatch library for Elixir applications.
  • smoothie - Smoothie inline styles of your email templates, and generates a plain text version from the HTML.
  • swoosh - Compose, deliver and test your Emails (with attachments!) easily in Elixir with adapters for SMTP, Sendgrid, Mandrill, Mailgun, Postmark and lots others, plus Phoenix integration with mailbox preview.

Embedded Systems

Embedded systems development.

  • nerves - A framework for writing embedded software in Elixir.

Encoding and Compression

Transforming data in different formats or compressing it.

  • ex_rlp - Elixir implementation of Ethereum's RLP (Recursive Length Prefix) encoding.
  • huffman - Huffman encoding and decoding in Elixir.

Errors and Exception Handling

Working with errors and exceptions.

  • exceptional - Helpers for happy-path programming & exception handling.
  • happy - Happy path programming, alternative to elixir with form.
  • OK - Elegant error handling with result monads, featuring a simple & powerful with construct and a happy path pipe operator.
  • sentry-elixir - The Official Elixir client for Sentry.

Eventhandling

Sending/Emitting and receiving/handling Events in Elixir.

  • cizen - Build highly concurrent, monitorable, and extensible applications with a collection of sagas.
  • event_bus - Simple event bus implementation with topic filtering and built-in event store and event watcher.
  • goldrush - Small, Fast event processing and monitoring for Erlang/OTP applications.
  • reaxive - Reaxive is a reactive event handling library, inspired by Elm and Reactive Extensions.
  • wait_for_it - Provides convenient and easy-to-use facilities for synchronizing concurrent activities.

Examples and funny stuff

Example code and stuff too funny or curious not to mention.

  • butler_cage - A Butler plugin for showing silly photos of Nick Cage.
  • butler_tableflip - Flipping tables with butler.
  • changelog.com - CMS that runs changelog.com built with Phoenix 1.4.
  • coderplanets.com - GraphQL api for coderplanets.com built with Phoenix 1.4 and Absinthe.
  • dice - Roll the dice, in Elixir.
  • elixir_koans - Elixir koans is a fun, easy way to get started with the elixir programming language.
  • ex_chain - Simple Markov Chain that generates funny tweets, built using Elixir.
  • ex_iss - This package is for interfacing with the Open Notify API to information such as the ISS's current location, crew, and when it will pass over a location.
  • feedx - Add social feed functionality to current applications. Exemplify OTP umbrella app, with 3 apps. Thin phoenix controllers.
  • harakiri - Help applications kill themselves.
  • hello_phoenix - Application template for SPAs with Phoenix, React and Redux.
  • hexpm - Source code for the hex package manager site built with Phoenix 1.3.
  • kaisuu - Watch Japan's Kanji Usage on Twitter in Realtime.
  • koans - Learn Elixir by using elixir-koans.
  • lolcat - This is the clone of busyloop/lolcat. But it does not support animation and some features of the original.
  • magnetissimo - Web application that indexes all popular torrent sites, and saves it to the local database.
  • oop - OOP in Elixir!
  • phoenix-chat-example - A step-by-step example/tutorial for building a Chat app in Phoenix for complete beginners. Covers testing, docs and deployement. Phoenix 1.5.3.
  • phoenix-ecto-encryption-example - A comprehensive example/tutorial showing people how to use Ecto Types to transparently encrypt/decrypt data in a Phoenix 1.4 app.
  • phoenix-flux-react - An experiment with Phoenix Channels, GenEvents, React and Flux.
  • phoenix-liveview-counter-tutorial - complete beginners step-by-step tutorial building a real time counter in Phoenix 1.5.3 and LiveView 0.14.1.
  • phoenix-todo-list-tutorial - A complete beginners step-by-step tutorial for building a Todo List from scratch in Phoenix 1.5.3.
  • portal - A shooting fault-tolerant doors for distributed portal data-transfer application in Elixir.
  • real world example app - Elixir / Phoenix implementation of RealWorld.io backend specs - a Medium clone.
  • rollex - Elixir library using a Pratt Parser algorithm to calculate dice rolls.
  • rubix - A very simple (and barely-functioning) Ruby runner for Elixir.
  • stranger - Elixir Phoenix app to chat anonymously with a randomly chosen stranger.
  • tilex - Source code for Hashrocket's TIL website built with Phoenix 1.3.
  • weather - A command line weather app built using Elixir.

Feature Flags and Toggles

Libraries to manage feature toggles (AKA feature flags): ON/OFF values that can be toggled at runtime through some interface

  • ConfigCat - Elixir SDK for ConfigCat hosted feature flag service.
  • flippant - Feature flipping for the Elixir world.
  • fun_with_flags - A feature toggle library using Redis or Ecto for persistence, an ETS cache for speed and PubSub for distributed cache busting. Comes with a management web UI for Phoenix and Plug.
  • molasses - A feature toggle library using redis or SQL (using Ecto) as a backing service.

Feeds

Libraries working with feeds like RSS or ATOM.

  • atomex - ATOM feed builder with a focus on standards compliance, security and extensibility.
  • feeder - Parse RSS and Atom feeds.
  • feeder_ex - RSS feed parser. Simple wrapper for feeder.
  • feedme - RSS/Atom parser built on erlang's xmerl xml parser.

Files and Directories

Libraries and implementations for working with files and directories.

  • Belt - Extensible file upload library with support for SFTP, S3 and Filesystem storage.
  • cassius - Monitor Linux file system events.
  • dir_walker - DirWalker lazily traverses one or more directory trees, depth first, returning successive file names.
  • elixgrep - A framework for doing Hadoop style Map/Reduce operations on collections of files.
  • ex_guard - ExGuard is a mix command to handle events on file system modifications.
  • ex_minimatch - Globbing paths without walking the tree!.
  • exfile - File upload handling, persistence, and processing in Elixir and Plug.
  • exfswatch - A file change watcher wrapper based on fs.
  • eye_drops - Configurable mix task to watch file changes and run the corresponding command.
  • format_parser.ex - Elixir library to figure out the type and the format of a file.
  • fs - Erlang FileSystem Listener.
  • fwatch - A callback-based file watcher based on fs.
  • librex - Elixir library to convert office documents to other formats using LibreOffice.
  • Radpath - Path library for Elixir, inspired by Python's Enhpath.
  • sentix - A cross-platform file watcher for Elixir based on fswatch.
  • sizeable - An Elixir library to make file sizes human-readable.
  • waffle - Flexible file upload and attachment library for Elixir.
  • zarex - Filename sanitization for Elixir.

Formulars

Handling web formulars and similar stuff.

  • forms - Erlang Business Documents Generator.

Framework Components

Standalone component from web development frameworks.

  • absinthe_plug - Plug support for Absinthe.
  • access pass - Authentication framework that can be used with or outside of phoenix. Similar to Addict but geared towards API usage.(Docs).
  • addict - User authentication for Phoenix Framework.
  • airbrake_plug - Report errors in your Plug stack or whatever to Airbrake.
  • better_params - Elixir Plug for cleaner request params in web apps.
  • blaguth - Basic Access Authentication in Plug applications.
  • commanded - Command handling middleware for Command Query Responsibility Segregation (CQRS) applications.
  • cors_plug - An Elixir plug that adds CORS headers to requests and responds to preflight requests (OPTIONS).
  • corsica - Elixir library for dealing with CORS requests.
  • crudex - CRUD utilities for Phoenix and Ecto.
  • dayron - A repository similar to Ecto.Repo that works with REST API requests instead of a database.
  • ex_admin - ExAdmin is an auto administration package for Elixir and the Phoenix Framework.
  • exdjango - A few elixir libraries for working with django.
  • exrecaptcha - Simple reCaptcha display/verify code for Elixir applications.
  • filterable - Simple query params filtering for Phoenix framework inspired by Rails has_scope.
  • graphql_parser - An Elixir binding for libgraphqlparser.
  • http_router - HTTP Router with various macros to assist in developing your application and organizing your code.
  • kerosene - Pagination for Ecto and Phoenix.
  • mellon - An authentication module for Plug applications.
  • multiverse - Plug that allows to add version compatibility layers via API Request/Response Gateways.
  • params - Use Ecto to enforce/validate parameters structure, akin to Rails' strong parameters.
  • passport - Passport provides authentication for Phoenix applications.
  • phoenix_ecto - Phoenix and Ecto integration.
  • phoenix_haml - Phoenix Template Engine for Haml.
  • phoenix_html - Phoenix.HTML functions for working with HTML strings and templates.
  • phoenix_html_sanitizer - HTML Sanitizer integration for Phoenix.
  • phoenix_html_simplified_helpers - Some helpers for phoenix html (truncate, time_ago_in_words, number_with_delimiter).
  • phoenix_linguist - A project that integrates Phoenix with Linguist, providing a plug and view helpers. It looks abandoned: its last commit was on 2015 and its CI runs Elixir 1.0.3.
  • phoenix_live_reload - Provides live-reload functionality for Phoenix.
  • phoenix_meta_tags - Generate meta tags for a website.
  • phoenix_pubsub_postgres - Postgresql PubSub adapter for Phoenix apps.
  • phoenix_pubsub_rabbitmq - RabbitMQ adapter for Phoenix's PubSub layer.
  • phoenix_pubsub_redis - The Redis PubSub adapter for the Phoenix framework.
  • phoenix_pubsub_vernemq - The VerneMQ MQTT pubsub adapter for the Phoenix framework.
  • phoenix_slime - Slim template support for Phoenix.
  • phoenix_token_auth - Token authentication solution for Phoenix. Useful for APIs or single page apps.
  • phx_component_helpers - Extensible live_components, without boilerplate.
  • plug - A specification and conveniences for composable modules in between web applications.
  • plug_accesslog - Plug for writing access logs.
  • plug_and_play - Set up a Plug application with less boilerplate.
  • plug_auth - Collection of authentication-related plugs.
  • plug_canonical_host - Plug to ensure all requests are served from a single canonical host.
  • plug_checkup - Plug for adding simple health checks to your app.
  • plug_cloudflare - Inspired by mod_cloudflare, this Elixir plug parses Cloudflares CF-Connecting-IP HTTP request header into Plug.Conn's remote_ip field.
  • plug_forward_peer - Very simple plug which reads X-Forwarded-For or Forwarded header according to RFC7239 and fill conn.remote_ip with the root client ip.
  • plug_fprof - A Plug that adds fprof tracing to requests, to allow for easy profiling.
  • plug_graphql - Phoenix Plug integration for GraphQL Elixir.
  • plug_heartbeat - A plug for responding to heartbeat requests.
  • plug_jwt - Plug for JWT authentication.
  • plug_password - Plug for adding simple cookie-based authentication.
  • plug_rails_cookie_session_store - Rails compatible Plug session store.
  • plug_redirect_https - Plug to redirect http requests to https requests behind a reverse proxy.
  • plug_require_header - Require and extract HTTP headers and handle missing ones.
  • plug_response_header - easy manipulation of HTTP response headers.
  • plug_ribbon - Injects a ribbon to your web application in the development environment.
  • plug_secex - Plug that adds various HTTP Headers to make Phoenix/Elixir app more secure.
  • plug_session_memcached - A very simple memcached session store for Elixir's plug.
  • plug_sigaws - AWS Signature V4 authentication protection for Phoenix/Plug Routes (Docs).
  • plug_statsd - A plug for automatically sending timing and count metrics to statsd.
  • plugs - Collection of Plug middleware for web applications.
  • plugsnag - Bugsnag notifier for Elixir's plug.
  • raygun - Capture bugs and send them to Raygun.
  • react_phoenix - Render React.js components in Phoenix views focusing on easy installation and Brunch compatibility.
  • recaptcha - A simple reCaptcha 2 library for Elixir applications.
  • resin - Resin is a plug that will add a configurable delay to every request that's passing through it, unless run in production.
  • revision_plate_ex - Plug application and middleware that serves endpoint returns application's REVISION.
  • rummage_ecto - A configurable framework to search, sort and paginate Ecto Queries.
  • rummage_phoenix - A support framework for searching, sorting and paginating models in Phoenix, with HTML support.
  • scaffold - A mix task for creating new projects based on templates fetched from a Git-repo.
  • scrivener - Paginate your Ecto queries.
  • scrivener_headers - Helpers for paginating API responses with Scrivener and HTTP headers.
  • scrivener_html - Helpers built to work with Scrivener's page struct to easily build HTML output for various CSS frameworks.
  • sentinel - An authentication framework for Phoenix extending guardian with routing and other basic functionality.
  • surface - A server-side rendering component library for Phoenix.
  • torch - Torch is a rapid admin generator for Phoenix apps. It uses generators rather than DSLs to ensure that the code remains maintainable.
  • trailing_format_plug - An Elixir plug to support legacy APIs that use a rails-like trailing format.
  • turn_the_page - Fast, simple and lightweight pagination system for your Elixir application.
  • webassembly - Web DSL for Elixir.
  • weebo - An XML-RPC parser/formatter for Elixir, with full support for datatype mapping.

Frameworks

Web development frameworks.

  • exelli - An Elli Elixir wrapper with some sugar syntax goodies.
  • kitto - A framework for interactive dashboards.
  • n2o - Distributed Application Server.
  • nitro - Nitrogen-compatible Web Framework.
  • phoenix - Elixir Web Framework targeting full-featured, fault tolerant applications with realtime functionality.
  • placid - A REST toolkit for building highly-scalable and fault-tolerant HTTP APIs with Elixir.
  • rackla - API Gateways in Elixir.
  • relax - Simple Elixir implementation of a jsonapi.org server.
  • rest - Micro-REST framework with typed JSON.
  • RIG - Create low-latency, interactive user experiences for stateless microservices.
  • sugar - Modular web framework for Elixir.
  • trot - An Elixir web micro-framework.

Games

Libraries for and implementations of games.

  • Binbo - A chess representation written in Erlang using Bitboards, ready for use on game servers.
  • entice - A distributed Entity-Component-System framework, providing its own example MMORPG server.
  • mines - A minesweeper clone in the terminal.
  • vim_snake - A classical multiplayer snake game with Vim-style keybinding built with Phoenix framework.

Geolocation

Libraries for geocoding addresses and working with latitudes and longitudes.

  • distance_api_matrix - Provide distance and heading calculations via Google distance matrix api.
  • geo - A collection of GIS functions for Elixir.
  • geocalc - Calculate distance, bearing and more between latitude/longitude points.
  • geocoder - A simple, efficient geocoder/reverse geocoder with a built-in cache.
  • geohash - Geohash encode/decode library.
  • geohash_nif - Drop in replacement for Geohash encode/decode library implemented as a NIF.
  • geohax - Geohash encoding and decoding with neighbors finder.
  • geoip - Find geolocation for a given IP, hostname or Plug.Conn.
  • geolix - MaxMind GeoIP2 database reader/decoder.
  • geonames - A simple Elixir wrapper around the GeoNames API.
  • ip2location - An Elixir library for IP2Location database.
  • ipgeobase - Find Russian and Ukraine city by IP address and find country for other country.
  • proj - Elixir coordinate conversion library using OSGeo's PROJ.4.
  • segseg - Segment-segment intersection classifier and calculator.
  • topo - A Geometry library for Elixir that calculates spatial relationships between two geometries.
  • wheretz - Elixir version of Ruby gem for lookup of timezone by georgraphic coordinates.

GUI

Libraries for writing Graphical User Interfaces.

  • scenic - Portable 2D UI framework.

Hardware

Hardware related things like I/O interfaces and such.

  • elixir_ale - Elixir access to hardware I/O interfaces such as GPIO, I2C, and SPI.
  • nerves - Framework for building firmware for platforms like Raspberry Pi and BeagleBone Black.

HTML

Libraries and implementations working with HTML (for xml tools please go to the XML section).

  • exquery - A library for parsing HTML and querying elements within.
  • floki - A simple HTML parser that enables searching using CSS like selectors.
  • html_sanitize_ex - HTML sanitizer for Elixir.
  • modest_ex - A library to do pipeable transformations on html strings with CSS selectors, e.g. find(), prepend(), append(), replace() etc.
  • myhtmlex - Elixir/Erlang bindings for lexborisov's myhtml.
  • readability - Readability is for extracting and curating articles.
  • texas - Texas is a powerful abstraction over updating your clients using server-side rendering and server-side Virtual DOM diff/patching.
  • tidy_ex - Elixir binding to the granddaddy of HTML tools http://www.html-tidy.org.

HTTP

Libraries for working with HTTP and scraping websites.

  • Ace - HTTP web server and client, supports http1 and http2.
  • bolt - Simple and fast http proxy.
  • cauldron - An HTTP/SPDY server as a library.
  • Crawler - A high performance web crawler in Elixir.
  • Crawly - high-level web crawling & scraping framework for Elixir.
  • elli - Elli is a webserver you can run inside your Erlang application to expose an HTTP API.
  • etag_plug - A simple to use shallow ETag plug.
  • explode - An easy utility for responding with standard HTTP/JSON error payloads in Plug- and Phoenix-based applications.
  • exvcr - HTTP request/response recording library for Elixir, inspired by VCR.
  • finch - An HTTP client with a focus on performance, built on top of Mint and NimblePool.
  • fuzzyurl - An Elixir library for parsing, constructing, and wildcard-matching URLs. Also available for Ruby and JavaScript.
  • gun - HTTP/1.1, HTTP/2 and Websocket client for Erlang/OTP.
  • hackney - Simple HTTP client written in Erlang.
  • http - HTTP server for Elixir.
  • http_digex - A module to create basic digest HTTP auth header.
  • http_proxy - Multi port HTTP Proxy.
  • httpoison - Yet Another HTTP client for Elixir powered by hackney.
  • httpotion - Fancy HTTP client for Elixir, based on ibrowse.
  • ivar - A lightweight wrapper around HTTPoison that provides a fluent and composable way to build http requests.
  • lhttpc - A lightweight HTTP/1.1 client implemented in Erlang.
  • mint - Functional HTTP client for Elixir with support for HTTP/1 and HTTP/2.
  • mnemonic_slugs - A memorable, mnemonic slug generator in Elixir.
  • mochiweb - MochiWeb is an Erlang library for building lightweight HTTP servers.
  • neuron - A GraphQL client for Elixir.
  • plug_wait1 - Plug adapter for the wait1 protocol.
  • raxx - Interface for HTTP webservers, frameworks and clients.
  • river - An HTTP/2 client that is lightweight and lightning fast.
  • scrape - Scrape any website, article or RSS/Atom Feed with ease.
  • sparql_client - A SPARQL protocol client for Elixir.
  • spell - Spell is a Web Application Messaging Protocol (WAMP) client implementation in Elixir.
  • tesla - HTTP client library, with support for middleware and multiple adapters.
  • Tube - Pure Elixir WebSocket client library.
  • uri_query - URI encode nested GET parameters and array values in Elixir.
  • uri_template - RFC6570 compliant URI template processor for Elixir.
  • web_socket - An exploration into a stand-alone library for Plug applications to easily adopt WebSockets.
  • webdriver - This is an implementation of the WebDriver protocol client. It currently supports PhantomJS, FireFox, ChromeDriver and remote webdriver servers (e.g. Selenium).
  • yuri - Simple struct for representing URIs.

Images

Libraries for working with and manipulating images.

  • alchemic_avatar - Elixir library for generating letter avatar from string.
  • artifact - File upload and on-the-fly processing for Elixir.
  • bump - A BMP file writer in pure Elixir.
  • chunky_svg - A library for drawing things with SVG.
  • cloudex - Cloudex is an Elixir library that can upload image files or urls to Cloudinary.
  • eikon - An Elixir library providing a read-only interface for image files.
  • elixir_exif - Parse exif tags and thumbnail data from jpeg files.
  • ex_image_info - An Elixir library to parse images (binaries) and get the dimensions, detected mime-type and overall validity for a set of image formats.
  • exexif - Pure Elixir library to extract TIFF and EFIX metadata from jpeg files.
  • exfavicon - An Elixir library for discovering favicons.
  • gi - An Elixir wrapper for GraphicsMagick command line.
  • identicon - An Elixir library for generating 5x5 identicons.
  • image64 - A tool for working with base64 encoded images.
  • imagineer - Image parsing in Elixir.
  • imgex - Unofficial client library for generating imgix URLs in Elixir.
  • mogrify - An Elixir wrapper for ImageMagick command line.
  • png - A pure Erlang library for creating PNG images. It can currently create 8 and 16 bit RGB, RGB with alpha, indexed, grayscale and grayscale with alpha images.
  • thumbnex - Create thumbnails from images and video screenshots.

Instrumenting / Monitoring

Libraries for collecting and exporting metrics.

  • appsignal-elixir - Collects error and performance data from your Elixir applications and sends it to AppSignal.
  • elixometer - A light Elixir wrapper around exometer.
  • erlang-metrics - A generic interface to different metrics systems in Erlang.
  • exometer - Basic measurement objects and probe behavior in Erlang.
  • folsom_ddb - DalmatinerDB backend to store folsom metrics.
  • graphitex - Graphite/Carbon client for Elixir.
  • instream - InfluxDB driver for Elixir.
  • instrumental - An Elixir client for Instrumental.
  • newrelic.ex - Collects metrics from your Elixir/Phoenix application and sends them to NewRelic.
  • prometheus - Prometheus.io monitoring system and time series database client in Erlang.
  • prometheus-ecto - Ecto instrumenter for prometheus.ex.
  • prometheus-phoenix - Phoenix instrumenter for prometheus.ex.
  • prometheus-plugs - Plugs instrumenters/exporter for prometheus.ex.
  • prometheus.ex - Elixir-friendly Prometheus.io monitoring system and time series database client.
  • prometheus_process_collector - Prometheus collector which exports the current state of process metrics including cpu, memory, file descriptor usage and native threads count as well as the process start and up times.
  • spandex - Platform agnostic tracing library originally developed for Datadog APM.
  • telemetry - Dynamic dispatching library for metrics and instrumentations.
  • wobserver - Web based metrics, monitoring, and observer.

JSON

Libraries and implementations working with JSON.

  • exjson - JSON parser and generator in Elixir.
  • ja_serializer - JSONAPI.org Serialization in Elixir.
  • jason - A blazing fast JSON parser and generator in pure Elixir.
  • jazz - Yet another library to handle JSON in Elixir.
  • joken - Encodes and decodes JSON Web Tokens.
  • jose - JSON Object Signing and Encryption (JOSE) for Erlang and Elixir.
  • json - Native JSON library for Elixir.
  • json_pointer - Implementation of RFC 6901 which defines a string syntax for identifying a specific value within a JSON document.
  • json_stream_encoder - JsonStreamEncoder is a streaming encoder for streaming JSON to an IOish thing in Elixir.
  • json_web_token_ex - An Elixir implementation of the JSON Web Token (JWT) Standards Track (RFC 7519).
  • jsonapi - A project that will render your data models into JSONAPI Documents.
  • jsx - An Erlang application for consuming, producing, and manipulating json.
  • jsxn - jsx but with maps.
  • jwalk - Helper module for working with Erlang representations of JSON.
  • jwtex - A library to encode and decode JWT tokens.
  • poison - Poison is a new JSON library for Elixir focusing on wicked-fast speed without sacrificing simplicity, completeness, or correctness.
  • tiny - Tiny, fast and fully compliant JSON parser for Elixir.
  • world_json - topojson country and state/province collections for elixir/erlang.

Languages

Languages built on top of Elixir.

  • Elchemy - Compiler allowing to translate Elm programming language code to Elixir.
  • lighthouse_scheme - A small Lisp-like language and interactive REPL, built in Elixir.
  • Monkey - Elixir implementation of an interpreter and REPL for the js-like Monkey programming language.

Lexical analysis

All about lexical analyser, lexer, scanner, tokenizer or compiler.

  • abnf_parsec - ABNF in and parser out.
  • ex_abnf - Parser for ABNF Grammars in Elixir.
  • lex_luthor - LexLuthor is a Lexer in Elixir which uses macros to generate a reusable lexers.

Logging

Logging infos and messages.

  • bunyan - Bunyan: An Elixir Logger.
  • exlager - Elixir binding for lager.
  • exsentry - Error logging to Sentry.
  • gelf_logger - A Logger backend that will generate Graylog Extended Log Format (GELF) messages.
  • honeybadger - Error logging to Honeybadger.
  • json_logger - JSON Logger is a logger backend that outputs elixir logs in JSON format.
  • lager - A logging framework for Erlang/OTP by basho.com.
  • lager_logger - A lager backend that forwards all log messages to Elixir's Logger.
  • logfmt - Logfmt is a module for encoding and decoding logfmt-style log lines.
  • logger_logstash_backend - A backend for the Elixir Logger that will send logs to the Logstash UDP input.
  • logglix - A logger backend for posting errors to Loggly.
  • logster - Easily parsable, one-line logging for Phoenix and Plug applications, inspired by Lograge.
  • metrix - Log custom app metrics to stdout for use by Librato and other downstream processors.
  • mstore - MStore is a experimental metric store build in erlang, the primary functions are open, new, get and put.
  • quiet_logger - A simple plug to suppress health check logging (e.g.: when using Kubernetes).
  • rogger - Elixir logger to publish log messages in RabbitMQ.
  • rollbax - Exception tracking and logging to Rollbar.
  • slack_logger_backend - A logger backend for posting errors to Slack.
  • syslog - Erlang port driver for interacting with syslog via syslog(3).
  • timber - Structured logging platform; turns raw text logs into rich structured events.
  • youtrack_logger_backend - A logger backend that will post messages to YouTrack (an issue tracker made by JetBrains).

Macros

Macros for faster and easier development. Sugar for your code.

  • anaphora - Anaphora is the anaphoric macro collection for Elixir. An anaphoric macro is one that deliberately captures a variable (typically it) from forms supplied to the macro.
  • apix - Simple convention and DSL for transformation of elixir functions to an API for later documentation and or validation.
  • backports - Use new functions in Elixir 1.1 and 1.2.
  • crudry - Crudry is an elixir library for DRYing CRUD of Phoenix Contexts and Absinthe Resolvers.
  • eventsourced - Build functional, event-sourced domain models.
  • expat - Reusable, composable patterns across Elixir libraries.
  • guardsafe - Macros expanding into code that can be safely used in guard clauses.
  • kwfuns - Macros to create functions with syntax based keyword parameters with default values.
  • lineo - parse transform for accurate line numbers.
  • mdef - Easily define multiple function heads in Elixir.
  • named_args - Allows named arg style arguments in Elixir.
  • ok_jose - Pipe elixir functions that match {:ok,_}, {:error,_} tuples or custom patterns.
  • opus - A framework for pluggable business logic components.
  • pathex - Zero-dependency, blazing fast functional lenses.
  • pattern_tap - Macro for tapping into a pattern match while using the pipe operator.
  • pipe_here - Easily pipe values into any argument position.
  • pipe_to - The enhanced pipe operator which can specify the target position.
  • pipes - Macros for more flexible composition with the Elixir Pipe operator.
  • pit - Transform values as they flow inside a pipe.
  • rebind - rebind parse transform for Erlang.
  • rulex - Simple rule handler using Elixir pattern matching.
  • shorter_maps - ~M sigil for map shorthand. ~M{id name} ~> %{id: id, name: name}.
  • unsafe - Generate easy unsafe (!) bindings for Elixir functions.

Markdown

Libraries and tools working with Markdown and such.

  • cmark - Elixir NIF for CommonMark (in C), a parser following the CommonMark spec.
  • discount - Elixir NIF for discount, a Markdown parser.
  • earmark - Markdown parser for Elixir.
  • Markdown - Implemented entirely as a NIF binding to the Hoedown library.
  • Pandex - Lightweight Elixir wrapper for Pandoc. Converts Markdown, CommonMark, HTML, Latex, HTML, HTML5, opendocument, rtf, texttile, asciidoc to each other.

Miscellaneous

Useful libraries or tools that don't fit in the categories above.

  • address_us - Library for parsing US Addresses into their individual parts.
  • AlloyCI - AlloyCI is a Continuous Integration, Deployment, and Delivery coordinator, written in Elixir, that takes advantage of the GitLab CI Runner, and its capabilities as executor, to prepare and run your pipelines.
  • Apex - Awesome Print for Elixir.
  • AtomVM - AtomVM allows to run Elixir/Erlang code on embedded devices such as ESP32 and STM32 microcontrollers.
  • bupe - EPUB Generator and Parser.
  • charm - Use ANSI terminal characters to write colors and cursor positions.
  • codec-beam - Generate Erlang VM byte code from Haskell.
  • Countries - Countries is a collection of all sorts of useful information for every country in the ISO 3166 standard.
  • countriex - A pure elixir country data provider containing various information for every country in ISO 3166.
  • dye - A library for dyeing your terminal output.
  • dynamic_compile - Compile and load Erlang modules from string input.
  • ecto_autoslug_field - Automatically creates slugs for your Ecto models.
  • egaugex - Client to fetch and parse realtime data from egauge devices.
  • elixir-browser - Browser detection for Elixir.
  • epub_cover_extractor - Extract cover from EPUB files.
  • erlang_term - Provide the in-memory size of Erlang terms, ignoring where these are stored.
  • ex2ms - Translates Elixir functions to match specifications for use with ets.
  • ex_phone_number - Format, normalize, and validate phone numbers.
  • ex_rated - Simple and flexible rate-limiting for API's or anything.
  • exfcm - Simple wrapper for posting Firebase Cloud Messages.
  • exldap - A module for working with LDAP from Elixir.
  • exlibris - A collection of random library functions.
  • expool - A small process pooling library for parallel tasks in Elixir.
  • exprint - A printf / sprintf library for Elixir, works as a wrapper for :io.format.
  • expyplot - Elixir interface for Plotting/Graphing library using matplotlib.pyplot.
  • exquisite - LINQ-like match_spec generation for Elixir.
  • exsync - Yet another Elixir reloader.
  • funnel - Streaming Elixir API built upon ElasticSearch's percolation.
  • gen_task - Generic Task behavior that helps to encapsulate worker errors and recover from them in classic GenStage's.
  • gimei_ex - Elixir port of gimei library.
  • growl - Simple wrapper for growl, the notification system for OSX.
  • hammer - A rate-limiter with pluggable storage backends, including Redis.
  • html_entities - Elixir module for decoding HTML entities in a string.
  • huex - Elixir client for Philips Hue connected light bulbs.
  • japan_municipality_key - Elixir Library for Japan municipality key converting.
  • Jisho-Elixir - An API wrapper for Jisho.org, an online Japanese dictionary. Allows users to search by word, symbol, and or tags (refer to docs).
  • keys1value - Erlang set associative map for key lists.
  • licensir - A mix task that lists the license(s) of all installed packages in your project.
  • mixgraph - An interactive dependency plotter for your Hex Package.
  • mixstar - MixStar starred GitHub repository that depends on your project.
  • netrc - Reads netrc files implemented in Elixir.
  • notifier - A pluggable architecture for desktop notifications.
  • onetime - An onetime key-value store for Elixir.
  • pact - Better dependency injection in Elixir for cleaner code and testing.
  • phone - A parser to get useful info from telephone numbers.
  • porcelain - Porcelain implements a saner approach to launching and communicating with external OS processes from Elixir.
  • presentex - Elixir to HTML/JavaScript based presentation framework.
  • ratekeeper - Rate limiter and rate-limited actions scheduler.
  • ratx - Rate limiter and overload protection for erlang application.
  • reprise - Simplified module reloader for Elixir.
  • spawndir - Spawns processes from the file system.
  • spotify_ex - An Elixir wrapper for the Spotify Web API.
  • std_json_io - Application for managing and communicating with IO servers via JSON.
  • url_unroller - Simple URL unroller (un-shortener) in Elixir.
  • vessel - Elixir MapReduce interfaces with Hadoop Streaming integration.

Native Implemented Functions

Tools and libraries working with Erlang NIF.

  • hsnif - Tool that allows to write Erlang NIF libraries in Haskell.
  • nifty - Helper script for setting up the boilerplate required when writing a NIF.
  • Rustler - Library for writing NIFs for Erlang or Elixir safely in Rust. No segfaults.

Natural Language Processing (NLP)

Tools and libraries that work with human (natural) languages.

  • gibran - Gibran is an Elixir port of WordsCounted, a natural language processor that extracts useful statistics from text.
  • Paasaa - Natural language detection for Elixir.
  • Petrovich - Elixir library to inflect Russian first, last, and middle names.
  • Tongue - Elixir port of Nakatani Shuyo's natural language detector.
  • Woolly - Woolly is an ambitious Text Mining and Natural Language Processing API for Elixir.

Networking

Libraries and tools for using network related stuff.

  • asn - Can be used to map from IP to AS to ASN.
  • chatter - Secure message broadcasting based on a mixture of UDP multicast and TCP.
  • download - Download files from the internet easily.
  • eio - Elixir server of engine.io.
  • ExPcap - PCAP parser written in Elixir.
  • FlyingDdns - A dyndns server written in elixir.
  • hades - A wrapper for NMAP written in Elixir.
  • mac - Can be used to find a vendor of a MAC given in hexadecimal string (according to IEEE).
  • pool - Socket acceptor pool for Elixir.
  • reagent - reagent is a socket acceptor pool for Elixir.
  • sockerl - Sockerl is an advanced Erlang/Elixir socket library for TCP protocols and provides fast, useful and easy-to-use API for implementing servers, clients and client connection pools.
  • socket - Socket wrapping for Elixir.
  • sshex - Simple SSH helpers for Elixir.
  • sshkit - An Elixir toolkit for performing tasks on one or more servers, built on top of Erlangโ€™s SSH application.
  • torex - Simple Tor connection library.
  • tunnerl - SOCKS4 and SOCKS5 proxy server.
  • wifi - Various utility functions for working with the local Wifi network in Elixir.
  • wpa_supplicant - Elixir interface to the wpa_supplicant.

Office

Libraries for working with office suite documents.

  • elixlsx - A writer for XLSX files.
  • excellent - An OpenXL (Excel 2000) Parser for Elixir.
  • xlsxir - Xlsx file parser with support for ISO 8601 date formats. Data is extracted to an Erlang Term Storage (ETS) table and is accessed through various functions.

ORM and Datamapping

Libraries that implement object-relational mapping or datamapping techniques.

  • amnesia - Mnesia wrapper for Elixir.
  • arbor - Ecto adjacency list and tree traversal.
  • arc_ecto - Arc.Ecto provides an integration with Arc and Ecto.
  • atlas - Object Relational Mapper for Elixir.
  • barrel_ex - Barrel-db distributed document-oriented database REST client in Elixir.
  • Bolt.Sips - Neo4j driver for Elixir using the Bolt protocol.
  • boltun - Transforms notifications from the Postgres LISTEN/NOTIFY mechanism into callback execution.
  • caylir - Cayley driver for Elixir.
  • comeonin_ecto_password - Ecto custom type for storing encrypted password using Comeonin.
  • couchdb_connector - A connector for CouchDB, the Erlang-based, JSON document database.
  • craterl - Erlang client for crate.
  • database_url - Parse database URL and return keyword list for use with Ecto.
  • datomex - Elixir driver for the Datomic REST API.
  • ddb_client - DalmatinerDB client.
  • defql - Create elixir functions with SQL as a body.
  • dexts - Disk Elixir Terms Storage, dest wrapper.
  • diver - A HBase driver for Erlang/Elixir using Jinterface and the Asynchbase Java client to query the database.
  • dproto - Protocols for DalmatinerDB.
  • dqe - DalmatinerDB query engine.
  • ecto - A database wrapper and language integrated query for Elixir.
  • ecto_cassandra - Cassandra DB Adapter for Ecto.
  • ecto_enum - Ecto extension to support enums in models.
  • ecto_facade - Ecto facade that allows to separate writes and reads to different databases.
  • ecto_factory - Easily generate structs based on your ecto schemas.
  • ecto_fixtures - Fixtures for Elixir apps using Ecto.
  • ecto_lazy_float - Ecto.LazyFloat - An Ecto.Float that accepts binary and integers.
  • ecto_migrate - Ecto auto migration library. It allows to generate and run migrations for initial and update migrations.
  • ecto_mnesia - Ecto adapter for Mnesia Erlang term database.
  • ecto_ordered - Ecto extension for ordered models.
  • ecto_paging - Cursor-based pagination for Ecto.
  • ecto_psql_extras - Ecto PostgreSQL database performance insights.
  • ecto_rut - Simple and Powerful Ecto Shortcuts to simplify and speed up development.
  • ecto_shortcuts - Shortcuts for common operations in ecto.
  • ecto_shortuuid - Ecto type which adds support for ShortUUIDs.
  • ecto_validation_case - Simplify your Ecto model validation tests. Loosely inspired by shoulda matchers, but simpler.
  • ectophile - Ecto extension to instantly support file uploads in models.
  • elastic - A thin-veneer over HTTPotion to help you talk to Elastic Search.
  • elastix - A simple Elastic REST client written in Elixir.
  • eredis - Erlang Redis client.
  • erlastic_search - An Erlang app for communicating with Elastic Search's rest interface.
  • esqlite - Erlang NIF for sqlite.
  • eternal - Keep your ETS tables alive forever, safely and easily.
  • ets_map - An Elixir package that provides a Map-like interface (Map/Access/Enumerable/Collectable) backed by an ETS table.
  • eventstore - A CQRS EventStore using Postgres for persistence, written in Elixir.
  • ex_bitcask - Elixir wrapper of Basho's Bitcask Key/Value store.
  • ex_sider - Elixir Map/List/Set interfaces for Redis data structures (uses Redix, but that is configurable).
  • exleveldb - Elixir wrapper around Basho's eleveldb module for LevelDB.
  • exnumerator - Elixir enumerable type definition in a simple way to be used with any database.
  • exredis - Redis client for Elixir.
  • exseed - An Elixir library that provides a simple DSL for seeding databases through Ecto.
  • exsolr - A Solr wrapper written in Elixir.
  • extreme - An Elixir library using Eventstore for persistence of events generated by aggregates (CQRS).
  • exts - Elixir Terms Storage, ets wrapper.
  • github_ecto - Ecto adapter for GitHub API.
  • gremlex - Apache Tinkerpop Gremlin Elixir Client.
  • hstore - Hstore support for Postgrex.
  • inquisitor - Composable query builder for Ecto.
  • isn - Ecto types for the postgreSQL isn extension.
  • kalecto - Glue between Kalends and Ecto for saving dates, times and datetimes.
  • kvs - Erlang Abstract Term Database.
  • level - Level for Elixir implements various helper functions and data types for working with Googles Level data store.
  • mariaex - MariaDB/MySQL driver for Elixir.
  • memento - Simple Mnesia Interface in Elixir.
  • moebius - A functional query tool for Elixir and PostgreSQL.
  • mongo - MongoDB driver for Elixir.
  • mongodb - MongoDB driver for Elixir.
  • mongodb_driver - Alternative driver for MongoDB with support for recent versions of MongoDB and comprehensive feature list.
  • mongodb_ecto - MongoDB adapter for Ecto.
  • mysql - MySQL/OTP โ€“ MySQL driver for Erlang/OTP.
  • mysqlex - An Ecto-compatible wrapper around the mysql-otp library.
  • neo4j_sips - Neo4j driver for Elixir.
  • neo4j_sips_models - Minimalistic Model support for the Neo4j.Sips Elixir driver.
  • panoramix - Apache Druid client for Elixir.
  • paper_trail - Ecto plugin for tracking and recording all the changes in your database.
  • pillar - Clickhouse HTTP based client.
  • postgrex - PostgreSQL driver for Elixir.
  • red - Persist relationships between objects in Redis, in a graph-like way.
  • rediscl - A minimal redis client with connection pooling and pipe query builder.
  • redix - Superfast, pipelined, resilient Redis driver for Elixir.
  • redo - Heroku's pipelining redis client for erlang.
  • rethinkdb - Rethinkdb client in pure Elixir using JSON protocol.
  • riak - A Riak client written in Elixir.
  • riak_ecto - Riak adapter for Ecto.
  • shards - Transparent and out-of-box Sharding support for Erlang/Elixir ETS tables.
  • sql_dust - Generate (complex) SQL queries using magical Elixir SQL dust.
  • sqlite_ecto - SQLite3 adapter for Ecto.
  • sqlitex - An Elixir wrapper around esqlite. Allows access to sqlite3 databases.
  • ssdb_elixir - ssdb client for Elixir, with focus on performance.
  • tds - MSSQL / TDS Database driver for Elixir.
  • tds_ecto - MSSQL / TDS Adapter for Ecto.
  • timex_ecto - An adapter for using Timex DateTimes with Ecto.
  • tirexs - An Elixir flavored DSL for building JSON based requests to Elasticsearch engine.
  • triplex - Database multitenancy with postgres schemas for Elixir applications!
  • triton - Pure Elixir Cassandra ORM built on top of Xandra.
  • udpflux - An opinionated InfluxDB UDP only client.
  • xandra - Cassandra driver built natively in Elixir and focused on speed, simplicity, and robustness.
  • yar - Yet another Redis client for Elixir.

OTP

Libraries for working with OTP related things.

  • core - Library for selective receive OTP processes.
  • erlexec - Execute and control OS processes from Erlang/OTP.
  • immortal - Immortal is a small collection of helper modules intended to make it easier to build a fault-tolerant OTP application.
  • libex_config - Helpers for accessing OTP application configuration.

Package Management

Libraries and tools for package and dependency management.

  • Hex - A package manager for the Erlang ecosystem.
  • rebar3_hex - Hex.pm plugin for rebar3.

PDF

Libraries and software for working with PDF files.

  • chromic_pdf - A client for Chrome's DevTools API to generate PDFs (HTML to PDF).
  • gutenex - Native PDF generation for Elixir.
  • pdf2htmlex - Convert PDF docs to beautiful HTML files without losing text or format.
  • pdf_generator - A simple wrapper for wkhtmltopdf or puppeteer (HTML to PDF) for use in Elixir projects.
  • puppeteer_pdf - Another wrapper around puppeteer (HTML to PDF) for use in Elixir projects.

Protocols

Special protocol and format libraries.

  • elixir_radius - RADIUS Protocol on Elixir.
  • ex_hl7 - Health Level 7 (HL7) is a protocol designed to model and transfer health-related data electronically.
  • ex_marshal - Ruby Marshal format implemented in Elixir.
  • exprotobuf - Protocol Buffers in Elixir, made easy.
  • grpc-elixir - The Elixir implementation of gRPC.
  • message_pack - MessagePack Implementation for Elixir.
  • msgpax - MessagePack (de)serializer implementation for Elixir.
  • protox - Elixir implementation for Protocol Buffers.
  • riffed - Provides idiomatic Elixir bindings for Apache Thrift.
  • Sippet - An Elixir library designed to be used as SIP protocol middleware.
  • SMPPEX - SMPP 3.4 protocol and framework implementation in Elixir.

Queue

Libraries for working with event and task queues.

  • adap - Create a data stream across your information systems to query, augment and transform data according to Elixir matching rules.
  • amqp - Simple Elixir wrapper for the Erlang RabbitMQ client, based on Langohr.
  • broadway - Concurrent and multi-stage data ingestion and data processing with Elixir.
  • conduit - A framework for working with message queues, with adapters for SQS and AMQP, and plugs for reusable messaging patterns.
  • cspex - Simple, OTP compliant, Elixir implementation of CSP channels.
  • dbus - A dumb message bus for sharing data between microservices decoupled using Redis.
  • ecto_job - A transactional job queue built with Ecto, PostgreSQL and GenStage.
  • elixir_nsq - NSQ client library for Elixir.
  • elixir_talk - An Elixir client for beanstalkd.
  • enm - enm is an Erlang port driver that wraps the nanomsg C library.
  • exdisque - Elixir client for Disque, an in-memory, distributed job queue.
  • exq - Job processing library for Elixir - compatible with Resque/Sidekiq.
  • exrabbit - RabbitMQ bindings and DSL for Elixir.
  • flume - A blazing fast job processing system backed by GenStage & Redis.
  • gen_rmq - Set of behaviours meant to be used to create RabbitMQ consumers and publishers.
  • heapq - A Heap-based Priority Queue Implementation in Elixir.
  • honeydew - Honeydew is a worker pool library for Elixir.
  • hulaaki - An MQTT 3.1.1 client library written in Elixir.
  • kaffe - Kafka client library for Elixir.
  • mqs - RabbitMQ client library, routing keys, RPC over MQ and other stuff.
  • oban - Robust asynchronous job processor powered by Elixir and modern PostgreSQL.
  • opq - A simple, in-memory queue with worker pooling and rate limiting in Elixir.
  • pqueue - Erlang Priority Queue Implementation.
  • que - Simple Background Job Processing with Mnesia.
  • queuex - Priority Queue with multiple backends.
  • RBMQ - Simple API for spawning RabbitMQ Producers and Consumers.
  • Rihanna - High performance postgres-backed job queue for Elixir.
  • stream_weaver - Library for working with streams.
  • task_bunny - background processing application written in Elixir and uses RabbitMQ as a messaging backend.
  • toniq - Simple and reliable background job library for Elixir.
  • verk - Verk is a job processing system backed by Redis. It uses the same job definition of Sidekiq/Resque.
  • work_queue - Simple implementation of the hungry-consumer model in Elixir.

Release Management

Libraries and tools for release management.

  • changex - Automated changelog generation from GIT logs.
  • distillery - A pure Elixir implementation of release packaging functionality for the Erlang VM.
  • eliver - Interactive semantic versioning for Elixir packages.
  • exrm - Automatically generate a release for your Elixir project.
  • exrm_deb - Create a deb for your Elixir release with ease.
  • exrm_heroku - Publish your Elixir releases to Heroku with ease.
  • exrm_rpm - Create a RPM for your Elixir release with ease.
  • mix_docker - Put your Elixir app production release inside minimal docker image.
  • relex - Erlang/Elixir Release Assembler.
  • renew - Mix task to create mix projects that builds into Docker containers.

REST and API

Libraries and web tools for developing REST-ful APIs.

  • accent - Plug for handling the conversion of JSON API keys to different cases.
  • detergent - An emulsifying Erlang SOAP library.
  • detergentex - Elixir binding to Detergent erlang library used to call WSDL/SOAP Services.
  • maru - Elixir copy of grape for creating REST-like APIs.
  • mazurka - Hypermedia API toolkit.
  • plug_rest - REST behaviour and Plug router for hypermedia web applications.
  • signaturex - Simple key/secret based authentication for APIs.
  • SOAP client - Hex-documented SOAP client based on HTTPoison.
  • urna - Urna is a simple DSL around cauldron to implement REST services.
  • versionary - API versioning for Elixir Plug and Phoenix.

Libraries related to search indexing, search algorithms and search clients.

Security

Libraries and tools regarding security.

  • ca - Certificate Authority.
  • clamxir - ClamAV wrapper for elixir.
  • code_signing - Signing and verifying BEAM files with Ed25519 signatures.
  • Ockam - A suite of tools, programming libraries and infrastructure that make it easy to build devices that communicate securely, privately and trustfully with cloud services and other devices. Docs .
  • pwned - Check if your password has been pwned.
  • safetybox - Security oriented helper functions for Elixir.
  • sobelow - Security-focused static analysis for the Phoenix Framework.
  • ssl_verify_fun - Collection of ssl verification functions for Erlang.

SMS

SMS related libraries and tools.

  • exsms - An Elixir library for sending transactional SMS - supports Sendinblue, mailjet, msg91 and textlocal.

Static Page Generation

Tools and libraries for generating static websites and content.

  • blogit - An OTP application for generating blogs from git repositories containing markdown files.
  • coil - Minimalistic static content engine.
  • glayu - A static site generator for mid-sized sites.
  • medusa - Elixir static site generator that supports Pug.
  • pardall_markdown - Reactive publishing framework, filesystem-based with support for Markdown, nested hierarchies, and instant content rebuilding.
  • obelisk - Static blog and website generator.
  • serum - A simple static website generator written in Elixir.

Statistics

Libraries around the topic statistics.

  • descriptive_statistics - Descriptive Statistics for Elixir.
  • mtx - MTX supports front-end API for tracking Histogram, Meter, Counter, Gauge, Timing keys.
  • numerix - A collection of useful mathematical functions with a slant towards statistics, linear algebra and machine learning.
  • simple_stat_ex - Ecto compatible library for simple stat keeping by time period.
  • statistics - Some basic statistical functions for Elixir.

Templating

Libraries parsing and helping with templates

  • bbmustache - Binary pattern match Based Mustache template engine for Erlang/OTP.
  • calliope - An Elixir HAML parser.
  • eml - Library for writing and manipulating (HTML) markup in Elixir.
  • exgen - A templating library for quickly generating Elixir projects.
  • expug - Pug templates for Elixir.
  • mustache - Mustache templates for Elixir.
  • mustachex - Mustache for Elixir - Logic-less templates.
  • slime - An Elixir library for rendering slim-like templates.
  • taggart - HTML as code in Elixir.
  • templates - Helper library for adding templating to web applications.
  • temple - An HTML DSL for Elixir and Phoenix.

Testing

Libraries for testing codebases and generating test data.

  • amrita - A polite, well mannered and thoroughly upstanding testing framework for Elixir.
  • apocryphal - Swagger based document driven development for ExUnit.
  • blacksmith - Data generation framework for Elixir.
  • blitzy - A simple HTTP load tester in Elixir.
  • bypass - Bypass provides a quick way to create a mock HTTP server with a custom plug.
  • chaperon - An HTTP service performance & load testing framework written in Elixir.
  • chemistry - Testing Framework for Elixir.
  • cobertura_cover - Writes a coverage.xml from mix test --cover file compatible with Jenkins' Cobertura plugin.
  • definject - Unobtrusive dependency injector for Elixir.
  • double - Create stub dependencies for testing without overwriting global modules.
  • ecto_it - Ecto plugin with default configuration for repos for testing different ecto plugins with databases.
  • efrisby - A REST API testing framework for erlang.
  • elixir-auto-test - Run test when file is saved using inotify-tools.
  • espec - BDD test framework for Elixir inspired by RSpec.
  • espec_phoenix - ESpec for Phoenix web framework.
  • ex_machina - Flexible test factories for Elixir. Works out of the box with Ecto and Ecto associations.
  • ex_parameterized - Simple macro for parameterized testing.
  • ex_spec - BDD-like syntax for ExUnit.
  • ex_unit_fixtures - A library for defining modular dependencies for ExUnit tests.
  • ex_unit_notifier - Desktop notifications for ExUnit.
  • excheck - Property-based testing library for Elixir (QuickCheck style).
  • exkorpion - A BDD library for Elixir developers.
  • factory_girl_elixir - Minimal implementation of Ruby's factory_girl in Elixir.
  • fake_server - FakeServer is an HTTP server that simulates response and makes testing external APIs easier.
  • faker - Faker is a pure Elixir library for generating fake data.
  • faker_elixir - FakerElixir is an Elixir package that generates fake data for you.
  • fqc - FiFo Quickcheck helper, a set of helpers for running EQC.
  • gimei - Gimei is a pure Elixir library for generating Japanese fake data.
  • hound - Elixir library for writing integration tests and browser automation.
  • hypermock - HTTP request stubbing and expectation Elixir library.
  • ignorant - Partial Map comparison that ensures fields are present while ignoring their values.
  • katt - KATT (Klarna API Testing Tool) is an HTTP-based API testing tool for Erlang.
  • kovacs - A simple ExUnit test runner.
  • markdown_test - A library that lets you test the Elixir code in your markdown files.
  • meck - A mocking library for Erlang.
  • mecks_unit - A package to elegantly mock module functions within (asynchronous) ExUnit tests using meck.
  • mix_erlang_tasks - Common tasks for Erlang projects that use Mix.
  • mix_eunit - A Mix task to execute eunit tests.
  • mix_test_interactive - Interactive test runner for mix test with watch mode.
  • mix_test_watch - Automatically run your Elixir project's tests each time you save a file.
  • mixunit - An EUnit task for Mix based projects.
  • mock - Mocking library for the Elixir language.
  • mockery - Simple mocking library for asynchronous testing.
  • mockingbird - A set of helpers to test code that involves http requests.
  • mox - Mocks and explicit contracts for Elixir.
  • pavlov - BDD framework for your Elixir projects.
  • plug_test_helpers - A simple testing DSL for Plugs.
  • ponos - Ponos is an Erlang application that exposes a flexible load generator API.
  • power_assert - Power Assert in Elixir. Shows evaluation results each expression.
  • proper - PropEr (PROPerty-based testing tool for ERlang) is a QuickCheck-inspired open-source property-based testing tool for Erlang.
  • setup_tag - Easily mix and match functions marked with tags to setup your test context.
  • shouldi - Elixir testing libraries with nested contexts, superior readability, and ease of use.
  • test_selector - A set of test helpers that make sure you always select the right elements in your Phoenix app.
  • test_that_json - JSON assertions and helpers for your Elixir testing needs.
  • tuco_tuco - TucoTuco helps you test your web application by running a web browser and simulating user interaction with your application.
  • Walkman - Isolate tests from the real world, inspired by Ruby's VCR.
  • wallaby - Wallaby helps test your web applications by simulating user interactions concurrently and manages browsers.
  • white_bread - Story based BDD in Elixir using the gherkin syntax.

Text and Numbers

Libraries for parsing and manipulating text and numbers.

  • abacus - Evaluate math terms in Elixir.
  • base58 - Base58 encoding/decoding for Elixir.
  • base58check - Base58Check encoding/decoding for Bitcoin.
  • base62 - Base62 encoder/decoder in pure Elixir.
  • bencode - A Bencode encoder and decoder for Elixir. The decoder will return the checksum value of the info dictionary, if an info dictionary was found in the input.
  • bencoder - bencode in Elixir.
  • bitcoinex - Bitcoin utilities in Elixir.
  • brcpfcnpj - Number format and Validation for Brazilian documents (CPF/CNPJ).
  • caustic - Elixir cryptocurrency library for Bitcoin, Ethereum, and other blockchains. Includes cryptography, number theory (prime, congruence), and general mathematics library for exploratory math.
  • ccc - Character Code Converter.
  • chinese_translation - Translate between traditional chinese and simplified chinese based on wikipedia data, and translate chinese words/characters to pinyin (or slug with or without tone).
  • cidr - Classless Inter-Domain Routing (CIDR) for Elixir.
  • cirru_parser - Cirru Parser in Elixir.
  • colorful - Elixir macros to decorate characters on CUI.
  • colors - Colors util written in Elixir.
  • convertat - An Elixir library for converting from and to arbitrary bases.
  • curtail - HTML tag-safe string truncation.
  • custom_base - Allow you to make custom base conversion in Elixir.
  • decimal - Arbitrary precision decimal arithmetic for Elixir.
  • dicer - A dice roller expression evaluator.
  • eden - EDN encoder/decoder for Elixir.
  • elixilorem - Lorem Ipsum generator for Elixir.
  • elixir-range-extras - Elixir range utilities: constant-time random sampling and set operations.
  • elixir_bencode - Bencode implemented in Elixir.
  • erldn - EDN format parser for the Erlang platform.
  • event_source_encoder - Encode data into EventSource compliant data.
  • ex_brace_expansion - Brace expansion, as known from sh/bash, in Elixir.
  • ex_cldr - Cldr is an Elixir library for the Unicode Consortium's Common Locale Data Repository (CLDR).
  • ex_rfc3966 - Elixir Tel URI parser compatible with RFC3966.
  • ex_rfc3986 - RFC3986 URI/URL parser.
  • ex_uc - Extensible Units Converter for Elixir.
  • exmoji - Emoji encoding Swiss Army knife for Elixir/Erlang.
  • expletive - Profanity filter library for Elixir.
  • expr - An Elixir library for parsing and evaluating mathematical expressions.
  • faust - Markov Text Generator for Elixir.
  • haikunator - Generate Heroku-like memorable random names to use in your apps or anywhere else.
  • hashids - Hashids lets you obfuscate numerical identifiers via reversible mapping.
  • hexate - Simple module for Hex encoding / decoding in Elixir.
  • inet_cidr - Classless Inter-Domain Routing (CIDR) for Elixir that is compatible with :inet and supports both IPv4 and IPv6.
  • inflex - An Inflector library for Elixir.
  • kitsune - An Elixir library for transforming the representation of data.
  • ltsvex - LTSV parser implementation in Elixir.
  • mbcs - Wrapper for erlang-mbcs. This module provides functions for character encoding conversion.
  • mimetype_parser - parse mimetypes.
  • minigen - Random data generators for the Erlang ecosystem.
  • monetized - A lightweight solution for handling and storing money.
  • money - Working with Money safer, easier, and fun, interpretation of the Fowler's Money pattern.
  • mt940 - MT940 (standard structured SWIFT Customer Statement message) parser for Elixir.
  • nanoid - Elixir port of NanoID, a secure and URL-friendly unique ID generator.
  • neotomex - A PEG implementation with a pleasant Elixir DSL.
  • number - Number is a pretentiously-named Elixir library which provides functions to convert numbers into a variety of different formats.
  • numero - A micro library for converting non-english utf-8 digits in elixir.
  • palette - A handy library for colouring strings in Elixir.
  • pinyin - Chinese Pinyin lib for Elixir.
  • porterstemmer - Porter Stemmer in Elixir.
  • pretty_hex - A binary hex dumping library in Elixir.
  • quickrand - Quick Random Number Generation.
  • RandomStringGenerator - A module to generate a random string based on a given string pattern.
  • ref_inspector - Referer parser library in Elixir. Fetching info from URLs.
  • remove_emoji - Emoji text sanitizer in Elixir. It can remove any emoji symbol.
  • secure_random - Convenience library for random base64 strings modeled after my love for Ruby's SecureRandom.
  • sentient - Simple sentiment analysis based on the AFINN-111 wordlist.
  • shortuuid - Generate concise, unambiguous, URL-safe UUIDs.
  • simetric - String similarity metrics for Elixir.
  • slugger - Slugger can generate slugs from given strings that can be used in URLs or file names.
  • smile - Small lib for converting emoji mappers to emoji characters, like in Slack messages.
  • stemmer - An English (Porter2) stemming implementation in Elixir.
  • tau - Provide the famous mathematical constant, tau, ฯ„ = 6.2831....
  • tomlex - A TOML parser for Elixir.
  • ua_inspector - User agent parser library like piwik/device-detector.
  • ua_parser2 - A port of ua-parser2 to Elixir. User agent parser library.
  • unit_fun - Attempt to add units to numbers in elixir to give some added type safety when dealing with numeric quantities.
  • uuid - UUID generator and utilities for Elixir.
  • uuid_erl - Erlang Native UUID Generation.
  • veritaserum - Sentiment analysis based on afinn-165, emojis and some enhancements.

Third Party APIs

Libraries for accessing third party APIs.

  • airbax - Exception tracking from Elixir to Airbrake.
  • airbrake - An Elixir notifier for the Airbrake.
  • airbrakex - Elixir client for the Airbrake service.
  • amazon_product_advertising_client - Amazon Product Advertising API client for Elixir.
  • apns - Apple Push Notifications Service client library for elixir.
  • asanaficator - Simple Elixir wrapper for the Asana API. Based on Tentacat.
  • askimet_ex - Elixir client for Askimet Anti-Spam service.
  • assembla_api - Assembla API client for Elixir.
  • balalaika_bear - Simple VK API client for Elixir.
  • balanced - Balanced API Client for Elixir.
  • bandwidth - An Elixir client library for the Bandwidth Application Platform.
  • bing_translator - A simple Elixir interface to Bing's translation API.
  • bitmex - BitMEX client library for Elixir.
  • bitpay - Elixir core library for connecting to bitpay.com.
  • cashier - Payment gateway offering a common interface into multiple payment providers.
  • cleverbot - Simple implementation of the Cleverbot API in Elixir.
  • coinbase - A unofficial Coinbase API v1 Client.
  • commerce_billing - A payment-processing library for Elixir that supports multiple gateways (e.g. Bogus & Stripe).
  • conekta - Elixir wrapper for Conekta API.
  • correios_cep - Find Brazilian addresses by zip code, directly from Correios database. No HTML parsers.
  • currently - A tool to display cards currently assigns on Trello.
  • darkskyx - A Darksky.com (formerly forecast.io) API client for Elixir.
  • digitalocean - Elixir wrapper for the Digital Ocean API v2.
  • digoc - Digital Ocean API v2 Elixir Client.
  • diplomat - A Google Cloud Datastore client.
  • dnsimple - Elixir client for the DNSimple API v2.
  • docker - Elixir client for the Docker Remote API.
  • dockerex - Lightweight Docker Remote API Client with SSL/TLS login/connection support.
  • dogstatsd - An Elixir client for DogStatsd.
  • dpd_client - An API client for the DPD service.
  • dropbox - Dropbox Core API client for Elixir.
  • dublin_bus_api - Access to the Real Time Passenger Information (RTPI) for Dublin Bus services.
  • edgarex - Elixir interface for fetching SEC filings from EDGAR.
  • elixir_authorizenet - Unofficial client for the Authorize.Net merchant API.
  • elixir_ipfs_api - IPFS (InterPlanetary File System) API client for Elixir.
  • elixirfm - Last.fm API wrapper for Elixir.
  • elixtagram - Instagram API client for Elixir.
  • ethereumex - Elixir JSON-RPC client for the Ethereum blockchain.
  • everex - Evernote API client for Elixir.
  • everyoneapi - API Client for EveryoneAPI.com.
  • ex_changerate - Elixir client for exchangerate.host API.
  • ex_codeship - API Client for Codeship.
  • ex_statsd - A statsd client implementation for Elixir.
  • ex_twilio - Twilio API client for Elixir.
  • ex_twiml - Generate TwiML for your Twilio integration, right inside Elixir.
  • exdesk - Elixir library for the Desk.com API.
  • exfacebook - Facebook API, written in Elixir using similar methods like Ruby koala gem.
  • exgenius - Elixir library for the (undocumented) Rap Genius API.
  • exgravatar - An Elixir module for generating Gravatar URLs.
  • exgrid - interact with Sendgrid's API.
  • exjira - JIRA client library for Elixir.
  • exlingr - A Lingr client module.
  • explay - Unofficial Google Play API in Elixir.
  • exstagram - Elixir library for Instagram v1 API.
  • extwitter - Twitter client library for Elixir.
  • exurban - Elixir wrapper for UrbanAirship API.
  • facebook - Facebook Graph API Wrapper written in Elixir.
  • feedlex - Feedly RSS reader client for Elixir.
  • fluent_client - Minimalistic fluentd client.
  • forcex - Elixir library for the Force.com REST API.
  • forecast_io - Simple wrapper for Forecast.IO API.
  • gcmex - Google Cloud Messaging client library for elixir.
  • google-cloud - This repository contains all the client libraries to interact with Google APIs.
  • google_sheets - Elixir library for fetching and polling Google spreadsheet data in CSV format.
  • govtrack - A simple Elixir wrapper for the govtrack.us API.
  • gringotts - A complete payment library for Elixir and Phoenix Framework similar to ActiveMerchant from the Ruby world.
  • hexoku - Heroku API client and Heroku Mix tasks for Elixir projects.
  • honeywell - A client for the Honeywell Lyric, Round and Water Leak & Freeze Detector APIs.
  • kane - A Google Cloud Pub/Sub client.
  • keenex - A Keen.io API Client.
  • link_shrinkex - Elixir library for creating short URLs using Google's URL Shortener API.
  • m2x - Elixir client for the AT&T M2X, a cloud-based fully managed time-series data storage service for network connected machine-to-machine (M2M) devices and the Internet of Things (IoT). (Erlang Version).
  • mailchimp - A basic Elixir wrapper for version 3 of the MailChimp API.
  • mailgun - Elixir Mailgun Client.
  • mandrill - A Mandrill wrapper for Elixir.
  • marvel - CLI and Elixir API Client for the Marvel API.
  • mexpanel - An Elixir client for the Mixpanel HTTP API.
  • mixpanel - An Elixir client for the Mixpanel HTTP API.
  • mixpanel_data_client - Client for interacting with the Mixpanel Data Export API.
  • mmExchangeRate - A simple exchange rate checker and calculator based on Central Bank of Myanmar Api.
  • nadia - Telegram Bot API Wrapper written in Elixir.
  • omise - Omise client library for Elixir.
  • opbeat - Elixir client for Opbeat.
  • pagexduty - A Pagerduty client for Elixir.
  • parse_client - Elixir client for the parse.com REST API.
  • parsex - ParsEx is an Elixir HTTP Client for communicating with Parse.com's Restful API.
  • particle - An Elixir client for the Particle IoT platform's HTTP API.
  • pathway - An Erlang/Elixir client for the Trak.io REST API.
  • pay - An Elixir Lib to deal with Paypal and other payment solutions.
  • pay_pal - Elixir library for working with the PayPal REST API.
  • pigeon - HTTP2-compliant wrapper for sending iOS and Android push notifications.
  • pocketex - Pocketex is an Elixir client for the Pocket read later service getpocket.com.
  • pusher - Elixir library to access the Pusher REST API.
  • qiita_ex - A Qiita API v2 Interface for Elixir.
  • qiniu - Qiniu SDK for Elixir.
  • random_user - An Elixir client for randomuser.me API.
  • random_user_api - Another simple randomuser.me API client.
  • reap - Reap is a simple Elixir library for working with the refheap API.
  • reddhl - An headline and link puller for Reddit and its various subreddits.
  • redtube - Redtube API Wrapper written in Elixir.
  • reporter - Reporter is simple reporting App reviews library. Support AppStore and GooglePlay.
  • riemann - A Riemann client for Elixir.
  • rs_twitter - Low Level Twitter Client for Elixir.
  • semver - Utilities for working with semver.org-compliant version strings.
  • sendgrid - Send composable, transactional emails with SendGrid.
  • shopify - Easily access the Shopify API.
  • sift_ex - A Siftscience API Library for Elixir.
  • simplex - An Elixir library for interacting with the Amazon SimpleDB API.
  • slack - Slack real time messaging client in Elixir.
  • sparkpost - An Elixir library for sending email using SparkPost.
  • statix - Expose app metrics in the StatsD protocol.
  • stripe - An Elixir Library wrapping Stripe's API.
  • stripity_stripe - An Elixir Library for Stripe.
  • tagplay - Elixir client for Tagplay API.
  • telegex - Telegram bot library for Elixir.
  • telephonist - Elixir state machines for Twilio calls.
  • tentacat - Simple Elixir wrapper for the GitHub API.
  • tg_client - An Elixir wrapper which communicates with the Telegram-CLI.
  • tradehub - An Elixir client library for the Tradehub blockchain.
  • traitify_elixir - An Elixir client library for the Traitify Developer's API.
  • ui_faces - UIFaces API client for Elixir applications.
  • unsplash-elixir - An Elixir library for Unsplash.
  • vultr - Simple wrapper for the Vultr API.
  • xe - Real time conversion for currencies.
  • zanox - Zanox API.

Translations and Internationalizations

Libraries providing translations or internationalizations.

  • exkanji - A Elixir library for translating between hiragana, katakana, romaji and kanji. It uses Mecab.
  • exromaji - A Elixir library for translating between hiragana, katakana and romaji.
  • getatrex - Automatic translation tool of Gettext locales with Google Translate for Elixir/Phoenix projects.
  • gettext - Internationalization and localization support for Elixir.
  • linguist - Elixir Internationalization library.
  • parabaikElixirConverter - ParabaikElixirConverter is just a Elixir version of Parabaik converter. It can convert from Unicode to Zawgyi-One and Zawgyi-One to Unicode vice versa.
  • trans - A Elixir library to manage embedded translations into models leveraging PostgreSQL JSONB datatype.

Utilities

Utilities libraries.

  • ar2ecto - Ar2ecto is a set of mix tasks to help you migrate from ActiveRecord to Ecto.
  • async_with - A modifier for Elixir's "with" to execute all its clauses in parallel.
  • crutches - Utility library for Elixir, designed to complement the standard library bundled with the language.
  • deppie - Elixir's coolest deprecation logger.
  • dot-notes - Simple dot/bracket notation parsing/conversion for Maps/Lists.
  • dress - Cli app that makes your stdout fancy.
  • erlang-history - Hacks to add shell history to Erlang's shell.
  • erlsh - Family of functions and ports involving interacting with the system shell, paths and external programs.
  • erlware_commons - Additional standard library for Erlang.
  • ex_progress - A library for tracking progress across many tasks and sub-tasks.
  • exjprop - Elixir library for reading Java properties files from various sources.
  • fitex - FitEx is a Macro-Module which provides a bit of sugar for function definitions.
  • global - Wrapper of the Erlang :global module.
  • mandrake - Mandrake is a functional programming library that bring something else magic in elixir.
  • mnemonix - A unified interface to key/value stores.
  • plasm - Plasm is Ecto's composable query multitool, containing higher-level functions such as .count, .random, .first, .last, .find, .inserted_before, .inserted_after, etc.
  • pubsub - A Publish-Subscribe utility library that implements a pub-sub mechanism to ease the burden of communication on the business logic processes.
  • quark - A library for common functional programming idioms: combinators, currying, and partial application.
  • retry - Simple Elixir macros for linear retry, exponential backoff and wait with composable delays.
  • sips_downloader - Elixir module for downloading the ElixirSips episodes and all other files.
  • sitemap - Sitemap is the easiest way to generate Sitemaps in Elixir.
  • uef-lib - Useful Erlang Functions Library that provides modules for manipulating lists, binaries, maps, numbers, date and time. It contains some functions optimized for performance in specific cases (e.g. for file I/O operations or binary transformations).
  • vert.x - Elixir event bus bridge to Vert.x services using TCP socket.

Validations

Libraries and implementations for validation of data.

  • bankster - A IBAN account number and BIC validation library for Elixir.
  • ex_gtin - A validation library for GTIN codes under GS1 specification.
  • ex_nric - Validation for Singapore National Registration Identity Card numbers (NRIC).
  • exop - A library that allows to encapsulate business logic and validate params with predefined contract.
  • form - Document forms and validation library.
  • is - Fast, extensible and easy to use data structure validation for elixir with nested structures support.
  • jeaux - A light and easy schema validator.
  • optimal - A schema based keyword list option validator.
  • shape - A data validation library for Elixir based on Prismatic Scheme.
  • skooma - Simple data validation library for describing and validating data structures.
  • uk_postcode - UK postcode parsing and validation library.
  • vex - An extensible data validation library for Elixir.
  • voorhees - A library for validating JSON responses.

Version Control

Working with version control like git, mercury, subversion ...

  • gitex - Elixir implementation of the Git object storage, but with the goal to implement the same semantic with other storage and topics.

Video

Libraries for working with and manipulating video and multimedia.

  • ffmpex - FFmpeg command line wrapper.
  • silent_video - Convert GIFs and videos to silent videos, optimized for mobile playback.

WebAssembly

Libraries for running WebAssembly (WASM) in Elixir or running Elixir on WebAssembly.

  • lumen - An alternative BEAM implementation, designed for WebAssembly.
  • wasmex - Execute WebAssembly / WASM binaries from Elixir.

XML

Libraries and implementations working with XML (for html tools please go to the HTML section).

  • elixir-map-to-xml - Converts an Elixir map to an XML document.
  • elixir-xml-to-map - Creates an Elixir Map data structure from an XML string.
  • erlsom - Erlsom is an Erlang library to parse (and generate) XML documents.
  • exmerl - Elixir wrapper for xmerl.
  • exml - Most simple Elixir wrapper for xmerl xpath.
  • exoml - A module to decode/encode xml into a tree structure.
  • fast_xml - Fast Expat based Erlang XML parsing library.
  • meeseeks - A library for parsing and extracting data from HTML and XML with CSS or XPath selectors.
  • quinn - XML parser for Elixir.
  • saxy - Saxy is an XML parser and encoder in Elixir that focuses on speed and standard compliance.
  • sweet_xml - Query XML simply and effectively.
  • xml_builder - Elixir library for generating xml.
  • xmlrpc - Library for encoding and decoding XML-RPC for clients and servers.

YAML

Libraries and implementations working with YAML.

  • fast_yaml - Fast YAML is an Erlang wrapper for libyaml "C" library.
  • yamerl - YAML 1.2 parser in Erlang.
  • yaml_elixir - Yaml parser for Elixir based on native Erlang implementation.
  • ymlr - A YAML encoder for Elixir.
  • yomel - libyaml interface for Elixir.

Resources

Various resources, such as books, websites and articles, for improving your Elixir development skills and knowledge.

Books

Fantastic books and e-books.

  • Adopting Elixir - Bring Elixir into your company, with real-life strategies from the people who built Elixir and use it successfully at scale. This book has all the information you need to take your application from concept to production (2017).
  • Craft GraphQL APIs in Elixir with Absinthe - Upgrade your web API to GraphQL, leveraging its flexible queries to empower your users, and its declarative structure to simplify your code (2017).
  • Elixir Cookbook - This book is a set of recipes grouped by topic by Paulo A Pereira (2015).
  • Elixir do zero ร  concorrรชncia - (Portuguese) The book provides introduction to functional and concurrent programming with Elixir by Tiago Davi(2014).
  • Elixir in Action - A brief intro to the language followed by a more detailed look at building production-ready systems in Elixir by Saลกa Juriฤ‡ (2015).
  • Erlang and Elixir for Imperative Programmers - Introduction to Erlang and Elixir in the context of functional concepts by Wolfgang Loder (2016).
  • Erlang in Anger - This book intends to be a little guide about how to be the Erlang medic in a time of war by Fred Hebert (2014).
  • Functional Web Development with Elixir, OTP, and Phoenix - Open doors to powerful new techniques that will get you thinking about web development in fundamentally new ways (2017).
  • Getting Started - Elixir - PDF, MOBI, and EPUB documents for Elixir's Getting Started tutorial (2016).
  • Hands-on Elixir & OTP: Cryptocurrency trading bot - Want to learn Elixir & OTP by creating a real-world project? With Hands-on Elixir & OTP: Cryptocurrency trading bot you will gain hands-on experience by working on an interesting software project. We will explore all the key abstractions and essential principles through iterative implementation improvements. (2021).
  • Introducing Elixir - A gentle introduction to the language, with lots of code examples and exercises by Simon St. Laurent and J. David Eisenberg (2013).
  • Learn Functional Programming with Elixir - Donโ€™t board the Elixir train with an imperative mindset! To get the most out of functional languages, you need to think functionally (2017).
  • Metaprogramming Elixir: Write Less Code, Get More Done (and Have Fun!) - Thorough explanation on how to exploit Elixir's metaprogramming capabilities to improve your Elixir coding by Chris McCord (2015).
  • Phoenix for Rails Developers - This book shows how Rails developers can benefit from their existing knowledge to learn Phoenix. By Elvio Vicosa (2017).
  • Phoenix in Action - builds on your existing web dev skills, teaching you the unique benefits of Phoenix along with just enough Elixir to get the job done. By Geoffrey Lessel (2017).
  • Phoenix Inside Out - The goal of this series is to enable you as a Confident Phoenix developer. There are 3 different editions to address varied needs of devs jumping into Phoenix.
  • Programming Elixir 1.6 - The book provides introduction to functional and concurrent programming with Elixir by Dave Thomas (2014).
  • Programming Phoenix 1.4 - Definitive guide to build web applications with the Phoenix framework by Chris McCord, Josรฉ Valim and Bruce Tate (2015).
  • The Beam Book - A description of the Erlang Runtime System ERTS and the virtual Machine BEAM.
  • The Little Elixir & OTP Guidebook - A book for learning Elixir and OTP through small to medium-sized projects by Benjamin Tan Wei Hao (2014).
  • ร‰tudes for Elixir - A collection of exercises to program in Elixir by J. David Eisenberg (2013) (Github Repo).

Cheat Sheets

Useful Elixir-related cheat sheets.

Community

Getting in contact with the community via chat or mailinglist.

  • #elixir-lang - The IRC Channel #elixir-lang on Freenode.
  • Elixir Forum - Community run discussion forums for all things Elixir.
  • elixir-lang-core - Mailinglist for Elixir Core development, use "talk" for questions and general discussions.
  • elixir-lang-talk - Official Elixir Mailinglist for questions and discussions.
  • ElixirSlack - Elixir Slack Community.

Editors

Editors and IDEs useable for Elixir/Erlang

  • Alchemist - Elixir Tooling Integration Into Emacs.
  • Alchemist-Server - Editor/IDE independent background server to inform about Elixir mix projects.
  • Alchemist.vim - Elixir Tooling Integration Into Vim.
  • Atom - Elixir language support for Atom.
  • atom-elixir - An Atom package for Elixir.
  • atom-iex - Run an IEx session in Atom.
  • elixir-ls - A frontend-independent IDE "smartness" server for Elixir. Implements the JSON-based "Language Server Protocol" standard and provides debugger support via VS Code's debugger protocol.
  • elixir-tmbundle - A TextMate and SublimeText bundle for Elixir.
  • elixir_generator - Vim plugin to generate Elixir module and test files with one command.
  • ElixirSublime - Elixir plugin for SublimeText 3 that provides code completion and linting.
  • ilexir - IDE-like things for Elixir in Neovim.
  • intellij_elixir - Elixir helpers for intellj-elixir, the Elixir plugin for JetBrains IDEs.
  • Jetbrains - Elixir for IntelliJ IDEA, RubyMine, WebStorm, PhpStorm, PyCharm, AppCode, Android Studio, 0xDBE.
  • Notepad++ - Elixir syntax highlighting for Notepad++.
  • Nova Elixir - Syntax highlighting and code completion for Elixir files (.ex, .exs, .eex) in Nova.
  • nvim - Neovim host for writing plugins in Elixir.
  • phoenix-snippets - Phoenix Snippets for Atom.
  • vim-elixir - Vim configuration files for Elixir.
  • vim-ex_test - Vim test runner based on Thoughtbots vim-rspec.
  • vim-mix-format - Async mix format for Vim and Neovim.
  • vscode-elixir - Elixir Support for Visual Studio Code.
  • vscode-elixir-ls - Elixir language support and debugger for VS Code, powered by ElixirLS.

Newsletters

Useful Elixir-related newsletters.

  • Elixir Digest - A weekly newsletter with the latest articles on Elixir and Phoenix.
  • Elixir Radar - The "official" Elixir newsletter, published weekly via email by Plataformatec.
  • ElixirWeekly - The Elixir community newsletter, covering stuff you easily miss, shared on ElixirStatus and the web.

Other Awesome Lists

Other amazingly awesome lists can be found at jnv/lists or bayandin/awesome-awesomeness.

Reading

Elixir-related reading materials.

Screencasts

Cool video tutorials.

  • Alchemist Camp - Alchemist.Camp has many hours of free, project-based Elixir-learning screencasts.
  • Confreaks (Elixir) - Elixir related conference talks.
  • Elixir for Programmers - Functional, Parallel, Reliable (and fun!), taught by Dave Thomas.
  • Elixir Sips - Tiny screencasts for learning Elixir.
  • ElixirCasts.io - Simple screencasts to help you learn Elixir and Phoenix.
  • ExCasts - Elixir and Phoenix screencasts for all skill levels.
  • Frathon's YouTube Channel - YouTube channel dedicated to promote functional programming, publishing "real world" programming videos in Elixir like "Create a cryptocurrency trading bot in Elixir" series.
  • LearnElixir.tv - Beginner friendly, in-depth, step by step screencasts.
  • LearnPhoenix.tv - Learn how to build fast, dependable web apps with Phoenix.
  • Meet Elixir - Walk through some features and concepts of Elixir by Josรฉ Valim.

Styleguides

Styleguides for ensuring consistency while coding.

Websites

Useful Elixir-related websites.

Contributing

Please see CONTRIBUTING for details.

Awesome Elm


Awesome Build Status

A community driven list of useful Elm tutorials, libraries and software. Inspired by the awesome list thing. Feel free to improve this list.

Table of Contents


Learn

Learn what this awesome thing is.

Outdated Tutorials and books (Elm 0.18 or earlier)

:top: back to top


Articles

Read the essentials. Check the official Elm blog: elm-lang.org/blog

Why Elm?

Miscellaneous articles

Outdated articles (Not relevant for current Elm architecture)

  • Elm for Web Developers - A collection of notes for web developers looking into moving to Elm.
  • Elm & Components - A blog post describing a possible approach to reducing TEA boilerplate. Useful for component libraries and anyone interested in seeing the amazing things you can do with function types.
  • Composing Features and Behaviours in the Elm Architecture - An article describing how to organize code that follows the Elm architecture into independent features, how to communicate between features, and how to group some of these features together to assemble larger features.
  • Getting Started with Elm - Series of Elm education tutorials.
  • Elm & Guarantees - a realistic look at where Elm is and isnโ€™t superior to other options.

:top: back to top


Videos

Watch great talks about Elm

Playlists

Miscellaneous videos

Video tutorials

:top: back to top


News


Podcasts

Listen to podcasts about Elm

  • Elm Town - A podcast about the people in the Elm community.
  • Implementing Elm - A deep dive into specific problems to help the Elm community.
  • Elm Radio - Tune in to the tools and techniques in the Elm ecosystem.

Individual Podcast episodes

:top: back to top


Testing

Tools and libraries to test your Elm applications

:top: back to top


Code generators

:top: back to top


Package managers

Place to share Elm libraries.

  • elm-package - Command line tool to share Elm libraries.

:top: back to top


Libraries

You can find hundreds of high quality packages at:

  • Elm packages - The official registry
  • Elm Catalog - Find packages in a catalog organized into categories.
  • Elm Search - Search Elm documentation for operators, function signatures, etc.

:top: back to top


Boilerplates

Good starting point for a new Elm project.

  • create-elm-app - Create Elm apps with no build configuration.
  • elm-boil - Command Line Utility for creating an Elm boilerplate project easy to run, build and get deployed
  • elm-live - A flexible dev server for Elm. Live reload included.
  • elm-webpack-4-starter - Elm webpack 4 starter template.
  • example-elm-hot-webpack - Example showing hot module reloading for Elm 0.19 and Webpack
  • Elm Batteries - A project template and generator for Elm, Parcel, Cypress and Netlify
  • IHP + Elm - The IHP Haskell Framework provides a built-in Elm boilerplate, useful when working with elm in the frontend and haskell in the backend

Outdated Boilerplates

  • elm-webpack-starter - A simple Webpack setup for writing Elm apps.
  • elm-app-boilerplate - A fully-featured base project for Elm apps: Webpack, HMR, ES6, JS and Elm tests, Semantic UI, sample code and more.
  • elmkit - A lightweight Brunch based setup for web app. Includes Brunch, Hot Module Replacement, Elm, Scss, Elm tests.
  • elm-boilerplate - A simple Makefile able to create Elm app.
  • elm-init - Interactive setup for new Elm projects.
  • elm-new - Generate initial project scaffolding based on a template.
  • elm-webpack-starter-kid - A very very basic elm + webpack 4 template.

:top: back to top


Frameworks

Projects that bring a framework approach to Elm (scaffolding, route generation, etc)

  • elm-spa - single page apps made easy
  • Spades - Start an Elm SPA ready to the real world

Static analysis

  • Elm Analyse - Linter for the Elm programming language.
  • Elm Review - Code reviewer for the Elm programming language.

:top: back to top


Static site generators

:top: back to top


Showcase generators

  • Elm Book - Rich documentation builder based on Storybook and HexDocs.
  • Elm UI Explorer - Showcase your views and states.

:top: back to top


Run Elm

  • Ellie - The Elm Live Editor
  • Elm Editor - Advanced Elm Live Editor
  • run-elm โ€” Run Elm code from the command line
  • elm-instant - atom package to try your elm code from the editor. Provides a visual REPL and a preview pane.
  • Glitch - Build fast, full-stack web apps in your browser.
  • Elm Live - A flexible dev server for Elm. Live reload included!

:top: back to top


Compile and bundle

  • elm-compiler - Compiler for the Elm programming language.
  • elm-webpack-loader - Webpack loader for the Elm programming language.
  • Parcel - Bundle Elm using Parcel
  • grunt-elm - Grunt plugin that compiles Elm files to JavaScript.

:top: back to top


Other tools

Useful tools related to Elm.

:top: back to top


Editor plugins

Tools to support Elm in code editors.

Atom

Emacs

  • emacs-elm-mode - Syntax highlighting, Elm REPL, Elm make and Elm format integration for the Emacs editor.

IntelliJ

Sublime Text

Vim/Neovim

Visual Studio Code

Other editors

  • elm-light-table - Syntax highlighting, REPL, autocompletion, package management and much more for Light Table.

:top: back to top


Examples

Some good apps written in Elm.

Games

  • elm-games - An excellent list of games made in Elm

:top: back to top


Community and Support

Where to find help.

  • Discourse - Elm Discourse instance (official forum).
  • Reddit - Elm board on reddit.
  • IRC - Ask questions on elm freenode.
  • Slack - Elm slack community.

:top: back to top


Conferences

:top: back to top


Inspired by Elm

Some projects influenced by Elm

  • Bolero - F# in WebAssembly using Elmish
  • Bucklescript-TEA - The Elm Architecture based on OCaml / Reason and Bucklescript
  • Elchemy - Write Elixir code using statically-typed Elm-like syntax
  • Elmish - Elm-like abstractions for F# apps
  • Fabulous - F# Functional App Development, using declarative dynamic UI
  • Iced - A cross-platform GUI library for Rust, inspired by Elm
  • Redux - A predictable state container for JavaScript apps.
  • SwiftUI
  • MAUI - .NET Multi-platform App UI
  • Oolong - An Elm inspired Model-View-Update (MVU) implementation for Kotlin multiplatform.

:top: back to top


Beyond the DOM

At the moment Elm is heavily targeted towards the browser, here are some experiments on using Elm outside the DOM:

  • iOS A POC for using Elm 0.18 for native iOS Applications
  • elmish-wasm A POC for compiling elm to Web Assembly
  • elm-serverless Run Elm 0.18 on Cloud Functions using the Serverless Frameworks
  • elm-posix - Write CLI programs using Elm

:top: back to top


Who to follow

Follow for fresh updates for free. Use #elmlang or #elm hashtag.

| | | --- | --- | --- | --- Official Elm | Evan Czaplicki | Richard Feldman | Elm Weekly

:top: back to top


More awesome

Discover other amazingly awesome lists.

Awesome Elm is just a part of awesome thing, get more here:

:top: back to top


License

CC0

Awesome Erlang Awesome Analytics

A curated list of amazingly awesome Erlang libraries, resources and shiny thing inspired by awesome-elixir.

Package Management

Libraries and tools for package and dependency management.

  • hex.pm - A package manager for the Erlang ecosystem.

Release Management

Libraries and tools for release management.

  • relx - A release assembler for Erlang.

Configuration Management

Libraries and tools related to configuration management.

  • stillir - Cache environment variables as Erlang app variables.

Codebase Maintenance

Libraries and tools to maintain a clean codebase.

  • elvis - Erlang Style Reviewer.

Web Frameworks

Web development frameworks.

  • Axiom - A micro-framework, inspired by Ruby's Sinatra.
  • ChicagoBoss - A server framework inspired by Rails and written in Erlang.
  • cowboy - A simple HTTP server.
  • Giallo - A small and flexible web framework on top of Cowboy.
  • MochiWeb - An Erlang library for building lightweight HTTP servers.
  • N2O - WebSocket Application Server.
  • Nitrogen - Framework to build web applications (including front-end) in pure Erlang.
  • Zotonic - High speed, real-time web framework and content management system.

Web Framework Components

Standalone component from web development frameworks.

  • cb_admin - An admin interface for Chicago Boss.
  • cb_websocket_controller - A template for implementing a Websocket controller for ChicagoBoss.
  • giallo_session - A session management library for the Giallo web framework.
  • simple_bridge - An abstraction layer providing a unified interface to popular Erlang web servers (Cowboy, Inets, Mochiweb, Webmachine, and Yaws).

HTTP

Libraries for working with HTTP and scraping websites.

  • bullet - Simple, reliable, efficient streaming for Cowboy.
  • gun - Erlang HTTP client with support for HTTP/1.1, SPDY and Websocket.
  • hackney - Simple HTTP client in Erlang.
  • ibrowse - Erlang HTTP client.
  • lhttpc - A lightweight HTTP/1.1 client implemented in Erlang.
  • shotgun - For the times you need more than just a gun.

Testing

Libraries for testing codebases and generating test data.

  • PropEr - A QuickCheck-inspired property-based testing tool for Erlang.
  • tracerl - Dynamic tracing tests and utilities for Erlang/OTP

Logging

Libraries for generating and working with log files.

Monitoring

Libraries for gathering metrics and monitoring.

  • entop - A top-like Erlang node monitoring tool.
  • eper - A loose collection of Erlang Performance related tools.
  • Exometer - An Erlang instrumentation package.
  • folsom - An Erlang based metrics system inspired by Coda Hale's metrics.
  • statsderl - A statsd Erlang client.
  • vmstats - Tiny Erlang app that works in conjunction with statsderl in order to generate information on the Erlang VM for graphite logs.

Deployment

Libraries and tools related to deployment of Erlang/OTP applications.

Distributed Systems

Tools for stress/load testing, latency issues, etc. across microservices.

  • Typhoon - Stress and load testing tool for distributed systems that simulates traffic from a test cluster toward a system-under-test (SUT) and visualizes related latencies.

Code Analysis

Libraries and tools for analysing, parsing and manipulation codebases.

  • Concuerror - Concuerror is a systematic testing tool for concurrent Erlang programs.
  • eflame - A Flame Graph profiler for Erlang.
  • geas - Geas is a tool that will detect the runnable official Erlang release window for your project, including its dependencies and provides many useful informations.

Build Tools

Project build and automation tools.

  • rebar - Erlang build tool that makes it easy to compile and test Erlang applications, port drivers and releases.
  • rebar3 - A build tool for Erlang which can manage Erlang packages from Hex.pm. See more at rebar3.org
  • sync - On-the-fly recompiling for Erlang.

Geolocation

Libraries for geocoding addresses and working with latitudes and longitudes.

  • erl-rstar - An Erlang implementation of the R*-tree spacial data structure.
  • GeoCouch - A spatial extension for Couchbase and Apache CouchDB.
  • Teles - An Erlang network service for manipulating geographic data.

Debugging

Libraries and tools for debugging code and applications.

  • tx - An HTML Erlang term viewer, starts own webserver and displays any term you give it from your Erlang node.

Actors

Libraries and tools for working with actors and such.

  • poolboy - A hunky Erlang worker pool factory.

Date and Time

Libraries for working with dates and times.

  • erlang_localtime - Erlang library for conversion from one local time to another.
  • qdate - Erlang date, time, and timezone management: formatting, conversion, and date arithmetic.

ORM and Datamapping

Libraries that implement object-relational mapping or datamapping techniques.

  • boss_db - A sharded, caching, pooling, evented ORM for Erlang.
  • epgsql - PostgreSQL Driver for Erlang.
  • mysql-otp - MySQL/OTP โ€“ MySQL driver for Erlang/OTP.
  • pgsql_migration โ€“ PostgreSQL migrations for Erlang.

Queue

Libraries for working with event and task queues.

  • dq - Distributed Fault Tolerant Queue library.
  • ebqueue - Tiny simple blocking queue in erlang.
  • pqueue - Erlang Priority Queues.
  • tinymq - A diminutive, in-memory message queue for Erlang.

Authentication

Libraries for implementing authentications schemes.

  • oauth2 - Erlang Oauth2 implementation.

Text and Numbers

Libraries for parsing and manipulating text and numbers.

  • ejsv - Erlang JSON schema validator.
  • eql - Erlang with SQL or not.
  • jiffy - JSON NIFs for Erlang.
  • jsx - An erlang application for consuming, producing and manipulating json.
  • miffy - Jiffy wrapper which returns pretty maps.
  • qsp - Enhanced query string parser for Erlang.
  • rec2json - Generate JSON encoder/decoder from record specs.

REST and API

Libraries and web tools for developing REST-ful APIs.

  • leptus - Leptus is an Erlang REST framework that runs on top of cowboy.
  • rooster - rooster is a lightweight REST framework that runs on top of mochiweb.

Caching

Libraries for caching data.

  • cache - In-memory Segmented Cache

Third Party APIs

Libraries for accessing third party APIs.

Networking

Libraries and tools for using network related stuff.

  • barrel_tcp - barrel_tcp is a generic TCP acceptor pool with low latency in Erlang.
  • gen_rpc - A scalable RPC library for Erlang-VM based languages.
  • gen_tcp_server - A library that takes the concept of gen_server and introduces the same mechanics for operating a TCP server.
  • gossiperl - Language agnostic gossip middleware and message bus written in Erlang.
  • nat_upnp - Erlang library to map your internal port to an external using UNP IGD.
  • ranch - Socket acceptor pool for TCP protocols.

Internet of Things

Libraries and tools for interacting with the physical world.

  • GRiSP - Run the Erlang VM on an IoT board with many hardware interfaces and low-level drivers using a small realtime unikernel called RTEMS
  • lemma_erlang - A lemma for IDEO's Noam internet-of-things prototyping platform.

Algorithms and Datastructures

Libraries and implementations of algorithms and datastructures.

  • datum - A pure functional and generic programming for Erlang
  • erlando - A set of syntax extensions like currying and monads for Erlang.
  • statebox - Erlang state "monad" with merge/conflict-resolution capabilities.
  • riak_dt - Erlang library of state based CRDTs.

Translations and Internationalizations

Libraries providing translations or internationalizations.

Miscellaneous

Useful libraries or tools that don't fit in the categories above.

  • erlang-history - Hacks to add shell history to Erlang's shell.
  • erld - erld is a small program designed to solve the problem of running Erlang programs as a UNIX daemon.

Resources

Various resources, such as books, websites and articles, for improving your Erlang development skills and knowledge.

Websites

Useful web and Erlang-related websites and newsletters.

  • Erlang Bookmarks - All about erlang programming language [powerd by community].
  • Erlang Central - An awesome collections of erlang resource along with live community chat for discussing and seeking help.
  • Planet Erlang - Planet site/RSS feed of blog posts covering topics across the Erlang ecosystem.
  • Spawned Shelter - Erlang Spawned Shelter. A collection of the best articles, videos and presentations related to Erlang.

Books

Fantastic books and e-books.

Web Reading

General web-development-related reading materials.

Erlang Reading

Erlang-releated reading materials.

Screencasts

Cool video tutorials.

Contributing

Please see CONTRIBUTING for details.

Julia.jl

Julia.jl aggregates and curates decibans of knowledge resources for programming in Julia, an all-purpose programming language that addresses the needs of high-performance numerical analysis and computational science.


ยง1. INDEX

  • AI :: Algorithms, DataMining, Data Structures, HMM, ML, NLP, ...
  • Actuarial Science :: Software related to the subcategories of econometrics, finance, etc.
  • API :: Language API's - C++, Fortran, Go, Java, JavaScript, MATLAB, Perl, Python, R, ...
  • Biology :: Bioinformatics, genomics, agriculture, food science, medicine, genetic engineering, Neuroscience, et. al...
  • Desktop Applications :: Front-end client application software, viz. Debuggers, Documentation generators, Desktop User Interface for word processors, GUI spreadsheets, etc..
  • DevOps :: DevOps tools for infrastructure management, continuous integration (CI), continuous delivery (CD), package management, release engineering (RE), release management (RM), software configuration management (SCM), Test Driven Development, Sandbox, Functional/ Unit testing,... Quality-related tools, et al..
  • Chemistry :: Analytical chemistry, cheminformatics, crystallography, nanochemistry, nuclear chemistry ...
  • Database :: NoSQL, RDBMS and Middleware API's.
  • Data Science :: OpenData + OpenScience, Free Data Sets, Reproducible research, RDM, Clinical Research Data, Metadata, Library data, Computational reproducibility, etc.
  • Earth Science :: Software related to the subcategories of cartography, climatology, geobiology, geochemistry, geography, geoinformatics, geologyโ€Ž, geophysicsโ€Ž, geoscience/GIS, geomathematics, meteorology, oceanography, etc...
  • FileIO :: File IO (Input/Output) functionality and support for various data types and file formats.
  • Graphics :: Plotting, Graphics and other Visualization tools.
  • i18n-L10n :: Transliteration, Internationalisation (i18n) and Localisation (L10n)
  • Machines :: Software for cross-platform hardware, Robotics, and other API libraries for machine-related software.
  • Mathematics :: Algebra, Geometry,... anything Math related.
  • Optimization :: Mathematical optimization.
  • Physics :: Julia software related to Physics.
  • Programming Paradigms :: Programming Paradigms and language concepts that are used in the type system, data types, etc..
  • Publications :: Research Papers (journal and conference publications).
  • QA :: Quality Assurance in Julia.
  • Resources :: List of community resources, development links, including events, (un)conferences, forums/ meetup groups, NEWS, blogs, cookbooks, cheatsheets, IJulia NoteBooks, and other useful resources.
  • Server :: HTTP/Web, Networking, and other server-side utils...
  • Space Science :: Astronomy, Imaging, Planetary and space science related packages.
  • Probability & Statistics :: Actuarial Science, Finance, economics, stochastic, insurance Statistics, Operations research and Benchmarks and Optimization toolkits....
  • Super Computing :: HPC, Distributed Computing, Cloud computing, Cluster computing, Grid computing, Kernels and architectures like ARM, MIPS, GPU, CUDA, etc...
  • Utilities :: Handy toolkits and other general utilities for your Desktop.

DISCLAIMER : As a new language in the scientific computing scene it is frequently in a state of flux due to the addition of new libraries, resulting in frequent changes and page reordering. Since the Julia.jl repo only provides a list (of links) of Julia packages out in the wild, it should not be considered an endorsement of any particular package for software quality, technical features, coding style/organization, etc...


ยง2. LICENSE

  • COPYRIGHT ยฉ 2012-Now SVAKSHA, herewith dual-licensed for the data (ODbL-v1.0+) and the software (AGPLv3+), respectively.

ยง2.1. AGPLv3 and ODbL

This repo uses multiple licences for data and code, viz. ODbL and AGPLv3

  • The data (aggregated and curated decibans of knowledge resources for Julia language) in this repository (Julia.jl) is released under the Open Database License (ODbL-v1.0). The Open Database License (ODbL) grants anyone the freedom to share, create and adapt the data or database with proper credit attribution as specified in the license and offer any new work under the same terms, and release a public copy if using the new work for commercial purposes.
  • The software used in Julia.jl is released under the AGPLv3 License, and above, as detailed in the LICENSE-AGPLv3.md file.
  • ALL copies and forks of this work must retain the Copyright, respective Licence files for program code (AGPLv3) and data (ODbL) along with this permission notice in all copies or substantial portions of the new work.

The motivation for this change is to make it easier for people to re-use this data as a knowledge resource within a database. For example, julia-observer is a visual tool for browsing through packages that pulls data from Julia.jl, General and various sources. By releasing the website code publicly are an example on how one can build upon or transform the data to benefit the community.

ยง2.2. Mirrors

  • Bitbucket :: git clone git@bitbucket.org:svaksha/Julia.jl.git
  • GitLab :: git clone git@gitlab.com:svaksha/Julia.jl.git

CONTRIBUTE

Contributions to Julia.jl are welcome in the form of pull requests (PR). Here are some guidelines and tips on how to submit a Bug Report (BR) and/or PR:

Guidelines

  1. The Julia community has ethical guidelines aimed at respecting Copyright, Licenses and attribution standards{1} and {2} which you are requested to follow while submitting materials to be listed. Additionally, if you find any material (or code repos) that violates these ethical standards, please file a bug report for their removal from Julia.jl.
  2. References : + {1} https://github.com/JuliaLang/julialang.github.com/issues/200 + {2} https://github.com/JuliaLang/julialang.github.com/issues/194
  3. Commercial Links: Almost all the resources in this repo are Free/Libre software resources, so in the interest of continuing to maintain the "Libre" software spirit, please only submit those resources that are free and without paid/commercial interests.

BugReport-PullRequest

  1. Add your link as per the top-level Category page within the topic sub-section(s), in alphabetical order, with notes (if any) in the markdown files. Before creating a new top-level tag within the various categories, please check wikipedia or other resources first. If you are unable to decide, discuss it via a BR (not a PR ;-)).
  2. In a CLI, type julia Julia.jl which will run the scraper. Commit the db.csv file too.
  3. For broken links or outdated information, submit a bug report (BR), or make the necessary changes and submit a PR. Both are welcome. Please submit separate PR's for each link or change added.
  4. For Documentation and cookbooks, check if it matches the categories listed, else, list it on the Resources.md page.
  5. For those unable to use git, create a github account, then fork the Julia.jl repo on the user interface. Then edit the page by clicking on the "pencil" icon on the markdown page, then click on save and submit a PR. Github does this automatically in 8 steps.

Package Status

Please note that this repo lists packages that are outdated and/or worked on older versions of Julia. These continue to remain listed as its openly available along with the hope that someone may want to continue with the work as a fork as it aligns with their research or work. These comments led to a BR discussing the addition of metadata tags that will enable programmers and package users to easily distinguish the status of various Julia packages that are under various stages of development. Currently, METADATA has a tag system but not all package authors use it, making it harder for lay users to know if the package maintenance is active or not.

Lets experiment with asking package authors and core-commiters to tag their Julia packages on the following criteria :

On a scale of 1 to 5 (1=lowest,..5=highest), please rank your package for,

  • Usability : Does the package do what it says it does? is it easy to figure out? Is the package production-ready and actively maintained (issues/PRs are responded and resolved in a timely manner, and maintenance and testing is at par with Julia release cycles).
  • Quality : Does the package have tests? are there lots of bugs? Do you have good documentation? Can it be used in production environments that expect prompt security patches?
  • Activity : Should a 3rd party user bother to use your library, or is it really only intended to be used by the package author? Let's say, an experimental "throw-away toy repo" whose development has now been abandoned.
  • License : Which software license do you use? If you dont have a license, please state None.

Stargazers

Stargazers over time

Awesome Lua Awesome

A curated list of quality Lua packages and resources.

Inspired by the lists awesome, awesome-awesomeness, and awesome-nodejs.

Packages

Resources

Implementations, Interpreters, and Bindings

  • Lua - Lua's original ANSI C interpreter.
  • Lua Repo - The official Lua repo, as seen by the Lua team, mirrored to GitHub.
  • LuaJIT - High-performance Just-In-Time compiler for Lua.
  • LLVM-Lua - Compiles Lua to LLVM.
  • lua.vm.js - Lua VM on the web; a direct port of the C interpreter via LLVM, emscripten, and asm.js.
  • Moonshine - A Lua VM implemented in JavaScript. Slower than lua.vm.js, but with better docs, examples, and JS interfacing.
  • Fengari - The Lua VM rewritten in Javascript with seamless JS and DOM interoperability.
  • MoonSharp - A Lua interpreter written entirely in C# for the .NET, Mono and Unity platforms.
  • UniLua - A pure C# implementation of Lua 5.2, focused on compatibility with the Unity game engine.
  • lupa - Python bindings to LuaJIT2.
  • golua - Golang bindings to the Lua C API.
  • GopherLua - Lua 5.1 VM and compiler implemented in Go with Go APIs.
  • LuaBridge - A lightweight library for mapping data, functions, and classes back and forth between C++ and Lua.

Note: From LuaJIT to Lua to lua.vm.js to Moonshine, a basic benchmark sees performance drop by roughly a factor of 6 with each hop.

Package Managers

  • LuaRocks - De-facto tool for installing Lua modules as packages called "rocks", plus public rock repository and website. Much like npm or pip.

Build Tools and Standalone Makers

  • Lake - A build engine written in Lua, similar to Ruby's rake.
  • Luabuild - Highly customizable Lua 5.2 build system.
  • luastatic - Simple tool for turning Lua programs into standalone executables.
  • omnia - A batteries-included creator of standalone executables, built on top of luastatic.

Debugging and Profiling

  • ProFi - Simple profiler that works with LuaJIT and produces a report file.
  • luatrace - Toolset for tracing/analyzing/profiling script execution and generating detailed reports.
  • StackTracePlus - Drop-in upgrade to Lua's stack traces which adds local context and improves readability.
  • MobDebug - Powerful remote debugger with breakpoints and stack inspection. Used by ZeroBraneStudio.
  • lovebird - Browser-based debug console. Originally made for Lร–VE, but works in any project with LuaSocket support.

IDEs and Plugins

  • Lua Development Tools - Eclipse plugin which provides code completion, debugging, and more. Built on Metalua.
  • Lua for IDEA - IntelliJ IDEA plugin which, among other things, provides code completion, smart highlighting, and experimental debugging.
  • ZeroBraneStudio - Lightweight, customizable, cross-platform Lua-dedicated IDE with code completion and analysis, written in Lua. Has broad debugging support for numerous Lua engines.
  • BabeLua - Lua editor/debugger extension for VS2012-13 with highlighting, auto-completion, linting, and formatting capabilities.
  • lua-mode - Emacs major mode for editing Lua.
  • vscode-lua - VSCode intellisense and linting.

Utility Belts

  • Lua Fun - High-performance functional programming library designed for LuaJIT.
  • Moses - Functional programming utility belt, inspired by Underscore.js.
  • Penlight - Broad, heavyweight utility library, inspired by Python's standard libs. Provides the batteries that Lua doesn't.
  • lua-stdlib - Middle-weight standard library extension; adds some useful data structures, utility functions, and basic functional stuff.
  • Microlight - A little library of useful Lua functions; the 'extra light' version of Penlight.
  • compat53 - Compatibility module providing Lua-5.3-style APIs for Lua 5.2 and 5.1.
  • RxLua - Reactive Extensions, Observables, etc.

Game Engines

  • Lร–VE 2D - Desktop game development platform. Cross-platform, feature-complete, well-adopted.
  • Corona SDK - Development platform for iOS and Android. Proprietary, but used by numerous top games and apps, totaling over 150 million downloads.
  • MOAI - Open source, cross-platform, mobile game development framework. Minimalist C++ engine powered by Lua scripting.
  • Drystal - Open source, games can run on Linux or on any platform with a recent web browser.
  • Amulet - Open source, audio/visual toolkit suitable for small games and experimentation. It runs on Windows, Mac, Linux, HTML5 and iOS.
  • Lร–VR - 3D framework for creating virtual reality experiences, inspired by Lร–VE 2D.

Game Development

  • Corona
  • Coronium - Simple cloud platform supporting analytics, data objects, user management, and more.
  • Lร–VE
  • awesome-love2d - A list like this one, but focused on game dev and the Lร–VE platform.
  • lurker - Shortens the iteration cycle by auto-swapping changed Lua files in a running Lร–VE project.
  • HUMP - A set of lightweight helpers for Lร–VE; a game-oriented utility belt.
  • MOAI
  • moaifiddle - Edit and share short scripts for the MOAI game engine and run them in the browser using WebGL.
  • Jumper - Fast, lightweight, and easy-to-use pathfinding library for grid-based games.
  • lume - Utility belt library geared toward game development.
  • NoobHub - Network multiplayer for Corona, Lร–VE, and more, following a simple pub-sub model.
  • Collision detection
  • bump.lua - Minimal rectangle-based collision detection which handles tunnelling and basic collision resolution.
  • HardonCollider - Detect collisions between arbitrarily positioned and rotated shapes of any type.
  • Tweening
  • flux - A fast, lightweight tweening library for Lua with easing functions and the ability to group tweens together.
  • tween.lua - Small library for tweening, with several easing functions.
  • Examples
  • termtris - A tetris clone, written in literate style with "an emphasis on learn-from-ability".
  • PacPac - A Pac-man clone, made with Lร–VE.
  • Mari0 - Fusion of Mario and Portal, made with Lร–VE. See also its wikipedia entry.
  • Journey to the Center of Hawkthorne - 2D platformer based on Community's Digital Estate Planning episode, made with Lร–VE.

Logging

  • lua-log - Asynchronous logging library with pluggable writers for file system, network, ZeroMQ, and more.
  • LuaLogging - Log4j-inspired logging library supporting various appenders.
  • luasyslog - Log to syslog, based on LuaLogging.

Web/Networking Platforms

  • OpenResty - A fast and scalable web application platform created by extending Nginx with Lua. Today's de-facto Lua web platform, used heavily by Cloudflare, Taobao, Tencent, and others.
  • turbo - Event-driven, non-blocking, LuaJIT-based networking suite and framework, inspired by Tornado.
  • Kepler Project - A collection of web-oriented projects using a common set of standards and components.
  • Pegasus.lua - Pegasus.lua is a http server to work with web applications written in Lua language.

OpenResty

  • awesome-resty - A list like this one, but focused on OpenResty.
  • Core platform
  • ngx_lua - The core piece of OpenResty. Embeds Lua in Nginx and exposes, among other things, the cosocket API for non-blocking sockets (compatible with LuaSocket's API).
  • OpenResty GitHub Organization - Home of the repositories for ngx_lua, ngx_openresty, and many related modules.
  • Third-party modules
  • lua-resty-http - Lua HTTP client driver, built on the cosocket API.
  • Frameworks & tools
  • Lapis - Full-stack framework for Lua and OpenResty. Like the Django or Rails of Lua. Supports Moonscript.
  • ledge - Lua module providing scriptable, RFC-compliant HTTP cache functionality.
  • Sailor โ€” An MVC web framework compatible with OpenResty, Apache and other webservers.
  • Kong - Microservice & API Management Layer.

Search this page for 'OpenResty' to find related packages under other categories (data stores in particular).

Command-line Utilities

  • ansicolors - Simple function for printing to the console in color.
  • cliargs - A simple command-line argument parsing module.
  • lua-term - Terminal operations and manipulations.
  • argparse - A feature-rich command line parser inspired by argparse for Python.

Concurrency and Multithreading

  • Coroutine-based multitasking:
  • Lumen - Simple concurrent task scheduling.
  • ConcurrentLua - Implements an Erlang-style message-passing concurrency model.
  • cqueues - Library for managing sockets, signals, and threads based on an event loop with coroutines.
  • Multithreading:
  • llthreads - A simple wrapper for low-level pthreads & WIN32 threads.
  • llthreads2 - Newer rewrite of llthreads.
  • lanes - Library implementing a message passing model with one OS thread per Lua thread.
  • luaproc - Message-passing model which allows multiple threads per OS thread and easily generalizes across a network. See also the paper where it originated.

For more on the differences (particularly between lanes and luaproc), see this comparison of options; somewhat dated, but covers how each one works and the significant differences.

Templating

  • lustache - Mustache template implementation.
  • etlua - Embedded Lua templates, ERB-style.
  • lua-resty-template - Lua-oriented template engine for OpenResty, somewhat Jinja-like.

Documentation

  • LDoc - Documentation generator which modernizes and extends LuaDoc.
  • Locco - Lua port of Docco, the "quick-and-dirty, hundred-line-long, literate-programming-style documentation generator".
  • docroc - Parse comments into a Lua table to generate documentation.

Object-oriented Programming

  • 30log - Minimalist OOP library with basic classes, inheritance, and mixins in 30 lines.
  • middleclass - Simple but robust OOP library with inheritance, methods, metamethods, class variables and mixins.

File system and OS

  • LuaFileSystem - Extends and complements Lua's built-in set of file system functions.
  • luaposix - Bindings for POSIX APIs, including curses.
  • lunix - Bindings to common Unix system APIs, striving for thread-safety.
  • lua-path - File system path manipulation library.

Time and Date

  • LuaDate - Date and time module with parsing, formatting, addition/subtraction, localization, and ISO 8601 support.
  • cron.lua - Time-related functions for Lua, inspired by JavaScript's setTimeout and setInterval.
  • luatx - Time, date, and timezone library.

Image Manipulation

  • magick - Lua bindings to ImageMagick for LuaJIT using FFI.

Digital Signal Processing

  • LuaFFT - An easy to use Fast Fourier Transformation package in pure Lua.
  • Worp - Sound/music/DSP engine written for LuaJIT.

Hardware and Embedded Systems

  • eLua - Lua, extended with optimizations and specific features for efficient and portable embedded software development.

Math and Scientific Computing

  • SciLua - Numerical/scientific computing framework built on LuaJIT, with an interface to R.
  • Torch7 - Scientific computing framework with wide support for machine learning algorithms, used by Facebook, Google, and more.
  • lhf's Lua Tools - Assorted libraries and tools, many math- or data-related.

Parsing and Serialization

  • JSON
  • lua-cjson - Blazing fast JSON encoding/decoding implemented in C and exposed to Lua.
  • luajson - JSON encoder/decoder implemented in Lua on top of LPeg.
  • dkjson - JSON encoder/decoder implemented in pure Lua.
  • json.lua - A fast and tiny JSON library in pure Lua.
  • XML
  • LuaExpat - SAX XML parser via binding to the Expat library.
  • SLAXML - Pure Lua SAX-like streaming XML parser.
  • MessagePack
  • lua-MessagePack - Pure Lua implementation of MessagePack.
  • lua-cmsgpack - A MessagePack C implementation with Lua bindings, as used by Redis.=
  • LPeg
  • LPeg - A pattern-matching library for Lua, based on Parsing Expression Grammars.
  • lpeg_patterns - A collection of LPeg patterns.
  • LuLPeg - A pure Lua implementation of LPeg v0.12.
  • LPegLJ - A pure LuaJIT implementation of LPeg v1.0.
  • LPegLabel - An extension of LPeg adding support for labeled failures.
  • lyaml - YAML encoding/decoding via binding to LibYAML.
  • lunamark - Converts Markdown to other textual formats including HTML and LaTeX. Uses LPeg for fast parsing.
  • LXSH - A collection of lexers and syntax highlighters written with LPeg.
  • lua-pb - Protocol Buffers implementation.

Humanize

  • i18n.lua - Internationalization library with locales, formatting, and pluralization.
  • inspect.lua - Human-readable representation of Lua tables.
  • serpent - Serializer and pretty printer.
  • Ser - Dead simple serializer with good performance.
  • say - Simple string key-value store for i18n.

Compression

  • lua-zlib - Simple streaming interface to zlib for gzip/gunzip.
  • lua-zip - Lua binding to libzip. Reads and writes zip files.

Cryptography

  • LuaCrypto - Lua bindings to OpenSSL.
  • lua-lockbox - A collection of cryptographic primitives written in pure Lua.
  • luatweetnacl - Bindings to tweetnacl, modern high-security cryptographic library.
  • luaossl - "Most comprehensive OpenSSL module in the Lua universe" - used by lapis, kong, and lua-http.

Network

  • LuaSocket - Networking extension which provides a socket API for TCP and UDP, and implements HTTP, FTP, and SMTP.
  • lua-websockets - WebSocket client and server modules. Webserver-agnostic, implemented in Lua on top of LuaSocket.
  • lua-cURLv3 - Lua binding to libcurl.
  • lua-http - Asynchronous HTTP and WebSocket library with client and server APIs, TLS, and HTTP/2; based on cqueues.

Data Stores

  • LuaSQL - Simple interface for connecting to ODBC, ADO, Oracle, MySQL, SQLite and PostgreSQL.
  • pgmoon - Lua PostgreSQL driver for OpenResty, LuaSocket, and cqueues.
  • lua-resty-mysql - Lua MySQL driver for OpenResty.
  • lua-resty-cassandra - Lua Cassandra client driver for OpenResty and others.
  • Redis
  • redis-lua - Pure Lua client library for Redis.
  • lua-resty-redis - Lua Redis client driver for OpenResty.
  • lredis - Asynchronous Redis client with pipelining and Pub/Sub support; based on cqueues.

Message Brokers

Testing

  • busted - BDD-style unit testing framework with great docs and Moonscript support.
  • telescope - Flexible and highly customizable testing library.
  • luassert - Assertion library extending Lua's built-in assertions.
  • lust - Minimal test framework.

Foreign Function Interfaces

  • LuaJIT FFI - LuaJIT's mechanism for calling external C functions and using C data structures from pure Lua code.
  • luaffi - Standalone FFI library, compatible with the LuaJIT FFI interface.

Analysis Tools and ASTs

  • luadec51 - Lua Decompiler for Lua version 5.1.
  • luacov - Simple coverage analyzer, used by busted and telescope for checking test coverage.
  • luacov-coveralls - LuaCov reporter for coveralls.io.
  • luacheck - Simple static analyzer which detects accidental globals and undefined or shadowed locals.
  • Metalua - Pure Lua parser and compiler, used for generating ASTs. A number of other tools make use of the Metalua parser in this way.
  • LuaInspect - Lua's most powerful code analysis and linting tool, built on Metalua. Used by ZeroBraneStudio, among others.
  • LuaMinify - Minifier which also brings its own static analysis tools, lexer, and parser.
  • Typed Lua - A typed superset of Lua that compiles to plain Lua.
  • lua-parser - A Lua 5.3 parser written using LPegLabel, with improved error messages.

Experimental, etc

  • punchdrunk.js - Moonshine + Lร–VE API reimplementation = run Lร–VE games in the browser.
  • luvit - Node.js's underlying architecture (libUV) with Lua on top instead of JavaScript.
  • graphql-lua - Lua implementation of GraphQL.

Scriptable by Lua

  • luakit - Fast, small, webkit based browser framework extensible by Lua.
  • Hammerspoon - A powerful, extensible OS X automation tool. A community-maintained fork of Mjolnir.
  • kpie - A scripting utility to juggle windows.
  • lumail - A console-based mail client, with extensive scripting capabilities.
  • AwesomeWM - A highly configurable and extensible window manager for X, scripted and configured by Lua.
  • Textadept - Extremely lightweight, customizable, cross-platform editor, written (mostly) in (and scripted by) Lua.
  • KoReader - An ebook reader application supports PDF, DJVU, EPUB, FB2 and much more, running on Kindle, Kobo, PocketBook and Android devices.

Miscellaneous

  • MoonScript - Moonscript is a dynamic scripting language that compiles to Lua. It reduces verbosity and provides a rich set of features like comprehensions and classes. Its author calls it 'CoffeeScript for Lua'.
  • sitegen - A static site generator which uses MoonScript and supports HTML and Markdown, page grouping, and plugins.

Resources

Community

  • lua-l - The official Lua mailing list, and one of the focal points of the Lua community.
  • Lua.Space - The Lua community blog.
  • Lua Users Foundation - An association of individuals with the mission of supporting and promoting Lua and its community and ecosystems.
  • lua-users.org - A site for and by users of Lua, featuring an IRC channel, a web archive of lua-l, and a large wiki.
  • Conferences/Meetups
  • Lua Workshop - Annual 2-day meeting of the Lua community, in rotating locations.
  • Lua Conf - Annual 1-day Lua conference in Brazil.
  • FOSDEM - Annual 2-day gathering of F/OSS developers in Brussels which sometimes has a "Lua devroom".

References

  • Reference Manual - The official definition of the Lua language.
  • lua-users wiki - A large community-maintained collection of Lua information and resources, supplementing the official website.
  • Lua Unofficial FAQ - Answers all sorts of Lua-related questions, including many of the form 'How to ___?'.

Glossaries

Style Guides

Tutorials

  • Lua Crash Course - Short crash course readover, or reference for when you forget the basics.
  • Learn Lua in 15 Minutes - A well-commented example file which covers the basics.
  • Learning Lua from JS - An overview of the similarities and differences between Lua and JS; a great start for JavaScript folks looking to pick up Lua.
  • lua-users tutorial - In-depth collection of tutorials aimed at newcomers.
  • Lua Missions - A series of 'Missions' to work through which are designed to teach aspects of Lua along the way.
  • Creating an Image Server - Walks through setting up and using OpenResty to build a simple image processing server; a great starting point for playing with OpenResty.

Articles

Talks & Slides

  • Roberto's Talks - History of talks given by Lua's chief architect, with slides for each.
  • Lua Workshop Talks - High-quality talks are given at each ~annual Lua Workshop, and a history of them is online, slides included.

Books

  • Programming in Lua - The authoritative intro to all aspects of Lua programming, written by Lua's chief architect. Three editions released; first edition available online.
  • Lua Quick Reference - A quick reference on how to program in and embed Lua 5.1 through 5.3, by the creator of Textadept.
  • Programming Gems - A collection of articles covering existing wisdom and practices on programming well in Lua, in a broad variety of use cases.
  • Lua Programming - A shorter overview of the language, up to date for Lua 5.2, and available online.

Other Lists

  • awesome-resty - A list like this one, but focused on OpenResty.
  • awesome-love2d - A list like this one, but focused on game dev and the Lร–VE platform.
  • Where Lua is Used - A comprehensive list of stand-alone programs written in or extensible using Lua.

Contribute

Contributions welcome and wanted! Read the contribution guidelines first.

License

CC0

To the extent possible under law, Lewis Ellis has waived all copyright and related or neighboring rights to this work.

awesome-c AwesomeList Status

A curated list of C good stuff. This list contains only free software for code, and sellers who aren't evil for physical resources.

LOOKING FOR MAINTAINERS: This list is currently pretty much inactive. I'm looking for maintainers that can make it great again. See #26 for more info, but the process is simple: add or fix a couple of things in this list and you'll become a contributor to a 850+ stars list.

This list was previously maintained by @kozross. He decided to switch the list to a new platform, so I've decided to fork it so we could keep it on GitHub.

Contents

Contents

Build Systems

These are tools to automate the building and testing of projects in C.

  • aimake - Build tool designed to avoid complex configurations. GNU GPL3 or later
  • Autoconf - Extensible package of M4 macros that produce shell scripts to automatically configure software source code packages. Part of the Autotools. GNU GPL3 or later
  • Automake - Tool for automatically generating Makefile.in files compliant with the GNU Coding Standards. Requires the use of Autoconf. Part of the Autotools. GNU GPL3 or later
  • CMake - Tools for cross-platform building, testing, and packaging. 3-clause BSD
  • Jam - Build system, designed to be easier than make. Understands C build rules implicitly. Jam License
  • Libtool - Generic library support script. Part of the Autotools. GNU GPL3 or later
  • Meson - Extremely fast, user-friendly build system. Based on Ninja. Apache 2.0
  • Premake - Build script generator for toolsets like Visual Studio, Xcode, or GNU Make. 3-clause BSD
  • SCons - An easier, more reliable and faster way to build software. MIT
  • Ninja - Small, simple build system with a focus on speed. Apache 2.0
  • Bazel - Build system for various operating systems and targets. Apache 2.0
  • Buck - Build system created and used by Facebook. Apache 2.0
  • Qbs - Modern build tool for software projects. LGPL3
  • qmake - Build system included with the Qt Framework. GNU GPL3 with Qt Exception
  • xmake - Cross-platform build utility based on lua. Apache 2.0

Compilers

Compiler libraries

Libraries for use in compilers, interpreters, and low-level based projects.

Compression

  • libzip - A C library for reading, creating, and modifying zip archives. 3-clause BSD
  • lzo - Very fast data compression library. GNU GPL2.1
  • zlib - Massively-spiffy yet delicately-unobtrusive compression library. 3-clause BSD
  • bzip2 - Patent free, high quality data compressor. 3-clause BSD
  • lz4 - Fast Compression algorithm.
  • snappy - Fast compression library (implementation in C++, native bindings to C).
  • zstd - Fast real-time compression algorithm 3-clause BSD
  • brotli - Generic lossless compression algorithm based on LZ77, Huffman coding and 2nd order context modelling MIT
  • quicklz - Fast compression library. GNU GPL2.1
  • pixz - Pixz (pronounced pixie) is a parallel, indexing version of xz. 2-clause BSD

Crypto

Database

This lists databases and data stores with C APIs.

Deep Learning

  • Darknet - Open source neural network framework written in C and CUDA. It is fast, easy to install, and supports CPU and GPU computation.

Documentation Generation

  • Cxref - Generates documentation of C programs in either LaTeX, HTML, RTF or SGML. GNU GPL2.1
  • DocOnce - Modestly-tagged markup language that can be used to generate a range of formats. 3-clause BSD
  • Doxygen - The de-facto standard tool for generating C documentation from annotated sources. Can generate a large range of formats. GNU GPL2.1
  • GTK-Doc - Tool for generating C documentation from annotated sources. Has support for the Autotools. GNU GPL2.1 (code) or GNU FDL1.1

Editors

These are specifically fancier, IDE-type editors. If you want a programmer's text editor, look elsewhere. Besides, whatever choice you make most likely supports C anyway.

Embedded Systems

These are projects that allow one to work with microcontrollers and other resource constrained architectures.

RTOS

A real-time operating system (RTOS) is intended to serve real-time applications that process data with low latency delay.

  • Amazon FreeRTOS - RTOS for microcontrollers that makes small, low-power edge devices easy to program. MIT
  • ChibiOS - RTOS with complete development environment (HAL, drivers, support files, and tools). Various Licenses
  • Contiki - Connect low-cost, low power microcontrollers to the Internet. 3-clause BSD
  • Zephyr Project - Scalable real-time RTOS supporting multiple hardware architectures, optimized for resource constrained devices. Apache 2.0
  • RIOT OS - Real-time multi-threading operating system that supports a range of devices that are typically found in the Internet of Things. LGPL-2.1

Environments

This is a list of technologies designed to bring Windows into the 21st century with respect to support for C.

Frameworks

This section has big libraries that provide data structures and other stuff you expect of a 'modern' standard library.

Game Programming

Engines

These are provided as examples of C game programming code.

Resources

These are libraries of all sorts that are useful for game programming.

  • Allegro - Cross-platform, video game development and multimedia library. zlib
  • Chipmunk2D - Fast and lightweight 2D game physics library. Expat
  • CSFML - Binding for SFML in C. zlib
  • FreeGLUT - Alternative to the OpenGL Utility Toolkit. Allows the creation and management of windows with OpenGL contexts. X11
  • GLFW - Multi-platform library for creating windows with OpenGL contexts. zlib
  • libao - Cross-platform audio library with a wide variety of outputs. GNU GPL2.1 or later
  • RetroArch - The reference frontend for libretro. GNU GPL3
  • SDL and SDL2 - Cross-platform development library designed to provide low-level access to audio, keyboard, mouse, joystick and graphics hardware via OpenGL. SDL2 is the most current version. zlib
  • raylib - Simple and easy-to-use library to learn videogames programming. zlib

Generic Programming

  • klib - Small and lightweight implementations of common algorithms and data structures. MIT

Graphics

Graphic APIs

  • OpenGL - Industry adopted 2D and 3D graphics API. More resources at awesome-opengl.
  • OpenGL ES - Industry adopted 2D and 3D graphics API for mobile and embedded devices.
  • OpenGL SC - Graphic and compute standard for industry requiring system safety certification.
  • Vulkan - Explicit graphic and compute API for modern cross-platform development. More resources at awesome-vulkan.

Graphical User Interface

These are specifically widget toolkits.

Hashing

All hashing related libraries, cryptographic or not.

Image Processing

JSON

Learning, Reference and Tutorials

This is a list of resources for learning C programming in general, or something useful relating to C programming.

Online

Reference

Language Standards

Beginner

Intermediate

Advanced

Self-study courses

Physical

Reference

Beginner

Intermediate

Advanced

Macros

  • P99 - Suite of macros to implement advanced features like default function arguments, scope-bound resources, etc. (Requires C99) Q Public License

Memory Allocators

Implementations of memory allocators for various systems and platforms.

  • jemalloc - General purpose malloc(3) implementation that emphasizes fragmentation avoidance and scalable concurrency support, commonly used in production systems. FreeBSD
  • dlmalloc - Doug Lea's malloc(3) implementation, useful for academic and research purposes. Public Domain
  • Hoard - A Fast, Scalable, and Memory-efficient Malloc for Linux, Windows, Mac, and Solaris. GNU GPL2
  • nedmalloc - An EXTREMELY FAST portable thread caching malloc(3) implementation written in C. GNU GPL2
  • rpmalloc - Cross platform, lock-free memory allocator. Public Domain

Multimedia

Networking and Internet

Web Frameworks

  • balde - Microframework for C based on GLib. GNU LGPLv2.1
  • onion - C library to create simple HTTP servers and Web Applications. Apache 2.0
  • kore - Easy to use, scalable and secure web application framework for writing web APIs in C.
  • klone - KLone is a fully-featured, multiplatform, web application development framework.
  • duda - Duda I/O is an event-driven and high performant web services framework written in C. Apache 2.0

Numerical

  • apophenia - Library for statistical and scientific computing. GNU GPL2.1
  • ATLAS - Automatically Tuned Linear Algebra Software. 3-clause BSD
  • BLAS - Basic Linear Algebra Subprograms; a set of routines that provide vector and matrix operations. BLAS license
  • CDFLIB - Library with routines to evaluate cumulative density functions fo a variety of standard probability distributions. Also can compute one parameter of the CDF given the others. (No license given)
  • cmathl - Pure-C Math library with a great variety of mathematical functions and CMake build support. Seeks to be close to C89/C90 compliant for portability. MIT
  • Cuba - Library for multidimensional numerical integration. GNU LGPLv3
  • FFTW - The Fastest Fourier Transform in the West; a highly-optimized fast Fourier transform routine. GNU GPL2.1 or later
  • FLINT - Fast Library for Number Theory; a library supporting arithmetic with numbers, polynomials, power series and matrices, among others. GNU GPL2.1 or later
  • GLPK - GNU Linear Programming Kit; a package designed for solving large-scale linear programming, mixed integer programming and other related problems. GNU GPL3 or later
  • GMP - GNU Multple Precision Arithmetic Library; a library for arbitrary-precision arithmetic. GNU GPL2.1 and GNU LGPLv3
  • GNU MPC - Library for complex number arithmetic. GNU LGPL3 or later
  • GNU MPFR - Library for arbitrary-precision floating-point arithmetic. GNU LGPL3 or later or GNU LGPL2.1 or later (until version 2.4.x)
  • GNU MPRIA - Portable mathematics library for multi-precision rational interval arithmetic. GNU GPL3 or later
  • GSL - The GNU Scientific Library; a sophisticated numerical library. GNU GPL3
  • igraph - Library for creating and manipulating large graphs. GNU GPL2
  • KISS FFT - Very simple fast Fourier transform library. 3-clause BSD
  • LAPACKE - C interface to LAPACK. 3-clause BSD
  • PARI/GP - Computer algebra system for number theory; includes a compiler to C. GNU GPL2.1 or later
  • PETSc - Suite of data structures and routines for scalable parallel solution of scientific applications modelled by partial differential equations. FreeBSD
  • PROB - Library that handles various discrete and continuous probability density functions. GNU LGPL3
  • Yeppp! - Very fast, SIMD-optimized mathematical library. 3-clause BSD

Parallel Programming

  • cchan - Small library for channel constructs for inter-thread communication. Public Domain
  • ck - Concurrency primitives, safe memory reclamation mechanisms and non-blocking data structures. FreeBSD
  • mill - Go-style concurrency in C. X11
  • libdill - Structured concurrency in C. X11
  • MPICH - Another implementation of MPI. MPICH licence
  • OpenMP - Set of C pragmas designed to allow for easy parallelization of code. 3-clause BSD
  • OpenMPI - Message passing interface implementation. 3-clause BSD
  • pth - Portable implementation for non-preemptive priority-based scheduling for multiple threads of execution. GNU GPL3 or later
  • pthreads - The POSIX thread library.
  • SLEPc - Software library for the solution of large, sparse eigenvalue problems on parallel computers. GNU LGPL3
  • TinyCThread - Portable, small implementation of the C11 threads API. zlib

Parsers

Regex

"Some people, when confronted with a problem, think 'I know, I'll use regular expressions'. Now they have two problems." - Jamie Zawinski.

  • PCRE - Implementation of regexes identical to that of Perl 5. 3-clause BSD
  • regexp4 - Simple and complete implementation of regular expressions with its own sintax. GNU GPL3 or later
  • SLRE - Super Light Regular Expression library; a very small implementation of a subset of Perl regex syntax. GNU GPL2.1
  • sregex - Non-backtracking NFA/DFA-based Perl-compatible regex engine library. 3-clause BSD
  • TRE - POSIX-compliant, feature-full regex library. FreeBSD

Serialization

Check also: JSON, XML

Source Code Collections

This contains collections of small source code. If you want something big and integrated, check the Frameworks section.

Standard Libraries

This contains standard C libraries.

  • Bionic - Google's C standard library, developed for Android. 3-clause BSD
  • dietlibc - C standard library designed for the smallest possible binaries. GNU GPL2.1
  • glibc - The GNU C Library; an implementation of the C standard library. GNU LGPL2.1
  • musl - Standard C library, compatible with POSIX 2008 and C11. Designed for static linking. Expat

String Manipulation

Testing

  • CHEAT - Very simple unit testing framework. FreeBSD
  • Check - Unit testing framework for C. GNU LGPL2.1
  • CMock - Mock/stub generator for C. Expat
  • cmocka - Unit testing framework with support for mock objects. Apache 2.0
  • Criterion - KISS, non-intrusive C test framework. Expat
  • CUnit - Another unit testing framework for C. GNU LGPL2.0
  • Cutest - Library for unit testing with memory leak detection (Linux, freeBSD and Windows). GPL2
  • minunit - Minimal unit testing framework for C. Expat
  • munit - Small but full-featured unit testing framework for C with no dependencies. MIT
  • Unity - Simple unit testing framework for C. Expat

Text Editor Extensions

While practically any decent programmer's text editor supports C, there are some extensions that make it more pleasant. This is categorized by editor.

Atom

Emacs

Vim

Tools

This is a list of useful programs to help you write and debug C code which are not editors, libraries or compilers.

Utilities

This is a 'catch-all' category for anything that doesn't fit well anywhere else.

XML

"XML is crap. Really. There are no excuses. XML is nasty to parse for humans, and it's a disaster to parse even for computers. There's just no reason for that horrible crap to exist." - Linus Torvalds

Awesome C++ Awesome Track Awesome List

A curated list of awesome C++ (or C) frameworks, libraries, resources, and shiny things. Inspired by awesome-... stuff.

Standard Libraries

C++ Standard Library - including STL Containers, STL Algorithm, STL Functional, etc.

Frameworks

C++ generic frameworks and libraries.

  • abseil-cpp - Abseil C++ Common Libraries. [Apache2]
  • Apache C++ Standard Library - STDCXX, A collection of algorithms, containers, iterators, and other fundamental components. [retired] [Apache2]
  • APR - Apache Portable Runtime. Another library of cross-platform utility functions. [Apache2]
  • ASL - Adobe Source Libraries provides peer-reviewed and portable C++ source libraries. [MIT]
  • Boost :zap: - A large collection of generic C++ libraries. [Boost] website
  • BDE - The BDE Development Environment from Bloomberg Labs. [Apache2]
  • C++ Workflow - C++ Parallel Computing and Asynchronous Networking Engine. [Apache2]
  • Cinder - A community-developed, free and open source library for professional-quality creative coding. [BSD]
  • cocoyaxi - A collection of C++ libraries, containing a go-style coroutine library, log, JSON, RPC framework and other base components. [MIT]
  • Cxxomfort - A small, header-only library that backports various facilities from more recent C++ Standards to C++03 and later. [MIT]
  • Dlib :zap: - A toolkit for making real world machine learning and data analysis applications in C++ [Boost] website
  • EASTL - Electronic Arts Standard Template Library. [BSD]
  • ETL - Embedded Template Library. [MIT]
  • ffead-cpp - Framework for Enterprise Application Development. [Apache2]
  • Folly - An open-source C++ library developed and used at Facebook. [Apache2]
  • FunctionalPlus - Functional Programming Library for C++. Write concise and readable C++ code. [MIT]
  • GLib - GLib provides the core application building blocks for libraries and applications written in C. [LGPL]
  • JUCE - An all-encompassing C++ class library for developing cross-platform software. [Core-Module: ISC, Rest: GPL2/GPL3/Commercial] website
  • Kigs framework - A free and open source C++ modular multi-purpose cross platform RAD framework. [MIT] website
  • libPhenom - libPhenom is an eventing framework for building high performance and high scalability systems in C. [Apache2]
  • LibSourcey - C++11 evented IO for real-time video streaming and high performance networking applications. [LGPL]
  • LibU - A multiplatform utility library written in C. [BSD]
  • Loki - A C++ library of designs, containing flexible implementations of common design patterns and idioms. [MIT]
  • MiLi - Minimal headers-only C++ Library. [Boost]
  • OpenFrameworks - A cross platform open source toolkit for creative coding in C++. [MIT] website
  • Qt :zap: - A cross-platform application and UI framework. [GPL/LGPL/Commercial]
  • Reason - A cross platform framework designed to bring the ease of use of Java, .Net, or Python to developers who require the performance and strength of C++. [GPL2]
  • ROOT - A set of OO frameworks with all the functionality needed to handle and analyze large amounts of data in a very efficient way. Used at CERN. [LGPL]
  • Seastar - An advanced, open-source C++ framework for high-performance server applications on modern hardware. [Apache-2.0 License] seastar.io
  • STLport - An exemplary version of STL. [Free]
  • STXXL - Standard Template Library for Extra Large Data Sets. [Boost]
  • tbox - A glib-like multi-platform c library. [Apache2] website
  • Ultimate++ - A C++ cross-platform rapid application development framework. [BSD]
  • uSTL - The small STL library. [MIT]
  • Windows Template Library - A C++ library for developing Windows applications and UI components. [Public]
  • Yomm2 - Fast, Orthogonal, Open multi-methods. Supersedes Yomm11 [Boost]

Artificial Intelligence

  • ANNetGPGPU - A GPU (CUDA) based Artificial Neural Network library. [LGPL]
  • btsk - Game Behavior Tree Starter Kit. [zlib]
  • Evolving Objects - A template-based, ANSI-C++ evolutionary computation library which helps you to write your own stochastic optimization algorithms insanely fast. [LGPL]
  • frugally-deep - Header-only library for using Keras models in C++. [MIT]
  • Genann - Simple neural network library in C. [zlib]
  • MXNet - Lightweight, Portable, Flexible Distributed/Mobile Deep Learning with Dynamic, Mutation-aware Dataflow Dep Scheduler; for Python, R, Julia, Scala, Go, Javascript and more website
  • PyTorch - Tensors and Dynamic neural networks in Python with strong GPU acceleration. website
  • flashlight - Flashlight is a fast, flexible machine learning library written entirely in C++. [BSD]
  • Recast/Detour - (3D) Navigation mesh generator and pathfinder, mostly for games. [zlib]
  • TensorFlow - An open source software library for numerical computation using data flow graphs [Apache]
  • oneDNN - An open-source cross-platform performance library for deep learning applications. [Apache] website
  • CNTK - Microsoft Cognitive Toolkit (CNTK), an open source deep-learning toolkit. [Boost]
  • tiny-dnn - A header only, dependency-free deep learning framework in C++11. [BSD]
  • Veles - Distributed platform for rapid Deep learning application development. [Apache]
  • Kaldi - Toolkit for speech recognition. [Apache]

Asynchronous Event Loop

  • Asio - A cross-platform C++ library for network and low-level I/O programming that provides developers with a consistent asynchronous model using a modern C++ approach. [Boost] website
  • Boost.Asio - A cross-platform C++ library for network and low-level I/O programming. [Boost]
  • C++ Actor Framework - An Open Source Implementation of the Actor Model in C++. [BSD-3-Clause] website
  • Ichor - An event queue which focuses on thread safety and provides dependency injection. [MIT]
  • libev - A full-featured and high-performance event loop that is loosely modelled after libevent, but without its limitations and bugs. [BSD and GPL]
  • libevent - An event notification library. [BSD]
  • libhv - Cross-platform event loop library. [BSD]
  • libuv - Cross-platform asynchronous I/O. [BSD]
  • promise-cpp - Header only library that implements Promise/A+ standard. [Anti-996]
  • uvw - C++ wrapper for libuv. [MIT]

Audio

Audio, Sound, Music, Digitized Voice Libraries

  • AudioFile - A simple C++ library for reading and writing audio files. [GPL3]
  • dr_libs - Single file audio decoding libraries for C and C++. [Unlicense]
  • FMOD - An easy to use crossplatform audio engine and audio content creation tool for games. [Free for non-commercial/Commercial]
  • KFR - Fast, modern C++ DSP framework, FFT, FIR/IIR filters, Sample Rate Conversion. [GPL/Commercial]
  • LAME - LAME is a high quality MPEG Audio Layer III (MP3) encoder. [LGPL]
  • libsndfile - C library with C++ wrapper for reading and writing files containing sampled sound through one standard library interface. [LGPL-2.1] website
  • libsoundio - C library for cross-platform real-time audio input and output. [MIT] website
  • Maximilian - C++ Audio and Music DSP Library. [MIT]
  • OpenAL - Open Audio Library - A crossplatform audio API. [BSD/LGPL/Commercial]
  • miniaudio - Single file audio playback and capture library. [Unlicense] website
  • ni-media - C++ library for reading and writing audio files. [MIT]
  • Opus - A totally open, royalty-free, highly versatile audio codec. [BSD]
  • PortAudio - PortAudio is a free, cross-platform, open-source, audio I/O library. [MIT]
  • SELA - SimplE Lossless Audio. [MIT]
  • SoLoud - Easy, portable audio engine for games. [zlib]
  • Speex - A free codec for free speech. Obsoleted by Opus. [BSD]
  • Tonic - Easy and efficient audio synthesis in C++. [Unlicense]
  • Vorbis - Ogg Vorbis is a fully open, non-proprietary, patent-and-royalty-free, general-purpose compressed audio format. [BSD]
  • minimp3 - Public domain, header-only MP3 decoder with clean-room implementation. [CC0]
  • Verovio - Verovio is a fast and lightweight music notation engraving library. [LGPL] website
  • Wav2Letter++ - Public domain, a fast open source speech processing toolkit written entirely in C++ and uses the ArrayFire tensor library and the flashlight machine learning library for maximum efficiency [BSD]

Biology

Bioinformatics, Genomics, Biotech

  • BioC++ - C++ Computational Libraries for Bioinformatics. [BSD]
  • Chaste - An open source C++ library for the computational simulation of mathematical models developed for physiology and biology. [BSD]
  • libsequence - A C++ library for representing and analyzing population genetics data. [GPL]
  • SeqAn - Algorithms and data structures for the analysis of sequences with the focus on biological data. [BSD/3-clause]
  • Vcflib - A C++ library for parsing and manipulating VCF files. [MIT]
  • Wham - Structural variants (SVs) in Genomes by directly applying association tests to BAM files. [MIT]

BitTorrent

  • jech/dht - BitTorrent DHT library in C. [MIT]
  • libtorrent (a.k.a. libtorrent-rasterbar) - An efficient feature complete C++ bittorrent implementation. [BSD]
  • LibTorrent (a.k.a. libtorrent-rakshasa) - BitTorrent library. [GPL]
  • libutp - uTorrent Transport Protocol library. [MIT]

Chemistry

Chemistry, Quantum Chemistry, Solid-State Chemistry/Physics, Geochemistry, Biochemistry

  • d-SEAMS - A molecular dynamics trajectory analysis engine in C++ and Lua with Nix. It is an acronym for Deferred Structural Elucidation Analysis for Molecular Simulations. [GPL] website
  • gromacs - A message-passing parallel molecular dynamics implementation. [GPL] website
  • Reaktoro - A computational framework in C++ and Python for modeling chemically reactive systems. [LGPL] website
  • LAMMPS - A classical molecular dynamics code with a focus on materials modeling. It's an acronym for Large-scale Atomic/Molecular Massively Parallel Simulator. [GPL] website
  • MADNESS - Multiresolution Adaptive Numerical Environment for Scientific Simulation. [GPL] website
  • MPQC - The Massively Parallel Quantum Chemistry program, MPQC, computes properties of atoms and molecules from first principles using the time independent Schrรถdinger equation. [GPL] website
  • ORCA - An ab initio quantum chemistry program package that contains modern electronic structure methods. [Academic] website
  • Psi - An ab initio computational chemistry package. [GPL] website

CLI

Console/Terminal User Interface, Command Line Interface

  • Argh! - A minimalist, frustration-free, header-only argument handler. [BSD]
  • Taywee/args - A simple header-only C++ argument parser library. [MIT]
  • Boost.Program_options - A library to obtain program options via conventional methods such as command line and config file. [Boost]
  • Clara - A simple to use, composable, command line parser for C++ 11 and beyond. [BSL-1.0]
  • cli - A cross-platform header only C++14 library for interactive command line interfaces (Cisco style). [Boost]
  • CLI11 - Header only single or multi-file C++11 library for simple and advanced CLI parsing. [BSD]
  • jarro2783/cxxopts - Lightweight C++ command line option parser. [MIT]
  • docopt.cpp - A library to generate option parser from docstring. [MIT/Boost]
  • FINAL CUT - Library for creating terminal applications with text-based widgets. [LGPL]
  • gflags - Commandline flags module for C++. [BSD]
  • indicators - Activity indicators for Modern C++. [MIT]
  • linenoise - A small self-contained alternative to readline and libedit. [BSD-2-Clause]
  • linenoise-ng - A small, portable GNU readline replacement for Linux, Windows and MacOS which is capable of handling UTF-8 characters. [BSD]
  • Lyra - A simple to use, composable, command line parser for C++ 11 and beyond. [Boost]
  • Ncurses - A terminal user interface. [MIT]
  • oof - Convenient, high-performance RGB color and position control for console output. [MIT]
  • PDCurses - Public domain curses library with both source code and pre-compiled library available. [PublicDomain]
  • popl - A single-header templated command line arguments and ini file parser for C++ 11 and beyond. [MIT]
  • replxx - A readline and libedit replacement that supports UTF-8, syntax highlighting, hints, works on Unix and Windows. [BSD]
  • tabulate - Table Maker for Modern C++ [MIT]
  • TCLAP - A mature, stable and feature-rich library for defining and accessing command line arguments in ANSI C++. [MIT]
  • termbox - A C library for writing text-based user interfaces. [MIT]
  • cpp-terminal - Small header only C++ library for writing multiplatform terminal applications. [MIT]
  • FTXUI - C++ Functional Terminal User Interface. [MIT]
  • imtui - Immediate Mode Text-based User Interface [MIT]

Compression

Compression and Archiving Libraries

  • bit7z - A C++ static library offering a clean and simple interface to the 7-zip DLLs. [GPLv2]
  • Brotli - Brotli compression format. Developed by Google. [MIT]
  • bzip2 - A freely available, patent free, high-quality data compressor. [BSD]
  • FiniteStateEntropy - New generation entropy codecs : Finite State Entropy and Huff0.
  • PhysicsFS - A library to provide abstract access to various archives. It is intended for use in video games, and the design was somewhat inspired by Quake 3's file subsystem. [zlib]
  • KArchive - A library for creating, reading, writing and manipulating file archives like zip and tar. It also provides transparent compression and decompression of data, using formats like gzip, via a subclass of QIODevice. [LGPL]
  • libarchive - Multi-format archive and compression library. [New BSD] website
  • LZ4 - Extremely Fast Compression algorithm. [BSD] website
  • LZFSE - LZFSE compression library and command line tool. Developed by Apple.
  • LZHAM - Lossless data compression library with a compression ratio similar to LZMA but with much faster decompression. [BSD]
  • LZMA :zap: - The default and general compression method of 7z format. [PublicDomain]
  • LZMAT - An extremely fast real-time lossless data compression library. [GPL]
  • miniz - Single C source file Deflate/Inflate compression library with zlib-compatible API, ZIP archive reading/writing, PNG writing. [MIT]
  • Minizip - Zlib with latest bug fixes that supports PKWARE disk spanning, AES encryption, and IO buffering. [zlib]
  • smaz - Small strings compression library. [BSD]
  • Snappy - A fast compressor/decompressor. [BSD]
  • ZLib - A very compact compression library for data streams. [zlib]
  • zlib-ng - zlib for the "next generation" systems. Drop-In replacement with some serious optimizations. [zlib]
  • zstd - Zstandard - Fast real-time compression algorithm. Developed by Facebook. [BSD]
  • ZZIPlib - Provides read access on ZIP-archives. [MPL/LGPL]

Concurrency

Concurrency and Multithreading

  • alpaka - Abstraction library for parallel kernel acceleration. [LGPLv3+]
  • ArrayFire - A general purpose GPU library. [BSD]
  • Async++ - A lightweight concurrency framework for C++11, inspired by the Microsoft PPL library and the N3428 C++ standard proposal. [MIT]
  • Boost.Compute - A C++ GPU Computing Library for OpenCL. [Boost]
  • Bolt - A C++ template library optimized for GPUs. [Apache2]
  • ck - Concurrency primitives, safe memory reclamation mechanisms and non-blocking data structures. [BSD]
  • concurrentqueue - A fast multi-producer, multi-consumer lock-free concurrent queue for C++11. [BSD,Boost]
  • Cpp-Taskflow - Fast C++ Parallel Programming with Task Dependencies. [MIT]
  • CUB - CUB provides state-of-the-art, reusable software components for every layer of the CUDA programming mode. [New BSD]
  • cuda-api-wrappers - Lightweight, Modern-C++ wrappers for the CUDA GPU programming runtime API. [BSD]
  • cupla - C++ API to run CUDA/C++ on OpenMP, Threads, TBB, ... through Alpaka. [LGPLv3+]
  • C++React - A reactive programming library for C++11. [Boost]
  • FiberTaskingLib - Task-based multi-threading library that supports task graphs with arbitrary dependencies. [Apache]
  • HPX - A general purpose C++ runtime system for parallel and distributed applications of any scale. [Boost]
  • Intel Games Task Scheduler - A task scheduling framework designed for the needs of game developers. [MIT]
  • Intel Parallel STL - Intelยฎ implementation of C++17 STL for C++11 and above. [Apache2]
  • Intel TBB - Intelยฎ Threading Building Blocks. [Apache2]
  • junction - A library of concurrent data structures in C++. [BSD]
  • Kokkos - A performance portable programming model for parallel execution and memory abstraction. [BSD]
  • libcds - A C++ library of Concurrent Data Structures. [BSD]
  • Libclsph - An OpenCL based GPU accelerated SPH fluid simulation library. [MIT]
  • libdill - Introduces structured concurrency in C. [MIT]
  • libdispatch - Grand Central Dispatch (GCD), developed by Apple Inc., is a task parallelism technology based on the thread pool pattern. libdispatch is a library that provides the implementation of GCD's services. [Apache-2.0] website
  • libmill - Introduces Go-style concurrency in C. [MIT]
  • marl - Marl is a hybrid thread / fiber task scheduler written in C++ 11. [Apache-2.0]
  • moderngpu - moderngpu is a productivity library for general-purpose computing on GPUs. It is a header-only C++ library written for CUDA. The unique value of the library is in its accelerated primitives for solving irregularly parallel problems. [FreeBSD & Copyright, Sean Baxter]
  • NCCL - Optimized primitives for collective multi-GPU communication. [BSD]
  • OpenCL - The open standard for parallel programming of heterogeneous systems.
  • OpenMP - The OpenMP API.
  • rotor - Event loop friendly C++ actor micro framework. [MIT]
  • SObjectizer - An implementation of Actor, Publish-Subscribe, and CSP models in one rather small C++ framework. [BSD-3-Clause]
  • Quantum - A powerful C++ coroutine dispatcher framework built on top of boost::coroutines2.
  • RaftLib - The RaftLib C++ library, streaming/dataflow concurrency via C++ iostream-like operators [Apache2]
  • readerwriterqueue - A fast single-producer, single-consumer lock-free queue for C++. [BSD]
  • stdgpu - Efficient STL-like Data Structures on the GPU. [Apache2]
  • Thrust - A parallel algorithms library which resembles the C++ Standard Template Library (STL). [Apache2]
  • transwarp - A header-only C++ library for task concurrency. [MIT]
  • VexCL - A C++ vector expression template library for OpenCL/CUDA. [MIT]
  • STAPL - A C++ parallel programming framework designed to work on both shared and distributed memory parallel computers. [BSD]
  • concurrencpp - A general concurrency library containing tasks, executors, timers and C++20 coroutines to rule them all.

Configuration

Configuration files, INI files

  • inifile-cpp - A header-only and easy to use Ini file parser for C++. [MIT]
  • inih - Simple .INI file parser in C, good for embedded systems. [BSD-3-Clause]
  • inih - Single header only C++ version of inih. [BSD-3-Clause]
  • iniparser - INI file parser. [MIT]
  • libconfig - C, C++ library for processing structured configuration files. [LGPL-2.1] website
  • libconfuse - Small configuration file parser library for C. [ISC]
  • simpleini - Cross-platform C++ library providing a simple API to read and write INI-style configuration files. [MIT]
  • toml++ - Header-only TOML parser and serializer for C++17 and later. [MIT] website

Containers

  • C++ B-tree - A template library that implements ordered in-memory containers based on a B-tree data structure. [Apache2]
  • Colony - An unordered "bag"-type container which outperforms std containers in high-modification scenarios while maintaining permanent pointers to non-erased elements regardless of insertion/erasure. [zLib] website
  • dynamic_bitset - A C++17 header-only dynamic bitset. [MIT]
  • Forest - Template library implementing an AVL, a Binary Search, a KD and a Quad Tree. [MIT]
  • Hashmaps - Implementation of open addressing hash table algorithms in C++. [MIT]
  • Hopscotch map - A fast header-only hash map which uses hopscotch hashing for collisions resolution. [MIT]
  • LSHBOX - A c++ toolbox of locality-sensitive hashing (LSH), provides several popular LSH algorithms, also support Python and MATLAB. [GPL]
  • PGM-index - A data structure that enables fast lookup, predecessor, range searches and updates in arrays of billions of items using orders of magnitude less space than traditional indexes. [Apache2] website
  • plf::list - A std::list implementation which removes range splicing in order to enable cache-friendlier structure, yielding significant performance gains. [zLib] website
  • plf::stack - A replacement container for the std::stack container adaptor, with better performance than any std container in a stack context. [zLib] website
  • ring_span lite - A simplified implementation of Arthur O'Dwyer's ring_span implementation ie. a circular buffer view. [MIT]
  • robin-hood-hashing - Fast & memory efficient hashtable based on robin hood hashing for C++14. [MIT]
  • robin-map - Fast hash map and hash set using robin hood hashing. [MIT]
  • sparsepp - A fast, memory efficient hash map for C++. [BSD 3-clause]

Cryptography

Cryptography and Encryption Libraries

  • Bcrypt - A cross platform file encryption utility. Encrypted files are portable across all supported operating systems and processors. [BSD]
  • BeeCrypt - A portable and fast cryptography library. [LGPLv2.1+]
  • Botan - A crypto library for C++. [BSD-2]
  • Crypto++ - A free C++ class library of cryptographic schemes. [Boost] website
  • digestpp - C++11 header-only message digest (hash) library. [PublicDomain]
  • GnuPG - A complete and free implementation of the OpenPGP standard. [GPL]
  • GnuTLS - A secure communications library implementing the SSL, TLS and DTLS protocols. [LGPL2.1]
  • Libgcrypt - A general purpose cryptographic library originally based on code from GnuPG. [LGPLv2.1+]
  • LibreSSL - A free version of the SSL/TLS protocol forked from OpenSSL in 2014. [?]
  • libsodium - P(ortable|ackageable) NaCl-based crypto library, opinionated and easy to use. [ISC]
  • libhydrogen - A lightweight, secure, easy-to-use crypto library suitable for constrained environments. [ISC]
  • LibTomCrypt - A fairly comprehensive, modular and portable cryptographic toolkit. [WTFPL]
  • mbedTLS - An open source, portable, easy to use, readable and flexible SSL library, previously known as PolarSSL. [Apache2] website
  • Nettle - A low-level cryptographic library. [LGPL]
  • OpenSSL - A robust, commercial-grade, full-featured, and Open Source cryptography library. [Apache] website
  • retter - A collection of hash functions, ciphers, tools, libraries, and materials related to cryptography.
  • s2n - An implementation of the TLS/SSL protocols. [Apache]
  • sha1collisiondetection - Library and command line tool to detect SHA-1 collision in a file. [MIT]
  • Tink - A multi-language, cross-platform library that provides cryptographic APIs that are secure, easy to use correctly, and hard(er) to misuse. [Apache-2.0]
  • Tiny AES in C - Small portable AES128/192/256 in C. [PublicDomain]
  • Themis - crypto library for painless data security, providing symmetric and asymmetric encryption, secure sockets with forward secrecy, for mobile and server platforms. [Apache2]

CSV

Libraries for parsing Comma Separated Value (CSV) files

  • csv2 - Fast CSV parser for modern C++. [MIT]
  • Csv::Parser - Compile-time and runtime CSV parser written in C++17. [Zlib]
  • Fast C++ CSV Parser - Small, easy-to-use and fast header-only library for reading CSV files. [BSD-3-Clause]
  • Vince's CSV Parser - A fast, self-contained, streaming C++17 CSV parser with optional type-casting and statistics. [MIT]

Database

Database Libraries, SQL Servers, ODBC Drivers, and Tools

  • ClickHouse - C++ client for ClickHouse DBMS. [Apache2]
  • hiberlite - C++ Object-relational mapping for sqlite3. [BSD]
  • Hiredis - A minimalistic C client library for the Redis database. [BSD]
  • LevelDB - A fast key-value storage library written at Google that provides an ordered mapping from string keys to string values. [BSD]
  • LMDB - Very fast embedded key/value store with full ACID semantics. [OpenLDAP]
  • LMDB++ - C++11 wrapper for the LMDB embedded database library. [PublicDomain]
  • MongoDB C Driver - MongoDB client library for C. [Apache2]
  • MongoDB C++ Driver - C++ driver for MongoDB. [Apache2]
  • MongoDB Libbson - A BSON utility library. [Apache2]
  • MySQL++ - A C++ wrapper for MySQL's C API. [LGPL]
  • nanodbc - A small C++ wrapper for the native C ODBC API. [MIT]
  • ODB - An open-source, cross-platform, and cross-database object-relational mapping (ORM) system for C++. [GPLv2]
  • redis3m - Wrapper of hiredis with clean C++ interface, supporting sentinel and ready to use patterns. [Apache2]
  • RocksDB - Embedded key-value store for fast storage from facebook. [BSD]
  • SimDB - High performance, shared memory, lock free, cross platform, single file, minimal dependencies, C++11 key-value store [Apache2]
  • SOCI - A database abstraction layer for C++. [BSL-1.0]
  • SQLite - A completely embedded, full-featured relational database in a few 100k that you can include right into your project. [PublicDomain]
  • SQLiteC++ - SQLiteC++ (SQLiteCpp) is a smart and easy to use C++ SQLite3 wrapper. [MIT]
  • sqlite_modern_cpp - Header only C++14 wrapper around sqlite library. [MIT]
  • sqlite_orm - SQLite ORM light header only library for modern C++. [AGPL + paid MIT]
  • sqlpp11 - A type safe embedded domain specific language for SQL queries and results in C++. [BSD-2-Clause]
  • TileDB - Fast Dense and Sparse Multidimensional Array DBMS. [MIT] website
  • UnQLite - A self-contained, serverless, zero-configuration, transactional NoSQL engine. [BSD-2-Clause] website
  • upscaledb - An embedded "typed" key/value store with a built-in query interface. [GPLv3]

Data visualization

Data visiualization Libraries

Debug

Debugging Libraries, Memory Leak and Resource Leak Detection, Unit Testing

  • backward-cpp - A beautiful stack trace pretty printer for C++. [MIT]
  • benchmark - Google provided small microbenchmark support library. [Apache2]
  • Boost.Test - Boost Test Library. [Boost]
  • check - Check is a unit testing framework for C. [LGPL-2.1] website
  • doctest - The lightest feature rich C++ single header testing framework. [MIT]
  • Catch2 - A modern, C++-native, header-only, test framework for unit-tests, TDD and BDD. [BSL-1.0]
  • Celero - C++ Benchmarking Framework. [Apache2]
  • CppUTest - Unit testing and mocking framework for C/C++. [BSD-3-clause]
  • CUTE - C++ Unit Testing Easier. [LGPL3]
  • CMocka - unit testing framework for C with support for mock objects. [Apache2]
  • CppUnit - C++ port of JUnit. [LGPL2]
  • CTest - The CMake test driver program. [BSD]
  • dbg-macro - A dbg(โ€ฆ) macro for C++. [MIT]
  • DebugViewPP - Debug logging viewer. [BSL]
  • Deleaker - A tool for resource leak detection, including memory, GDI and handle leaks.
  • fff - A micro-framework for creating fake C functions. [MIT]
  • Google Mock - A library for writing and using C++ mock classes. [BSD]
  • Google Test - Google C++ Testing Framework. [BSD]
  • ig-debugheap - Multiplatform debug heap useful for tracking down memory errors. [BSD]
  • libtap - Write tests in C. [GPL2]
  • MemTrack - Tracking memory allocations in C++.
  • microprofile - Profiler with web-view for multiple platforms. [Unlicense]
  • MinUnit - A minimal unit testing framework for C self-contained in a single header file. [MIT]
  • Mockator - Eclipse CDT plug-in for C++ Seams and Mock Objects.
  • Nanotimer - A simple low-overhead cross-platform timer class for benchmarking. [zLib] website
  • Nonius - A C++ micro-benchmarking framework. [CC]
  • Remotery - Single C File Profiler with Web Viewer. [Apache2]
  • Touca - Automated regression testing system for testing complex mission-critical workflows. [Apache2] website
  • UnitTest++ - A lightweight unit testing framework for C++. [MIT/X Consortium license]
  • Unity - Simple Unit Testing for C. [MIT]
  • utest.h - Single header unit testing framework for C and C++. [Unlicense]
  • ฮผt - C++20 single header/single module, macro-free ฮผ(micro)/Unit Testing Framework [Boost]
  • VLD - Visual Leak Detector. A free, robust, open-source memory leak detection system for Visual C++.

Font

Libraries for parsing and manipulating font files.

  • Fontconfig - Font configuration and customization library. [MIT] website
  • FreeType - FreeType is a freely available software library to render fonts. [FTL & GPLv2]
  • otfcc - A C library and utility used for parsing and writing OpenType font files. [Apache-2.0]

Game Engine

  • Acid - A high speed C++17 Vulkan game engine. [MIT]
  • Allegro - A cross-platform library mainly aimed for video games and multimedia programming. [zlib]
  • Cocos2d-x - A multi-platform framework for building 2d games, interactive books, demos and other graphical applications. [MIT]
  • Corange - A game engine written in pure C, SDL and OpenGL. [BSD]
  • crown - Crown is a general purpose data-driven game engine, written from scratch in orthodox C++ with a minimalistic and data-oriented design philosophy in mind. [MIT]
  • delta3d - A robust simulation platform. [LGPL2]
  • EnTT - Gaming meets modern C++. [MIT]
  • GamePlay - A cross-platform native C++ game framework for creating 2D/3D mobile and desktop games. [Apache2]
  • Godot - A fully featured, open source, MIT licensed, game engine. [MIT]
  • Grit - Community project to build a free game engine for implementing open world 3D games. [MIT]
  • Halley - A lightweight game engine written in C++14 with a "true" entity-component system. [Apache 2.0]
  • KlayGE - a cross-platform open source game engine with plugin-based architecture. [GPLv2] website
  • nCine - A cross-platform 2D game engine with an emphasis on performance, written in C++11 and optionally scriptable in Lua. [MIT] website
  • o3de - An open-source, real-time, multi-platform 3D engine based on Amazon Lumberyard. [Apache2] website
  • OpenXRay - a community-modified X-Ray engine used in S.T.A.L.K.E.R. game series. [Modified BSD/non-commercial only]
  • Oxygine - A cross-platform 2D C++ game engine. [MIT]
  • Panda3D - A game engine, a framework for 3D rendering and game development for Python and C++ programs. [Modified BSD] website
  • PixelGameEngine - The official distribution of olcPixelGameEngine, a tool used in javidx9's YouTube videos and projects. [OLC3]
  • Polycode - A cross-platform framework for creative code in C++ (with Lua bindings). [MIT] website
  • raylib - A simple and easy-to-use library to enjoy videogames programming. [zlib/libpng] website
  • Spring - A powerful free cross-platform RTS game engine. [GPLv2/GPLv3] website
  • Torque2D - An open-source and cross-platform C++ engine built for 2D game development. [MIT] website
  • Torque3D - An open-source C++ engine built for 3D game development. [MIT] website
  • toy engine - toy is a thin and modular c++ game engine and offers simple expressive c++ idioms to design full featured 2D or 3D games in fast iterations.
  • Urho3D - A free lightweight, cross-platform 2D and 3D game engine implemented in C++. Greatly inspired by OGRE and Horde3D. [MIT]

GUI

Graphic User Interface

  • Boden - Native, mobile, cross-platform GUI Framework. [GPL/LGPL/Commercial] website
  • CEGUI - Flexible, cross-platform GUI library.
  • Elements - Lightweight, fine-grained, resolution independent, modular GUI library. [MIT]
  • FLTK - Fast, light, cross-platform C++ GUI toolkit. [GPL2]
  • GacUI - GPU Accelerated C++ User Interface, with WYSIWYG developing tools, XML supports, built-in data binding and MVVM features. [Ms-PL]
  • GTK+ - A multi-platform toolkit for creating graphical user interfaces. [LGPL]
  • gtkmm - The official C++ interface for the popular GUI library GTK+. [LGPL]
  • imgui - Immediate Mode Graphical User Interface with minimal dependencies. [MIT]
  • implot - Immediate Mode Plotting widgets for imgui. [MIT]
  • iup - Multi-platform toolkit for building graphical user interfaces. [MIT]
  • libui - Simple and portable (but not inflexible) GUI library in C that uses the native GUI technologies of each platform it supports. [MIT]
  • MyGUI - Fast, flexible and simple GUI. [MIT]
  • nana - Nana is a cross-platform library for GUI programming in modern C++ style. [Boost]
  • NanoGui - A minimalistic cross-platform widget library for OpenGL 3.x or higher. [BSD]
  • nuklear - A single-header ANSI C gui library. [PublicDomain]
  • QCustomPlot - Qt plotting widget without further dependencies. [GPLv3]
  • Qwt - Qt Widgets for Technical Applications. [Own based on LGPL]
  • QwtPlot3D - A feature-rich Qt/OpenGL-based C++ programming library, providing essentially a bunch of 3D-widgets. [zlib]
  • RmlUi - The HTML/CSS User Interface library evolved. Fork of libRocket. [MIT]
  • Sciter - Sciter is an embeddable HTML/CSS/scripting engine aimed to be used as an UI layer of modern desktop applications. [Free/Commercial]
  • Slint - Lightweight GUI toolkit for desktop and embedded. [GPL/Free/Commercial] website
  • wxWidgets - A C++ library that lets developers create applications for Windows, Mac OS X, Linux and other platforms with a single code base. [Own LGPL]
  • xtd - Modern C++17/20 framework to create console (CLI), forms (GUI like WinForms) and tunit (unit tests like Microsoft Unit Testing Framework) applications on Windows, macOS, Linux, iOS and android. [MIT]
  • Yue - A library for creating native cross-platform GUI apps. [LGPLv2]

Graphics

  • assimp - Open Asset Import Library (assimp) is a cross-platform 3D model import library which aims to provide a common API for different 3D asset file formats. [BSD-3-Clause] website
  • bgfx - A cross-platform rendering library. [BSD]
  • Blend2D - 2D vector graphics engine powered by a JIT compiler. [Zlib] website
  • bs::framework - Modern C++14 library for the development of real-time graphical applications. [MIT]
  • Cairo - A 2D graphics library with support for multiple output devices. [LGPL2 or Mozilla MPL]
  • C-Turtle - A C++11 header-only turtle graphics library acting as a CImg wrapper. [MIT]
  • Diligent Engine - A modern cross-platform low-level 3D graphics library. [Apache2]
  • DirectXTK - A collection of helper classes for writing DirectX 11.x code in C++. [MIT]
  • GLFW - A simple, cross-platform OpenGL wrangling library. [zlib/libpng]
  • herebedragons - A basic 3D scene implemented with various engines, frameworks or APIs. [MIT] website
  • Horde3D - A small 3D rendering and animation engine. [EPL]
  • Ion - A small and efficient set of libraries for building cross-platform client or server applications that use 3D graphics. [Apache2] website
  • Irrlicht - A high performance realtime 3D engine written in C++. [zlib]
  • libigl - Simple C++ geometry processing library. [MPL2]
  • LLGL - Low Level Graphics Library (LLGL) is a thin abstraction layer for the modern graphics APIs. [BSD-3-Clause]
  • magnum - Lightweight and modular C++11/C++14 graphics middleware for games and data visualization. [MIT] website
  • NanoVG - Antialiased 2D vector drawing library on top of OpenGL for UI and visualizations. [Zlib]
  • Ogre 3D :zap: - A scene-oriented, real-time, flexible 3D rendering engine (as opposed to a game engine) written in C++. [MIT]
  • OpenSceneGraph - An open source high performance 3D graphics toolkit. [OSGPL]
  • OpenSubdiv - Pixar's library for evaluating and rendering subdivision surfaces on CPU and GPU. [Modified Apache2]
  • OpenVDB - Library and tools for storing, editing, and rendering volumetric datasets. [MPL2]
  • Panda3D - A framework for 3D rendering and game development for Python and C++. [BSD]
  • Partio - Library for wrangling particle data, with support for most common file formats. [Modified BSD]
  • Skia - A complete 2D graphic library for drawing Text, Geometries, and Images. [BSD] website
  • TinySpline - A small, yet powerful ANSI C library for interpolating, transforming, and querying arbitrary NURBS, B-Splines, and Bรฉzier curves. [MIT]
  • urho3d - Cross-platform rendering and game engine. [Many different, mostly MIT]
  • Yocto/GL - Tiny C++ Libraries for Data-Driven Physically-based Graphics. [MIT]

Image Processing

  • Boost.GIL - Generic Image Library.
  • CImg - A small, open source, C++ toolkit for image processing. [Own LGPL or GPL]
  • CxImage - An image processing and conversion library to load, save, display, transform BMP, JPEG, GIF, PNG, TIFF, MNG, ICO, PCX, TGA, WMF, WBMP, JBG, J2K images. [zlib]
  • Dlib :zap: - A modern C++11 machine learning, computer vision, numerical optimization, and deep learning toolkit. [Boost] website
  • FreeImage - An open source library that supports popular graphics image formats and others as needed by today's multimedia applications. [GPL2 or GPL3]
  • GD - GD Graphics Library, famously used in PHP for image loading/manipulation & thumbnail generation. [custom permissive license, requires mention in user docs] website
  • DCMTK - DICOM Toolkit.
  • GDCM - Grassroots DICOM library.
  • ITK - An open-source, cross-platform system for image analysis. [Apache2 from ITK 4.0]
  • Leptonica - Leptonica is an open source library containing software that is broadly useful for image processing and image analysis applications. [BSD-2-Clause] website
  • libfacedetection - Open source library for face detection in images. The face detection speed can reach 1500FPS. [BSD]
  • libjpeg-turbo - A JPEG image codec that uses SIMD instructions to accelerate baseline JPEG encoding and decoding. [IJG & BSD-3-Clause & zlib] website
  • libvips - A fast image processing library with low memory needs. [LGPL] website
  • Magick++ - ImageMagick program interfaces for C++. [Apache2]
  • MagickWnd - ImageMagick program interfaces for C. [Apache2]
  • OpenCV :zap: - Open source computer vision. [BSD]
  • OpenEXR - Cross-platform library for high dynamic range imaging. [Modified BSDF]
  • OpenImageIO - Powerful image and texture wrangling library with support for a wide number of common lossy and RAW formats. [Modified BSD]
  • SAIL - Easy-to-use cross-platform image decoding library with pluggable image codecs. [MIT]
  • Simd - C++ image processing library with using of SIMD: SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX-512, VMX(Altivec) and VSX(Power7), NEON for ARM. [MIT]
  • stb-image - STB single-header image loading library. [Public Domain]
  • tesseract-ocr - An OCR engine. [Apache2]
  • TinyEXIF - Tiny ISO-compliant C++ EXIF and XMP parsing library for JPEG. [MIT]
  • Video++ - A C++14 high performance video and image processing library. [MIT]
  • VIGRA - A generic C++ computer vision library for image analysis. [MIT X11]
  • VTK - Open-source, freely available software system for 3D computer graphics, image processing and visualization. [BSD]

Internationalization

  • gettext - GNU 'gettext'. [GPL2]
  • IBM ICU - A set of C/C++ and Java libraries providing Unicode and Globalization support. [ICU]
  • libiconv - An encoding conversion library between different character encodings. [GPL]
  • utf8.h - Single header utf8 string functions for C and C++. [Unlicense]
  • utf8proc - A clean C library for processing UTF-8 Unicode data. [MIT]

Inter-process communication

  • Apache Thrift - Efficient cross-language IPC/RPC, works between C++, Java, Python, PHP, C#, and many more other languages. Originally developed by Facebook. [Apache2]
  • Cap'n Proto - Fast data interchange format and capability-based RPC system. [MIT] website
  • eCAL - Pub/sub, client/server, C++/Python/C#, various message protocols (protobuf, capnproto ..). [Apache2] website
  • gRPC - A high performance, open source, general-purpose RPC framework. [BSD] website
  • Ice - Comprehensive RPC framework with support for C++, C#, Java, JavaScript, Python and more. [GPLv2]
  • libjson-rpc-cpp - JSON-RPC framework for C++ servers and clients. [MIT]
  • nanomsg - A simple high-performance implementation of several "scalability protocols". [MIT] website
  • nng - nanomsg-next-generation, a light-weight brokerless messaging library. [MIT] website
  • rpclib - A modern C++ msgpack-RPC server and client library. [MIT]
  • simple-rpc-cpp - A simple RPC wrapper generator to C/C++ functions. [BSD]
  • WAMP - Provides RPC and pub/sub messaging patterns. (various implementations, various languages)
  • xmlrpc-c - A lightweight RPC library based on XML and HTTP. [BSD]

JSON

  • Boost.PropertyTree - A property tree parser/generator that can be used to parse XML/JSON/INI/Info files. [Boost]
  • cJSON - Ultralightweight JSON parser in ANSI C. [MIT]
  • frozen - JSON parser and generator for C/C++. [GPL & GPL2]
  • Jansson - C library for encoding, decoding and manipulating JSON data. [MIT]
  • jbson - jbson is a library for building & iterating BSON data, and JSON documents in C++14. [Boost]
  • JeayeSON - A very sane (header only) C++ JSON library. [BSD]
  • Jsmn - A minimalistic JSON parser in C. [MIT]
  • json :zap: - JSON for Modern C++. [MIT]
  • JSON++ - A JSON parser in C++. [MIT]
  • json.h - A simple one header/one source solution to parsing JSON in C and C++. [Unlicense]
  • json-c - A JSON implementation in C. [MIT]
  • jsoncons - A C++ header-only library for JSON and JSON-like binary formats with JSONPointer, JSONPatch, JSONPath and JMESPath. [Boost]
  • JsonCpp - A C++ library for interacting with JSON. [MIT]
  • json-parser - Very low footprint JSON parser written in portable ANSI C. [BSD]
  • json11 - A tiny JSON library for C++11. [MIT]
  • json-struct - High performance, single header JSON parser parsing to and from C++ structs. [MIT]
  • json-voorhees - JSON library for C++. Support for C++11. No dependencies, fast and dev-friendly. [Apache2]
  • jute - Very simple C++ JSON Parser. [PublicDomain]
  • libjson - A JSON parser and printer library in C. easy to integrate with any model. [LGPL]
  • libjson - Lightweight JSON library. [?]
  • LIBUCL :zap: - Universal configuration library parser [BSD-2-Clause]
  • parson - Parson is a lighweight json library written in C. [MIT]
  • PicoJSON - A header-file-only, JSON parser serializer in C++. [BSD]
  • qt-json - A simple class for parsing JSON data into a QVariant hierarchy and vice versa. [GPLv3]
  • QJson - A qt-based library that maps JSON data to QVariant objects. [LGPL2]
  • RapidJSON :zap: - A fast JSON parser/generator for C++ with both SAX/DOM style API. [MIT]
  • sajson - Lightweight, extremely high-performance JSON parser for C++11. [MIT]
  • simdjson - Extremely fast JSON library that can parse gigabytes of JSON per second. [Apache-2.0]
  • taoJSON - Zero-dependency C++ header-only JSON library. [MIT]
  • ujson - ยตjson is a a small, C++11, UTF-8, JSON library. [MIT]
  • YAJL - A fast streaming JSON parsing library in C. [ISC]
  • yyjson - A high performance JSON library written in ANSI C. [MIT]

Logging

  • Blackhole - Attribute-based logging framework, which is designed to be fast, modular and highly customizable. [MIT]
  • Boost.Log - Designed to be very modular and extensible. [Boost]
  • Easylogging++ - Extremely light-weight high performance logging library for C++11 (or higher) applications. [MIT]
  • fmtlog - A performant fmtlib-style logging library with latency in nanoseconds. [MIT]
  • G3log - Asynchronous logger with Dynamic Sinks. [PublicDomain]
  • glog - C++ implementation of the Google logging module.
  • Log4cpp - A library of C++ classes for flexible logging to files, syslog, IDSA and other destinations. [LGPL]
  • log4cplus - A simple to use C++ logging API providing thread-safe, flexible, and arbitrarily granular control over log management and configuration. [BSD & Apache2]
  • loguru - A lightweight C++ logging library. [PublicDomain]
  • plog - Portable and simple log for C++ in less than 1000 lines of code. [MPL2]
  • reckless - Low-latency, high-throughput, asynchronous logging library for C++. [MIT]
  • spdlog - Super fast, header only, C++ logging library.
  • templog - A very small and lightweight C++ library which you can use to add logging to your C++ applications. [Boost]
  • P7Baical - An open source and cross-platform library for high-speed sending telemetry & trace data with minimal usage of CPU and memory. [LGPL]
  • Quill - Asynchronous cross platform low latency logging library. [MIT]

Machine Learning

  • Caffe - A fast framework for neural networks. [BSD]
  • CCV - C-based/Cached/Core Computer Vision Library, A Modern Computer Vision Library. [BSD]
  • darknet - Open source neural network framework written in C and CUDA. [PublicDomain] website
  • Dlib :zap: - A modern C++11 machine learning, computer vision, numerical optimization, and deep learning toolkit. [Boost] website
  • Fido - A highly-modular C++ machine learning library for embedded electronics and robotics. [MIT] website
  • flashlight - A fast, flexible machine learning library from Facebook AI Research written entirely in C++ and based on the ArrayFire tensor library. [BSD-3-Clause] website
  • libsvm - A simple, easy-to-use, efficient library for Support Vector Machines. [BSD-3-Clause] website
  • m2cgen - A CLI tool to transpile trained classic ML models into a native C code with zero dependencies. [MIT]
  • MeTA - A modern C++ data sciences toolkit. [MIT] website
  • Minerva - A fast and flexible system for deep learning. [Apache2]
  • mlpack - A scalable c++ machine learning library. [LGPLv3] website
  • OpenCV :zap: - Open Source Computer Vision Library. [BSD] website
  • oneDAL - A powerful machine learning library that helps speed up big data analysis. [Apache]
  • Recommender - C library for product recommendations/suggestions using collaborative filtering (CF). [BSD]
  • RNNLIB - RNNLIB is a recurrent neural network library for sequence learning problems. [GPLv3]
  • SHOGUN - The Shogun Machine Learning Toolbox. [GPLv3]
  • sofia-ml - The suite of fast incremental algorithms for machine learning. [Apache2]
  • VLFeat - The VLFeat open source library implements popular computer vision algorithms specialising in image understanding and local featurexs extraction and matching. [BSD-2-Clause] website
  • xgboost - Scalable, Portable and Distributed Gradient Boosting (GBDT, GBRT or GBM) Library, for Python, R, Java, Scala, C++ and more. Runs on single machine, Hadoop, Spark, Flink and DataFlow. [Apache2]
  • ncnn - A high-performance neural network inference computing framework optimized for mobile platforms. [BSD]

Math

  • Apophenia - A C library for statistical and scientific computing [GPL2]
  • Armadillo - Fast C++ library for linear algebra & scientific computing. [Apache2] website
  • autodiff - A modern, fast and expressive C++ library for automatic differentiation. [MIT] website
  • blaze - high-performance C++ math library for dense and sparse arithmetic. [BSD]
  • Boost.Multiprecision - provides higher-range/precision integer, rational and floating-point types in C++, header-only or with GMP/MPFR/LibTomMath backends. [Boost]
  • ceres-solver - C++ library for modeling and solving large complicated nonlinear least squares problems from google. [BSD]
  • CGAL - Collection of efficient and reliable geometric algorithms. [LGPL&GPL] website
  • cml - free C++ math library for games and graphics. [Boost]
  • CNL - A Compositional Numeric Library for C++. [Boost]
  • CXXGraph - free C++(17) graph header-only library for representation and algorithms execution. [AGPL-3.0]
  • Dlib :zap: - A modern C++11 machine learning, computer vision, numerical optimization, and deep learning toolkit. [Boost] website
  • Eigen - A high-level C++ library of template headers for linear algebra, matrix and vector operations, numerical solvers and related algorithms. [MPL2]
  • ExprTK - The C++ Mathematical Expression Toolkit Library (ExprTk) is a simple to use, easy to integrate and extremely efficient run-time mathematical expression parser and evaluation engine. [MIT]
  • Geometric Tools - C++ library for computing in the fields of mathematics, graphics, image analysis and physics. [Boost] website
  • GLM - Header-only C++ math library that matches and inter-operates with OpenGL's GLSL math. [MIT] website
  • GMTL - Graphics Math Template Library is a collection of tools implementing Graphics primitives in generalized ways. [GPL2]
  • GMP - A C library for arbitrary precision arithmetic, operating on signed integers, rational numbers, and floating-point numbers. [LGPL3 & GPL2]
  • Klein - A fast, SIMD-optimized C++17 Geometric Algebra library for point, line, and plane projections, intersections, joins, rigid-body motion, and more. [MIT] website
  • linalg.h - Single header, public domain, short vector math library for C++. [Unlicense]
  • MIRACL - A Multiprecision Integer and Rational Arithmetic Cryptographic Library. [AGPL]
  • NumCpp - A templatized header only C++ implementation of the Python Numpy library. [MIT]
  • muparser - muParser is an extensible high performance math expression parser library written in C++. [MIT]
  • LibTomMath - A free open source portable number theoretic multiple-precision integer library written entirely in C. [PublicDomain & WTFPL] website
  • linmath.h - A lean linear math library, aimed at graphics programming. [WTFPL]
  • lp_solve - A library used to formulate and solve linear programming problems. [LGPL] website
  • OpenBLAS - An optimized BLAS library based on GotoBLAS2 1.13 BSD version. [BSD 3-clause] website
  • PCG-rand - PCG is a family of simple fast space-efficient statistically good algorithms for random number generation. Unlike many general-purpose RNGs, they are also hard to predict. [Apache]
  • QuantLib - A free/open-source library for quantitative finance. [Modified BSD] website
  • StatsLib - A C++ header-only library of statistical distribution functions. [Apache2] website
  • SymEngine - Fast symbolic manipulation library, a rewriting of SymPy's core in C++. [MIT]
  • TinyExpr - A C library for parsing and evaluating math expressions from strings. [zlib]
  • Vc - SIMD Vector Classes for C++. [BSD]
  • Versor - A (fast) Generic C++ library for Geometric Algebras, including Euclidean, Projective, Conformal, Spacetime (etc).
  • Wykobi - A C++ library of efficient, robust and simple to use C++ 2D/3D oriented computational geometry routines. [MIT]
  • xtensor - A C++14 library for numerical analysis with multi-dimensional array expressions, inspired by NumPy syntax. [BSD 3-clause] website
  • universal - A C++14 header-only library implementing arbitrary posit arithmetic. The posit number system is a tapered floating point that is more efficient than IEEE floating point. Posits enable reproducible computational science. [MIT license] website

Memory Allocation

  • Boehm GC - Conservative garbage collector for C and C++. [similar to X11] website
  • C Smart Pointers - Smart pointers for the (GNU) C programming language. [MIT]
  • Hoard - Fast, Scalable, and Memory-efficient Malloc for Linux, Windows, and Mac. [GPL, commercial] website
  • jemalloc - General purpose malloc(3) implementation that emphasizes fragmentation avoidance and scalable concurrency support. [BSD] website
  • memory - STL compatible C++ memory allocator library. [ZLib]
  • memory-allocators - Custom memory allocators to improve the performance of dynamic memory allocation. [MIT]
  • mimalloc - A compact general purpose allocator with excellent performance. [MIT]
  • rpmalloc - Cross platform lock free thread caching 16-byte aligned memory allocator implemented in C. [PublicDomain]
  • snmalloc - Message passing based high-performance allocator. [MIT]
  • TCMalloc - Google's fast, multi-threaded malloc implementation. [Apache-2.0] website
  • tgc - A tiny garbage collector for C written in \~500 LOC. [BSD]

Multimedia

  • GStreamer - A library for constructing graphs of media-handling components. [LGPL]
  • libass - Portable subtitle renderer for the ASS/SSA subtitle format. [ISC]
  • libav - A collection of libraries and tools to process multimedia content such as audio, video, subtitles and related metadata. [LGPL v2.1+ and others] website
  • LIVE555 Streaming Media - Multimedia streaming library using open standard protocols (RTP/RTCP, RTSP, SIP). [LGPL]
  • libVLC - libVLC (VLC SDK) media framework. [GPL]
  • MediaInfoLib - Convenient unified display of the most relevant technical and tag data for video and audio files. [BSD]
  • QtAv - A multimedia playback framework based on Qt and FFmpeg to write a player easily. [LGPL] website
  • SDL :zap: - Simple DirectMedia Layer. [zlib]
  • SFML :zap: - Simple and Fast Multimedia Library. [zlib] website
  • TagLib - A library for reading and editing the metadata of several popular audio formats. [LGPL/MPL] website

Networking

  • ACE - An OO Network Programming Toolkit in C++. [?MIT?]
  • Boost.Asio :zap: - A cross-platform C++ library for network and low-level I/O programming. [Boost]
  • Boost.Beast :zap: - HTTP and WebSocket built on Boost.Asio in C++11. [BSL-1.0] website
  • Breep - Event based, high-level C++14 peer-to-peer library. [EUPL-1.1 (OSI approved)]
  • C++ REST SDK - C++ REST SDK (previously named Casablanca). [Apache2]
  • Restbed - C++11 Asynchronous RESTful framework. [AGPL]
  • Restinio - A header-only C++14 library that gives you an embedded HTTP/Websocket server. [BSD]
  • c-ares - A C library for asynchronous DNS requests. [MIT]
  • cpp-httplib - A single file C++11 header-only HTTP/HTTPS server library. [MIT]
  • cpp-netlib - A collection of open-source libraries for high level network programming. [Boost]
  • cpp-netlib/uri - URI parser/builder library for C++, compatible with RFC 3986 and RFC 3987. [BSL-1.0]
  • CppServer - Ultra fast and low latency asynchronous socket server & client C++ library with support TCP, SSL, UDP, HTTP, HTTPS, WebSocket protocols and 10K connections problem solution. [MIT]
  • cpr - A modern C++ HTTP requests library with a simple but powerful interface. Modeled after the Python Requests module. [MIT] website
  • curlcpp - An object oriented C++ wrapper for CURL(libcurl). [MIT]
  • DPDK - Data Plane Development Kit, libraries and drivers for fast packet processing. [BSD-3-Clause & GPL-2.0] website
  • Dyad.c - Asynchronous networking for C. [MIT]
  • ENet - Reliable UDP networking library. [MIT] website
  • evpp - C++ high performance networking with TCP/UDP/HTTP protocols. [BSD]
  • H2O - An optimized HTTP server with support for HTTP/1.x and HTTP/2. It can also be used as a library. [MIT]
  • HTTP Parser :zap: - A http request/response parser for C. [MIT]
  • KCP - A fast and reliable ARQ protocol that helps applications to reduce network latency. [MIT]
  • libcurl - Multiprotocol file transfer library. [MIT/X derivate license]
  • libhttpserver - C++ library for creating an embedded Rest HTTP server (and more). [LGPL2.1]
  • Libmicrohttpd - GNU libmicrohttpd is a small C library that is supposed to make it easy to run an HTTP server as part of another application. [LGPL v2.1+]
  • libpcap - A portable C/C++ library for network traffic capture. [BSD] website
  • libquic - A QUIC protocol library extracted from Chromium's QUIC Implementation. [BSD]
  • librdkafka - Apache Kafka client library for C and C++. [BSD-2-Clause]
  • libwebsockets - A lightweight pure C WebSocket implementation that provides both client and server libraries. [LGPL2.1 + static link exception] website
  • lwIP - A lightweight TCP/IP stack. [Modified BSD]
  • Mongoose - Extremely lightweight webserver. [GPL2]
  • MQTT-C - A portable MQTT C client for embedded systems and PCs alike. [MIT] website
  • mTCP - Highly scalable user-level TCP stack for multicore systems. [Modified BSD]
  • Muduo - A C++ non-blocking network library for multi-threaded server in Linux. [BSD]
  • nghttp2 - HTTP/2 C Library. [MIT] website
  • Onion - HTTP server library in C designed to be lightweight and easy to use. [Apache2/GPL2]
  • PF_RINGโ„ข - High-speed packet processing framework. [LGPL-2.1] website
  • PicoHTTPParser - A tiny, primitive, fast HTTP request/response parser. [MIT]
  • POCO :zap: - C++ class libraries and frameworks for building network- and internet-based applications that run on desktop, server, mobile and embedded systems. [Boost] website
  • Proxygen - Facebook's collection of C++ HTTP libraries including an easy to use HTTP server. [BSD]
  • RakNet - A cross platform, open source, C++ networking engine for game programmers. [BSD]
  • restclient-cpp - Simple REST client for C++. It wraps libcurl for HTTP requests. [MIT]
  • Seasocks - Simple, small, C++ embeddable webserver with WebSockets support. [BSD]
  • Silicon - A high performance, middleware oriented C++14 http web framework. [MIT]
  • tlse - Single C file TLS 1.2/1.3 implementation, using tomcrypt as crypto library [BSD-2-Clause]
  • Tufรฃo - An asynchronous web framework for C++ built on top of Qt. [LGPL2]
  • uriparser - Strictly RFC 3986 compliant URI parsing and handling library. [BSD-3-Clause]
  • uWebSockets - ยตWS is one of the most lightweight, efficient & scalable WebSocket & HTTP server implementations available. [Zlib]
  • WAFer - A C language-based ultra-light software platform for scalable server-side and networking applications. Think node.js for C programmers. [GPL2]
  • Wangle - A client/server application framework to build asynchronous, event-driven modern C++ services. [Apache-2.0]
  • wdt - An embeddedable library (and command line tool) aiming to transfer data between 2 systems as fast as possible over multiple TCP paths. [BSD-3-Clause]
  • WebSocket++ - C++/Boost Asio based websocket client/server library. [BSD]
  • PcapPlusPlus - a multiplatform C++ network sniffing and packet parsing and crafting framework. [Unlicense]
  • ZeroMQ - High-speed, modular asynchronous communication library. [LGPL] website

PDF

Libraries for parsing and manipulating PDF documents.

  • libharu - A free, cross platform, open-sourced software library for generating PDF. [zlib]
  • litePDF - Library to create and edit PDF documents that uses GDI functions through a device context to draw the page content. [LGPL v3 and zlib]
  • MuPDF - A lightweight PDF, XPS, and E-book viewer. [AGPL/Commercial]
  • PoDoFo - A library to work with the PDF file format. [LGPL]
  • Poppler - Open-source multi-backend PDF rendering library based on the xpdf-3.0 code base. [GPLv2/GPLv3]
  • Xpdf - Xpdf is a free PDF viewer and toolkit, including a text extractor, image converter, HTML converter, and more. [GPL v2/GPL v3]
  • DynaPDF - An easy-to-use PDF generation library. [Commercial]

Physics

Dynamics simulation engines

  • Box2D - A 2D physics engine for games. [BSD-like]
  • Bullet - A 3D physics engine for games. [zlib] website
  • Chipmunk - A fast and lightweight 2D game physics library. [MIT] website
  • LiquidFun - A 2D physics engine for games. [BSD-like]
  • Newton Dynamics - An integrated solution for real time simulation of physics environments. [zlib]
  • ODE - Open Dynamics Engine - An open source, high performance library for simulating rigid body dynamics. [BSD&LGPL]
  • Kratos - framework for building parallel, multi-disciplinary simulation software, aiming at modularity, extensibility, and high performance. [BSD] website
  • ofxBox2d - openFrameworks wrapper for Box2D. [BSD-like]
  • PhysX - An open-source realtime physics engine middleware SDK developed by Nvidia as a part of Nvidia GameWorks software suite. [BSD-3-Clause]
  • Project Chrono - An open source multi-physics simulation engine. [BSD-3-Clause] website
  • Quantum++ - A modern C++11 quantum computing library. [MIT]
  • Simbody - High-performance C++ multibody dynamics/physics library for simulating articulated biomechanical and mechanical systems like vehicles, robots, and the human skeleton. [Apache2]
  • SOFA - SOFA is an open-source framework targeting at real-time simulation, with an emphasis on medical simulation. [LGPL] website

Reflection

  • config-loader - A C++17 static reflection framework, from parse configuration file to native data structure. [MIT]
  • Better Enums - Reflective enums (to string, iteration). Single header. [BSD] website
  • clReflect - C++ Reflection using clang. [MIT]
  • CPFG - A C++03 library for reflection, callback and script binding. [Apache2] website
  • CPP-Reflection - C++ Reflection using clang. [MIT]
  • Magic Enum - Header-only C++17 library provides static reflection for enums (to string, from string, iteration), work with any enum type without any macro or boilerplate code. [MIT]
  • magic_get - std::tuple like methods for user defined types without any macro or boilerplate code. [Boost]
  • meta - Header-only, non-intrusive and macro-free runtime reflection system in C++. [MIT]
  • Nameof - Header-only C++17 library provides nameof macros and functions to obtain the simple name of variable, type, function, macro, and enum. [MIT]
  • Ponder - A C++11 library for reflection. [MIT]
  • RTTR - A C++11 library for reflection. [MIT] website
  • visit_struct - A miniature library for struct-field reflection in C++. [BSL-1.0]
  • Refureku - A C++17 runtime reflection and code generation library. [MIT]

Regular Expression

  • CppVerbalExpressions - C++ regular expressions made easy. [MIT]
  • CTRE - A Compile time PCRE (almost) compatible regular expression matcher. [MIT]
  • Hyperscan - Hyperscan is a high-performance multiple regex matching library by Intel. Provides simultaneous matching of large numbers of regexps (up to tens of thousands). Typically used in a DPI library stack. [BSD]
  • Oniguruma - A modern and flexible regular expressions library that supports a variety of character encodings. [BSD]
  • PCRE - A regular expression C library inspired by the regular expression capabilities in Perl. [BSD]
  • PIRE - Perl Incompatible Regular Expressions library by Yandex. Can be really fast (more than 400 MB/s). [LPGL v3.0]
  • RE2 - A software library for regular expressions via a finite-state machine using automata theory. [BSD-3-Clause]
  • SLRE - Super Light Regexp engine for C/C++. [GPLv2/Commercial]
  • sregex - A non-backtracking NFA/DFA-based Perl-compatible regex engine library for matching on large data streams. [BSD]

Robotics

  • MOOS-IvP - A set of open source C++ modules for providing autonomy on robotic platforms, in particular autonomous marine vehicles.
  • MRPT - Mobile Robot Programming Toolkit. [BSD]
  • PCL - Point Cloud Library is a standalone, large scale, open project for 2D/3D image and point cloud processing [BSD] website
  • Robotics Library (RL) - A self-contained C++ library for robot kinematics, motion planning and control. [BSD]
  • RobWork - A collection of C++ libraries for simulation and control of robot systems. [Apache2] website
  • ROS - Robot Operating System provides libraries and tools to help software developers create robot applications. [BSD]
  • YARP (Yet Another Robot Platform) - Library and toolkit for communication and device interfaces. [BSD-3-Clause] website

Scientific Computing

  • AMGCL - a header-only C++ library for solving large sparse linear systems with algebraic multigrid. [MIT]
  • FFTW - A C library for computing the DFT in one or more dimensions. [GPL]
  • GSL - GNU scientific library. [GPL]
  • preCICE - Coupling library for partitioned multi-physics simulations (FSI, CHT, and more). [LGPL] website
  • TileDB - Fast Dense and Sparse Multidimensional Array DBMS. [MIT] website
  • Trilinos - High performance PDE solvers. [BSD]
  • Torch - A scientific computing framework with wide support for machine learning algorithms that puts GPUs first. [BSD-3-Clause] website

Scripting

  • AngelScript - AngelScript is a game-oriented interpreted/compiled scripting language. [zlib]
  • Boost.Python - A C++ library which enables seamless interoperability between C++ and the Python programming language. [Boost]
  • cppimport - Import C++ files directly from Python! [MIT]
  • CppSharp - Tools and libraries to glue C/C++ APIs to high-level languages. [MIT]
  • ChaiScript - An easy to use embedded scripting language for C++. [BSD] website
  • ctypes.sh - A foreign function interface for bash. [MIT]
  • Cython - Cython is an optimising static compiler for both the Python programming language and the extended Cython programming language (based on Pyrex). It makes writing C extensions for Python as easy as Python itself. [Apache] website
  • djinni - A tool for generating cross-language type declarations and interface bindings. [Apache2]
  • Duktape - An embeddable Javascript engine with compact footprint. [MIT] website
  • JavaCpp - The missing bridge between Java and native C++. [Apache2]
  • libffi - A portable foreign-function interface library. [MIT] website
  • Lua - A minimal and fast scripting engine for configuration files and basic application scripting. [MIT]
  • LuaBridge - A lightweight, dependency-free library for binding Lua to C++. [MIT]
  • luacxx - C++11 API for creating Lua bindings. [MIT]
  • nbind - Magical headers that make your C++ library accessible from JavaScript. [MIT]
  • PHP-CPP - A library to build PHP extensions with C++. [Apache2] website
  • pybind11 - Seamless operability between C++11 and Python. [BSD]
  • SIP - C or C++ Bindings Generator for Python v2 and v3. [GPL]
  • sol2 - A C++ <-> Lua API wrapper with advanced features and top notch performance. [MIT]
  • SWIG - A wrapper/interface Generator that let you link your c++ code to Javascript, Perl, PHP, Python, Tcl and Ruby. [GPL/Output not licensed] website
  • V7 - An embedded JavaScript engine. [GPL2]
  • V8 - A fast JavaScript engine by Google that can be embedded into any C++ application. [BSD]
  • ChakraCore -A JavaScript engine by Microsoft that can be embedded into nodejs. [MIT]

Serialization

  • Bitsery - Header only C++ binary serialization library. [MIT]
  • Bond - An open source, cross-platform framework for working with schematized data. [MIT]
  • Boost.Serialization - Boost Serialization Library. [Boost]
  • Cap'n Proto - Fast data interchange format and capability-based RPC system. [MIT] website
  • cereal - A C++11 library for serialization. [BSD]
  • cista - A C++17 library for zero-copy high-performance (de-)serialization. [MIT]
  • cppcodec - Header-only C++11 library to encode/decode base64, base32 and hex with consistent, flexible API. [MIT]
  • FastBinaryEncoding - Fast Binary Encoding is ultra fast and universal serialization solution for C++, C#, Go, Java, JavaScript, Kotlin, Python, Ruby, Swift. [MIT]
  • FlatBuffers - A Memory efficient serialization library. [Apache2]
  • MessagePack - Efficient binary serialization format "like JSON" for C and C++. [Apache2] website
  • mrpt-serialization - Versioned serialization to binary or text formats. [BSD] website
  • nanopb - Small code-size Protocol Buffers implementation in ANSI C. [Zlib]
  • protobuf - Protocol Buffers - Google's data interchange format. [BSD]
  • protobuf-c - Protocol Buffers implementation in C. [BSD]
  • SimpleBinaryEncoding - encoding and decoding application messages in binary format for low-latency applications. [Apache2]
  • upb - A small protobuf implementation in C. [BSD]
  • YAS - Very fast Yet Another Serialization library supports the binary/text/json formats. [Boost]

Sorting

  • pdqsort - Pattern-defeating quicksort. [zlib]
  • Timsort - A templated stable sorting function which outperforms quicksort-based algorithms including std::sort, for reversed or semi-sorted data. [MIT]
  • Indiesort - A sort wrapper which enables the use of std::sort (& other random-access sort functions) with non-random-access containers, and also improves sort performance for large/non-trivially-copyable types in random-access containers and arrays. [zLib] website

Video

  • libvpx - VP8/VP9 Codec SDK. [BSD]
  • FFmpeg - A complete, cross-platform solution to record, convert and stream audio and video. [LGPL2/GPL2]
  • libde265 - Open h.265 video codec implementation. [LGPL] website
  • x265 - Open h.265 video codec implementation. [GPL2] website
  • OpenH264 - Open Source H.264 Codec. [BSD] website
  • Theora - A free and open video compression format. [BSD]
  • Vireo - A lightweight and versatile video processing library by Twitter. [MIT]

Virtual Machines

  • CarpVM - "interesting" VM in C. Let's see how this goes. [GPLv3]
  • MicroPython - Aims to put an implementation of Python 3.x on a microcontroller. [MIT]
  • TinyVM - A small, fast, lightweight virtual machine written in pure ANSI C. [MIT]

Web Application Framework

  • Civetweb - Provides easy to use, powerful, C/C++ embeddable web server with optional CGI, SSL and Lua support. [MIT]
  • C++ REST SDK - Microsoft project for cloud-based client-server communication in native code using a modern asynchronous C++ API design. [MIT]
  • CppCMS - A Free High Performance Web Development Framework (not a CMS). [LGPLv3]
  • Crow - Crow is a C++ microframework for running web services. It uses routing similar to Python's Flask. [BSD] website
  • Cutelyst - A C++ Web Framework built on top of Qt, using the simple approach of Catalyst (Perl) framework. [LGPLv2.1+] website
  • Drogon - A C++14/17 based, high-performance HTTP application framework. [MIT]
  • facil.io - Evented, high performance C web framework supporting HTTP, WebSockets, SSE and more. [MIT] website
  • Kore - ultra fast and flexible web server / framework for web applications developed in C. [ISC]
  • libOnion - lightweight library to help you create webservers in C programming language. [LGPLv3]
  • lwan - Experimental, scalable, high performance HTTP server. [GPL2]
  • oat++ - Light, zero-dependency framework to create high-performance web-services. [Apache-2.0] website
  • Pistache - Pistache is a C++ REST framework written in pure C++11 with no external dependency. [Apache2]
  • QDjango - A web framework written in C++ and built on top of the Qt library. Where possible it tries to follow django's API, hence its name. [LGPL]
  • TreeFrog Framework - High-speed and full-stack web application framework based on C++ and Qt, which supports HTTP and WebSocket protocol (with O/R mapping). [BSD] website
  • Wt - A C++ library for developing web applications. [GPL/Commercial]

XML

XML is crap. Really. There are no excuses. XML is nasty to parse for humans, and it's a disaster to parse even for computers. There's just no reason for that horrible crap to exist. - Linus Torvalds

  • Boost.PropertyTree - A property tree parser/generator that can be used to parse XML/JSON/INI/Info files. [Boost]
  • Expat - An XML parser library written in C. [MIT]
  • Libxml2 - The XML C parser and toolkit of Gnome. [MIT]
  • libxml++ - An XML Parser for C++. [LGPL2]
  • Mini-XML - A small XML parsing library written in ANSI C. [LGPL2 with exceptions]
  • PugiXML - A light-weight, simple and fast XML parser for C++ with XPath support. [MIT]
  • RapidXml - An attempt to create the fastest XML parser possible, while retaining useability, portability and reasonable W3C compatibility. [Boost]
  • TinyXML - A simple, small, minimal, C++ XML parser that can be easily integrating into other programs. [zlib]
  • TinyXML2 - A simple, small, efficient, C++ XML parser that can be easily integrating into other programs. [zlib]
  • TinyXML++ - A completely new interface to TinyXML that uses MANY of the C++ strengths. Templates, exceptions, and much better error handling. [MIT]
  • Xerces-C++ - A validating XML parser written in a portable subset of C++. [Apache2]

Yaml

  • mini-yaml - Single header YAML 1.0 C++11 serializer/deserializer. [MIT]
  • yaml-cpp - A YAML parser and emitter in C++ [MIT]

Miscellaneous

Useful libraries or tools that don't fit in the categories above or maybe just not categorised yet

  • access_profiler - A tool to count accesses to member variables in c++ programs. [GPL3]
  • American fuzzy lop a.k.a. afl-fuzz - Crazy fuzzing tool that automatically discovers bugs given time and minimal example input. [Apache2]
  • Better String - An alternative to the string library for C which is more functional and does not have buffer overflow overrun problems. Also includes a C++ wrapper. [BSD, GPL2]
  • Boost.Signals - An implementation of a managed signals and slots system. [Boost]
  • CPPItertools - Range-based for loop add-ons inspired by the Python builtins and itertools library. [BSD-2-Clause]
  • DynaMix - A library which allows you to compose and modify objects at run time. [MIT]
  • {fmt} :zap: - Small, safe and fast formatting library for C++. [Simplified BSD]
  • FastFormat - Fast, Safe C++ Formatting inspired by log4j and Pantheios [Simplified BSD]
  • casacore - A set of c++ core libraries derived from aips++. [LGPL]
  • QtVerbalExpressions - This Qt lib is based off of the C++ VerbalExpressions library. [MIT]
  • cxx-prettyprint - A pretty printing library for C++ containers. [Boost]
  • icecream-cpp - A small printing library for debugging purposes. [MIT]
  • gcc-poison - A simple header file for developers to ban unsafe C/C++ functions from applications.
  • Kangaru - A dependency injection container for C++11 and C++14. [MIT]
  • Klib - Small and lightweight implementations of common algorithms and data structures. [MIT]
  • libsigc++ - A typesafe callback system for standard C++. [LGPL] website
  • libcpuid - A small C library for x86 CPU detection and feature extraction. [BSD]
  • libevil - The Evil License Manager. [GPLv3]
  • libnih - A lightweight library of C functions and structures. [GPL2.1]
  • libusb - A universal USB library which allows for portable access to USB devices. [LGPL2]
  • Mach7 - A Pattern-matching library for C++. [BSD]
  • mio - Cross-platform C++11 header-only library for memory mapped file IO. [MIT]
  • PEGTL - The Parsing Expression Grammar Template Library. [MIT]
  • Remote Call Framework - Inter-process communication framework for C++. [GPL2/Commercial]
  • Scintilla - A free source code editing component. [MIT]
  • SDS - Simple Dynamic Strings library for C. [BSD]
  • semver.c - A semver parser and render in ANSI C. [MIT]
  • Serial Communication Library - Cross-platform, Serial Port library written in C++. [MIT]
  • sigslot - C++ Signal/Slot Library. [PublicDomain]
  • SimpleSignal - High performance C++11 signals. [PublicDomain]
  • Stage - Mobile robot simulator. [GPL2]
  • stdman Formatted C++11/14 stdlib man pages (from cppreference). [MIT]
  • stb :zap: - A range of single-file libraries for C/C++. [PublicDomain]
  • StrTk - A C++ library consisting of high performance string processing routines. [MIT]
  • Tulip Indicators - A C library of over 100 financial technical analysis indicators. [LGPL]
  • ub-canaries - A collection of C/C++ programs that try to get compilers to exploit undefined behavior.
  • value-category-cheatsheet A PDF cheatsheet for lvalues, rvalues, and the like. [Jank copyleft]
  • VarTypes - A feature-rich, object-oriented framework for managing variables in C++ / Qt4. [LGPL]
  • ZBar - A barcode scanner library, which allows to scan photos/images/video streams for barcodes and return their value. [LGPL2]
  • ZXing - An open-source, multi-format 1D/2D barcode image processing library implemented in Java, with ports to other languages. [Apache]
  • pprint - Pretty Printer for Modern C++. [MIT]

Software

Software for creating a development environment.

Compiler

List of C or C++ compilers

  • 8cc - A Small C Compiler.
  • c - Compile and execute C "scripts" in one go! [MIT]
  • Clang - A C compiler for LLVM. Supports C++11/14/1z C11. Developed by LLVM Team. [NCSA]
  • GCC - GNU Compiler Collection. Supports C++11/14/1z C11 and OpenMP. [GNU GPL3]
  • PCC - A very old C compiler. Supports C99.
  • Intel C++ Compiler - Developed by Intel.
  • LLVM - Collection of modular and reusable compiler and toolchain technologies.
  • Microsoft Visual C++ - MSVC, developed by Microsoft.
  • Open WatCom - Watcom C, C++, and Fortran cross compilers and tools. [Sybase Open Watcom Public License]
  • Oracle Solaris Studio - C, C++ and Fortran compiler for SPARC and x86. Supports C++11. Available on Linux and Solaris. [OTN Developer License]
  • TCC - Tiny C Compiler. [LGPL]

Online Compiler

List of online C or C++ compilers

  • codechef - A simple online compiler CodeChef.
  • codepad - An online compiler/interpreter, and a simple collaboration tool.
  • coliru - Online compiler/shell with support for various C++ compilers.
  • Compiler Explorer - An interactive compiler with assembly output available.
  • CompileOnline - Compile and Execute C++ online on Linux.
  • Ideone - An online compiler and debugging tool which allows you to compile source code and execute it online in more than 60 programming languages.
  • repl.it - A powerful yet simple tools and platforms for educators, learners, and developers.
  • Rextester - Online compiler which provides several compilers(Clang, GCC, MSVC) and several editors.
  • Try It Online - TIO is a family of online interpreters for an evergrowing list of practical and recreational programming languages.
  • Wandbox - An online Clang/GCC compiler with Boost available.
  • paiza.io - An online C/C++ compiler with multiple files supporting feature, Github(gist) integration and collaborative editing.
  • InterviewBit - A simple and easy to use online C++ compiler.

Debugger

List of C or C++ debuggers

  • Comparison of debuggers - A list of Debuggers from Wikipedia.
  • GDB - GNU Debugger.
  • LLDB - The LLDB Debugger.
  • Metashell - An interactive template metaprogramming shell which includes the MDB metadebugger.
  • Valgrind - A tool for memory debugging, memory leak detection, and profiling.
  • x64dbg - An open-source x64/x32 debugger for windows.

Integrated Development Environment

List of C or C++ nominal IDEs.

  • Anjuta DevStudio - The GNOME IDE. [GPL3]
  • AppCode - an IDE for Objective-C, C, C++, and JavaScript development built on JetBrainsโ€™ IntelliJ IDEA platform.
  • Cevelop - Cross-platform C and C++ IDE based on Eclipse CDT with additional plug-ins.
  • CLion - Cross-platform C and C++ IDE from JetBrains.
  • Code::Blocks - A free C, C++ and Fortran IDE.
  • CodeLite - Another cross-plaform, free C and C++ IDE. [GPL2 with an exception for plugins]
  • color_coded - A vim plugin for libclang-based highlighting. [MIT]
  • Dev-C++ - A portable C/C++/C++11 IDE.
  • Eclipse CDT - A fully functional C and C++ IDE based on the Eclipse platform.
  • Geany - Small, fast, cross-platform IDE. [GPL]
  • IBM VisualAge - A family of computer integrated development environments from IBM.
  • Irony-mode - A C/C++ minor mode for Emacs powered by libclang.
  • juCi++ - Cross-platform, lightweight C++ IDE with libclang integration. [MIT]
  • KDevelop - A free, open source IDE.
  • Microsoft Visual Studio - An IDE from Microsoft.
  • Microsoft Visual Studio Code :zap: - An open-source IDE from Microsoft. [MIT]
  • NetBeans - An IDE for developing primarily with Java, but also with other languages, in particular PHP, C/C++, and HTML5.
  • Qt Creator :zap: - A cross-platform C++, JavaScript and QML IDE which is part of the SDK for Qt.
  • rtags - A c/c++ client/server indexer with for integration with emacs based on clang.
  • Xcode - Developed by Apple.
  • YouCompleteMe - YouCompleteMe is a fast, as-you-type, fuzzy-search code completion engine for Vim.
  • cquery - A C++ code completion engine for vscode, emacs, vim, etc.

Build Systems

  • Bazel - A multi-language, fast and scalable build system from Google. [Apache]
  • Bear - A tool to generate compilation database for clang tooling. [GPLv3]
  • Buck - A fast build system that encourages the creation of small, reusable modules over a variety of platforms and languages including C++ developed and used at Facebook. Written in Java. [Apache]
  • build2 - cross-platform build, packaging and dependency management toolchain for developing and packaging C/C++ projects. [MIT]
  • clib - Package manager for the C programming language. [MIT]
  • CMake - Cross-platform free and open-source software for managing the build process of software using a compiler-independent method. [BSD]
  • Cget - Cmake package retrieval. [Boost] website
  • Conan - C/C++ Package Manager, open sourced. [MIT]
  • CPM - A C++ Package Manager based on CMake and Git.
  • FASTBuild - High performance, open-source build system supporting highly scalable compilation, caching and network distribution.
  • Hunter - CMake driven cross-platform package manager for C++. [BSD-2]
  • MesonBuild - An open source build system meant to be both extremely fast, and, even more importantly, as user friendly as possible.
  • Ninja - A small build system with a focus on speed.
  • Scons - A software construction tool configured with a Python script.
  • Sconsolidator - Scons build system integration for Eclipse CDT.
  • Spack - A flexible package manager that supports multiple versions, configurations, platforms, and compilers. [Apache-2.0/MIT]
  • SW - Cross-platform C++ (and other langs) Build System and Package Manager with a lot of packages available. [GPLv3]
  • tundra - High-performance code build system designed to give the best possible incremental build times even for very large software projects.
  • tup - File-based build system that monitors in the background for changed files.
  • Premake - A tool configured with a Lua script to generate project files for Visual Studio, GNU Make, Xcode, Code::Blocks, and more across Windows, Mac OS X, and Linux.
  • Vcpkg - C++ library manager for Windows, Linux, and MacOS. [MIT]
  • waf - Python-based framework for configuring, compiling and installing applications. [BSD] website
  • XMake - A C/C++ cross-platform build utility based on Lua. [Apache]

Static Code Analysis

List of tools for improving quality and reducing defects by code analysis

  • Cppcheck - A tool for static C/C++ code analysis. - source
  • CppDepend - Simplifies managing a complex C/C++ code base by analyzing and visualizing code dependencies, by defining design rules, by doing impact analysis, and comparing different versions of the code.
  • cpplint - A C++ style checker following Google's C++ style guide.
  • PVS-Studio - A tool for bug detection in the source code of programs, written in C, C++ and C#.
  • cpp-dependencies - Tool to check C++ #include dependencies (dependency graphs created in .dot format). [Apache]
  • include-what-you-use - A tool for use with clang to analyze includes in C and C++ source files. website
  • Infer - A static analyzer for Java, C and Objective-C. [BSD]
  • OCLint - A static source code analysis tool to improve quality and reduce defects for C, C++ and Objective-C. - source
  • Clang Static Analyzer - A source code analysis tool that finds bugs in C, C++, and Objective-C programs.
  • Linticator - Eclipse CDT integration of Pc-/FlexeLint.
  • IKOS - Static analyzer for C/C++ based on the theory of Abstract Interpretation. [NOSA 1.3]
  • List of tools for static code analysis - A list of tools for static code analysis from Wikipedia.

Coding Style Tools

  • Artistic Style - A tool to format C/C++/C#/Obj-C/Java code. Also known as astyle.
  • ClangFormat - A tool to format C/C++/Obj-C code.
  • Clang-Tidy - Clang-based C++ linter tool.
  • EditorConfig - EditorConfig helps maintain consistent coding styles across different editors and IDEs.
  • Uncrustify - Code beautifier.

Resources

Various resources, such as books, websites, and articles for improving your C++ development skills and knowledge.

API Design

Articles

Fantastic C++ related articles.

Books

Fantastic C or C++ related books.

Coding Style

Podcasts

  • CppCast - The first podcast by C++ developers for C++ developers.
  • CppChat - A (sometimes) weekly look at what's going on in the world of C++ chatting with a guest from the community.

Talks

Videos

Fantastic C or C++ related videos.

Websites

Useful C or C++ related websites.

Weblogs

Useful C or C++ related weblogs.

Other Awesome Projects

Collection of useful codes, snippets, ...

Other Awesome Lists

Other amazingly awesome lists

Contributing

Please take a quick gander at the contribution guidelines for details. Thanks to all contributors; you rock!

Awesome R

Awesome

A curated list of awesome R packages and tools. Inspired by awesome-machine-learning.

heart for Top 50 CRAN downloaded packages or repos with 400+ star

2020

  • VSCode - vscode-R + vscode-r-lsp VSCode R Langauage Support
  • gt - Easily generate information-rich, publication-quality tables from R
  • lightgbm heart - Light Gradient Boosting Machine.
  • torch - Tensors and Neural Networks with 'GPU' Acceleration.

2019

  • ggforce - ggplot2 extension framework ggforce
  • rayshader - 2D and 3D data visualizations via rgl rayshader
  • vroom - Fast reading of delimited files vroom

Integrated Development Environments

Integrated Development Environment

  • VSCode heart - vscode-R + vscode-r-lsp VSCode R Langauage Support
  • RStudio heart - A powerful and productive user interface for R. Works great on Windows, Mac, and Linux.
  • Emacs + ESS - Emacs Speaks Statistics is an add-on package for emacs text editors.
  • Sublime Text + R-Box - Add-on package for Sublime Text 2/3.
  • TextMate + r.tmblundle - Add-on package for TextMate 1/2.
  • StatET - An Eclipse based IDE for R.
  • Microsoft R - Revolution R would be offered free to academic users and commercial software would focus on big data, large scale multiprocessor functionality.
  • R Commander - A package that provides a basic graphical user interface.
  • IRkernel heart - R kernel for Jupyter.
  • Deducer - A Menu driven data analysis GUI with a spreadsheet like data editor.
  • Radiant - A platform-independent browser-based interface for business analytics in R, based on the Shiny.
  • Vim-R - Vim plugin for R.
  • Nvim-R - Neovim plugin for R.
  • Jamovi and JASP - Desktop software for both Bayesian and Frequentist methods, using a UI familiar to SPSS users.
  • Bio7 - An IDE contains tools for model creation, scientific image analysis and statistical analysis for ecological modelling.
  • RTVS - R Tools for Visual Studio.
  • radian heart (formerly rtichoke) - A modern R console with syntax highlighting.
  • RKWard - An extensible IDE/GUI for R.

Syntax

Packages change the way you use R.

  • magrittr heart - Let's pipe it.
  • pipeR - Multi-paradigm Pipeline Implementation.
  • lambda.r - Functional programming and simple pattern matching in R.
  • purrr - A FP package for R in the spirit of underscore.js.

Data Manipulation

Packages for cooking data.

  • dplyr heart - Fast data frames manipulation and database query.
  • data.table heart - Fast data manipulation in a short and flexible syntax.
  • reshape2 heart - Flexible rearrange, reshape and aggregate data.
  • tidyr - Easily tidy data with spread and gather functions.
  • broom heart - Convert statistical analysis objects into tidy data frames.
  • rlist - A toolbox for non-tabular data manipulation with lists.
  • ff - Data structures designed to store large datasets.
  • lubridate - A set of functions to work with dates and times.
  • stringi heart - ICU based string processing package.
  • stringr heart - Consistent API for string processing, built on top of stringi.
  • bigmemory - Shared memory and memory-mapped matrices. The big* packages provide additional tools including linear models (biglm) and Random Forests (bigrf).
  • fuzzyjoin - Join tables together on inexact matching.
  • tidyverse - Easily install and load packages from the tidyverse.
  • snakecase - Automatically parse and convert strings into cases like snake or camel among others.
  • DataExplorer - Fast exploratory data analysis with minimum code.

Data Formats

Packages for reading and writing data of different formats.

  • arrow heart - An interface to the Arrow C++ library.
  • feather heart - Fast, interoperable binary data frame storage for Python, R, and more powered by Apache Arrow.
  • fst heart - Lightning Fast Serialization of Data Frames for R.
  • haven - Improved methods to import SPSS, Stata and SAS files in R.
  • jsonlite - A robust and quick way to parse JSON files in R.
  • qs - Quick serialization of R objects.
  • readxl heart - Read excel files (.xls and .xlsx) into R.
  • readr heart - A fast and friendly way to read tabular data into R.
  • rio - A Swiss-Army Knife for Data I/O.
  • readODS - Read OpenDocument Spreadsheets into R as data.frames.
  • RcppTOML - Rcpp Bindings to C++ parser for TOML files.
  • vroom - Fast reading of delimited files.
  • writexl - Portable, light-weight data frame to xlsx exporter for R.
  • yaml - R package for converting objects to and from YAML.

Graphic Displays

Packages for showing data.

  • ggplot2 heart - An implementation of the Grammar of Graphics.
  • ggfortify - A unified interface to ggplot2 popular statistical packages using one line of code.
  • ggrepel - Repel overlapping text labels away from each other.
  • ggalt - Extra Coordinate Systems, Geoms and Statistical Transformations for ggplot2.
  • ggstatsplot - ggplot2 Based Plots with Statistical Details
  • ggtree - Visualization and annotation of phylogenetic tree.
  • ggtech - ggplot2 tech themes and scales
  • ggplot2 Extensions - Showcases of ggplot2 extensions.
  • lattice - A powerful and elegant high-level data visualization system.
  • corrplot - A graphical display of a correlation matrix or general matrix. It also contains some algorithms to do matrix reordering.
  • rgl - 3D visualization device system for R.
  • Cairo - R graphics device using cairo graphics library for creating high-quality display output.
  • extrafont - Tools for using fonts in R graphics.
  • showtext - Enable R graphics device to show text using system fonts.
  • animation - A simple way to produce animated graphics in R, using ImageMagick.
  • gganimate - Create easy animations with ggplot2.
  • misc3d - Powerful functions to deal with 3d plots, isosurfaces, etc.
  • xkcd - Use xkcd style in graphs.
  • imager - An image processing package based on CImg library to work with images and display them.
  • hrbrthemes - ๐Ÿ” Opinionated, typographic-centric ggplot2 themes and theme components.
  • waffle - ๐Ÿ Make waffle (square pie) charts in R.
  • dendextend - visualizing, adjusting and comparing trees of hierarchical clustering.
  • idendro - interactive exploration of dendrograms (trees of hierarchical clustering).
  • r2d3 - R Interface to D3 Visualizations
  • Patchwork - Combine separate ggplots into the same graphic.
  • plot3D - Plotting Multi-Dimensional Data
  • plot3Drgl - Plotting Multi-Dimensional Data - Using 'rgl'
  • httpgd - Asynchronous http server graphics device for R.

HTML Widgets

Packages for interactive visualizations.

  • heatmaply - Interactive heatmaps with D3.
  • d3heatmap - Interactive heatmaps with D3 (no longer maintained).
  • DataTables - Displays R matrices or data frames as interactive HTML tables.
  • DiagrammeR heart - Create JS graph diagrams and flowcharts in R.
  • dygraphs - Charting time-series data in R.
  • formattable heart - Formattable Data Structures.
  • ggvis heart - Interactive grammar of graphics for R.
  • Leaflet - One of the most popular JavaScript libraries interactive maps.
  • MetricsGraphics - Enables easy creation of D3 scatterplots, line charts, and histograms.
  • networkD3 - D3 JavaScript Network Graphs from R.
  • scatterD3 - Interactive scatterplots with D3.
  • plotly heart - Interactive ggplot2 and Shiny plotting with plot.ly.
  • rCharts heart - Interactive JS Charts from R.
  • rbokeh - R Interface to Bokeh.
  • threejs - Interactive 3D scatter plots and globes.
  • timevis - Create fully interactive timeline visualizations.
  • visNetwork - Using vis.js library for network visualization.
  • wordcloud2 - R interface to wordcloud2.js.
  • highcharter - R wrapper for highcharts based on htmlwidgets
  • echarts4r - R wrapper to Echarts version 4

Reproducible Research

Packages for literate programming and reproducible workflows.

  • knitr heart - Easy dynamic report generation in R.
  • redoc - Reversible Reproducible Documents
  • tinytex - A lightweight and easy-to-maintain LaTeX distribution
  • xtable - Export tables to LaTeX or HTML.
  • rapport - An R templating system.
  • rmarkdown heart - Dynamic documents for R.
  • slidify heart - Generate reproducible html5 slides from R markdown.
  • Sweave - A package designed to write LaTeX reports using R.
  • texreg - Formatting statistical models in LaTex and HTML.
  • checkpoint - Install packages from snapshots on the checkpoint server.
  • brew - Pre-compute data to enhance your report templates. Can be combined with knitr.
  • officer - An R package to generate Microsoft Word, Microsoft PowerPoint and HTML reports.
  • flextable - An R package to embed complex tables (merged cells, multi-level headers and footers, conditional formatting) in Microsoft Word, Microsoft PowerPoint and HTML reports. It cooperates with the [officer] package and integrates with [rmarkdown] reports.
  • bookdown - Authoring Books with R Markdown.
  • ezknitr - Avoid the typical working directory pain when using 'knitr'
  • drake - An rOpenSci package for reproducible data science workflows too big for knitr.
  • R Suite - A package to design flexible and reproducible deployment workflows for R.
  • kable - Build fancy HTML or 'LaTeX' tables using 'kable()' from 'knitr'.

Web Technologies and Services

Packages to surf the web.

  • Web Technologies List - Information about how to use R and the world wide web together.
  • shiny heart - Easy interactive web applications with R. See also awesome-rshiny
  • shinyjs - Easily improve the user interaction and user experience in your Shiny apps in seconds.
  • RCurl - General network (HTTP/FTP/...) client interface for R.
  • curl - A Modern and Flexible Web Client for R.
  • httr heart - User-friendly RCurl wrapper.
  • httpuv - HTTP and WebSocket server library.
  • XML heart - Tools for parsing and generating XML within R.
  • xml2 heart - Optimized tools for parsing and generating XML within R.
  • rvest heart - Simple web scraping for R, using CSSSelect or XPath syntax.
  • OpenCPU heart - HTTP API for R handling concurrent calls, based on the Apache2 web server, to expose R code as REST web services and create full-sized, multi-page web applications.
  • Rfacebook - Access to Facebook API via R.
  • RSiteCatalyst - R client library for the Adobe Analytics.
  • plumber - A library to expose existing R code as web API.
  • golem - A framework for building production-grade Shiny apps.

Parallel Computing

Packages for parallel computing.

  • parallel - R started with release 2.14.0 which includes a new package parallel incorporating (slightly revised) copies of packages multicore and snow.
  • Rmpi - Rmpi provides an interface (wrapper) to MPI APIs. It also provides interactive R slave environment.
  • foreach heart - Executing the loop in parallel.
  • future heart - A minimal, efficient, cross-platform unified Future API for parallel and distributed processing in R; designed for beginners as well as advanced developers.
  • SparkR heart - R frontend for Spark.
  • DistributedR - A scalable high-performance platform from HP Vertica Analytics Team.
  • ddR - Provides distributed data structures and simplifies distributed computing in R.
  • sparklyr - R interface for Apache Spark from RStudio.
  • batchtools - High performance computing with LSF, TORQUE, Slurm, OpenLava, SGE and Docker Swarm.

High Performance

Packages for making R faster.

  • Rcpp heart - Rcpp provides a powerful API on top of R, make function in R extremely faster.
  • Rcpp11 - Rcpp11 is a complete redesign of Rcpp, targetting C++11.
  • compiler - speeding up your R code using the JIT
  • cpp11 - cpp11 is a header-only R package that helps R package developers handle R objects with C++ code. It's similar to Rcpp but with different design trade-offs and features.

Language API

Packages for other languages.

  • rJava - Low-level R to Java interface.
  • jvmr - Integration of R, Java, and Scala.
  • reticulate heart - Interface to 'Python'.
  • rJython - R interface to Python via Jython.
  • rPython - Package allowing R to call Python.
  • runr - Run Julia and Bash from R.
  • RJulia - R package Call Julia.
  • JuliaCall - Seamless Integration Between R and Julia.
  • RinRuby - a Ruby library that integrates the R interpreter in Ruby.
  • R.matlab - Read and write of MAT files together with R-to-MATLAB connectivity.
  • RcppOctave - Seamless Interface to Octave and Matlab.
  • RSPerl - A bidirectional interface for calling R from Perl and Perl from R.
  • V8 - Embedded JavaScript Engine.
  • htmlwidgets - Bring the best of JavaScript data visualization to R.
  • rpy2 - Python interface for R.

Database Management

Packages for managing data.

  • RODBC - ODBC database access for R.
  • DBI - Defines a common interface between the R and database management systems.
  • elastic - Wrapper for the Elasticsearch HTTP API
  • mongolite - Streaming Mongo Client for R
  • odbc - Connect to ODBC databases (using the DBI interface)
  • RMariaDB - An R interface to MariaDB (a replacement for the old RMySQL package)
  • RMySQL - R interface to the MySQL database.
  • ROracle - OCI based Oracle database interface for R.
  • RPostgres - an DBI-compliant interface to the postgres database.
  • RPostgreSQL - R interface to the PostgreSQL database system.
  • RSQLite - SQLite interface for R
  • RJDBC - Provides access to databases through the JDBC interface.
  • rmongodb - R driver for MongoDB.
  • redux - Redis client for R.
  • RCassandra - Direct interface (not Java) to the most basic functionality of Apache Cassandra.
  • RHive - R extension facilitating distributed computing via Apache Hive.
  • RNeo4j - Neo4j graph database driver.
  • rpostgis - R interface to PostGIS database and get spatial objects in R.

Machine Learning

Packages for making R cleverer.

  • anomalize - Tidy Anomaly Detection using Twitter's AnomalyDetection method.
  • AnomalyDetection heart - AnomalyDetection R package from Twitter.
  • ahaz - Regularization for semiparametric additive hazards regression.
  • arules - Mining Association Rules and Frequent Itemsets
  • bigrf - Big Random Forests: Classification and Regression Forests for Large Data Sets
  • bigRR - Generalized Ridge Regression (with special advantage for p >> n cases)
  • bmrm - Bundle Methods for Regularized Risk Minimization Package
  • Boruta - A wrapper algorithm for all-relevant feature selection
  • BreakoutDetection heart - Breakout Detection via Robust E-Statistics from Twitter.
  • bst - Gradient Boosting
  • CausalImpact heart - Causal inference using Bayesian structural time-series models.
  • C50 - C5.0 Decision Trees and Rule-Based Models
  • caret heart - Classification and Regression Training
  • Clever Algorithms For Machine Learning
  • CORElearn - Classification, regression, feature evaluation and ordinal evaluation
  • CoxBoost - Cox models by likelihood based boosting for a single survival endpoint or competing risks
  • Cubist - Rule- and Instance-Based Regression Modeling
  • e1071 - Misc Functions of the Department of Statistics (e1071), TU Wien
  • earth - Multivariate Adaptive Regression Spline Models
  • elasticnet - Elastic-Net for Sparse Estimation and Sparse PCA
  • ElemStatLearn - Data sets, functions and examples from the book: "The Elements of Statistical Learning, Data Mining, Inference, and Prediction" by Trevor Hastie, Robert Tibshirani and Jerome Friedman
  • evtree - Evolutionary Learning of Globally Optimal Trees
  • fable - a collection of commonly used univariate and multivariate time series forecasting models
  • prophet heart - Tool for producing high quality forecasts for time series data that has multiple seasonality with linear or non-linear growth.
  • FSelector - A feature selection framework, based on subset-search or feature ranking approches.
  • frbs - Fuzzy Rule-based Systems for Classification and Regression Tasks
  • GAMBoost - Generalized linear and additive models by likelihood based boosting
  • gamboostLSS - Boosting Methods for GAMLSS
  • gbm - Generalized Boosted Regression Models
  • glmnet heart - Lasso and elastic-net regularized generalized linear models
  • glmpath - L1 Regularization Path for Generalized Linear Models and Cox Proportional Hazards Model
  • GMMBoost - Likelihood-based Boosting for Generalized mixed models
  • grplasso - Fitting user specified models with Group Lasso penalty
  • grpreg - Regularization paths for regression models with grouped covariates
  • h2o heart - Deeplearning, Random forests, GBM, KMeans, PCA, GLM
  • hda - Heteroscedastic Discriminant Analysis
  • ipred - Improved Predictors
  • kernlab - kernlab: Kernel-based Machine Learning Lab
  • klaR - Classification and visualization
  • kohonen - Supervised and Unsupervised Self-Organising Maps.
  • L0Learn - Fast algorithms for best subset selection
  • lars - Least Angle Regression, Lasso and Forward Stagewise
  • lasso2 - L1 constrained estimation aka โ€˜lassoโ€™
  • LiblineaR - Linear Predictive Models Based On The Liblinear C/C++ Library
  • lightgbm heart - Light Gradient Boosting Machine.
  • lme4 heart - Mixed-effects models
  • nlme heart - Mixed-effects models, handling user-specified matrix of residual covariance, relevant for the analysis of repeated observations in longitudinal trials
  • glmmTMB - Generalized mixed-effects models, handling user-specified matrix of residual covariance, relevant for the analysis of repeated observations in longitudinal trials
  • LogicReg - Logic Regression
  • maptree - Mapping, pruning, and graphing tree models
  • mboost - Model-Based Boosting
  • Machine Learning For Hackers heart
  • mlr - Extensible framework for classification, regression, survival analysis and clustering [DEPRECIATED]
  • mlr3 heart - Next generation extensible framework for classification, regression, survival analysis and clustering
  • mvpart - Multivariate partitioning
  • MXNet heart - MXNet brings flexible and efficient GPU computing and state-of-art deep learning to R.
  • ncvreg - Regularization paths for SCAD- and MCP-penalized regression models
  • nnet - eed-forward Neural Networks and Multinomial Log-Linear Models
  • oblique.tree - Oblique Trees for Classification Data
  • pamr - Pam: prediction analysis for microarrays
  • party - A Laboratory for Recursive Partytioning
  • partykit - A Toolkit for Recursive Partytioning
  • penalized - L1 (lasso and fused lasso) and L2 (ridge) penalized estimation in GLMs and in the Cox model
  • penalizedLDA - Penalized classification using Fisher's linear discriminant
  • penalizedSVM - Feature Selection SVM using penalty functions
  • quantregForest - quantregForest: Quantile Regression Forests
  • randomForest - randomForest: Breiman and Cutler's random forests for classification and regression.
  • randomForestSRC - randomForestSRC: Random Forests for Survival, Regression and Classification (RF-SRC).
  • ranger - A Fast Implementation of Random Forests.
  • rattle - Graphical user interface for data mining in R.
  • rda - Shrunken Centroids Regularized Discriminant Analysis
  • rdetools - Relevant Dimension Estimation (RDE) in Feature Spaces
  • REEMtree - Regression Trees with Random Effects for Longitudinal (Panel) Data
  • relaxo - Relaxed Lasso
  • rgenoud - R version of GENetic Optimization Using Derivatives
  • rgp - R genetic programming framework
  • Rmalschains - Continuous Optimization using Memetic Algorithms with Local Search Chains (MA-LS-Chains) in R
  • rminer - Simpler use of data mining methods (e.g. NN and SVM) in classification and regression
  • ROCR - Visualizing the performance of scoring classifiers
  • RoughSets - Data Analysis Using Rough Set and Fuzzy Rough Set Theories
  • rpart - Recursive Partitioning and Regression Trees
  • RPMM - Recursively Partitioned Mixture Model
  • RSNNS - Neural Networks in R using the Stuttgart Neural Network Simulator (SNNS)
  • Rsomoclu - Parallel implementation of self-organizing maps.
  • RWeka - R/Weka interface
  • RXshrink - RXshrink: Maximum Likelihood Shrinkage via Generalized Ridge or Least Angle Regression
  • sda - Shrinkage Discriminant Analysis and CAT Score Variable Selection
  • SDDA - Stepwise Diagonal Discriminant Analysis
  • SuperLearner and subsemble - Multi-algorithm ensemble learning packages.
  • survminer - Survival Analysis & Visualization
  • survival - Survival Analysis
  • svmpath - svmpath: the SVM Path algorithm
  • tgp - Bayesian treed Gaussian process models
  • tidymodels - A collection of packages for modeling and statistical analysis that share the underlying design philosophy, grammar, and data structures of the tidyverse.
  • torch - Tensors and Neural Networks with 'GPU' Acceleration.
  • tree - Classification and regression trees
  • varSelRF - Variable selection using random forests
  • xgboost heart - eXtreme Gradient Boosting Tree model, well known for its speed and performance.

Natural Language Processing

Packages for Natural Language Processing.

  • text2vec - Fast Text Mining Framework for Vectorization and Word Embeddings.
  • tm - A comprehensive text mining framework for R.
  • openNLP - Apache OpenNLP Tools Interface.
  • koRpus - An R Package for Text Analysis.
  • zipfR - Statistical models for word frequency distributions.
  • NLP - Basic functions for Natural Language Processing.
  • LDAvis - Interactive visualization of topic models.
  • topicmodels - Topic modeling interface to the C code developed by by David M. Blei for Topic Modeling (Latent Dirichlet Allocation (LDA), and Correlated Topics Models (CTM)).
  • syuzhet - Extracts sentiment from text using three different sentiment dictionaries.
  • SnowballC - Snowball stemmers based on the C libstemmer UTF-8 library.
  • quanteda - R functions for Quantitative Analysis of Textual Data.
  • Topic Models Resources - Topic Models learning and R related resources.
  • NLP for :cn: - NLP related resources in R. @Chinese
  • MonkeyLearn - ๐Ÿ’ R package for text analysis with Monkeylearn ๐Ÿ’.
  • tidytext - Implementing tidy principles of Hadley Wickham to text mining.
  • utf8 - Manipulating and printing UTF-8 text that fixes multiple bugs in R's UTF-8 handling.
  • corporaexplorer - Dynamic exploration of text collections

Bayesian

Packages for Bayesian Inference.

  • coda - Output analysis and diagnostics for MCMC.
  • mcmc - Markov Chain Monte Carlo.
  • MCMCpack - Markov chain Monte Carlo (MCMC) Package.
  • R2WinBUGS - Running WinBUGS and OpenBUGS from R / S-PLUS.
  • BRugs - R interface to the OpenBUGS MCMC software.
  • rjags - R interface to the JAGS MCMC library.
  • rstan heart - R interface to the Stan MCMC software.

Optimization

Packages for Optimization.

  • lpSolve - Interface to Lp_solve to Solve Linear/Integer Programs.
  • minqa - Derivative-free optimization algorithms by quadratic approximation.
  • nloptr - NLopt is a free/open-source library for nonlinear optimization.
  • ompr - Model mixed integer linear programs in an algebraic way directly in R.
  • Rglpk - R/GNU Linear Programming Kit Interface
  • ROI - The R Optimization Infrastructure ('ROI') is a sophisticated framework for handling optimization problems in R.

Finance

Packages for dealing with money.

  • quantmod heart - Quantitative Financial Modelling & Trading Framework for R.
  • pedquant - Public Economic Data and Quantitative Analysis
  • TTR - Functions and data to construct technical trading rules with R.
  • PerformanceAnalytics - Econometric tools for performance and risk analysis.
  • zoo heart - S3 Infrastructure for Regular and Irregular Time Series.
  • xts - eXtensible Time Series.
  • tseries - Time series analysis and computational finance.
  • fAssets - Analysing and Modelling Financial Assets.
  • scorecard - Credit Risk Scorecard

Bioinformatics and Biostatistics

Packages for processing biological datasets.

  • Bioconductor heart - Tools for the analysis and comprehension of high-throughput genomic data.
  • genetics - Classes and methods for handling genetic data.
  • gap - An integrated package for genetic data analysis of both population and family data.
  • ape - Analyses of Phylogenetics and Evolution.
  • pheatmap - Pretty heatmaps made easy.
  • lme4 - Generalized mixed-effects models.
  • nlme - Mixed-effects models, handling user-specified matrix of residual covariance, relevant for the anaysis of repeated observations in longitudinal trials.
  • glmmTMB - Generalized mixed-effects models, handling user-specified matrix of residual covariance, relevant for the anaysis of repeated observations in longitudinal trials.

Network Analysis

Packages to construct, analyze and visualize network data.

  • Network Analysis List - Network Analysis related resources.
  • igraph heart - A collection of network analysis tools.
  • network - Basic tools to manipulate relational data in R.
  • sna - Basic network measures and visualization tools.
  • netdiffuseR - Tools for Analysis of Network Diffusion.
  • networkDynamic - Support for dynamic, (inter)temporal networks.
  • ndtv - Tools to construct animated visualizations of dynamic network data in various formats.
  • statnet - The project behind many R network analysis packages.
  • ergm - Exponential random graph models in R.
  • latentnet - Latent position and cluster models for network objects.
  • tnet - Network measures for weighted, two-mode and longitudinal networks.
  • rgexf - Export network objects from R to GEXF, for manipulation with network software like Gephi or Sigma.
  • visNetwork - Using vis.js library for network visualization.
  • tidygraph - A tidy API for graph manipulation

Spatial

Packages to explore the earth.

  • CRAN Task View: Analysis of Spatial Data- Spatial Analysis related resources.
  • Leaflet - One of the most popular JavaScript libraries interactive maps.
  • ggmap - Plotting maps in R with ggplot2.
  • REmap - R interface to the JavaScript library ECharts for interactive map data visualization.
  • sf - Improved Classes and Methods for Spatial Data.
  • sp - Classes and Methods for Spatial Data.
  • rgeos - Interface to Geometry Engine - Open Source
  • rgdal - Bindings for the Geospatial Data Abstraction Library
  • maptools - Tools for Reading and Handling Spatial Objects
  • gstat - Spatial and spatio-temporal geostatistical modelling, prediction and simulation.
  • spacetime - R classes and methods for spatio-temporal data.
  • RColorBrewer - Provides color schemes for maps
  • spatstat - Spatial Point Pattern Analysis, Model-Fitting, Simulation, Tests
  • spdep - Spatial Dependence: Weighting Schemes, Statistics and Models
  • tigris - Download and use Census TIGER/Line shapefiles in R
  • GWmodel - Geographically-Weighted Models
  • tmap - R package for thematic maps

R Development

Packages for packages.

  • Package Development List - R packages to improve package development.
  • promises - Abstractions for Promise-Based Asynchronous Programming
  • devtools heart - Tools to make an R developer's life easier.
  • testthat heart - An R package to make testing fun.
  • R6 heart - simpler, faster, lighter-weight alternative to R's built-in classes.
  • pryr heart - Make it easier to understand what's going on in R.
  • roxygen heart - Describe your functions in comments next to their definitions.
  • lineprof - Visualise line profiling results in R.
  • packrat - Make your R projects more isolated, portable, and reproducible.
  • installr - Functions for installing softwares from within R (for Windows).
  • import - An import mechanism for R.
  • modules - An alternative (Python style) module system for R.
  • Rocker heart - R configurations for Docker.
  • RStudio Addins - List of RStudio addins.
  • drat - Creation and use of R repositories on GitHub or other repos.
  • covr - Test coverage for your R package and (optionally) upload the results to coveralls or codecov.
  • lintr - Static code analysis for R to enforce code style.
  • staticdocs - Generate static html documentation for an R package.
  • sinew - Generate roxygen2 skeletons populated with information scraped from the function script.

Logging

Packages for Logging

  • futile.logger - A logging package in R similar to log4j
  • log4r - A log4j derivative for R
  • logging - A logging package emulating the python logging package.

Data Packages

Handy Data Packages

  • engsoccerdata - English and European soccer results 1871-2016.
  • gapminder - Excerpt from the Gapminder dataset (data about countries through the past 50 years).
  • wbstats - Tools for searching and downloading data and statistics from the World Bank Data API and the World Bank Data Catalog API.
  • ICON - complex systems & networks datasets from the Index of COmplex Networks (ICON) database webpage.
  • RCOBOLDI - Import COBOL CopyBook data files directly into R as properly structured data frames. Package builds are available via Drat and DockerHub.

Other Tools

Handy Tools for R

  • git2r - Gives you programmatic access to Git repositories from R.
  • Conda - Most R packages are available through the Conda polyglot cross-platform dependency manager.

Other Interpreters

Alternative R engines.

  • CXXR - Refactorising R into C++.
  • fastR - FastR is an implementation of the R Language in Java atop Truffle and Graal.
  • pqR - a "pretty quick" implementation of R
  • renjin - a JVM-based interpreter for R.
  • rho - Refactor the interpreter of the R language into a fully-compatible, efficient, VM for R.
  • riposte - a fast interpreter and JIT for R.
  • TERR - TIBCO Enterprise Runtime for R.

Learning R

Packages for Learning R.

  • swirl heart - An interactive R tutorial directly in your R console.
  • DataScienceR heart - a list of R tutorials for Data Science, NLP and Machine Learning.

Resources

Where to discover new R-esources.

Websites

Manuals

  • R-project - The R Project for Statistical Computing.
  • An Introduction to R - A very good introductory text on R, also covers some advanced topic. See also the Manuals section on CRAN
  • CRAN Contributed Docs - CRAN Contributed Documentation in many languages.
  • Quick-R - An excellent quick reference
  • tryR - A quick course for getting started with R.

Tools and References

  • RDocumentation - Search through all CRAN, Bioconductor, Github packages and their archives with RDocumentation.
  • rdrr.io - Find R package documentation. Try R packages in your browser.
  • CRAN Task Views - Task Views for CRAN packages.
  • rnotebook.io - Create online R Jupyter Notebooks for free.

News and Info

  • R Weekly - Weekly updates about R and Data Science. R Weekly is openly developed on GitHub.
  • R Bloggers - There are people scattered across the Web who blog about R. This is simply an aggregator of many of those feeds.
  • R-users - A job board for R users (and the people who are looking to hire them)

Books

Free and Online

  • The Art of R Programming - It's a good resource for systematically learning fundamentals such as types of objects, control statements, variable scope, classes and debugging in R.
  • R Cookbook, 2nd ed. by JD Long & Paul Teetor (2019) - A quick and simple introduction to conducting many common statistical tasks with R.
  • R in Action - This book aims at all levels of users, with sections for beginning, intermediate and advanced R ranging from "Exploring R data structures" to running regressions and conducting factor analyses.
  • Use R! Series by Springer - This series of inexpensive and focused books from Springer publish shorter books aimed at practitioners. Books can discuss the use of R in a particular subject area, such as Bayesian networks, ggplot2 and Rcpp.
  • Learning R Programming - Learning R as a programming language from basics to advanced topics.

Book/monograph Lists and Reviews

Podcasts

Reference Cards

MOOCs

Massive open online courses.

Lists

Great resources for learning domain knowledge.

R Ecosystems

R communities and package collections (in alphabetical order):

2018

  • fable - univariate and multivariate time series forecasting models fable
  • r2d3 - R Interface to D3 Visualizations r2d3
  • rstats-ed - List of courses teaching R
  • promises - Abstractions for Promise-Based Asynchronous Programming promises
  • tinytex - A lightweight and easy-to-maintain LaTeX distribution tinytex
  • Readings in Applied Data Science - These readings reflect Hadley's personal thoughts about applied data science.

2017

  • prophet - Tool for producing high quality forecasts for time series data that has multiple seasonality with linear or non-linear growth.
  • tidyverse - Easily install and load packages from the tidyverse
  • purrr - A functional programming toolkit for R
  • hrbrthemes - ๐Ÿ” Opinionated, typographic-centric ggplot2 themes and theme components
  • xaringan - Create HTML5 slides with R Markdown and the JavaScript library
  • blogdown - Create Blogs and Websites with R Markdown
  • glue - Glue strings to data in R. Small, fast, dependency free interpreted string literals.
  • covr - Test coverage reports for R
  • lintr - Static Code Analysis for R
  • reprex - Render bits of R code for sharing, e.g., on GitHub or StackOverflow.
  • reticulate - R Interface to Python
  • tensorflow - TensorFlow for R
  • utf8 - Manipulating and printing UTF-8 text that fixes multiple bugs in R's UTF-8 handling.
  • Patchwork - Combine separate ggplots into the same graphic.

Other Awesome Lists

Contributing

Your contributions are always welcome!

This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License - CC BY-NC-SA 4.0


The Awesome R Learning Resources repository is meant to help users from all skill levels and backgrounds deepen their understanding of R, which is a programming language and environment for statistical computing and graphics.


The R Discord server is a friendly and dedicated community for R enthusiasts, programmers, statisticians, data scientists, and students. Whether you are looking to connect with fellow useRs, have awesome data viz to share, or just needed help with your stats assignment, you are at the right place!

To join the R Discord server, please click the discoRd badge below.
Discord


Black Lives Matter.
Please consider donating to [Black Girls Code](https://www.blackgirlscode.com/donations.html) today.

The racism and hate crimes toward Asian Americans must end.
Please consider making a [donation in support of Asian communites](https://nymag.com/strategist/article/where-to-donate-to-help-asian-communities-2021.html) today.


Twitter

Contents

Topic Areas

Comprehensive R Tutorials

  • Data Flair - The tutorials are grouped by skill level (beginner, intermediate, expert).
  • Intro to R course by Fabio Votta - part 1 - A fun introduction to R programming grouped into categories (operators, objects, functions, exercises, and data frames).
  • Intro to R course by Fabio Votta - part 2 - A fun introduction to R programming grouped into categories (data manipulation and cleaning featuring the janitor, tidyr, and dplyr packages).
  • Introduction to Data Analysis with R - This is a lecture series with videos, scripts and exercises introducing R and the tidyverse as well as statistical concepts.
  • R CODER - The tutorials are grouped into categories (introduction, data structures, data wrangling, programming, import & export, graphics) that cover in-depth all the basic needs for someone starting learning the R programming language.
  • Tutorials Point - The tutorials are grouped into categories (R tutorial, R Data Interfaces, R Charts & Graphs, R Statistics Examples, R Useful Resources) that cover in-depth all the basic needs for someone starting learning the R programming language.

Functions

Generative Art

  • 12 Months of aRt - In 2019, William Chase began a project to make a new series of artwork every month made entirely with R. In this project, he explored different techniques, developed algorithms, and provided detailed posts detailing the development process for each month.

Joining Data

  • Joining Data in R with dplyr - Course notes from the Joining Data in R with dplyr course on DataCamp. Topics include mutating joins, filtering joins and set operations, assembling data, advanced joining. Author: William Surles.

Math

Shiny

Spatial

Viz

Web Scraping

Wrangling

Uncategorized

  • Data.Table and Dplyr Tour - A detailed comparison of R packages data.table and dplyr. Author: Atrebas.
  • data.table: A gentle introduction - A quick introduction to data.table. The main objective is to present the data.table syntax, showing how to perform basic, but essential, data wrangling tasks. Author: Atrebas.
  • Fakir - Create Fake Data in R for Tutorials - Author: Colin Fay.
  • From base R to stringr - This vignette compares stringr functions to their base R equivalents to help users transitioning from using base R to stringr. Author: Sara Stoudt.
  • Help me help you: creating reproducible examples - Making a great reprex is both an art and a science and this webinar will cover both aspects. A reprex makes a conversation about code more efficient and pleasant for all. This comes up whenever you ask someone for help, report a bug in software, or propose a new feature. The reprex package (https://reprex.Tidyverse.org) makes it especially easy to prepare R code as a reprex, in order to share on sites such as https://community.rstudio.com, https://github.com, or https://stackoverflow.com. Author: Jenny Bryan.
  • R - discoRd server - Dedicated discoRd server with the following topic-based channels: R-Main for more general discussions, R-Share for showing off your data visuals, General R Help for asking questions and sharing learning resources, and Topical Help/Discussion for issues dealing with statistics, dbi, tidymodels, shiny, natural-science, social-science, bayesians, gis, and finance.
  • Subreddit - r/Rlanguage - R Programming Language - A Reddit subreddit focused on implementing the R programming language for statistics and data science.
  • Subreddit - r/programming - The R Project for Statistical Computing - A Reddit subreddit focused on using R for statistical computing.
  • Syntax equivalents: base R vs Tidyverse - A detailed comparison of base R and tidyverse. Author: Hugo Tavares.
  • The ultimate R data.table cheat sheet - Find code for dozens of data tasks in this searchable cheat sheet of R data.table and Tidyverse code. Author: Sharon Machlis.

Blogs

  • Alex Cookson - Alex Cookson loves making beautiful visualizations and easy-to-read walkthroughs of R concepts. He's particularly interested in data about media, like books, movies, and musicals.
  • Avery Robbins - Avery Robbins loves to learn and to share useful or awesome things that have benefited him personally. This website is a tool for him to actively do just that: share knowledge, ideas, and tips that are helpful.
  • Tony ElHabr - Tony ElHabr is passionate mostly about energy markets and sports analytics. His blog provides detailed tutorials, project explanations, and presentations.
  • Cรฉdric Scherer - Cรฉdric Scherer is a graduated computational ecologist and freelance data visualization expert who has created visualizations across all disciplines, purposes, and styles and regularly teaches data visualization principles, R, and ggplot2.
  • Data Imaginist - Thomas Lin Pedersen is a data scientist turned software engineer who focuses on improving researchersโ€™ interactions with the data they produce.
  • Data meets Narrative - Rebecca Barter enjoys making sense of complex, messy and sometimes nonsensical datasets, such as electronic health records, and insurance claims. Her dual passions are explaining โ€œseemingly complicatedโ€ concepts to others in plain English, and exploring and uncovering the stories that underlie complex datasets.
  • HighlandR - John Mackintosh's blog is a place for him to showcase demonstrations or workshops, notes he's learned at work, chart makeovers, and techniques and technology that he doesn't currently use in his role.
  • Julia Silge - Julia Silge is a data scientist and software engineer at RStudio where she work on open source modeling tools. She is passionate about making beautiful charts, the statistical programming language R, Jane Austen, black coffee, and red wine.
  • Musings on R - A blog on all things R and Data Science by Martin Chan. Topics covered include comparing dplyr and data.table, Shiny apps, ggplot, data cleaning, using RStudio, interviews with other R users/data scientists, and web scraping.
  • rweekly - Weekly Updates from the Entire R Community by Bruce Zhao, Colin Fay, Eric Nantz, Hao Zhu, Jon Calder, Jonathan Carroll, Maรซlle Salmon, Ryo Nakagawara, and Wolfram Qin.
  • r-bloggers - R-Bloggers.com was created by Tal Galili and is a blog aggregator of content contributed by bloggers who write about R (in English). The site helps R bloggers and users to connect and follow the R blogosphere.
  • Ryo Nakagawara - Ryo Nakagawara is a Data Scientist and has been doing work as both a reporting analyst and a software developer in R and SQL to improve ACDI and VOCA data pipelines, create R packages, reproducible reports, dashboards, and Shiny apps to communicate how his projects worldwide are progressing.
  • Statistics Globe - Joachim Schork started this platform to share his statistical know-how and to improve his own statistical skills by discussing with other statisticians and programmers.
  • Stats and R - Through his blog, Antoine Soetewey (PhD in statistics) aims at helping academics and professionals working with data to grasp important statistical concepts, and shows how to apply them in R.

Books

  • A Sufficient Introduction to R - This book is intended to guide people that are completely new to programming along a path towards a useful skill level using R. Author: Derek L. Sonderegger.
  • An Introduction to Statistical Learning - This book provides an introduction to statistical learning methods. Authors: Gareth James, Daniela Witten, Trevor Hastie and Robert Tibshirani.
  • Advanced R - This book is designed for R programmers who want to deepen their understanding of the language, and programmers experienced in other languages who want to understand what makes R different and special. Exercise Solutions Author: Hadley Wickham.
  • An Introduction to R - This introduction to R is derived from an original set of notes describing the S and S-Plus environments written in 1990โ€“2 by Bill Venables and David M. Smith when at the University of Adelaide.
  • An Introduction to R - The aim of this book is to introduce you to using R, a powerful and flexible interactive environment for statistical computing and research. Authors: Alex Douglas, Deon Roos, Francesca Mancini, Ana Couto & David Lusseau
  • Answering Questions with Data - This is a free textbook teaching introductory statistics for undergraduates in Psychology. The textbook was written with math-phobia in mind and attempts to reduce the phobia associated with arithmetic computations. Author: Matthew J. C. Crump.
  • Data Science in a Box - The core content of the course focuses on data acquisition and wrangling, exploratory data analysis, data visualization, inference, modelling, and effective communication of results.
  • Data Science in Education Using R - This book is primarily about learning to use R as a tool for data science in education. Authors: Ryan A. Estrellado, Emily A. Bovee, Jesse Mostipak, Joshua M. Rosenberg, and Isabella C. Velรกsquez.
  • Efficient R programming - Efficient R Programming is about increasing the amount of work you can do with R in a given amount of time. Itโ€™s about both computational and programmer efficiency. Authors: Colin Gillespie, Robin Lovelace.
  • Engineering Production-Grade Shiny Apps - This book covers the process of building a Shiny application that will later be sent to production. Authors: Colin Fay, Sรฉbastien Rochette, Vincent Guyader, Cervan Girard.
  • Exploratory Data Analysis with R - This book covers the essential exploratory techniques for summarizing data with R. These techniques are typically applied before formal modeling commences and can help inform the development of more complex statistical models. Author: Roger D. Peng.
  • Forecasting: Principles and Practice - This textbook is intended to provide a comprehensive introduction to forecasting methods and to present enough information about each method for readers to be able to use them sensibly. Authors: Rob J Hyndman and George Athanasopoulos.
  • Geocomputation with R - This book is about using the power of computers to do things with geographic data. It teaches a range of spatial skills, including reading, writing and manipulating geographic data; making static and interactive maps; applying geocomputation to solve real-world problems; and modeling geographic phenomena. Authors: Robin Lovelace, Jakub Nowosad, Jannes Muenchow.
  • ggplot2: Elegant Graphics for Data Analysis - This book provides a hands-on introduction to ggplot2 with lots of example code and graphics. It also explains the grammar on which ggplot2 is based. Author: Hadley Wickham.
  • Happy Git and GitHub for the useR - Happy Git provides opinionated instructions on how to install Git and get it working smoothly with GitHub, in the shell and in the RStudio IDE, develop a few key workflows that cover your most common tasks, and integrate Git and GitHub into your daily work with R and R Markdown. Authors: Jenny Bryan, the STAT 545 TAs, Jim Hester.
  • Introduction to Data Science - Data Analysis and Prediction Algorithms with R - This book started out as the class notes used in the HarvardX Data Science Series. It introduces concepts and skills that can help you tackle real-world data analysis challenges. It covers concepts from probability, statistical inference, linear regression, and machine learning. It also helps you develop skills such as R programming, data wrangling with dplyr, data visualization with ggplot2, algorithm building with caret, file organization with UNIX/Linux shell, version control with Git and GitHub, and reproducible document preparation with knitr and R markdown. Author: Professor Rafael A. Irizarry.
  • Introduction to Probability and Statistics Using R - The book can be subdivided into three basic parts. The first part includes the introductions and elementary descriptive statistics; I want the students to be knee-deep in data right out of the gate. The second part is the study of probability, which begins at the basics of sets and the equally likely model, journeys past discrete/continuous random variables, and continues through to multivariate distributions. The chapter on sampling distributions paves the way to the third part, which isinferential statistics. This last part includes point and interval estimation, hypothesis testing, and finishes with introductions to selected topics in applied statistics. Author: G. Jay Kerns.
  • Introduction to R & Spatial Data with Raster and Terra - This document provides a concise introduction to R. It emphasizes what you need to know to be able to use the language in any context. Author: Professor Robert Hijmans.
  • JavaScript for R - The ultimate aim of this work is to demonstrate to the reader the many great benefits one can reap by inviting JavaScript into their data science workflow. Author: John Coene.
  • Learning Statistics with R - Learning Statistics with R covers the contents of an introductory statistics class, as typically taught to undergraduate psychology students, focusing on the use of the R statistical software. Author: Danielle Navarro.
  • Mastering Shiny - This is the online version of Mastering Shiny, a book currently under early development and intended for a late 2020 release. This book complements the Shiny online documentation and is intended to help app authors develop a deeper understanding of Shiny. Author: Hadley Wickham. Mastering Shiny Exercise solutions
  • Modern R with the tidyverse - The idea of Chapters 1 to 7 is to make you efficient with R as quickly as possible, especially if you already have prior programming knowledge. Starting with Chapter 8 you will learn more advanced topics, especially programming with R. Author: Bruno Rodrigues.
  • Modern Statistics with R - From wrangling and exploring data to inference and predictive modelling. The book includes plenty of examples and more than 200 exercises with worked solutions. Author: Mรฅns Thulin.
  • Practical Data Science with R - The intent of this book is to present data science from a pragmatic, practice-oriented viewpoint. The book concentrates on the process of data science, from the planning stages of a project, through the data collection and exploration, to the modeling, and finally to deployment and the sharing of results. Authors: Nina Zumel and John Mount.
  • Practical Regression and Anova using R - The emphasis of this text is on the practice of regression and analysis of variance. The objective is to learn what methods are available and more importantly, when they should be applied. Author: Julian Faraway.
  • Practicals and Exercises - This series of exercises reviews some of the content discussed during the author's lectures, and introduces some other basic concepts about working with data in R. Author: Charles DiMaggio, PhD.
  • Quantitative Politics with R - The aim of this book is to provide an easily accessible introduction to R for the collection, study and presentation of different types of political data. Authors: Erik Gahner Larsen and Zoltรกn Fazekas.
  • R Cookbook, 2nd Edition - This book is full of how-to recipes, each of which solves a specific problem. The recipe includes a quick introduction to the solution followed by a discussion that aims to unpack the solution and give you some insight into how it works. Authors: James (JD) Long and Paul Teetor.
  • R for Data Science - This book will teach you how to do data science with R. You will learn how to get your data into R, get it into the most useful structure, transform it, visualize it and model it. Exercise Solutions Authors: Garrett Grolemund and Hadley Wickham.
  • R Packages - In this book you will learn how to turn your code into packages that others can easily download and use. Author: Hadley Wickham.
  • R Programming for Data Science - This book brings the fundamentals of R programming to you, using the same material developed as part of the industry-leading Johns Hopkins Data Science Specialization. Author: Roger Peng.
  • R Tutorial โ€“ Be a Data Science rock star with R - A tour of the R programming language that explores its different and essential concepts. This R DataFlair Tutorial Series is designed to help beginners to get started with R and experienced to brush up their R programming skills and gain perfection in the language.
  • Statistical Inference via Data Science - This is intended to be a gentle introduction to the practice of analyzing data and answering questions using data the way data scientists, statisticians, data journalists, and other researchers would. Authors: Chester Ismay and Albert Y. Kim.
  • Supervised Machine Learning for Text Analysis in R - This book focuses on supervised or predictive modeling for text, using text data to make predictions about the world around us. Authors: Emil Hvitfeldt and Julia Silge.
  • Text Mining with R - This book serves as an introduction of text mining using the tidytext package and other tidy tools in R. Authors: Julia Silge and David Robinson.
  • The Art of R Programming - This book is for those who wish to learn about developing software in R. Author: Norman Matloff.
  • The Book of R - The aim of The Book of R: A First Course in Programming and Statistics is to provide a relatively gentle yet informative exposure to the statistical software environment R, alongside some common statistical analyses, so that readers may have a solid foundation from which to eventually become experts in their own right. Exercise solutions Author: Tilman M. Davies.
  • The R Inferno - A book about trouble spots, oddities, traps, and glitches in R. Author: Patrick Burns.
  • The R Language - An introduction to R written by the authors of the R language.
  • Tidy Modeling with R - This book is a guide to using a new collection of software in the R programming language for model building.

Communities of Practice

A community of practice is a group of people who share a concern or a passion for something they do and learn how to do it better as they interact regularly.

  • TidyTuesday - TidyTuesday is a weekly data project aimed at the R ecosystem with an emphasis placed on understanding how to summarize and arrange data to make meaningful charts.
  • R for Data Science (R4DS) Online Learning Community - Founded by Jessie Mostipak (@kierisi) to create a supportive and responsive online space for learners and mentors to gather and work through the R for Data Science book by Garrett Grolemund and Hadley Wickham. Grown into a community of R learners at all skill levels working together to improve their skills.

Podcasts

  • Not so Standard Deviations - A data science podcast where Roger Peng and Hilary Parker talk about the latest in data science and data analysis in academia and industry.
  • The R-Podcast - Practical advice on how to take advantage of R to accomplish innovative and robust data analyses. Hosted by Eric Nantz.

YouTube

  • Andrew Couch - Topics include modeling, creating functions, dashboards, and forecasting.
  • Ben Stenhaug - Topics include saving and reading data, map functions in purrr, t-tests, item response theory, and the basics of R and the tidyverse.
  • Cรฉdric Scherer - A collection of talks and seminars about R-related topics such as ggplot2 or Shiny, and data visualization in general.
  • Colin Quirk - Topics include regular expressions, data types, Shiny, and gganimate.
  • Data Analysis and Visualization Using R - Topics for the online course Data Analysis and Visualization Using R.
  • Data Science with Tom - Topics include time series, analyzing word relationships with ggraph and tidytext, and tidymodels.
  • David Jablonski - The UC Berkeley R Bootcamp playlists include videos on R basics, handling data, performing calculations, programming, graphics, workflows, and statistics.
  • David Robinson - Topics include graphing for EDA, data manipulation, animated mapping, visualization, text mining, time series, forecasting, regression, bootstrapping, package development, network graphs, ANOVA, JSON, simulation, survival analysis, and tidymetrics. Click here for detailed TidyTuesday screencast annotations.
  • Dean Attali - Shiny, including several videos on debugging Shiny.
  • Dragonfly Statistics - Topics include numerical computing, generating random walks, markov chains, encoding categorical variables, probability, correlation plots, feature engineering, time series, binary classifiers, models, data.table, confusion matrices, machine learning, geocoding, summary statistics, and simulation.
  • IDG TECHtalk - Do More with R playlist includes tutorials on shiny, data.table, getting API data, using Git and Github with R, writing your own packages, run Python in R code, RStudio addins and keyboard shortcuts, dashboards and flexdashboards.
  • Julia Silge - Topics include predictive text modeling, impute missing data, tidymodels, sentiment analysis, multinomial classification, principal component analysis, data preprocessing and resampling, and multinomial classification.
  • Lander Analytics - In-depth talks by different experts on a wide variety of topics.
  • MarinStatsLectures - Topics include descriptive statistics, ANOVA, bootstrapping, linear regression, bivariate analysis, and probability distributions.
  • Numyard - Topics include working with dataframes, for loops, basic math, vectors, lists, creating functions, data types, and random sampling.
  • R Programming 101 - This channel provides teaching videos on data analysis and statistical analysis using R programming. The teaching videos include subjects like data cleaning, data manipulation, data visualization, statistical analysis, and machine learning and AI (artificial intelligence).
  • Richard Webster - Topics include the paste function, the apply family of functions, while and for loops, conditional statements, visualization, removing NAs, and combining data.
  • RichardOnData - The R playlist includes videos on manipulating data with dplyr, visualizing data with ggplot2 and ggThemeAssist, data types and structures, important base r functions, handling datetimes with lubridate, conquering factors with forcats, manipulating text with stringr.
  • Shiny Developer Series - The goals of the Shiny Developer Series are to showcase the innovative applications and packages in the ever-growing Shiny ecosystem, as well as the brilliant developers behind them!
  • Simplilearn - The R Programming for Beginners playlist includes videos on data science, charting, data visualization, algorithms, business analytics, regression, random forest, SVM, clustering, time series, modeling, and analytical techniques.
  • Statistics Globe - A collection of short but detailed tutorials on how to work through common problems you will face while using R. Topics include data formatting, reordering data, strings, and ggplot2.
  • StatistikinDD - Playlists on Efficient R Programming (e. g. running R code in parallel), Visualization, Regression Analyses.
  • StatQuest with Josh Starmer - The Statistics and Machine Learning in R playlist deals with principal component analysis, random forest, regression, ROC and AUC, and ridge, lasso and elastic-net.
  • TidyX - TidyX is a screen cast where the hosts select code from the TidyTuesday project and go through their code line-by-line, explaining what they did and how the functions they used work. They also break down the visualizations they create and talk about how to apply similar approaches to other data sets. The objective is to help more people learn R and get involved in the TidyTuesday community.

Contributing

  • Your contributions are always welcome! Please visit our contributing.md to learn how to contribute to this list.

Back to Top

Awesome D Awesome


A curated list of awesome D frameworks, libraries and software. Inspired by awesome-python.

I created this list so that when I needed something in the future, it would be easy to find. Most of the documents and links are collected from the D forum, the D wiki, and the D package repository. Exploring GitHub also helps as many of the libs are hosted there.

If you know an interesting lib/app in D, please tell us through GitHub issues or edit this file.

Contents

Official Website

Official Website URLs.

Getting Help

For when you're stuck.

People

The people that made D the language it is.

  • Walter Bright - Father of D. Walter Bright is the creator and first implementer of the D programming language and has implemented compilers for several other languages.
  • Andrei Alexandrescu, PhD - C++ guru. Author of The D Programming Language and Modern C++ Design. With Walter Bright, Andrei co-designed many important features of D and authored a large part of D's standard library. Andrei works as a trainer in advanced C++ programming and algorithms and is now actively evangelizing D in the organization.
  • รtila Neves - Deputy Leader of D.
  • YOU - Please add your information if you've done something interesting in D. It is you, the awesome people that made D awesome.

Events

  • DConf - the premier event where D luminaries exchange knowledge, insight, and inspiration on everything related to the D language and its ecosystem.

Organizations

Organizations that contribute to D projects.

  • D Programming Language - Official Organization, hosts DMD, Phobos and other official tools and libs.
  • LDC Developers - LDC releated projects.
  • DerelictOrg - A GitHub organization hosting all Derelict bindings including OpenGL and other multimedia/game related library bindings. (OpenGL 3, Bgfx, ENet, SDL 2, GLFW 3๏ผŒOpenGLES, Free Image, Assimp3, libtheora, libogg, libvorbis, SFML 2, libpq, PhysicsFS, Open Dynamics Engine, Lua, DevIL, OpenAL, ALURE).
  • DlangScience -A focal point and first port of call for scientific libraries and tooling for D.
  • Circular Studios - We are a group of game developers at Rochester Institute of Technology building games and game tech. Hosts Dash, a 3D game engine written in D, and other related libs.
  • EMSI - A Career building company that uses D as their main language. Hosts their opensource projects.
  • infognition - Infognition is a self-funded and self-sustained company specializing in video processing and compression technologies for end-users and developers. They provide several opensource video related applications & tools written in D, hosted on bitbucket. They are also porting their main product--Video Enchanser from C/C++ to D.
  • libmir - D's numeric library development team
  • sociomantic labs - Berlin based company specializing in real-time bidding for online advertising. Main sponsor of the annual D language conference. Has open-sourced large parts of their codebase as part of the tsunami organization.
  • Symmetry Investments - Symmetry Investments LP is an investment management company with approximately US$4.7 billion in assets under management as of 31 December 2018. Main sponsor of the Symmetry Autumn of Code. Have sponsored the development of excel-d, dpp, autowrap, mir-algorithm, and various other projects.
  • HuntLabs - A technology group using DLang. Have pure D language implementation of quickly develop server-side applications and build distributed system services.

Books

D related books. You can find another list of books on the Books D wiki page. * TDPL - The D Programming Language by Andrei Alexandrescu. * Programming in D - A very detailed book about programming in D by Ali ร‡ehreli covering many areas of the language. Has a free online version and is suitable for beginners. * D Cookbook - A recipe-packed reference guide filled with practical tasks that are concisely explained to develop and broaden the user's abilities with the D programming language. by Adam D. Ruppe. Here is an interesting review of the book. * Learning D - This book is intended for those with some background in a C-family language who want to learn how to apply their knowledge and experience to D. (...) This book will help you get up to speed with the language and avoid common pitfalls that arise when translating C-family experience to D. * D Web Development - Whether you are new to the world of D, or already have developed applications in D, or if you want to leverage the power of D for web development, then this book is ideal for you.

Tutorials

D related tutorials. * The Dlang Tour - An interactive tutorial for D, inspired by Golang Tour. * Pragmatic D tutorial - This is a pragmatic introduction to the D Programming Language. by Andreas Zwinkau. * D Template Tutorial - A tutorial dedicated to D Templates. Very good explanation about templates. Has pdf version. by Philippe Sigaud. * Component programming in D - An article written by Walter Bright that details how D's functional support leads to a flexible and beautiful component programming style. * Component programming with ranges - A detailed blog post about how to do component programming in a idiomatic D way with ranges, with a full working example. * Functional image processing in D - A very interesting tutorial about writing an image processing lib in D. Shows the power of D's templates/CTFE/Ranges/UFCS for functional style programming. * OpenGL tutorials - OpenGL tutorials in D. * Creating a simple JSON serialiser in D - D metaprogramming tutorial series

Bare metal / kernel development

Blogs

D related blogs.

  • blog.dlang.org - Official blog.
  • /r/d_language on Reddit - A feed of news and blog posts about D.
  • This week in D - A weekly overview of activity in the D community and brief advice columns to help you get the most out of the D Programming Language.
  • Planet D - A repository of co-authored D-specific blogs maintained by Vladimir Panteleev.
  • D Idioms - A great blog for many useful idioms with D programming.
  • GTK-D coding - Simple examples of how to use GtkD to build GUI applications.
  • Tasty D - A blog about learning the D programming language and various D language trivia.

Articles

D related Aritcles.

Package Management

Libraries for package and dependency management.

  • code.dlang.org - Official D library repository. Backed by dub.
  • dub - Official package and build management system for D.

Compilers

Compile software from source code.

  • dmd - The reference compiler for the D programming language. Stable, builds insanely fast, very good for learning and rapid prototyping/development. Currently the frontend is implemented in D, and shared between dmd, ldc and gdc, the backend is implemented in C++.
  • ldc - The LLVM-based D compiler. Uses the DMD frontend and LLVM backend. Builds slower than dmd, but generates more optimized code than DMD. It supports all the target platforms of LLVM.
  • gdc - GNU D Compiler. Use DMD frontend and GCC backend. Currently targets the most platforms due to the use of GCC. Generated code runs faster than DMD in most cases, on par with LDC. In the process of integration with the official GCC toolchain.

WIP Compilers

  • sdc - The Stupid D Compiler. Written in D. Grows Smarter every day.

Dev Tools

Tools for more productive D development.

  • D-Scanner - Swiss-army knife for D source code (linting, static analysis, D code parsing, etc.)
  • dfmt - formatter for D source code

Build Tools

Manage projects and compile software from source code.

  • dub - De facto official package and build management system for D. Will be included officially soon.
  • scons-d - Scons has built-in support for building D projects, thanks to Russel Winder.
  • premake - Premake has built-in support for D projects
  • reggae - meta build system in D
  • Makefile - Makefile template for D projects
  • cmake-d - CMake D Projects
  • cook2 - Fast incremental build tool intended for projects in D
  • button - A universal build system to build your software at the push of a button.
  • wild - Wild build system, used to build the PowerNex kernel

IDEs & Editors

Integrated Development Environment.

  • Visual D - Visual Studio extension for the D programming language.
  • IntelliJ D Language - Support for the D programming language within IntelliJ IDEA.
  • Dexed - IDE for the D programming language, its compilers, tools and libraries.
  • Dutyl - Vim plugin that integrates various D development tools
  • code-d [open-vsx] - Visual Studio Code extension using serve-d
  • ide-d - Atom extension for D using serve-d


  • DCD - Independent auto-complete program for the D programming language. Could be used with editors like vim, emacs, sublime text, textadept, and zeus. See editors support.
  • serve-d - Language Server Protocol (LSP) implementation for D. Adds modern IDE features to any editor with LSP support (VSCode, Atom, Vim/Neovim and others)

Lexers, Parsers, Parser Generators

  • libdparse - A D language lexer and parser, (possibly) future standard D parser/lexer.
  • Martin Nowak's Lexer - A lexer generator.
  • Mono-D's DParser - A D parser written in C# and used in Mono-D.
  • Pegged - A Parsing Expression Grammar (PEG) module written in D.
  • Goldie - Goldie Parsing System.
  • ctpg - Compile-Time Parser (with converter) Generator written in D.
  • dunnart - LALR(1) Parser Generator written in D.

Preprocesors

  • warp - A fast preprocessor for C and C++ used in Facebook infrastructure. Written by Walter Bright.

Javascript

  • higgs - Higgs JavaScript Virtual Machine, implemented in D.

Basic

  • hunt - A refined core library for D programming language. The module has concurrency / collection / event / io / logging / text / serialize and more.
  • hunt-time - A time library and similar to Joda-time and Java.time api.
  • hunt-validation - A data validation library for DLang based on hunt library.

Containers

  • EMSI containers - Containers that do not use the GC
  • memutils - Overhead allocators, allocator-aware containers and lifetime management for D objects
  • dlib.container - generic data structures (GC-free dynamic and associative arrays and more)
  • std.rcstring - A reference counted string implementation for D's build in string construct

GitHub Actions

  • setup-dlang - Install D compilers & DUB inside GitHub Actions
  • dub-upgrade - Run dub upgrade trying to repeat on network failure and using package cache on GitHub Actions

Testing Frameworks

  • silly - Better test runner for the D programming language. No nonsense.
  • dunit - Advanced unit testing & mocking toolkit
  • unit-threaded - Multi-threaded unit test framework

Web Frameworks

Networking library * hunt-net - High-performance network library for D programming language, event-driven asynchonous implemention(IOCP / kqueue / epoll). * hunt-http - HTTP/1 and HTTP/2 protocol library for D. * hunt-stomp - STOMP for websocket protocol library implement in D. * libasync - Cross-platform event loop library of asynchronous objects * libhttp2 - HTTP/2 library in D, translated from nghttp2 * collie - An asynchronous event-driven network framework written in dlang, like netty framework in D. * dlang-requests - HTTP client library inspired by python-requests

Full stack web frameworks. * Hunt Framework - Hunt is a high-level D Programming Language Web framework that encourages rapid development and clean, pragmatic design. It lets you build high-performance Web applications quickly and easily. * vibe.d - Asynchronous I/O Web Framework that doesnโ€™t get in your way, written in D. * arsd - Adam D. Ruppe's web framework. * cmsed - A component library for Vibe that functions as a CMS.

RPC library * grpc - Grpc for D programming language, hunt-http library based. * kissrpc - Fast and light, flatbuffers based rpc framework. * Hprose - A very newbility RPC Library for D, and it support 25+ languages now. * Apache Thrift - A lightweight, language-independent, featureful RPC framework. Thrift provides clean abstractions for data transport, data serialization, code generation, and application level processing. Dub package

Gossip

  • hunt-gossip - A Apache V2 gossip protocol implementation for D programming language.

Cache

  • hunt-cache - D language universal cache library, using radix, redis and memcached.

Static Site Generator

  • DSSG - A static site generator with a different approach.

Data serialization

Json, XML, protobuf and other data serialization libs.

Binary Serilization

  • flatbuffers - D Programming Language implementation of the google flatbuffers library.
  • cerealed - Serialisation library for D
  • dproto - Google Protocol Buffer support in D.

JSON

  • vibe.data.json - JSON functions in Vibe.d. Currently the best implementation I used.
  • fast.json - A library for D that aims to provide the fastest possible implementation of some every day routines.
  • std.json - D's standard library JSON module. Needs refinement.
  • painlessjson - Convert between D types and std.json.
  • std.data.json - Phobos candidate for JSON serialization (based on Vibed)
  • asdf - Cache oriented string based JSON representation for fast read & writes and serialisation.

XML

  • orange - General purpose serializer (currently only supports XML)
  • std.experimental.xml - Phobos candidate for a XML serialization
  • arsd dom.d - an xml/html DOM based on what Javascript provides in browsers

Database clients

Clients and bindings to C bliencts for relational and nosql databases.

  • hunt-entity - Hunt entity is an object-relational mapping tool for the D programming language. Referring to the design idea of JPA, support PostgreSQL / MySQL / SQLite.
  • hunt-database - Hunt database abstraction layer for D programing language, support PostgreSQL / MySQL / SQLite.
  • vibe.d - Vibe.d has internal support for Redis and MongoDB, which are very stable. Soon, the database drivers will be separated into independent projects.
  • mysql-native - A MySQL client implemented in native D.
  • ddb - Database access for D2. Currently only supports PostgreSQL.
  • arsd - Adam D. Ruppe's library; in addition to a Web backend, it also has support for database access with database.d, sqlite.d, mysql.d and postgres.d.
  • ddbc - DDBC is a DB Connector for D language (similar to JDBC). HibernateD (see below) uses ddbc for database abstraction.
  • hibernated - HibernateD is an ORM for D (similar to Hibernate).
  • dvorm - An ORM for D with Vibe support. Works with vibe.d and mysql-d, giving it the ability to access MongoDB and MySQL.
  • Tiny Redis - Redis driver for D. Fast, Simple, Stable. Has no dependencies.

Command Line

  • hunt-console - Hunt console creation easier to create powerful command-line applications.
  • tilix - A tiling terminal emulator for Linux using GTK+ 3.
  • scriptlike - Utility library to aid writing script-like programs in D.
  • todod - Todod is a command line based todo list manager. It also has support for shell interaction based on linenoise.
  • d-colorize - A port of the ruby library colorize. It add some methods to set color, background color and text effect on console easier using ANSI escape sequences.
  • terminal.d - Part of Adam Ruppe's arsd library supporting cursor and color manipulation on the console.
  • dexpect - A D implementation of the expect framework. Handy for bash emulation.
  • Argon - A processor for command-line arguments, an alternative to Getopt, written in D.
  • argsd - A command line and config file parser for DLang
  • darg - Robust command line argument parsing for D.
  • commandr - A modern, powerful commmand line argument parser.
  • luneta - A command-line fuzzy finder.
  • argparse - Flexible parser of command line arguments.

GUI Libs

Libraries for working with graphical user interface applications.

  • DLangUI - Cross Platform GUI for D programming language. My personal favorate, because it is written in D(not a binding), and is cross platform. DLangUI also has a good showcase in the IDE DLangIDE.
  • GtkD - GtkD is a D binding and OO wrapper of GTK+. GtkD is actively maintained and is currently the most stable GUI lib for D.
  • DWT - A library for creating cross-platform GUI applications. GWT is a port of the Java SWT library to D. DWT was promoted as a semi-standard GUI library for D, but unfortunately didn't catch up popularity yet.
  • tkD - GUI toolkit for the D programming language based on Tcl/Tk.
  • dqml - Qt Qml bindings for the D programming language.
  • Sciter-Dport - D bindings for the Sciter - crossplatform HTML/CSS/script desktop UI toolkit.
  • LibUI - Dynamic Binding for libui

Note: You can also find a list of GUI libs on wiki.dlang.org, but not all of the libraries are actively maintained now.

OS

Operating Systems written in D

Game Bindings

Bindings to game development related C libraries.

Game Engine Bindings

  • Godot-D - D language bindings for the Godot Engine's GDNative API

Game Frameworks

Games

  • Spacecraft - A 3d multiplayer deathmatch space game written in D 2.0.
  • Dtanks - Robot Tank Battle Game.
  • Atrium - FPS game with physics based puzzles using OpenGL.
  • Backgammony - A Backgammon GUI for Linux built with Gtk.

Internationalization

  • bindbc-icu - bindbc bindings for the unicode ICU library.

Video applications

  • DerelictGL3 - A dynamic binding to OpenGL for the D Programming Language.

Image Processing

  • ArmageddonEngine - Vladimir Panteleev's ae library has a package for image processing in functional style, which is described in the article Functional Image Processing in D.
  • Blogsort - A simple Windows app for viewing photos and preparing them for a blog.
  • dlib.image - image processing (8 and 16 bits per channel, floating point operations, filtering, FFT, HDRI, graphics formats support including JPEG and PNG)
  • color.d + bmp.d, jpg.d, png.d - basic color struct, HSL functions and reading and writing image files
  • opencvd - Unofficial OpenCV binding for D

End-user applications

  • Drill - Search files without indexing, but clever crawling
  • Cryptic-Resolver - Manage cryptic commands' names, acronyms and your own knowledge base (a command line utility)

Machine Learning

  • vectorflow - Nexflix's opensource deep learning framework.
  • bindbc-onnxruntime - bindbc bindings to Microsoft's cross-platform, high performance ML inferencing and training accelerator

Parallel computing

Scientific

Scientific programming

  • scid - Scientific library for the D programming language
  • dstats - A statistics library for D.
  • mir - Sandbox for some mir packages: sparse tensors, Hoffman and others.
  • mir-algorithm - N-dimensional arrays (matrixes, tensors), algorithms, general purpose library.
  • mir-random - Advanced Random Number Generators.
  • decimals - Decimal library for D.

Language Processing

  • bindbc-mecab - bindbc MeCab binding (Part-of-Speech and Morphological Analyzer for Japanese)

Text Processing

  • hunt-markdown - A markdown parsing and rendering library for D programming language. Support commonMark.
  • eBay's TSV utilities - Filtering, statistics, sampling, joins and other operations on TSV files. Very fast, especially good for large datasets.

Logging

Print with care.

Configuration

Parsing configuration files

  • sdlang - An SDL (Simple Declarative Language) library for D.
  • D:YAML - YAML parser and emitter for the D programming language.
  • inifile-D - A compile time ini file parser and writter generator for D

Blog Engine

Hosting blogs yourself

  • mood - simple vibe.d based blog engine

Dependency Injection

Apply inversion of control

  • Poodinis - A dependency injection framework for D with support for autowiring.

Other Awesome Lists

Other amazingly awesome lists can be found in the awesome-awesome and awesome-awesomeness projects.

Awesome Common Lisp Awesome Assertible status

A curated list of awesome Common Lisp libraries.

For awesome software, see lisp-lang.org's success stories and the awesome-cl-software list.

All libraries listed here are available from Quicklisp unless stated otherwise. The ones marked with a :star: are so widespread and solid that they became community standards. You can't be wrong with them. This is the case for Quicklisp, BordeauxThreads and such. Libraries denoted with a ๐Ÿ‘ are the ones we like and want to promote here at the Awesome-cl list. They proved solid, they may solve a problem better than a community standard but they aren't as widespread, or not considered as stable. For example, we prefer Spinneret over Cl-Who.

Add something new! See the contributing section for adding something to the list.

This is released under the GNU Free Documentation License - its text is provided in the LICENSE file. This repository is also mirrored on NotABug - a fully-free (as in libre) alternative to Github. Preference is given to free software and sellers who aren't evil for physical resources.

Table of Contents

Audio

  • Open Music - a visual programming, computer-aided composition environment. GPL3.
  • OM7 - a new implementation of the OpenMusic visual programming and computer-aided composition environment including a number of improvements on graphical interface, computational mode, and connection to external software libraries. GPL3.
  • Incudine - Music/DSP programming environment for Common Lisp. Useful to design software synthesizers or sound plugins from scratch. It is also a compositional tool that allows to produce high quality sounds controllable at the sample level, defining and redefining the digital signal processors and the musical structures on-the-fly.
  • cl-collider - A SuperCollider client for CommonLisp. With a tutorial and live coding demos. Public domain.
  • csound - A sound and music computing system. Includes CFFI and FFI interfaces for Common Lisp.
  • CLM - Common Lisp Music is a music synthesis and signal processing package in the Music V family. It provides much the same functionality as Stk, Csound, SuperCollider, PD, CMix, cmusic, and Arctic โ€” a collection of functions that create and manipulate sounds, aimed primarily at composers (in CLM's case anyway).
  • cl-patterns - a system for composing music via Lisp code, heavily inspired by SuperColliderโ€™s patterns system, with aims to implement much of it, but in a more robust, expressive, consistent, reflective, and lispy way. Audio output through SuperCollider, with preliminary support for Incudine, and MIDI through ALSA.
  • cl-openal - bindings for the OpenAL audio library. Public domain.
  • Common Music - the repository of an ancient version of Common Music (version 2.12.0), the presumably last version which ran on Common Lisp dating from around 2007-09, before work on Common Music shifted to (scheme-based) cm3.
  • Slippery Chicken - Algorithmic composition library which outputs Midi, Common Music Notation, pdf-score via Lilypond and sound via Common Lisp Music. GPL3.
  • Common Music Notation - Common Music Notation (CMN) provides a package of functions to hierarchically describe a musical score. Public domain.
  • cm-incudine - extends Common Music 2 with realtime capabilities. GPL2.
  • Mรฉgra - A mini-language to make music with variable-order markov chains and some other stochastic shenanigans. GPL3.
  • Music - A framework for musical expression in Lisp with a focus on music theory (built from scratch, unrelated to Common Music).
  • rq - A library for rhythm transcription in OpenMusic (version 6.10 and later). demo video. GPL3.
  • scheduler - The time based musical event scheduler for Common Lisp. Apache2.0.
  • mixalot - Loosely-coupled collection of audio libraries for mp3, ogg vorbis, flac. Used for the Shuffletron music player. MIT.
  • osc - an implementation of the Open Sound Protocol. LGPL2.1.
  • Harmony - A real-time sound processing and playback system. zlib.

Build Systems

  • :star: ASDF - Another System Definition Facility; a build system for Common Lisp. Expat. Quicklisp (see library manager) uses ASDF under the hood.
  • known ASDF extensions, such as asdf-system-connections, that lets you specify systems that are automatically loaded when two other systems are loaded, to connect them.
  • asdf-linguist - Extensions for ASDF. Expat.
  • asdf-viz - a tool to visualize the library dependencies of ASDF systems, the call graph of a function and the class inheritances. LLGPL.

Compilers, code generators

APL

  • April - The APL programming language (a subset thereof) compiling to Common Lisp. Replace hundreds of lines of number-crunching code with a single line of APL. Apache2.

C, C++

  • cmacro - Lisp macros for C. MIT.
  • C-mera - a source-to-source compiler that utilizes Lisp's macro system for meta programming of C-like languages. GPL3.
  • lispc - a powerful "lispsy" macrolanguage for C. MIT.
  • with-c-syntax - a fun package which introduces the C language syntax into Common Lisp. (Yes, this package is not for practical coding, I think.) WTFPL Licence.
  • ecrepl - an interactive REPL for the C language. BSD_2Clause.
  • Software-Evolution-Library - The SEL enables the programmatic modification and evaluation of software (C/C++ support using Clang, compiled assembler, and linked ELF binaries). GPL3.

Crypto

Cryptocurrencies

  • cl-monero-tools - Common Lisp toolbox to work with the Monero cryptocurrency. GPL3. Not in Quicklisp.
  • emotiq - a next-generation blockchain with an innovative natural-language approach to smart contracts. MIT.
  • peercoin-blockchain-parser - parse the blockchain contained in a file and export some of its data to a text file, a SQL script or a database. It can also create a database using the RPC of a Peercoin daemon as source of data instead of a blockchain file. LGPL3. Not in Quicklisp.
  • peercoin-calculator - This program gives you the probability of generating a POS or POW block within 10 minutes, 24 hours, 31 days, 90 days and 1 year, as well as the reward that can be expected. GUI in Qt. GPL3. Not in Quicklisp.
  • peercoin-vote - A voting system based on data from the blockchain (addresses and balances). GPL3. Not in Quicklisp.

See also legochain, a simple educational blockchain.

Database

  • cl-yesql - SQL statements live in their own files, in SQL syntax, and are imported into Lisp as functions. You are not limited to the features a DSL supports. Based on Clojure's Yesql. MIT.

ORMs

Persistent object databases

Graph databases

  • cl-agraph, a minimal client for AllegroGraph. AllegroGraph is a horizontally distributed, multi-model (document and graph), entity-event knowledge graph technology. It is proprietary and has a free version with a limit of 5 million triples.
  • neo4cl - a library for interacting with Neo4J. Sends Cypher queries to a Neo4J server, and decodes the responses into something useful for processing in CL. Apache2.
  • and maybe: cl-neo4j - a thin neo4j RESTFUL client interface.
  • vivace-graph - graph database & Prolog implementation. Takes design inspiration from CouchDB, neo4j and AllegroGraph. It implements an ACID-compliant object graph model with user-defined indexes and map-reduce views. It also implements a master / slave replication scheme for redundancy and horizontal read scaling. Querying the graph is accomplished via a number of Lisp methods or via a Prolog-like query language. MIT.
  • facts - an in-memory graph database with transactions and rollbacks, logging/replay and dumping/loading to/from disk. BSD-style license (ISC).

and also:

  • restagraph - an app that dynamically generates REST APIs for a Neo4j database, using a schema defined within the database. GPL3.

Wrappers

Migration tools

To third parties

  • dyna - an AWS DynamoDB ORM. MIT.
  • cl-influxdb - an interface to the Time Series Database InfluxDB. MIT.
  • pzmq - ZeroMQ 4.0+ Common Lisp bindings. Unlicense.

Tools

Data Structures

  • ๐Ÿ‘ str - a modern, simple and consistent string manipulation library. MIT.
  • ๐Ÿ‘ FSet - A functional, set-theoretic collections data structure library. LLGPL.
  • trivial-extensible-sequences - Portability library for the extensible sequences protocol (SBCL documentation). zlib.
  • bst - Binary Search Tree. GPL3.
  • pileup - a portable, performant, and thread-safe binary heap for Common Lisp. MIT.
  • sycamore - a fast, purely functional data structure library. BSD_3Clause.
  • genhash โ€“ hash table implementation with API from generic methods. Public domain.
  • cl-ctrie - lock-free, concurrent, key/value index with efficient memory-mapped persistence and fast transient storage models. MIT.
  • cl-data-structures - a portable collection of data structures and algorithms (mainly dicts and sequences, with some statistical functions). BSD.
  • listopia - a list manipulation library inspired by Haskell's Data.List. LLGPL.
  • hash-set - a convenience library implementing hash sets on top of CL hash tables The Unlicense
  • cl-containers - an extensive library of data structures and utilities - queues, trees, heaps, doubly-linked lists, sets, bags,... MIT
  • cl-competitive - Common Lisp algorithms collection for competitive programming. Public domain, CCO or MIT.

Accessing data structures:

  • ๐Ÿ‘ access - Consistent and nested access to most common data structures. BSD_3Clause.
  • modf - a setf-like macro for functional programming.

Other data structures:

  • bitfield - Efficiently represent several finite sets or small integers as a single non-negative integer. MIT.

Docker images

  • cl-docker-images - Docker images for ABCL, CCL, ECL, and SBCL on Windows (amd64) and Alpine and Debian (amd64, arm64, arm/v7) BSD_2Clause.
  • base-lisp-image - base Docker image for Common Lisp projects with SBCL or CCL and the latest ASDF, Qlot and Roswell.

Foreign Function Interface, languages interop

C

Clojure

  • ABCLJ - dead easy Clojure to Common lisp interop. EPL-2.0.

Erlang

  • CLERIC - a Common Lisp Erlang Interface. An implementation of the Erlang distribution protocol, comparable with erl_interface and jinterface. MIT.

Java

  • cl+j - A JNI-based interface to a JVM via CFFI. Not available on Quicklisp. Does not reliably work with all implementations. Expat.

Objective-C

  • objc-lisp-bridge - A portable reader and bridge for interacting with Objective-C and Cocoa. MIT.

Python

  • burgled-batteries - A bridge between Python and Common Lisp. The goal is that Lisp programs can use Python libraries. Not available on Quicklisp. MIT.
  • cl4py - The library cl4py (pronounce as clappy) allows Python programs to call Common Lisp libraries. MIT.
  • py4cl - A library that allows Common Lisp code to access Python libraries. It is basically the inverse of cl4py. MIT.
  • cl-python - an implementation of Python in Common Lisp. LLGPL.

See also async-process.

.Net Core

  • Bike - a cross-platform .Net Core interface. MIT.

Miscellaneous

  • Foil - A foreign object interface; works with the JVM and CLI. Not available on Quicklisp. CPL 1.0.

Game Development

  • Xelf - Extensible game library. Not available on Quicklisp. GNU LGPL2.1.
  • Trial - Trial is an OpenGL game engine with a heavy focus on modularity. It is supposed to provide a large toolkit of useful bits and pieces from which you can create a game. zlib.
  • cl-mpg123 and cl-out123, bindings libraries for libmpg123 and libout123 respectively, giving you fast and easy to use mp3ย decoding and cross-platform audio output. zlib.
  • trivial-gamekit โ€“ with this small framework you would be able to make simple 2D games: draw basic geometric forms, images and text, play sounds and listen to mouse and keyboard input. MIT.
  • cl-gamepad - Access to gamepads and joysticks on Windows, Mac OS, and Linux. zlib.
  • virality - A component-based game engine written in Common Lisp MIT.

Graphics

These are libraries for working with graphics, rather than making GUIs (i.e. widget toolkits), which have their own section.

GUI

For an overview and a tutorial on GUI toolkits, see the Cookbook/GUI.

  • LispWork's CAPI - A portable GUI toolkit, with mobile runtime. Proprietary, but comes with a free version.
  • Allegro's Common Graphics- a library of functions for writing windowized GUIs for Windows, Mac and Linux. Proprietary with a free version.
  • since Allegro 10.1 (March, 2022), the IDE and the Common Graphics toolkit runs in the browser.
  • ๐Ÿ‘ Qtools - A Qt toolkit, based on CommonQt. zlib Also Qtools-ui (premade UI components), with videos.
  • :star: CommonQt - A Common Lisp binding for Qt4 via QtSmoke. FreeBSD.
  • :star: ltk - A binding for the Tk toolkit. LLGPL or GNU LGPL2.1.
  • LTk Examples - Provides LTk examples for the tkdocs tutorial.
  • LTk Plotchart - A wrapper around the tklib/plotchart library to work with LTk. This includes over 20 different chart types (xy-plots, gantt charts, 3d-bar charts etc...).
  • IUP - CFFI bindings to the IUP Portable User Interface library (pre-ALPHA). IUP is cross-platform (Windows, macOS, GNU/Linux, with new Android, iOs, Cocoa and Web Assembly drivers), has many widgets, has a small api and is actively developed.
  • nodgui - Bindings for the Tk toolkit, based on Ltk, with syntax sugar and additional widgets. LLGPL.
  • cl-cffi-gtk - Binding for GTK+3. GNU LGPL2.1.
  • a tutorial: Learn Common Lisp by Example: GTK GUI with SBCL
  • cl-gtk2 - A binding for GTK+2. LLGPL.
  • ceramic - Desktop web apps with Electron. Expat.
  • Electron-lisp-boilerplate - A rudimentary boilerplate for building Electron apps with embedded Lisp helper processes.
  • Electron app skeleton: electron-sbcl-sqlite
  • CocoaInterface - Cocoa interface for Clozure Common Lisp. Build Cocoa user interface windows dynamically using Lisp code and bypass the typical Xcode processes. It has good documentation and a tutorial.
  • McCLIM - An implementation of the Common Lisp Interface Manager, version II. GNU LGPL2.1.
  • cl-webkit - A binding to WebKitGTK+. Also adds web browsing capabilities to an application, leveraging the full power of the WebKit browsing engine. MIT.
  • ftw - A Win32 GUI library. MIT.
  • eql, eql5, eql5-android - Embedded Qt4 and Qt5 Lisp, embedded in ECL, embeddable in Qt. Port of EQL5 to the Android platform. MIT.
  • bodge-nuklear - Wrapper over the Nuklear immediate mode GUI library. MIT.

See also this demo to use Java Swing from ABCL.

Mobile

  • LispWork's mobile runtime - Android and iOs. Proprietary.
  • LQML - a lightweight ECL binding to QML (both Qt5 and Qt6) derived from EQL5. LGPL and public domain.

See also MOCL below, CL as a library for mobile devices (iOS, Android and OSX).

Implementations

  • :star: SBCL - A fork of CMUCL; compiles to machine code. Standard compliance. Public domain, with some parts under Expat and 3-clause BSD.
  • :star: CCL - Clozure Common Lisp; compiler-only implementation, generates native code. LLGPL.
  • ECL - Embeddable Common Lisp; compiles to C. GNU LGPL2.1.
  • ABCL - Armed Bear Common Lisp; targets the JVM, compiles to bytecode. Standard conformance. GNU GPL3 with Classpath exception.
  • CMUCL - An implementation from Carnegie Mellon University. Public domain.
  • GNU CLISP - A GNU implementation; contains a compiler and an interpreter. Standard conformance. GNU GPL3.
  • CLASP - a new Common Lisp implementation that seamlessly interoperates with C++ libraries and programs using LLVM for compilation to native code. This allows Clasp to take advantage of a vast array of preexisting libraries and programs, such as out of the scientific computing ecosystem. LGPL2.1 (and others).
  • Corman Lisp - a Common Lisp development environment for Microsoft Windows running on Intel platforms. MIT.

Proprietary:

  • LispWorks - an integrated cross-platform development tool for Common Lisp.
  • Allegro CL - provides the full ANSI Common Lisp standard with many extensions.
  • MOCL - CL as a library for mobile devices (iOS & Android) and OSX.

JSON

See also this extensive comparison of JSON libraries.

YAML

  • cl-yacclyaml - a pure lisp YAML processor (loader, but not yet dumper). GPL3.
  • cl-yaml - a YAML parser and emitter built on top of libyaml. MIT.

Language extensions

  • :star: alexandria - A general-purpose utility library. Public domain.
  • serapeum - Another general-purpose utility library. Expat.
  • rutils - radical yet reasonable syntactic utilities for Common Lisp. MIT.
  • anaphora - A collection of anaphoric macros. Public domain.
  • :star: trivia - Optimized pattern-matching library. LLGPL.
  • arrow-macros - Clojure-like threading macros. MIT.
  • dissect - when a lot of projects use the โ€œtrivial-backtraceโ€ system that just gives them a string with a backtrace, Dissect allows you to capture, step, and completely inspect the stack trace on a variety of Lisp implementations. Also very useful for logging and other situations where execution is automatically continued, but the information of the current stack is still useful to store somewhere. zlib.
  • generic-cl - Generic function interface to standard Common Lisp functions (equality, comparison, arithmetic, objects, iterator, sequences,โ€ฆ). MIT. See also the more lightweight generic-comparability. LLGPL.
  • hu.dwim.walker - a code walker and unwalker (aka AST parser and unparser). BSD. See also this blog post.

Portability layers

A large list of portability layers is collected here. Here are some of them:

  • trivial-arguments - A portable library to retrieve the arguments list of a function. zlib.
  • definitions - a general definitions introspection library. It gives you the ability to retrieve definitions or bindings associated with designators such as symbols, packages, and names in general. zlib.

Changing the syntax

  • cl21 - An experimental project to move Common Lisp into the 21st century. Expat.
  • clamp - Arc language's brevity and conciseness to Common Lisp. Artistic License 2.0.
  • cl-syntax - Reader syntax conventions. LLGPL.
  • cl-2dsyntax - An indentation-sensitive reader system. Not available on Quicklisp. Public domain.
  • cl-annot - Python-like annotations for Common Lisp. LLGPL.
  • :star: cl-interpol - A set of reader modifications to allow string interpolation. BSD.
  • pythonic-string-reader - A simple and unobtrusive read table modification inspired by Python's three quote strings. BSD_3Clause.
  • cl-reader - A utility library intended at providing reader macros for lambdas, mapping, accessors, hash-tables and hash-sets. MIT.

CLOS extensions

  • :star: closer-mop - A compatibility layer that rectifies many absent or incorrect MOP features. Expat.
  • defclass-std - a shortcut macro to write DEFCLASS forms quickly. LLGPL.
  • specialization-store - generic functions based on types. Simplified BSD License variant.
  • filtered-functions - enable the use of arbitrary predicates for selecting and applying methods. MIT.
  • inlined-generic-function - Bringing the speed of Static Dispatch to CLOS. LLGPL.
  • static-dispatch - allows standard generic function dispatch to be performed statically (at compile time) rather than dynamically (runtime). This is similar to what is known as "overloading" in languages such as C++ and Java. MIT.
  • dynamic-mixins - simple, dynamic class combination. BSD_2Clause.
  • fast-generic-functions - Seal your generic functions for an extra boost in performance. MIT.
  • polymorphic functions - A function type to dispatch on types instead of classes with partial support for dispatching on optional and keyword argument types. Still experimental (May, 2021). MIT.
  • polymorphic-functions dispatch on the types of the arguments supplied to it. This helps dispatching on specialized arrays as well as user-defined types.
  • for differences with specialization-store and fast-generic-functions, see its README.

And also:

  • slot-extra-options - lets you build a metaclass which in turn lets you specify extra slot options in its classes. LGPL3.

Function extensions

  • cl-hooks - Hooks extension point mechanism (as known, e.g., from GNU Emacs). LGPL.
  • method-hooks - When CLOS method combination allow only one hook per method, this library allows an arbitrary number of them. Mozilla Public Licence.
  • cl-advice - an attempt of portable layer advice library for SBCL, CCL, LispWorks and Allegro. Not in Quicklisp.

See also hooks in Serapeum.

Iteration

  • :star: iterate - An iteration construct for Common Lisp which is extensible and Lispier. MIT.
  • for - A concise, lispy and extensible iteration macro. Unlike loop it is extensible and sensible, and unlike iterate it does not require code-walking and is easier to extend. zlib.
  • series - Functional style without any runtime penalty at all. MIT.
  • gmap - A concise and extensible iteration facility that has the advantage of integrating well with FSet (see the Data Structures section), as it was written by the same author. In Quicklisp as part of misc-extensions. Public domain.
  • trivial-do - Additional dolist style macros for Common Lisp. MIT.
  • doplus โ€“ another extensible iteration library, similar to :for.
  • snakes - Python style generators for Common Lisp. Includes a port of itertools. Apache2.
  • picl - An (almost) complete port of Python's itertools package, complete with laziness where applicable, and not relying on cl-cont. MIT.
  • gtwiwtg - A lazy sequences library. Similar to 'series' but not as complete. However it has a 'modern' API with stuff like take, filter, for, fold, etc. that is easy to use.

Lambda shorthands

  • fn - a couple of lambda shorthand macros. (fn* (+ _ _)) --> (lambda (_) (+ _ _)). Public domain.
  • f-underscore - a tiny library of functional programming utils. (f_ (+ _ _)) -> (lambda (_) (+ _ _)). Public domain.
  • cl-punch - Scala-like anonymous lambda literals. (mapcar ^(* 2 _) '(1 2 3 4 5)). MIT.

See also CL21 and Rutils.

Non-deterministic, logic programming

  • cl-prolog2 - Common Interface to ISO Prolog implementations from Common Lisp. MIT.
  • Screamer - augment Common Lisp with practically all of the functionality of both Prolog and constraint logic programming languages. Blog post solving Project Euler puzzles. MIT.
  • Screamer+ - increasing the expressiveness of SCREAMER. MIT.
  • Temperance - logic programming. MIT. A focus on performance, with General Game Playing in mind.

Reactive programming

Contract programming

  • quid-pro-quo - a contract programming library in the style of Eiffelโ€™s Design by Contractโ€Šโ„ข. Public domain.

Typing

  • ๐Ÿ‘ Coalton - an efficient, statically typed functional programming language that supercharges Common Lisp. MIT.
  • cl-algebraic-data-type - A library for defining algebraic data types in a similar spirit to Haskell or ML. 3-clause BSD.
  • ๐Ÿ‘ trivial-types - provides missing but important type definitions such as proper-list, association-list, property-list and tuple. LLGPL.
  • defstar - a collection of macros for easy inclusion of type declarations for arguments in lambda lists. GNU GPL3

Learning and Tutorials

Online

Beginner

Intermediate

Advanced

Web Development

Reference

  • Common Lisp Quick Reference - A distilled, pocket-size version of the ANSI CL spec. Available for download as a PDF.
  • CLHS - The Common Lisp HyperSpec; the ANSI CL standard, in hypertext form.
  • CLOS MOP specification - A modern public domain online version of chapters 5 and 6 of The Art of the Metaobject Protocol
  • Common Lisp Standard Draft (pdf) - The standard draft of the Common Lisp specifications, in a well formatted PDF with a sidebar.
  • Common Lisp the Language - The original standard for Common Lisp before the ANSI spec.
  • Minispec - A friendlier, but less-complete, version of CLHS. Also contains documentation for some commonly-used CL libraries (such as Alexandria).
  • Simplified Common Lisp reference - The simplified version of CLHS.
  • CDR - Common Lisp Document Repository. a repository of documents that are of interest to the Common Lisp community. The most important property of a CDR document is that it will never change: if you refer to it, you can be sure that your reference will always refer to exactly the same document.
  • the Common Lisp Document Repository is hosted at Zenodo.

Offline

The CLHS is available offline via an archive and as doc sets in Dash, Zeal and Velocity.

Beginner

Intermediate

  • ANSI Common Lisp - A thorough, practical covering of the entire language, with exercises. Not recommended as a starter text, due to some caveats.
  • Common Lisp Recipes - Common Lisp Recipes is a collection of solutions to problems and answers to questions you are likely to encounter when writing real-world applications in Common Lisp. Published in 2015.

Advanced

Other books

  • Building Problem Solvers (PDF) by Ken Forbus and Johan de Kleer, made available for free by MIT Press - a unique book among standard artificial intelligence texts in combining science and engineering, theory and craft to describe the construction of AI reasoning systems, and including code illustrating the ideas.

Community

Library Manager

  • :star: Quicklisp - A library manager containing many libraries, with easy depencency management. Expat.
  • CLPM - A package manager for Common Lisp that strives to cleanly separate the package manager process itself from the client image that uses it. BSD_2Clause.
  • Ultralisp - A Quicklisp distribution which updates every 5 minutes and to which one can add his project in one click. BSD.
  • ๐Ÿ‘Roswell - a Lisp implementation installer, script launcher and more. MIT.
  • Qlot - A project-local library installer, similar to Bundler or Carton. Expat.
  • Quicksys - install systems from multiple Quicklisp distributions. MIT.
  • Quickutil - A utility manager, similar to Quicklisp, but for small utilities rather than whole libraries. 3-clause BSD.

might help:

  • quick-patch - easily override quicklisp projects without using git submodules. MPL-2.0.
  • print-licenses - print licenses used by a project and its dependencies. MIT.

Interfaces to other package managers

  • linux-packaging - build .deb, .rpm or .pkg packages for your application with a single ASDF declaration. Uses fpm under the hood. MIT.
  • qldeb - Quicklisp systems to debian packages, along with deb-packager (simply create a debian package by defining an s-expression) and an introductory blog post. Both MIT.
  • ql-to-deb - Update cl-* debian packages from Quicklisp releases. WTFPL.
  • dh-quicklisp-buildapp - debhelper utility to let you compile your quicklisp-based Common Lisp code into a buildapp binary in a .deb with almost no effort. MIT.
  • cl-brewer - Homebrew formula builder for (command line) common lisp applications. Public domain.
  • flatpack-common-lisp - A BuildStream project for building Flatpak based runtime environments for Common Lisp applications.

See also asdf-sbcl, a plugin for the universal package manager.

Machine Learning

  • MGL - a machine learning library for backpropagation neural networks, boltzmann machines, gaussian processes and more. MIT.
  • some parts originally contributed by Ravenpack International.
  • used by its author to win the Higgs Boson Machine Learning Challenge.
  • clml - originally developed by Mathematicl Systems Inc., a Japanese company. With a tutorial. LLGPL.
  • antik - a foundation for scientific and engineering computation in Common Lisp. GPL. Also mgl-mat and LLA.

Credit: borretti.me' state of CL ecosystem 2015.

Natural Language Processing

  • cl-nlp - Natural language processing toolset. Apache2.0.
  • babel2 - A Fluid Construction Grammar implementation, computational framework, and unification-based grammar formalism Apache2.0.
  • sparser - A natural language understanding system for English. Eclipse.

Network and Internet

See Cliki for more.

HTTP clients

  • ๐Ÿ‘ Dexador - An HTTP client, that aims at replacing Drakma. MIT.
  • Carrier - A lightweight, async HTTP client built on top of cl-async and fast-http. MIT.
  • fast-http - A fast HTTP request/response parser for Common Lisp. MIT.

HTTP Servers

  • ๐Ÿ‘Clack - A web application environment inspired by Rack and WSGI. LLGPL. Provides a unified interface to a webserver of choice (default is Hunchentoot). With more getting started guide.
  • :star: Hunchentoot - A web server. 2-clause BSD
  • zaserve - A portable fork of AllegroServe, by Franz Inc. LLGPL.
  • wookie - Asynchronous HTTP server. Expat.
  • woo - A fast non-blocking HTTP server on top of libev. MIT.
  • cl-http2-protocol - a pure Common Lisp transport agnostic implementation of the HTTP/2 protocol at draft-14. MIT.

Hunchentoot plugins

  • ๐Ÿ‘ easy-routes - a routes handling system on top of Hunchentoot. It supports dispatch based on HTTP method, arguments extraction from the url path, decorators, url generation from route name, etc. MIT.
  • hunchentoot-cgi - a library for executing CGI scripts from the hunchentoot webserver. BSD.
  • hunchentoot-multi-acceptor - Route multiple domains (virtual hosts) on a single hunchentoot acceptor using a single port. Apache2.0.
  • hunchentoot-auth - implementing user authentication with passwords. BSD.
  • hunchentoot-errors - Augments Hunchentoot error pages and logs with request and session information. MIT.

Clack plugins

Web frameworks

  • Caveman - A powerful web framework. LLGPL. Example projects: Quickdocs
  • ningle - A super-micro web framework. LLGPL. ninglex, an extended and noob-friendly ningle (mostly easier handling of query parameters). MIT.
  • radiance - A web application environment and framework . zlib.

REST-focused frameworks:

  • ๐Ÿ‘ Snooze - A RESTful web framework. Web server agnostic. Currently has support for Hunchentoot and Clack. Routes are just functions and HTTP conditions are just Lisp conditions. LLGPL.
  • cl-rest-server - a library for writing REST web APIs. Features validation with schemas, annotations for logging, caching, permissions or authentication, documentation via Swagger, etc. MIT.
  • cl-odata-client - Common Lisp client library for accessing OData services. MIT.

Authentication plugins (in addition to the Clack plugins above):

There are more projects, more or less discontinued but interesting. See the other resources.

Isomorphic web frameworks

  • CLOG - The Common Lisp Omnificent GUI. Uses web technology to produce graphical user interfaces for applications locally or remotely. BSD_3Clause.
  • CLOG is based on the ideas of GNOGA, a framework the author wrote for Ada and used in commercial production code since 2013.
  • Interactive SSR - ISSR allows you to make interactive web pages without writing client scripting. No knowledge about Javascript or DOM is necessary.
  • it is not unlike Phoenix LiveView or Hotwire.
  • Weblocks - A widgets-based framework with a built-in ajax update mechanism that "solves the JavaScript problem". LLGPL.

Assets management

  • Rock - an asset manager for Common Lisp. It's basically a combination of Bower and webassets. MIT.

Parsing html

  • ๐Ÿ‘ Plump - A lenient HTML/XML parser, tolerant on malformed markup. zlib. Best used with lquery and clss.

Querying HTML/DOM

  • ๐Ÿ‘ lquery - A jQuery-like HTML/DOM manipulation library. zlib.

See also the XML section below for xpath libraries and more.

HTML generators and templates

  • ๐Ÿ‘ spinneret - Common Lisp HTML5 generator. Expat.
  • :star: cl-who - The venerable HTML generator. FreeBSD.
  • :star: Djula - A port of Django's template engine to Common Lisp. Expat.
  • eco - Fast, flexible, designer-friendly template engine. Expat.
  • TEN - the completness of Djula meets the usability of Eco. MIT.
  • cl-closure-template - Implementation of Google's Closure templates. LLGPL.
  • flute - An easily composable HTML5 generation library with the most simplistic syntax. MIT.
  • clip - An HTML template processor where the templates are written in HTML. zlib.
  • lsx and markup - Two JSX-like templating engines, where HTML tags are Common Lisp code. markup comes with an Emacs package.

URI handling

  • quri - Another URI library for Common Lisp. Supports userinfo, IPv6 hostname, encoding/decoding utilities,โ€ฆ BSD_3Clause.
  • cl-slug - a small library to make slugs, mainly for URIs, transform in CamelCase, remove accentuation and punctuation, for english and beyound. LLGPL.

Javascript

  • :star: Parenscript - A translator from Common Lisp to Javascript. 3-clause BSD. See Trident-mode, an Emacs mode that provides live interaction with the browser.unlicence.
  • paren6 - a set of ES6 macros for Parenscript.
  • parse-js - A package for parsing ECMAScript 3. zlib.
  • JSCL - A CL-to-JS compiler designed to be self-hosting from day one. Lacks CLOS, format and loop.
  • CL-JavaScript - A translator from Javascript to Common Lisp. Not available on Quicklisp. Expat.
  • Wuwei - A toolkit to build Ajax-based web pages. MIT.
  • SmackJack - An Ajax Common Lisp Library using parenscript to generate javascript and hunchentoot (for now) as the web server. Also allows a server-side lisp function to call a client-side parenscript one. MIT.
  • Panic, a Parenscript library for React. Not in Quicklisp. MIT. Its TodoMVC example.
  • remote-js - send JavaScript from Common Lisp to a browser. MIT.
  • sigil - A Parenscript to Javascript command line compiler and REPL. MIT.

See also trident-mode, an Emacs minor mode for live Parenscript interaction.

Email

  • trivial-imap - tries to make easy some common cases of working with IMAP servers, like reading emails from the server. A thin wrapper over post-office library (which is a fork of Franz's cl-imap). BSD.
  • mailgun - A thin wrapper to post HTML emails through mailgun.com. unlicence.
  • mito-email-auth - Helper to authenticate a website's users by sending them unique code by email.

Websockets

See more on cliki.

Static site generators

Deployment

  • heroku-buildpack-common-lisp - A Heroku buildpack that uses Roswell to compile Common Lisp applications. LGPL3.
  • cube - Kubernetes client library for Common LISP generated from the Swagger specification. MIT.
  • s2i-lisp - Source-to-Image builder image based on CentOS or alternatively RHEL7 for building Common LISP images for OpenShift (and also Docker). It features an up-to-date SBCL with Quicklisp installation, SLIME or SLY integration and allows customization via environment variables. Apache2
  • deploy - A toolkit for binary deployment of Lisp applications, with extra support for foreign shared libraries. zlib.
  • cl-aws-runtime-test - An example of using Common Lisp (SBCL) as a custom runtime on AWS lambda. WTFPL.

See also:

Monitoring

  • prometheus.cl - Prometheus.io client. Grafana dashboard for SBCL and Hunchentoot metrics (memory, threads, requests per second,โ€ฆ). MIT.
  • cl-sentry-client - a Sentry client for Common Lisp, the cloud-based error monitoring system. MIT.
  • rollbar.lisp - interface to Rollbar.com, an error tracking software.

Third-party APIs

  • Aws-sign4 - Common Lisp library for Amazon Web Services signing version 4. GNU GPL3.
  • zs3 - A library for working with Amazon's Simple Storage Service (S3) and CloudFront service. BSD.
  • cl-ses - Library for AWS SES. Expat.
  • north - The successor to the South (Simple OaUTH) library, implementing the full oAuth 1.0a protocol, both client and server sides. Using North you can easily become an oAuth provider or consumer. zlib.
  • avatar-api - Get avatars from Google+, Gravatar and others. Expat.
  • chirp - A Twitter client library. zlib.
  • tooter - a client library implementing the full v1 REST API protocol for Mastodon. zlib.
  • cl-irc - An IRC client library. Expat.
  • cl-mediawiki - a wrapper around the MediaWiki api. MIT.
  • cl-openid - An implementation of OpenID. LLGPL.
  • cl-pushover - Common Lisp bindings to Pushover. MIT.
  • humbler - A Tumblr API interface. zlib.
  • multiposter - post to multiple services simultaneously. zlib.
  • stripe - a client for the Stripe payment system. MIT.

Web project skeletons and generators

  • cl-cookieweb - a Cookiecutter template to start a web project. BSD_3Clause. Not in Quicklisp.
  • Provides a working toy web app with the Hunchentoot web server, easy-routes, Djula templates, styled with Bulma, based on SQLite, with migrations, an example table definition and a test suite using FiveAM.
  • make-like - an application template builder for LIKE (Lisp In Kubernetes + Emacs) applications. Apache2.0.
  • Makefile, podman support, GitHub Actions, Prometheus metrics support, TOML-style config.ini, easy-route preconfigured with health-check and more.
  • cl-webapp-seed - a simple web application boilerplate. Uses Hunchentoot, cl-who, deploys easily to Heroku. MIT.

Others

Numerical and Scientific

  • numcl - Numpy clone in Common Lisp. LGPL3.
  • GSLL - GNU Scientific Library for Lisp; allows the use of the GSL from Common Lisp. GNU LGPL2.1.
  • maxima - Computer algebra system. Not available on Quicklisp. GNU GPL3.
  • Xecto - A library for regular array parallelism. 3-clause BSD.
  • Petalisp - an attempt to generate high performance code for parallel computers by JIT-compiling array definitions. It works on a more fundamental level than NumPy, by providing even more powerful N-dimensional arrays, but just a few building blocks for working on them. AGPL-3.0.
  • cl-ana - Common Lisp data analysis library with emphasis on modularity and conceptual clarity. It aims to be a general purpose framework for analyzing small and large scale datasets, including binned data analysis and visualization. GNU GPL3.
  • linear-programming โ€“ a library for solving linear programming problems. MIT.
  • avm - Efficient and expressive arrayed vector math library with multi-threading and CUDA support. MIT.
  • array-operations - a collection of functions and macros for manipulating Common Lisp arrays and performing numerical calculations with them. MIT.
  • cl-geometry - a system for two dimensional computational geometry for Common Lisp. MIT.
  • Vellum - Data Frames for Common Lisp. BSD_2Clause.
  • rtg-math - a selection of the math routines most commonly needed for making realtime graphics in lisp (2, 3 and 4 component vectors, 3x3 and 4x4 matrices, quaternions, spherical and polar coordinates). BSD_2Clause.
  • origin - A native Lisp graphics math library with an emphasis on performance and correctness. Includes: vectors, matrices (up to 4x4), quaternions, single/double-float support, destructive/non-destructive operations, shaping & intersections. MIT.

Matrix libraries

  • magicl - Matrix Algebra proGrams In Common Lisp based on BLAS/LAPACK and Expokit, by Rigetti Computing. BSD_3Clause.
  • lisp-matrix - A matrix package. FreeBSD.
  • 3d-matrices - A library implementing common matrix calculations, with an emphasis on 2x2,3x3, and 4x4 matrices as commonly used in graphics. It provides some numerical functions as well, but those are not the focus. The library is heavily optimised, so it is not made of pretty code. zlib.
  • clem - a matrix library. BSD_2Clause.

Statistics

  • lisp-stat - an environment for statistical computing, conceptually similar to R, that is also suitable for front-line production deployments. "It grew out of a desire to have an environment for rapidly prototyping analytical and A.I. solutions, and move directly to production environments with minimal friction."
  • https://lisp-stat.dev/
  • ships Luke Tierney's XLisp-Stat (a predecessor of R) as well as newer libraries.
  • common-lisp-stat - Common Lisp statistics library. FreeBSD.

Units

  • physical-quantities - a library that provides a numeric type with optional unit and/or uncertainty for computations with automatic error propagation. GPL2

Utils

  • cmu-infix - A library for writing infix mathematical notation in Common Lisp. See also polisher.

Parallelism and Concurrency

  • :star: BordeauxThreads - Portable, shared-state concurrency. Expat.
  • :star: lparallel - A library for parallel programming. 3-clause BSD.
  • lfarm - distributing work across machines (on top of lparallel and usocket). BSD_3Clause
  • calispel - CSP-like channels for common lisp. With blocking, optionally buffered channels and a "CSP select" statement. ISC-style.
  • "It is complete, flexible and easy to use. I would recommend Calispel over Lparallel and ChanL." @Ambrevar. discussion
  • chanl - Portable, channel-based concurrency. Expat, with parts under 3-clause BSD.
  • cl-async - A library for general-purpose, non-blocking programming. Expat.
  • Moira - Monitor and restart background threads. In-lisp process supervisor. MIT.
  • trivial-monitored-thread - a Common Lisp library offering a way of spawning threads and being informed when one any of them crash and die. MIT.
  • cl-gearman - a library for the Gearman distributed job system. LLGPL.
  • swank-crew - distributed computation framework implemented using Swank Client. BSD_3Clause.
  • cl-coroutine - a coroutine library. It uses the CL-CONT continuations library in its implementation. MIT.
  • STMX - High performance Transactional Memory for Common Lisp. LLGPL.

See also:

  • cl-etcd - Run etcd as an asynchronous inferior process. etcd is a strongly consistent, distributed key-value store. AGPL-3.0.

Actors pattern

  • ๐Ÿ‘ cl-gserver - cl-gserver is a 'message passing' library/framework with actors similar to Erlang or Akka. It supports creating systems that should work reactive, require parallel computing and event based message handling. Apache2.
  • erlangen - Distributed, asynchronous message passing system for Clozure Common Lisp. GNU GPL3.
  • Actors package for LispWorks (announce) MIT.
  • common-lisp-actors - a simple and easy to use Actor system. BSD_2Clause.
  • memento-mori- a library for writing robust, actor-based systems. It draws inspiration from Erlang/OTP, particularly its crash-first approach to high-availability systems, as well as Akka. MIT.

Event processing

  • simple-tasks - A very simple task scheduling framework. zlib.
  • deeds - Deeds is an Extensible Event Delivery System. It allows for efficient event delivery to multiple handlers with a complex event filtering system. zlib.
  • cl-flow - Data-flowish computation tree library for non-blocking concurrent Common Lisp. MIT.
  • event-glue - simple eventing abstraction. No dependencies. It can be used anywhere you need a generic event handling system. MIT.

Job processing

  • SBCL's timers, system-wide event schedulers.
  • psychiq - redis-based background job processing for Common Lisp applications. Inspired by Ruby's Sidekiq and compatible with its web UI. LLGPL.
  • cl-cron - A simple tool that provides cron like facilities. GPL3.
  • clerk - a cron-like scheduler with sane DSL. MIT.

Regex

Scripting

Writing, running scripts

  • ๐Ÿ‘ Roswell - a lisp installer and scripting environment (helper, launcher, installer) and more. MIT.
  • cl-all - A script to run Lisp snippets in multiple implementations. This allows you to quickly compare implementation behaviour and differences. zlib.
  • clawk - an AWK implementation embedded into Common Lisp, to search files for lines and perform specified actions on its fields. BSD-style.
  • ScriptL - Shell scripting made Lisp-like! Or, live-coding remote function calls for the shell. Write a command in the REPL, and run it instantly in the shell. LLGPL.
  • similar and maybe simpler: lserver

Command-line options parsers

  • ๐Ÿ‘ Unix-opts - a command line options parser with a concise declaration of options. MIT.
  • Adopt - A Damn OPTion parsing library. MIT.
  • Clingon - a rich command-line options parser system.
  • newer, it may have the richest feature set: subcommands, generation of bash completion, support for various kinds of options (integers, booleans, counter, enumsโ€ฆ), extensibleโ€ฆ

Readline, ncurses and other graphical helpers

  • cl-readline - a set of functions to edit lines as they are typed in, to maintain a list of previously-entered command lines, to recall and reedit them and perform csh-like history expansion. Emacs and vi editing modes. GPL3.
  • Linedit - Readline-style library that provides customizable line-editing features. MIT-style.
  • cl-charms - an interface to libcurses in Common Lisp. It provides both a raw, low-level interface to libcurses via CFFI, and a more higher-level lispier interface. MIT.
  • replic - helpers to turn existing code into a readline application, with a focus on defining the completion of the commands' arguments. Also comes as a ready to use executable, that transforms a user's lispy init file into readline commands. MIT.
  • cl-ansi-term - print colorized text, horizontal lines, progress bars, (un)ordered lists and tables on ANSI-compliant terminals. GPL3.
  • cl-progress-bar - progress bars, just like in Quicklisp ! MIT.

Shells, shells interfaces

  • Lish - lish may someday be a lisp shell. GPL3.
  • supports tab-completion of executables in the path and Lisp symbols, allows to write and to mix shell commands and Lisp code, has a tiny REPL and an interactive debugger, and more.
  • shcl - a POSIX-like shell in Common Lisp. Apache2.0.
  • Shelly - execute Common Lisp functions like a shell command, without the need to write a command line arguments parser. And it also can be used as a Make-like build-tool. FreeBSD.
  • cmd - utility for running external programs. Protects against shell interpolation, built with multi-threaded programs in mind, Windows support. MIT.
  • uiop:run-program (synchronous) and uiop:launch-program (async) are shipped with ASDF and available on all modern implementations. See the CL Cookbook: running external programs.
  • Clesh - extends Common Lisp to embed shell code in a manner similar to perl's backtick. FreeBSD.

System administration

  • Consfigurator - Lisp declarative configuration management system. You can use it to configure hosts as root, deploy services as unprivileged users, build and deploy containers, and produce disc images. GPL3.
  • Adams - UNIX system administration in Common Lisp. Not unlike Ansible, Chef or Puppet. ISC.

Other scripting utilities

  • WCL [staled] - allow hundreds of Lisp applications to be realistically available at once, while allowing several of them to run concurrently. WCL accomplishes this by providing Common Lisp as a Unix shared library that can be linked with Lisp and C code to produce efficient applications. For example, the executable for a Lisp version of the canonical Hello World! program requires only 20k bytes on 32 bit x86 Linux. WCL also supports a full development environment, including dynamic file loading and debugging. A modified version of GDB is used to debug WCL programs, providing support for mixed language debugging.

Text Editor Resources

This contains plugins and other goodies for various text editors.

  • Parinfer - Parinfer is a way to edit lisp code that helps to keep both the indentation and the parenthesis balanced. It is easy to start with and yet it offers advanced features ร  la Paredit. It is available on many editors (Emacs, Vim, Neovim, Atom, Sublime Text, Visual Studio Code, LightTable, CodeMirror,โ€ฆ).

Emacs

  • :star: Slime - Superior Lisp Interaction Mode for Emacs; a full-blown environment for Common Lisp inside of Emacs. Public domain.
  • ๐Ÿ‘ Sly - SLY is a fork of SLIME and contains multiple improvements upon it.
  • ๐Ÿ‘ Portacle - A portable and multiplatform Common Lisp environment: SBCL, Quicklisp, Emacs, Slime, Git.
  • cl-devel2 - a Docker container for Common Lisp development environment. Ships SBCL, CCL, Roswell and Emacs25 with Slime.
  • Emacs4CL - A tiny Emacs initialization file to quickly set up vanilla Emacs for Common Lisp programming. Comes with a line-by-line explanation of every line of code in the initialization file.
  • quicklisp-systems - Search, browse and load Quicklisp systems from Emacs. *slime-doc-contribs - enhance the default help buffer.

Vim & Neovim

  • SLIMV - Superior Lisp Interaction Mode for Vim; a full-blown environment for Common Lisp inside of Vim. No license specified.
  • Vlime - VLIME: Vim plus Lisp Is Mostly Evil. A Common Lisp dev environment for Vim (and Neovim). MIT.
  • quicklisp.nvim - A Quicklisp frontend for Neovim.
  • Slimv_box - slimv in a Docker container.

Eclipse

  • Dandelion - a Common Lisp plugin for the Eclipse IDE.

Lem

Atom

  • SLIMA allows you to interactively develop Common Lisp code, turning Atom into a pretty good, and actively developped, Lisp IDE. MIT.

Sublime Text

  • Sublime Text (proprietary) has Common Lisp support with its SublimeREPL and Slyblime packages. Slyblime is an implementation of SLY and it uses the same backend (SLYNK). It ships advanced features including a debugger with stack frame inspection.

VSCode

Geany (experimental)

Notebooks

  • cl-jupyter - A Common Lisp kernel for Jupyter notebooks custom licence.
  • common-lisp-jupyter - A Common Lisp kernel for Jupyter along with a library for building Jupyter kernels, based on Maxima-Jupyter by Robert Dodier which was based on cl-jupyter by Frederic Peschanski. MIT.
  • Darkmatter - A notebook-style Common Lisp environment. MIT.

REPLs

  • cl-repl - an ipython-like REPL. With completion, shell commands, magic commands, debugger, etc. MIT. With colorthemes.
  • sbcli - a readline REPL for SBCL. With completion, quick commands, optional syntax highlighting (with pygments), and no interactive debugger. GPL3.
  • magic-ed - a tiny editing facility, where you can directly load, edit, manipulate and evaluate file or file content from the REPL, when going to a full IDE is too much. MIT.

Online editors

  • Judge0 IDE is an online editor which supports Common Lisp (SBCL). MIT.

Apps

Text Parsers

  • :star: esrap - Packrat parser. Expat.
  • cl-yacc - a LALR(1) parser generator. MIT.
  • cl-shlex - simple lexical analyzer for shell-like syntaxes. MIT.
  • smug - parser combinators for Common Lisp. SMUG makes it simple to create quick extensible recursive descent parsers without funky syntax or impenetrable macrology. MIT.
  • parseq - a library for parsing sequences such as strings and lists using parsing expression grammars. Inspired by Esrap. GPL2.
  • texp - A DSL to generate TeX. AGPL-3.0.

Text Processing

  • montezuma - Full-text indexing and search for Common Lisp. Expat.
  • mk-string-metrics - Calculate various string metrics efficiently in Common Lisp (Damerau-Levenshtein, Hamming, Jaro, Jaro-Winkler, Levenshtein, etc). MIT.
  • wiki-lang-detect - Text language identification using Wikipedia data. No license specified.
  • cl-phonetic - Phonetic pattern matching library for Common Lisp (intended to replace the Sylvia library for Python). MIT.
  • cl-string-generator - Generate string from regular expression. MIT.

Tools

These are applications or bits of code that make development in Common Lisp easier without being Common Lisp libraries themselves.

Unit Testing

  • :star: FiveAM - Simple regression testing framework. FreeBSD.
  • CLUnit2 - A unit testing library. MIT.
  • Parachute - An extensible and cross-compatible testing framework. With test dependencies, conditions, fixtures and restarts. zlib.
  • Mockingbird - A small stubbing and mocking library for Common Lisp. Can also check wether a stubbed function was called, how many times and with which arguments. MIT.
  • cl-mock - Another mocking library. It has more features than Mockingbird, like pattern matching on the mocked call, etc.
  • Check-it - A QuickCheck-style randomized property-based testing. LLGPL.
  • cl-coveralls - a helper library to post test coverage to Coveralls. See SBCL's code coverage tool. FreeBSD.

Editor utilities:

  • Slite - a SLIme-based TEst runner for FiveAM Tests. Apache2.0
  • Slite interactively runs your Common Lisp tests (at the time of writing only FiveAM is supported). It allows you to see the summary of test failures, jump to test definitions, rerun tests with the debugger, all from inside Emacs.

Utilities

Caching

Compression / decompression

Configuration

  • ๐Ÿ‘ py-configparser - reads and writes Python's ConfigParser-like configuration files. MIT.
  • envy - Configuration switcher. FreeBSD.
  • chameleon - a configuration management library shipped with profile support. MIT.

CSV

  • :star: cl-csv - A library for parsing CSV files. 3-clause BSD.
  • cl-decimals - Decimal number parser and formatter. Public domain.
  • auto-text - automatic (encoding, end of line, column width, csv delimiter etc) detection for text files. MIT. See also inquisitor for detection of asian and far eastern languages.

Date and time

  • :star: local-time - A development library for manipulating date and time information in a semi-standard manner. 3-clause BSD.
  • cl-date-time-parser - Parse date-time-string, liberally. Hides the difference between date-time formats, and enables to manage date and time as the one date-time format. MIT.
  • chronicity - A natural language date and time parse, to parse strings like "3 days from now". BSD_3Clause.
  • local-time-duration - Duration processing library built on top of local-time. MIT.
  • see this fork: humanize-duration, that outputs only significant parts of a duration object. Has localization suport.
  • iso-8601-date - Miscellaneous date routines in Common Lisp, based around the ISO 8601 string representation. LLGPL.
  • calendar-date - a Gregorian calendar date library. MIT.
  • periods - manipulating date/time objects at a higher level. With series-compatible data structure. BSD_3Clause.

See also the book Calendrical calculations, by Edward M. Reingold, Nachum Dershowitz, Cambridge Press. It provides Lisp sources.

Data validation

  • ratify - A collection of utilities to ratify, validate and parse inputs. zlib.
  • clavier - General purpose validation library for Common Lisp. MIT.
  • json-schema - A library for validating data against schemas of drafts 4, 6, 7, and 2019-09 of the JSON Schema standard. LLGPL.
  • sanity-clause - a data serialization/contract library for Common Lisp. Schemas can be property lists or class-based, allowing to check slots' types during make-instance. LLGPL.

Developer utilities

  • repl-utilities - Ease common tasks at the REPL (print documentation, print external symbols, call hooks when loading a package,โ€ฆ). BSD_2Clause.
  • flight-recorder - a robust REPL history facility.
  • tracer - tracing profiler for Common Lisp, with output suitable for display in Chromeโ€™s/Chromiumโ€™s Tracing Viewer. MIT.
  • cl-flamegraph - A wrapper around SBCL's statistical profiler, to generate FlameGraph charts for Common Lisp programs. BSD.
  • cl-debug - a cross-package debug facility. Provides a unified way to enable or disable debug-specific code. Debugging code can be enabled or disabled relative to program features denoted by either a symbol or a keyword. ISC licence.
  • supertrace - Superior Common Lisp trace functionality for debugging/profiling. Trace many functions at once, use before and after hooks. BSD_2Clause.
  • printv - A batteries-included tracing and debug-logging macro. Apache2.
  • journal - a library for logging, tracing, record-and-replay testing and persistence. MIT.

and also:

  • GTFL - A graphical terminal for Lisp, meant for Lisp programmers who want to debug or visualize their own algorithms. A graphical trace in the browser. BSD-style.
  • trivial-with-current-source-from - Helps macro writers produce better errors for macro users. GPL3.
  • trivial-benchmark - Tiny benchmarking library. zlib.
  • glyphs - A library for cutting down the verboseness of Common Lisp in places. GNU GPL3.
  • Lisp REPL core dumper - A portable wrapper to generate Lisp cores on demand to start REPL blazing fast. It can preload provided systems to help build a collection of specialized Lisp cores.

Documentation builders

  • sphinxcontrib-cldomain - Extending Sphinx to cover Common Lisp. To build documentation with the same ease as sphinx would a Python project. GPL3
  • Codex - A beautiful documentation system for Common Lisp. MIT.
  • Staple - a tool to generate documentation pages using an HTML template. Uses the existing README, adds docstrings, crossreferences and links to the CLHS. zlib.
  • cl-bibtex - A compatible re-implementation of the BibTeX program in Common Lisp, with a BST-to-CL compiler. GNU LGPL2.1.
  • mgl-pax - Exploratory programming environment and documentation generator. one may accomplish similar effects as with Literate Programming, but documentation is generated from code, not vice versa. Code is first, code must look pretty, documentation is code. MIT.
  • see this 40ants fork
  • erudite - Literate Programming System built with interactive development in mind. MIT.

Files and directories

  • :star: uiop and its pathname package (replaces cl-fad). uiop is part of ASDF3 and as thus is shipped in many implementations. MIT.
  • osicat - A lightweight operating system interface on POSIX-like systems (directory iteration and deletion, environment variables, file permissions, etc) Expat.
  • pathname-utils - A collection of utilities to help with pathname operations. zlib.
  • ppath - Common Lisp's implementation of the Python's os.path module. BSD.
  • archive - a library for reading and creating archive (tar, cpio) files. BSD_3Clause. A pure Common Lisp replacement for the tar program.
  • see its recent fork cl-tar (2021). Announce.
  • mmap - Portable mmap file memory mapping utility library. zlib.
  • fof - File-object finder Common Lisp library. Enable rapid file search, inspection and manipulation. GPL3.

File watching libraries:

  • cl-inotify - interface to the Linux inotify API. Simplified BSD License.
  • cl-fswatch - an CFFI wrapper of fswatch, a cross-platform file change monitor. ISC.

Git

  • legit - an interface to the Git binary. zlib.
  • git-api - Common Lisp library to access git repository. It doesn't need git or libgit installed. BSD.

i18n

  • cl-i18n - an i18n library. Load translations from GNU gettext text or binary files or from its native format. Localisation helpers of plural forms. LLGPL.
  • gettext - a port of the gettext runtime to Common Lisp. GPL3.
  • cl-locale - A simple i18n library. LLGPL.
  • enchant - bindings for the Enchant spell-checker library. Public domain.
  • oxenfurt - A client library for the Oxford dictionary API. zlib.
  • language-codes - A database library for ISO language codes. zlib
  • system-locale - A library to retrieve the user's preferred language, so that your application may choose a sensible default. zlib.
  • multilang-documentation - Allows writing docstrings in multiple languages, for truly internationally documented libraries. zlib.

Linting, code formatting

and also: lisp-format and cl-indentify.

Logging

  • :star: log4cl - Logging framework modelled after Log4J. Apache2.0. Advanced integration with Slime.
  • log4cl-json - JSON appender extension. BSD.
  • verbose - A fast and highly configurable logging framework. zlib.
  • a-cl-logger - Logging library providing context sensitive logging of more than just strings to more than just local files or output streams. Features logstash support, json support, logger hierarchies, context sensitive logging, objects printed as an inspectable presentation,โ€ฆ

To third parties:

See also: extensive comparison of logging libraries.

Markdown

  • 3bmd - a markdown -> html converter. MIT.

PDF

Plotting

  • vgplot - an interface to the gnuplot plotting utility with the intention to resemble some of the plot commands of octave or matlab. GPL3.
  • eazy-gnuplot - a lispy, structure-less Gnuplot library. With its cookbook. LLGPL
  • kai - A high-level plotter library for Common Lisp. A wrapper around the Plotly JS library. MIT.
  • ADW-Charting - A simple chart drawing library written completely in Common Lisp. Also includes a backend to Google's chart service. BSD-like.
  • cl-spark - sparkline strings for the console: (spark '(1 1 2 3 5 8)) => "โ–โ–โ–‚โ–ƒโ–…โ–‡". MIT.

See also the chart facilities of IUP and ltk-plotchart (GUI section).

Project skeletons

  • cl-project - General modern project skeletons. LLGPL.
  • cl-project-with-docs - uses Sphinx and reStructured text to render nice and readable HTML documentation. BSD.
  • cl-cookieproject - Generate a ready-to-use Common Lisp project. Not in Quicklisp. BSD_3Clause.
  • test definitions, entry point to run from sources, build a binary, Roswell integrationโ€ฆ

Security

Other

This contains anything which doesn't fit into another category.

XML

  • CXML - XML parser and serializer, with a range of extension libraries. LLGPL.
  • ๐Ÿ‘ has an incremental parser, allowing to parse big files.
  • Plump - A lenient XML parser. zlib.
  • xpath (homepage - Implementation of the XML Path Language (XPath) Version 1.0. BSD_2Clause.
  • s-xml - A basic parser. LLGPL.
  • xmls - A small, simple, non-validating XML parser. 3-clause BSD.
  • cl-feedparser - A Common Lisp (RSS, Atom) feed parser. LLGPL
  • Buildnode - A common lisp library to ease interaction with CXML-dom, such as building Excel spreadsheets. BSD.

Contributing

Your contributions are always welcome! Please submit a pull request or create an issue to add a new framework, library or software to the list.

The rules we (try to) respect are the followings:

  • by default, add a library to the end of its section.
  • absolute de-facto libraries, like BordeauxThreads or Quicklisp, should be denoted with a :star: (:star: in markdown).
  • two libraries very similar in scope should be side by side, or in a section of their own.
  • do some curation based on our experience and the state of the library's documentation. We do not aim at listing every existing CL library (see Cliki for that) nor to list every "popular" library (see Quicklisp stats).
  • as such, the libraries we like best are marked with a ๐Ÿ‘ (1F44D unicode character). See also the signs' explanation in the introduction.

Awesome Common Lisp Learning Awesome

This list focuses on resources for learning Common Lisp, especially resources that I've found useful.

There are other Awesome Common Lisp lists that focus on other topics: - Libraries - Curated Libraries - Forked and updated from the above list. - Software

Contributions are welcome. Please read the contribution guidelines for details.

Contents

How To Use

  1. Get a Lisp environment.
  2. Bookmark the The Common Lisp Hyperspec.
  3. Download and work through a Lisp book of an appropriate level. Type the examples and play with the code. Feel free to switch books and try a different one.
  4. Try out Exercism.
  5. If you get stuck, find an online community and ask smart questions.
  6. Learn about Quicklisp.
  7. At some point, read your Lisp implementation's manual.

Lisp Environments

You can run a Lisp implementation directly, but an editing environment makes the experience easier. - Prepackaged environments - Portacle - A portable and multiplatform Common Lisp environment. It ships a slightly customized Emacs with SLIME, SBCL (a popular Common Lisp implementation), Quicklisp and Git. No installation needed, so it's a very quick and easy way to get going. - Lispbox - An IDE (Emacs + SLIME), Common Lisp implementation (Clozure Common Lisp) and library manager (Quicklisp), pre-packaged as archives for Windows, macOS and Linux. Descendant of "Lisp in a Box" mentioned in Practical Common Lisp. - Lispworks Personal Edition - A non-Emacs based IDE for LispWorks Lisp, with some restrictions. - Allegro Common Lisp - Has a free Express Edition IDE, and training videos on YouTube. - For advanced users - Articulate Common Lisp - A HOWTO for putting together a Lisp environment, and has information on useful libraries and how to structure projects. - If you're an experienced Emacs user, you can just install SLIME and a supported Common Lisp implementation. See the SLIME manual for more details. - The Common Lisp Cookbook has more information about installing an implementation using an implementation manager like Roswell, or on Docker.

Online References

Online Books

These books that are freely accessible online, arranged roughly in order from basic to advanced: - Common Lisp: A Gentle Introduction to Symbolic Computation by David S. Touretzky - a good introduction for people new to programming. Contains code for really useful utilities like DTRACE and SDRAW. - Common Lisp: An interactive approach by Stuart C. Shapiro - A textbook that teaches mainly through the use of exercises. - Practical Common Lisp by Peter Seibel - A great introduction for experienced programmers, and tries to highlight from the very beginning what makes CL different to other languages. - Common Lisp Koans - Not exactly a book, but a set of koans to help you learn the language. - On Lisp by Paul Graham - A great book for intermediately experienced Lispers. - Let Over Lambda by Doug Hoyte - An advanced book on Lisp Macros. - The first six chapters are available online. - Comments on Let Over Lambda - Several people recommend that you be comfortable with On Lisp before reading this book, and that the start is slow. - The chapter on closures - Has several non-trivial examples, and demonstrates the power of this feature. - Paradigms of Artificial Intelligence Programming by Peter Norvig - Has many interesting applications of Lisp, but is no longer a good reference for AI.

Offline Books

These are books that you'll have to buy, or borrow from a library. - Land of Lisp by Conrad Barski, MD - A fun introduction to Lisp that uses comics and has you writing games. - Available as an ebook. - A couple of the LOOP macros are written for x for y... which you can change to for x from 0 for y... to make them work in SBCL. - Has an errata page. - Most of the book is entertaining and fairly easy, but gets hairy from about Chapter 18. It doesn't feel like later chapters introduce much, so I recommend switching to a different book at that point. - The Web server example in Ch 13, 19 and 20 will only work on CLISP, and needs the addition of HTTP response headers to render the HTML properly. - ANSI Common Lisp by Paul Graham - Good as a reference, covers CLOS, and has several example program implementations. - Plaintext versions of Chapter 1 and Chapter 2 are available online. - Common Lisp Recipes by Edmund Weitz - A great set of Common Lisp patterns. - Object-Oriented Programming in Common Lisp by Sonya E. Keene - An in-depth description of the CLOS, and shows how to use it with example applications. - The Art of the Metaobject Protocol by Gregor Kiczales, Jim des Rivieres, and Daniel G. Bobrow - Describes the CLOS Metaobject Protocol (MOP). - Chapters 5 and 6 (available online) - The specification of a metaobject protocol extension to CLOS. - Adam Tornhill on AMOP - Recommends reading Practical Common Lisp, then Object-Oriented Programming in Common Lisp, and then AMOP.

Online Community

Library Management

These aren't libraries, but can help you find and install other libraries. - Quicklisp - A package management platform for Lisp libraries. - Quickdocs - Documentation for projects in Quicklisp. - State of the Common Lisp Ecosystem, 2015 - Article about what libraries you should use, and why. - Articulate Common Lisp - Lists some useful libraries.

Common Lisp Implementations

This section lists some common CL implementations and their manuals in alphabetical order. Unless otherwise noted, these are free software implementations. See also the Cliki's list of free software Common Lisp Implementations. - Allegro Common Lisp (ACL) - Commercial, but has a free Express Edition. - ACL manual - Training videos on YouTube - CLISP - CLISP Manual - Clozure Common Lisp (CCL) - CCL manual - Carnegie Mellon University Common Lisp (CMUCL) - CMUCL manual and other useful information - Embeddable Common Lisp (ECL) - ECL manual - LispWorks - Commercial, but as mentioned previously, has a Personal Edition with minor limitations. - LispWorks manual - Steel Bank Common Lisp (SBCL) - My personal favorite. - SBCL manual - Scieneer Common Lisp (SCL) - A commercial Linux and Unix implementation, but has an unrestricted free evaluation and non-commercial use version. - SCL manual

Credit

I got a lot of the information from Rainer Joswig's Stack Overflow answer on learning Common Lisp, and from the now-defunct Stack Overflow Documents site. The Cliki's Getting Started page was also invaluable.

Awesome Perl Awesome

A curated list of awesome Perl resources, including frameworks, libraries and software. Inspired by awesome-go.

Another module list

We also recommend these lists.

Contents

Args

Libraries for argument manifestation and validation.

Audio

  • Audio::CD - Interface to libcdaudio (cd + cddb)
  • Audio::Wav - Modules for reading & writing Microsoft WAV files.
  • Audio::SndFile - Perl library for reading and writing sound files
  • Audio::Ao - A Perl wrapper for the Ao audio library
  • MIDI::ALSA - the perl ALSA library, plus some interface functions

DSP

Benchmarks

Libraries for benchmarking

Caches

Libraries to talk to Cache Softwares

Class Builder

Libraries to support writing classes and meta programming

  • Class::Accessor::Lite - Simple accessor generator.
  • Class::Accessor::Lite::Lazy - Generate lazy accessors.
  • Homer - Simple Prototype-based object system.
  • Mo - Micro Objects. Mo is less.
  • Moo - Class builder supporting meta programming.
  • Moose - The one and only, Moose.
  • Mouse - Yet another class builder like Moo/Moose.
  • Object::Pad - class Example { has $x; method reader { return $x } }, experimental proving-ground for Cor
  • Object::Tiny - A class builder that is terse, fast, and tiny.

CLI

Libraries for developing CLI applications

  • App::Cmd - Write command line apps with less suffering.
  • Getopt::Long - Extended processing of command line options.

Cloud

Cryptography

Commercial WebServices

Container

Libraries for Singleton Pattern implementation.

Data Format

Libraries for serializing, formatting and parsing

Database

Libraries for dealing with relational databases

Database Drivers

Libraries for using specific database products

Relational Databases

NoSQL Databases

Date & Time

Libraries for working with dates and times

Devices

Libraries to talk to physical devices

DevOps Tools

Libraries that help when you want to deploy software across networks on several hosts/are working across computer networks

  • Rex - Remote Execution

Email

Libraries that implement email creation and sending

Event Loops

Libraries for various event loops. Asynchronous programming if you like

  • AE - Simpler, faster, newer AnyEvent API
  • AnyEvent - the DBI of event loop programming
  • EV - Uses libev, very fast and popular. Default for AnyEvent if present
  • Event - Works well, but older
  • IO::Async - Asynchronous event-driven programming
  • POE - Common interface for several event loops
  • Promise::XS - Promises in Perl

Exception Handling

Libraries that assist with and/or provide alternatives to eval{ die() }

  • autodie - Replace functions with ones that succeed or die with lexical scope
  • Exception::Class - A module that allows you to declare real exception classes in Perl
  • Syntax::Keyword::Try - a try/catch/finally syntax for perl
  • Throwable - a role for classes that can be thrown
  • Try::Tiny - minimal try/catch with proper preservation of $@
  • TryCatch - first class try catch semantics for Perl, without source filters

DOM Manipulation

  • HTML5::DOM - Super fast html5 DOM library with css selectors (based on Modest/MyHTML).

File Manipulation

  • File::Util - Easy, versatile, portable file handling.
  • Path::Tiny - Simple object-oriented file manipulation.

Form Frameworks

Libraries that take the boredom & repetition out of (web and UI) forms

Images

Libraries for manipulating images

List Manipulation

Libraries for manipulation lists (arrays)

Logging

Libraries for generating and working with log files

Module Development

Libraries that simplify and improve Perl module development

Network

Libraries that help when you are dealing with computer networks

Libraries that help when you are working across computer networks

ORM

Libraries that implement Object-Relational Mapping or datamapping techniques

Package Management

Libraries for package and dependency management

Processes and Threads

Libraries for managing processes and threads

Profiling

Libraries for examining run-time activity of your program

Protocol

Protocol clients and libraries

Queueing

Message Queue, Job Queue System..

Science/Numerics

Hand-picked modules for research, science, numerics and hyper-computing

Stream Manipulation

Libraries for manipulating event streams

REST Frameworks

Libraries for developing REST applications

Template Engines

Libraries and tools for templating

Testing

Libraries for testing codebases and generating test data.

Testing Frameworks

Test Double

Coverage

Tools

Some useful tools

  • App::Ack - ack is a tool like grep, optimized for programmers.
  • App::Nopaste - Post to various pastebins from the CLI
  • Daiku - Make for Perl.
  • Data::Printer - Colored pretty-print of Perl data structures and objects.
  • Reply - Read-eval-print-loop(REPL) command-line tool.
  • Riji - Static site generator using markdown and git mainly for blogging.
  • Smart::Comments - Comments that do more than just sit there.

Libraries for developping command line applications

Libraries for handling configuration files

  • Config::Tiny - Read/Write .ini style files with as little code as possible

Type checking

Video

Web Frameworks

Libraries for developing Web applications

Middlewares

Libraries for creating HTTP middlewares

  • Gazelle - Preforked Plack Handler for performance freaks
  • Plack - PSGI server implementation and utilities for Web applications.
  • Server::Starter - Process manager with the "graceful restart" feature.
  • Starlet - High-performance PSGI Server
  • Starman - High-performance preforking PSGI/Plack web server
  • Twiggy - Event-driven PSGI application server

Web Frameworks-Like

Somewhere between templates and full on frameworks

  • Embperl - Building dynamic Websites with Perl (sort of like Perl crossed with PHP)
  • Mason - Powerful, high-performance templating for the web and beyond

Web Scraping

Libraries for extracting some information from websites

Network Security

Some great libraries for starting the world of Network security with Perl

Metadata Forensics

General Metadata files parser, usefull during forensics investigations

Reverse Engineering

Libraries used for disassembly assembly operations, ELF files and bytecode

  • Disassembly - Decompiles binary bytecode to readable and recompilable bytecode assembler
  • Python::Bytecode - Parse Python bytecode
  • B::Bytecode - Compiles a Perl script into a bytecode format that could be loaded later
  • Perf::ARM - Use ARM instructions in Perl
  • Asm::Z80::Table - assemble / disassemble all Z80 CPU assembly instructions with Perl
  • X86::Disasm - Disassemble Intel x86 instructions with Perl
  • Disassemble::X86 - Another library for disassembe X86 instructions
  • X86::Udis86 - Interface for the C Udis disassembler
  • Asm::X86 - List of instructions and registers of x86-compatible processors, validating and converting instructions and memory references
  • ELF::Writer - write and read executable ELF files

Other Awesome Lists

Other amazingly awesome lists can be found in:

How to contribute?

Please read CONTRIBUTING.md

Awesome Groovy Awesome

Curated list of awesome groovy libraries, frameworks and resources. Inspired by many other awesome-* repositories. This awesome collection is also available on Groovy.ZEEF.com.

Build tools, setup and CI

  • Gradle - A powerful build system for the JVM
  • GMavenPlus - A rewrite of GMaven, a Maven plugin for Groovy
  • SDKMAN - The Software Development Kit Manager (Previously known as GVM)
  • Lazybones - A simple project creation tool that uses packaged project templates.
  • Jenkins job-dsl-plugin - A Groovy DSL for Jenkins Jobs
  • travis-groovy - execute groovy scripts on travis-ci

IDE and Editor Support

Web Frameworks

  • Grails - A powerful web application framework based on the Groovy language
  • Gaelyk - A lightweight Groovy toolkit for Google App Engine Java
  • Glide - Create awesome apps on Google App Engine in a snap
  • Ratpack - A toolkit for JVM web applications
  • gServ - A Groovy toolkit for creating SPAs and REST based micro-services without the need for a container (Tomcat, JBoss, etc.).
  • Spring-Boot - Spring Boot makes it easy to create stand-alone, production-grade Spring based Applications that can you can "just run"
  • Micronaut - A brand new microservices framework created by the Grails team

Database

  • Gmongo - A Groovy wrapper to the mongodb Java driver
  • Gstorm - A simple ORM for simple databases and CSV files to be used in groovy scripts
  • Tayra - Incremental backup tool for MongoDB
  • Groovy-liquibase - Yet Another Groovy DSL for Liquibase
  • Effigy - Groovy annotation-driven JDBC row mapping framework (abandoned)
  • elasticsearch-groovy - Elasticsearch Groovy client

Rich Application

  • Griffon - Griffon is an application framework for developing desktop applications in the JVM
  • GroovyFx - GroovyFX provides a Groovy binding for JavaFX 2.0.

HTTP

  • Http-Builder - HTTPBuilder is the easiest way to manipulate HTTP-based resources from the JVM
  • HTTP Builder NG - HTTP Builder NG is a modern Groovy DSL for making http requests.
  • HTTP Builder NG Gradle Plugin - Gradle plugin providing HTTP Builder NG support in a Gradle build configuration.
  • AsyncRestClient - Combine the power of RESTClient with RxGroovy for async http calls
  • Groovy-wslite - Lightweight SOAP and REST webservice clients for Groovy

Testing

  • Spock - The Enterprise-ready testing and specification framework.
  • Geb - Very Groovy Browser Automation
  • Betamax - Betamax is a tool for mocking external HTTP resources such as web services and REST APIs in your tests.
  • HTTP Mock Server - HTTP Mock Server allows to mock HTTP request using groovy closures.
  • Ersatz Mock Server - A simple and expressive simulated HTTP server for testing client code with configurable responses.
  • Dru - Data Reconstruction Utility loads data from external sources JSON, YML for easy testing GORM, DynamoDB or just plain POJOs.
  • Gru - Groovy HTTP Testing Framework for running integration and semi-ingetration tests for any HTTP backend with native unit test support for Grails and Spring MVC.

Concurrency

  • GPars - The GPars concurrency and parallelism framework for the JVM
  • RxGroovy - RxJava bindings for Groovy
  • Vertx - Vert.x is a lightweight, high performance application platform for the JVM

Code Analysis

Transpilers

  • Grooscript - Converts your Groovy code to Javascript

Static Web

  • Grain - Static Web Site Building Framework For Groovy
  • Gaiden - Gaiden is a tool that makes it easy to create documentation with Markdown.

Language Utilities

  • Functionalgroovy - Functional programming in Groovy
  • Groovy-stream - A collection of classes to give a fluent builder for Streams (Lazy Groovy Generators)
  • Flipside - Simple Groovy options library
  • groovy-common-extensions - Lets you add things commonly useful to the Groovy language via the extension system
  • groovy-extra-list-behaviour - Adds extra methods to Lists via the extension system
  • GPerfUtils - Groovy-based tools verifying performance of your code
  • gprof - The profiling module for Groovy
  • gbench - The benchmarking module for Groovy
  • Fuzzy-CSV - Simple lightweight data processing library, useful for shaping/processing your tabular data before its consumed by another service or library.

File System Utilities

  • Groovy-Vfs - A DSL for Groovy on top of Apache VFS2
  • Directree - A Simple DSL to create Directory Tree with Text Files

File Format DSL

  • document-builder - A document builder for Groovy for PDF or Word documents.
  • spreadsheet-builder - Spreadsheet builder provides convenient way how to create MS Excel OfficeOpenXML Documents (XSLX)
  • GroovyCSV - A simple CSV parsing library for groovy

Scripting Tools

  • EasyDokkaPlugin - Gradle script plugin to generate documentation by Dokka documentation engine for Java and Kotlin
  • GradleMavenPush - Gradle script plugin to upload Gradle Artifacts to Maven repositories
  • picocli - Parser library and framework for CLI. Usage help with ANSI colors. Autocomplete. Nested subcommands and more.
  • sshoogr - DSL library for working with remote servers through SSH.

Rule Engines

  • grules - rule engine for data preprocessing
  • n-cube - a Rules Engine, Decision Table, Decision Tree, Templating Engine, and Enterprise Spreadsheet, built as a hyper-space.

Resources

Official Resources

Try Groovy in Browser

Groovy Code Examples

  • MrHaKi's Goodness - Look out for entries titled "Groovy Goodness" , "Grails Goodness", Gradle Goodness"
  • PLEAC Groovy - Groovy is one of the 3 languages out of 32, having completed 100% of PLEAC examples.

Staying up to date

  • Groovy Calamari - Weekly curated publication about the Groovy Ecosystem
  • Groovy Weekly - Groovy weekly newsletter
  • Grails Diary - Particulary useful for Grails developers
  • Groovy Podcast - Ken Kousen and Baruch Sadogursky discuss news and insight from the Groovy ecosystem.

Interactive Learning

  • Groovy-Koans - Collection of small exercises in the form of unit tests

Blogs of core committer

Conferences

Contributing

Fork this repository, edit this file and send a pull request.

Using awesome.groovy script

You can use the awesome.groovy script to search awesome projects on github and generate the entry prepoulated with project name, repo url and description in markdown format. All you need to do is place it under right group in the markdown list in README.md.

Examples

to find out repos where language is groovy and whose name contain gpars and

./awesome.groovy -l groovy gpars

to find out repos by user 'kdabir' and name contains glide

./awesome.groovy -u kdabir glide

to find out repos whose name contains glide

./awesome.groovy glide

If you are lazy to download the repo, an easy way is:

groovy "https://git.io/awesome" -l groovy glide

Credits

To all the awesome-* repos out there and their aggreators like this and this.

Awesome Dart Awesome

A curated list of awesome Dart frameworks, libraries, and software. Items on the list are actively maintained, well documented, and popular in the Dart community. Inspired by the awesome lists.

Contributing

Please take a quick look at the contribution guidelines first. If you see a package or project here that is no longer maintained or is not a good fit, please submit a pull request to improve this file. Thank you to all contributors; you rock!

Contents


Client Web App Frameworks

  • AngularDart - AngularDart is a development platform for building mobile and desktop web applications.
  • Flutter - Flutter is a framework to build high-performance, cross-platform mobile apps, allowing applications to be written for Android, iOS and Web Apps.
  • MDL/Dart - Material Design Lite for Dart is a framework of components for web developers based on Google's Material Design philosophy.
  • OverReact - A library for building statically-typed React UI components.

Server Frameworks

  • Jaguar - A server framework built for speed, simplicity and extensibility.
  • Start - Sinatra inspired web framework to serve static files, handle dynamic requests, websockets and create JSON responses.
  • Shelf - Shelf makes it easy to create and compose web servers and parts of web servers.
    • There are many packages written for Shelf. By convention they start with shelf_.
  • Vane - Framework with built-in server runtime environment and middleware system.
  • Rikulo Stream - Lightweight web server with request routing, filtering, template engine, WebSocket, MVC design pattern, and file-based static resources.
  • Alfred - Minimal ExpressJS-inspired server with routing and middlware.

Other Frameworks

Cross-platform development

Game Development

  • Flame - A minimalist Flutter game engine.
  • StageXL - StageXL offers an easy to use and complete API (based on the Flash API) for impressive 2D content like games and other rich applications.
  • DartRocket - DartRocket is a HTML5 game framework written in Dart and which uses the StageXL rendering engine.
  • Pixi Dart - A port of the pixi.js rendering engine.
  • Ranger - A game engine centered around HTML5 Canvas and a scene graph.

Animation

  • Universal Tween Engine - A port of the original java Universal Tween Engine created by Aurelien Ribbon.
  • Spine Dart - An implementation of the Esoteric Software Spine runtime.

Template

  • mustache_template - A mustache template library that supports dart2js and dart2native.
  • jaded - Port of the excellent Jade view engine.

Database

  • Postgres - A PostgreSQL database driver that uses the extended, binary protocol for more efficient and secure queries.
  • SQLJockey - MySQL connector.
  • PostgreSQL - PostgreSQL database driver.

Package Managers

  • Pub - Pub is used to manage packages.
  • Cloudsmith - A fully managed package management SaaS, with support for Dart, Flutter, and much more. [Free for Public/OSS] [$]

Utilities

  • Archive - A library to encode and decode various archive and compression formats.
  • built_collection - Immutable collections via the builder pattern.
  • built_value - Immutable value types, enum classes, and serialization.
  • Frappe - A functional reactive programming library for Dart. Frappรฉ extends the functionality of Dart's streams, and introduces new concepts like properties/signals.
  • Quiver - A set of utility libraries that makes using many libraries easier and more convenient, or adds additional functionality.
  • route_hierarchical - Route is a client routing library for Dart that helps make building single-page web apps.
  • Darq - A port of functional LINQ from the .NET library.

Dependency Injection

  • Angular DI - Dependency Injection framework by Angular.
  • Dependencies - A simple and modular dependency injection system which doesn't use mirrors.
  • package: inject - Compile-time dependency injection for Dart and Flutter

Parsers

  • html - A library for working with HTML documents. Previously known as html5lib.
  • markdown - Parse markdown into HTML on both the client and server.
  • PetitParser - PetitParser combines ideas from scannerless parsing, parser combinators, parsing expression grammars and packrat parsers to model grammars and parsers as objects that can be reconfigured dynamically.
  • XML - A lightweight library for parsing, traversing, querying and building XML documents.
  • xmlstream - A streaming event-based XML Parser.
  • YAML - A parser for YAML.
  • Dart Tags - The library for parsing ID3 tags, written in pure Dart.

Validation

  • Constrain - Provides a constraint based Validation library inspired by Java Bean Validation but leveraging the superior language capabilities of Dart.
  • validator.dart - String validation and sanitization for Dart.

ORM

  • Objectory - Objectory provides typed, checked environment to model, save and query data persisted on MongoDb.

Image

  • image - Provides server and web apps the ability to load, manipulate, and save images with various image file formats including PNG, JPEG, GIF, WebP, TIFF, TGA, PSD, PVR, and OpenEXR.

Testing

  • Guinness - A port of the Jasmine library.
  • test - Provides a standard way of writing and running tests in Dart.

Unions

  • Freezed - Code generation for immutable classes that has a simple syntax/API without compromising on the features.

Crash monitoring

  • Sentry - Sentry provides self-hosted and cloud-based error monitoring that helps all software teams discover, triage, and prioritize errors in real-time.

Tools

  • DevTools - a suite of debugging and performance tools for Dart and Flutter.
  • dart2js - compiles Dart code to JavaScript.
  • js2dart - compiles Javascript code to Dart.
  • Stagehand - A project scaffolding generator, inspired by tools like Web Starter Kit and Yeoman.
  • Crossdart - Cross-referenced source code of the packages from Pub.
  • Crossdart Github Chrome Extension - Adds "Go to declaration" and "Find Usages" functionality to your Dart projects on Github (both in tree views and pull requests).
  • gulp-dart - A gulp plugin for compiling Dart code to JavaScript using dart2js.
  • dev_compiler - Dart to JavaScript compiler designed to create idiomatic, readable JavaScript output.
  • json2dart - Given a json, it generates the dart classes to parse and generate json with given structure.
  • webdev_proxy - A proxy wrapper around webdev which adds support for rerouting 404s to the index, allowing for HTML push-based routing while running locally.
  • Dart Code Metrics - Additional linter which reports code metrics, checks for anti-patterns and provides additional rules for Analyzer.
  • m2cgen - A CLI tool to transpile trained classic ML models into a native Dart code with zero dependencies.
  • Lakos - Visualize internal library dependencies in Graphviz and detect dependency cycles.

Tutorials

Community

IDEs, Editors, and Plugins

Everything Else

There are lots of awesome libraries being added to Pub all the time. If you can't find a library on this list that meets your needs, go ahead and search for it on Pub. And if you end up finding an awesome library, we would love a pull request with the info so that everyone else can discover it as well. Just make sure to read the contributing guidelines first.

License

CC0

Awesome Java Awesome

A curated list of awesome Java frameworks, libraries and software.

Contents

Projects

Bean Mapping

Frameworks that ease bean mapping.

  • dOOv - Provides fluent API for typesafe domain model validation and mapping. It uses annotations, code generation and a type safe DSL to make bean validation and mapping fast and easy.
  • JMapper - Uses byte code manipulation for lightning-fast mapping. Supports annotations and API or XML configuration.
  • MapStruct - Code generator that simplifies mappings between different bean types, based on a convention-over-configuration approach.
  • ModelMapper - Intelligent object mapping library that automatically maps objects to each other.
  • Orika - JavaBean-mapping framework that recursively copies (among other capabilities) data from one object to another.
  • reMap - Lambda and method handle-based mapping which requires code and not annotations if objects have different names.
  • Selma - Annotation processor-based bean mapper.

Build

Tools that handle the build cycle and dependencies of an application.

  • Apache Maven - Declarative build and dependency management that favors convention over configuration. It might be preferable to Apache Ant, which uses a rather procedural approach and can be difficult to maintain.
  • Bazel - Tool from Google that builds code quickly and reliably.
  • Buck - Encourages the creation of small, reusable modules consisting of code and resources.
  • Gradle - Incremental builds programmed via Groovy instead of declaring XML. Works well with Maven's dependency management.

Bytecode Manipulation

Libraries to manipulate bytecode programmatically.

  • ASM - All-purpose, low-level bytecode manipulation and analysis.
  • Byte Buddy - Further simplifies bytecode generation with a fluent API.
  • bytecode-viewer - Java 8 Jar & Android APK reverse engineering suite. (GPL-3.0-only)
  • Byteman - Manipulate bytecode at runtime via DSL (rules); mainly for testing/troubleshooting. (LGPL-2.1-or-later)
  • cglib - Bytecode generation library.
  • Javassist - Tries to simplify bytecode editing.
  • Mixin - Manipulate bytecode at runtime using real Java code.
  • Perses - Dynamically injects failure/latency at the bytecode level according to principles of chaos engineering.

Caching

Libraries that provide caching facilities.

  • cache2k - In-memory high performance caching library.
  • Caffeine - High-performance, near-optimal caching library.
  • Ehcache - Distributed general-purpose cache.
  • Infinispan - Highly concurrent key/value datastore used for caching.

CLI

Libraries for everything related to the CLI.

  • ASCII Table - Library to draw tables in ASCII.
  • Airline - Annotation-based framework for parsing Git-like command-line arguments.
  • args4j - Small library to parse command-line arguments.
  • Jansi - ANSI escape codes to format console output.
  • Java ASCII Render - Graphical primitives for the console.
  • JCommander - Command-line argument-parsing framework with custom types and validation via implementing interfaces.
  • jbock - Reflectionless command line parser.
  • Jexer - Advanced console (and Swing) text user interface (TUI) library, with mouse-draggable windows, built-in terminal window manager, and sixel image support. Looks like Turbo Vision.
  • JLine - Includes features from modern shells like completion or history.
  • JOpt Simple - Fluent parser that uses the POSIX#getopt and GNU#getopt_long syntaxes.
  • picocli - ANSI colors and styles in usage help with annotation-based POSIX/GNU/any syntax, subcommands, strong typing for both options and positional args.
  • Text-IO - Aids the creation of full console-based applications.
  • Lanterna - Easy console text-GUI library, similar to curses. (LGPL-3.0-only)

Cluster Management

Frameworks that can dynamically manage applications inside of a cluster.

  • Apache Aurora - Mesos framework for long-running services and cron jobs.
  • Singularity - Mesos framework that makes deployment and operations easy. It supports web services, background workers, scheduled jobs, and one-off tasks.

Code Analysis

Tools that provide metrics and quality measurements.

  • Checkstyle - Static analysis of coding conventions and standards. (LGPL-2.1-or-later)
  • Error Prone - Catches common programming mistakes as compile-time errors.
  • Infer - Modern static analysis tool for verifying the correctness of code.
  • jQAssistant - Static code analysis with Neo4J-based query language. (GPL-3.0-only)
  • NullAway - Eliminates NullPointerExceptions with low build-time overhead.
  • PMD - Source code analysis for finding bad coding practices.
  • SonarJava - Static analyzer for SonarQube & SonarLint. (LGPL-3.0-only)
  • Sourcetrail - Visual source code navigator.
  • Spoon - Library for analyzing and transforming Java source code.
  • Spotbugs - Static analysis of bytecode to find potential bugs. (LGPL-2.1-only)

Code Coverage

Frameworks and tools that enable code coverage metrics collection for test suites.

  • Clover - Relies on source-code instrumentation instead of bytecode instrumentation.
  • Cobertura - Relies on offline (or static) bytecode instrumentation and class loading to collect code coverage metrics. (GPL-2.0-only)
  • JaCoCo - Framework that enables collection of code coverage metrics, using both offline and runtime bytecode instrumentation.

Code Generators

Tools that generate patterns for repetitive code in order to reduce verbosity and error-proneness.

  • ADT4J - JSR-269 code generator for algebraic data types.
  • Auto - Generates factory, service, and value classes.
  • Bootify c - Browser-based Spring Boot app generation with JPA model and REST API.
  • FreeBuilder - Automatically generates the Builder pattern.
  • Geci - Discovers files that need generated code, updates automatically and writes to the source with a convenient API.
  • Immutables - Annotation processors to generate simple, safe and consistent value objects.
  • JavaPoet - API to generate source files.
  • JHipster - Yeoman source code generator for Spring Boot and AngularJS.
  • Joda-Beans - Small framework that adds queryable properties to Java, enhancing JavaBeans.
  • JPA Buddy c - Plugin for IntelliJ IDEA. Provides visual tools for generating JPA entities, Spring Data JPA repositories, Liquibase changelogs and SQL scripts. Offers automatic Liquibase/Flyway script generation by comparing model to DB, and reverse engineering JPA entities from DB tables.
  • Lombok - Code generator that aims to reduce verbosity.
  • Record-Builder - Companion builder class, withers and templates for Java records.
  • Telosys - Simple and light code generator available as an Eclipse Plugin and also as a CLI.

Compiler-compiler

Frameworks that help to create parsers, interpreters or compilers.

  • ANTLR - Complex full-featured framework for top-down parsing.
  • JavaCC - Parser generator that generates top-down parsers. Allows lexical state switching and permits extended BNF specifications.
  • JFlex - Lexical analyzer generator.

Computer Vision

Libraries which seek to gain high level information from images and videos.

  • BoofCV - Library for image processing, camera calibration, tracking, SFM, MVS, 3D vision, QR Code and much more.
  • ImageJ - Medical image processing application with an API.
  • JavaCV - Java interface to OpenCV, FFmpeg, and much more.

Configuration

Libraries that provide external configuration.

  • centraldogma - Highly-available version-controlled service configuration repository based on Git, ZooKeeper and HTTP/2.
  • cfg4j - Modern configuration library for distributed apps written in Java.
  • config - Configuration library supporting Java properties, JSON or its human optimized superset HOCON.
  • Configurate - Configuration library with support for various configuration formats and transformations.
  • dotenv - Twelve-factor configuration library which uses environment-specific files.
  • ini4j - Provides an API for handling Windows' INI files.
  • KAConf - Annotation-based configuration system for Java and Kotlin.
  • microconfig - Configuration system designed for microservices which helps to separate configuration from code. The configuration for different services can have common and specific parts and can be dynamically distributed.
  • owner - Reduces boilerplate of properties.

Constraint Satisfaction Problem Solver

Libraries that help with implementing optimization and satisfiability problems.

  • Choco - Off-the-shelf constraint satisfaction problem solver that uses constraint programming techniques.
  • JaCoP - Includes an interface for the FlatZinc language, enabling it to execute MiniZinc models. (AGPL-3.0)
  • OptaPlanner - Business planning and resource scheduling optimization solver.

CSV

Frameworks and libraries that simplify reading/writing CSV data.

  • FastCSV - Performance-optimized, dependency-free and RFC 4180 compliant.
  • jackson-dataformat-csv - Jackson extension for reading and writing CSV.
  • opencsv - Simple CSV parser.
  • Super CSV - Powerful CSV parser with support for Dozer, Joda-Time and Java 8.
  • uniVocity-parsers - One of the fastest and most feature-complete parsers. Also comes with parsers for TSV and fixed-width records.

Data Structures

Efficient and specific data structures.

  • Apache Avro - Data interchange format with dynamic typing, untagged data, and absence of manually assigned IDs.
  • Apache Orc - Fast and efficient columnar storage format for Hadoop-based workloads.
  • Apache Parquet - Columnar storage format based on assembly algorithms from Google's paper on Dremel.
  • Apache Thrift - Data interchange format that originated at Facebook.
  • Big Queue - Fast and persistent queue based on memory-mapped files.
  • HyperMinHash-java - Probabilistic data structure for computing union, intersection, and set cardinality in loglog space.
  • Persistent Collection - Persistent and immutable analogue of the Java Collections Framework.
  • Protobuf - Google's data interchange format.
  • RoaringBitmap - Fast and efficient compressed bitmap.
  • SBE - Simple Binary Encoding, one of the fastest message formats around.
  • Tape - Lightning-fast, transactional, file-based FIFO.
  • Wire - Clean, lightweight protocol buffers.

Database

Everything that simplifies interactions with the database.

  • Apache Calcite - Dynamic data management framework. It contains many of the pieces that comprise a typical database management system.
  • Apache Drill - Distributed, schema on-the-fly, ANSI SQL query engine for Big Data exploration.
  • Apache Phoenix - High-performance relational database layer over HBase for low-latency applications.
  • ArangoDB - ArangoDB Java driver.
  • Chronicle Map - Efficient, in-memory (opt. persisted to disk), off-heap key-value store.
  • Debezium - Low latency data streaming platform for change data capture.
  • druid - High-performance, column-oriented, distributed data store.
  • eXist - NoSQL document database and application platform. (LGPL-2.1-only)
  • FlexyPool - Brings metrics and failover strategies to the most common connection pooling solutions.
  • Flyway - Simple database migration tool.
  • H2 - Small SQL database notable for its in-memory functionality.
  • HikariCP - High-performance JDBC connection pool.
  • JDBI - Convenient abstraction of JDBC.
  • Jedis - Small client for interaction with Redis, with methods for commands.
  • Jest - Client for the Elasticsearch REST API.
  • jetcd - Client library for etcd.
  • Jinq - Typesafe database queries via symbolic execution of Java 8 Lambdas (on top of JPA or jOOQ).
  • jOOQ - Generates typesafe code based on SQL schema.
  • Leaf - Distributed ID generate service.
  • Liquibase - Database-independent library for tracking, managing and applying database schema changes.
  • MapDB - Embedded database engine that provides concurrent collections backed on disk or in off-heap memory.
  • MariaDB4j - Launcher for MariaDB that requires no installation or external dependencies.
  • Modality - Lightweight ORM with database reverse engineering features.
  • Spring Data JPA MongoDB Expressions - Allows you to use MongoDB query language to query your relational database.
  • Trino - Distributed SQL query engine for big data.
  • QuestDB - High-performance SQL database for time series. Supports InfluxDB line protocol, PostgreSQL wire protocol, and REST.
  • QueryStream - Build JPA Criteria queries using a Stream-like API.
  • Querydsl - Typesafe unified queries.
  • Realm - Mobile database to run directly inside phones, tablets or wearables.
  • Redisson - Allows for distributed and scalable data structures on top of a Redis server.
  • requery - Modern, lightweight but powerful object mapping and SQL generator. Easily map to or create databases, or perform queries and updates from any Java-using platform.
  • Speedment - Database access library that utilizes Java 8's Stream API for querying.
  • Vibur DBCP - JDBC connection pool library with advanced performance monitoring capabilities.
  • Xodus - Highly concurrent transactional schema-less and ACID-compliant embedded database.

Date and Time

Libraries related to handling date and time.

  • Almanac Converter - Simple conversion between different calendar systems.
  • iCal4j - Parse and build iCalendar RFC 5545 data models.
  • Jollyday - Determines the holidays for a given year, country/name and eventually state/region.
  • ThreeTen-Extra - Additional date-time classes that complement those in JDK 8.
  • Time4J - Advanced date and time library. (LGPL-2.1-only)

Dependency Injection

Libraries that help to realize the Inversion of Control paradigm.

  • Apache DeltaSpike - CDI extension framework.
  • Dagger - Compile-time injection framework without reflection.
  • Feather - Ultra-lightweight, JSR-330-compliant dependency injection library.
  • Governator - Extensions and utilities that enhance Google Guice.
  • Guice - Lightweight and opinionated framework that completes Dagger.
  • HK2 - Lightweight and dynamic dependency injection framework.
  • JayWire - Lightweight dependency injection framework. (LGPL-3.0-only)

Development

Augmentation of the development process at a fundamental level.

  • AspectJ - Seamless aspect-oriented programming extension.
  • DCEVM - JVM modification that allows unlimited redefinition of loaded classes at runtime. (GPL-2.0-only)
  • Faux Pas - Library that simplifies error handling by circumventing the issue that none of the functional interfaces in the Java Runtime is allowed by default to throw checked exceptions.
  • HotswapAgent - Unlimited runtime class and resource redefinition. (GPL-2.0-only)
  • JavaParser - Parse, modify and generate Java code.
  • JavaSymbolSolver - Symbol solver.
  • Manifold - Re-energizes Java with powerful features like type-safe metaprogramming, structural typing and extension methods.
  • NoException - Allows checked exceptions in functional interfaces and converts exceptions to Optional return.
  • SneakyThrow - Ignores checked exceptions without bytecode manipulation. Can also be used inside Java 8 stream operations.
  • Tail - Enable infinite recursion using tail call optimization.

Distributed Applications

Libraries and frameworks for writing distributed and fault-tolerant applications.

  • Apache Geode - In-memory data management system that provides reliable asynchronous event notifications and guaranteed message delivery.
  • Apache Storm - Realtime computation system.
  • Apache ZooKeeper - Coordination service with distributed configuration, synchronization, and naming registry for large distributed systems.
  • Atomix - Fault-tolerant distributed coordination framework.
  • Axon - Framework for creating CQRS applications.
  • Dropwizard Circuit Breaker - Circuit breaker design pattern for Dropwizard. (GPL-2.0-only)
  • Failsafe - Simple failure handling with retries and circuit breakers.
  • Hazelcast - Highly scalable in-memory datagrid with a free open-source version.
  • JGroups - Toolkit for reliable messaging and cluster creation.
  • Quasar - Lightweight threads and actors for the JVM.
  • resilience4j - Functional fault tolerance library.
  • ScaleCube Services - Embeddable Cluster-Membership library based on SWIM and gossip protocol.
  • Zuul - Gateway service that provides dynamic routing, monitoring, resiliency, security, and more.

Distributed Transactions

Distributed transactions provide a mechanism for ensuring consistency of data updates in the presence of concurrent access and partial failures.

  • Atomikos - Provides transactions for REST, SOA and microservices with support for JTA and XA.
  • Bitronix - Simple but complete implementation of the JTA 1.1 API.
  • Narayana - Provides support for traditional ACID and compensation transactions, also complies with JTA, JTS and other standards. (LGPL-2.1-only)
  • Seata - Delivers high performance and easy to use distributed transaction services under a microservices architecture.

Distribution

Tools that handle the distribution of applications in native formats.

  • Artipie - Binary artifact management toolkit which hosts them on the file system or S3.
  • Boxfuse c - Deployment of JVM applications to AWS using the principles of immutable infrastructure.
  • Capsule - Simple and powerful packaging and deployment. A fat JAR on steroids, or a "Docker for Java" that supports JVM-optimized containers.
  • Central Repository - Largest binary component repository available as a free service to the open-source community. Default used by Apache Maven, and available in all other build tools.
  • Cloudsmith c - Fully managed package management SaaS with support for Maven/Gradle/SBT with a free tier.
  • Getdown - A system for deploying Java applications to end-user computers and keeping them up to date. Developed as an alternative to Java Web Start.
  • IzPack - Setup authoring tool for cross-platform deployments.
  • JavaPackager - Maven and Gradle plugin which provides an easy way to package Java applications in native Windows, Mac OS X or GNU/Linux executables, and generate installers for them.
  • jlink.online - Builds optimized runtimes over HTTP.
  • Nexus c - Binary management with proxy and caching capabilities.
  • packr - Packs JARs, assets and the JVM for native distribution on Windows, Linux and macOS.
  • really-executable-jars-maven-plugin - Maven plugin for making self-executing JARs.

Document Processing

Libraries that assist with processing office document formats.

  • Apache POI - Supports OOXML (XLSX, DOCX, PPTX) as well as OLE2 (XLS, DOC or PPT).
  • documents4j - API for document format conversion using third-party converters such as MS Word.
  • docx4j - Create and manipulate Microsoft Open XML files.
  • fastexcel - High performance library to read and write large Excel (XLSX) worksheets.
  • zerocell - Annotation-based API for reading data from Excel sheets into POJOs with focus on reduced overhead.

Financial

Libraries related to the financial domain.

  • Cassandre - Trading bot framework.
  • Parity - Platform for trading venues.
  • Philadelphia - Low-latency financial information exchange.
  • Square - Integration with the Square API.
  • Stripe - Integration with the Stripe API.
  • ta4j - Library for technical analysis.

Formal Verification

Formal-methods tools: proof assistants, model checking, symbolic execution, etc.

  • CATG - Concolic unit testing engine. Automatically generates unit tests using formal methods.
  • Checker Framework - Pluggable type systems. Includes nullness types, physical units, immutability types and more. (GPL-2.0-only WITH Classpath-exception-2.0)
  • Daikon - Detects likely program invariants and generates JML specs based on those invariants.
  • Java Path Finder (JPF) - JVM formal verification tool containing a model checker and more. Created by NASA.
  • JMLOK 2.0 - Detects inconsistencies between code and JML specification through feedback-directed random tests generation, and suggests a likely cause for each nonconformance detected. (GPL-3.0-only)
  • KeY - Formal software development tool that aims to integrate design, implementation, formal specification, and formal verification of object-oriented software as seamlessly as possible. Uses JML for specification and symbolic execution for verification. (GPL-2.0-or-later)
  • OpenJML - Translates JML specifications into SMT-LIB format and passes the proof problems implied by the program to backend solvers. (GPL-2.0-only)

Functional Programming

Libraries that facilitate functional programming.

  • Cyclops - Monad and stream utilities, comprehensions, pattern matching, functional extensions for all JDK collections, future streams, trampolines and much more.
  • derive4j - Java 8 annotation processor and framework for deriving algebraic data types constructors, pattern-matching and morphisms. (GPL-3.0-only)
  • Fugue - Functional extensions to Guava.
  • Functional Java - Implements numerous basic and advanced programming abstractions that assist composition-oriented development.
  • jOOฮป - Extension to Java 8 that aims to fix gaps in lambda by providing numerous missing types and a rich set of sequential Stream API additions.
  • protonpack - Collection of stream utilities.
  • StreamEx - Enhances Java 8 Streams.
  • Vavr - Functional component library that provides persistent data types and functional control structures.

Game Development

Frameworks that support the development of games.

  • FXGL - JavaFX Game Development Framework.
  • JBox2D - Port of the renowned C++ 2D physics engine.
  • jMonkeyEngine - Game engine for modern 3D development.
  • libGDX - All-round cross-platform, high-level framework.
  • Litiengine - AWT-based, lightweight 2D game engine.
  • LWJGL - Robust framework that abstracts libraries like OpenGL/CL/AL.
  • Mini2Dx - Beginner-friendly, master-ready framework for rapidly prototyping and building 2D games.

Geospatial

Libraries for working with geospatial data and algorithms.

  • Apache SIS - Library for developing geospatial applications.
  • Geo - GeoHash utilities in Java.
  • GeoTools - Library that provides tools for geospatial data. (LGPL-2.1-only)
  • GraphHopper - Road-routing engine. Used as a Java library or standalone web service.
  • H2GIS - Spatial extension of the H2 database. (LGPL-3.0-only)
  • Jgeohash - Library for using the GeoHash algorithm.
  • Mapsforge - Map rendering based on OpenStreetMap data. (LGPL-3.0-only)
  • Spatial4j - General-purpose spatial/geospatial library.

GUI

Libraries to create modern graphical user interfaces.

  • JavaFX - Successor of Swing.
  • Scene Builder - Visual layout tool for JavaFX applications.
  • SWT - Graphical widget toolkit.

High Performance

Everything about high-performance computation, from collections to specific libraries.

  • Agrona - Data structures and utility methods that are common in high-performance applications.
  • Disruptor - Inter-thread messaging library.
  • Eclipse Collections - Collections framework inspired by Smalltalk.
  • fastutil - Fast and compact type-specific collections.
  • HPPC - Primitive collections.
  • JCTools - Concurrency tools currently missing from the JDK.
  • Koloboke - Carefully designed extension of the Java Collections Framework with primitive specializations and more.

HTTP Clients

Libraries that assist with creating HTTP requests and/or binding responses.

  • Apache HttpComponents - A toolset of low level Java components focused on HTTP and associated protocols.
  • Async Http Client - Asynchronous HTTP and WebSocket client library.
  • Feign - HTTP client binder inspired by Retrofit, JAXRS-2.0, and WebSocket.
  • Google HTTP Client - Pluggable HTTP transport abstraction with support for java.net.HttpURLConnection, Apache HTTP Client, Android, Google App Engine, XML, Gson, Jackson and Protobuf.
  • methanol - HTTP client extensions library.
  • restQL-java - Microservice query language that fetches information from multiple services.
  • Retrofit - Typesafe REST client.
  • Ribbon - Client-side IPC library that is battle-tested in cloud.
  • Riptide - Client-side response routing for Spring's RestTemplate.
  • unirest-java - Simplified, lightweight HTTP client library.

Hypermedia Types

Libraries that handle serialization to hypermedia types.

  • hate - Builds hypermedia-friendly objects according to HAL specification.
  • JSON-LD - JSON-LD implementation.
  • Siren4J - Library for the Siren specification.

IDE

Integrated development environments that try to simplify several aspects of development.

  • Eclipse - Established open-source project with support for lots of plugins and languages.
  • IntelliJ IDEA c - Supports many JVM languages and provides good options for Android development. The commercial edition targets the enterprise sector.
  • jGRASP - Created to provide software visualizations that work in conjunction with the debugger such as Control Structure Diagrams, UML class diagrams and Object Viewer.
  • NetBeans - Provides integration for several Java SE and EE features, from database access to HTML5.
  • Recaf - Bytecode editor.
  • Visual Studio Code - Provides Java support for lightweight projects with a simple, modern workflow by using extensions from the internal marketplace.

Imagery

Libraries that assist with the creation, evaluation or manipulation of graphical images.

  • Imgscalr - Simple, efficient and hardware-accelerated image-scaling library implemented in pure Java 2D.
  • Tess4J - JNA wrapper for Tesseract OCR API.
  • Thumbnailator - High-quality thumbnail generation library.
  • TwelveMonkeys - Collection of plugins that extend the number of supported image file formats.
  • ZXing - Multi-format 1D/2D barcode image processing library.
  • image-comparison - Library that compares 2 images with the same sizes and shows the differences visually by drawing rectangles. Some parts of the image can be excluded from the comparison. Can be used for automation qa tests.

Introspection

Libraries that help make the Java introspection and reflection API easier and faster to use.

  • ClassGraph - ClassGraph (formerly FastClasspathScanner) is an uber-fast, ultra-lightweight, parallelized classpath scanner and module scanner for Java, Scala, Kotlin and other JVM languages.
  • jOOR - jOOR stands for jOOR Object Oriented Reflection. It is a simple wrapper for the java.lang.reflect package.
  • Mirror - Mirror was created to bring light to a simple problem, usually named ReflectionUtil, which is on almost all projects that rely on reflection to do advanced tasks.
  • Objenesis - Allows dynamic instantiation without default constructor, e.g. constructors which have required arguments, side effects or throw exceptions.
  • ReflectASM - ReflectASM is a very small Java library that provides high performance reflection by using code generation.
  • Reflections - Reflections scans your classpath, indexes the metadata, allows you to query it on runtime and may save and collect that information for many modules within your project.

Job Scheduling

Libraries for scheduling background jobs.

  • JobRunr - Job scheduling library which utilizes lambdas for fire-and-forget, delayed and recurring jobs. Guarantees execution by single scheduler instance using optimistic locking. Has features for persistence, minimal dependencies and is embeddable.
  • Quartz - Feature-rich, open source job scheduling library that can be integrated within virtually any Java application.
  • Sundial - Lightweight framework to simply define jobs, define triggers and start the scheduler.
  • Wisp - Simple library with minimal footprint and straightforward API.
  • db-scheduler - Persistent and cluster-friendly scheduler.
  • easy-batch - Set up batch jobs with simple processing pipelines. Records are read in sequence from a data source, processed in pipeline and written in batches to a data sink.
  • shedlock - Makes sure that your scheduled tasks are executed at most once at the same time. If a task is being executed on one node, it acquires a lock which prevents execution of the same task from another node or thread.

JSON

Libraries for serializing and deserializing JSON to and from Java objects.

  • DSL-JSON - JSON library with advanced compile time databinding.
  • Genson - Powerful and easy-to-use Java-to-JSON conversion library.
  • Gson - Serializes objects to JSON and vice versa. Good performance with on-the-fly usage.
  • HikariJSON - High-performance JSON parser, 2x faster than Jackson.
  • jackson-modules-java8 - Set of Jackson modules for Java 8 datatypes and features.
  • Jackson-datatype-money - Open-source Jackson module to support JSON serialization and deserialization of JavaMoney data types.
  • Jackson - Similar to GSON, but offers performance gains if you need to instantiate the library more often.
  • JSON-io - Convert Java to JSON. Convert JSON to Java. Pretty print JSON. Java JSON serializer.
  • jsoniter - Fast and flexible library with iterator and lazy parsing API.
  • LoganSquare - JSON parsing and serializing library based on Jackson's streaming API. Outperforms GSON & Jackson's library.
  • Moshi - Modern JSON library, less opinionated and uses built-in types like List and Map.
  • Yasson - Binding layer between classes and JSON documents similar to JAXB.
  • fastjson - Very fast processor with no additional dependencies and full data binding.
  • Jolt - JSON to JSON transformation tool.
  • JsonPath - Extract data from JSON using XPATH-like syntax.
  • JsonSurfer - Streaming JsonPath processor dedicated to processing big and complicated JSON data.

JVM and JDK

Current implementations of the JVM/JDK.

  • Adopt Open JDK - Community-driven OpenJDK builds, including both HotSpot and OpenJ9.
  • Avian - JVM with JIT, AOT modes and iOS port.
  • Corretto - No-cost, multiplatform, production-ready distribution of OpenJDK by Amazon. (GPL-2.0-only WITH Classpath-exception-2.0)
  • Dragonwell8 - Downstream version of OpenJDK optimized for online e-commerce, financial, logistics applications.
  • Graal - Polyglot embeddable JVM. (GPL-2.0-only WITH Classpath-exception-2.0)
  • Liberica JDK - Built from OpenJDK, thoroughly tested and passed the JCK. (GPL-2.0-only WITH Classpath-exception-2.0)
  • OpenJ9 - High performance, enterprise-calibre, flexibly licensed, openly-governed cross-platform JVM extending and augmenting the runtime technology components from the Eclipse OMR and OpenJDK project.
  • Open JDK - Open JDK community home. (GPL-2.0-only WITH Classpath-exception-2.0)
  • ParparVM - VM with non-blocking, concurrent GC for iOS. (GPL-2.0-only WITH Classpath-exception-2.0)
  • RedHat Open JDK - RedHat's OpenJDK distribution. (GPL-2.0-only WITH Classpath-exception-2.0)
  • SAP Machine - SAP's no-cost, rigorously tested and JCK-verified OpenJDK friendly fork. (GPL-2.0-only WITH Classpath-exception-2.0)
  • Zulu - OpenJDK builds for Windows, Linux, and macOS. (GPL-2.0-only WITH Classpath-exception-2.0)

Logging

Libraries that log the behavior of an application.

  • Apache Log4j 2 - Complete rewrite with a powerful plugin and configuration architecture.
  • Echopraxia - API designed around structured logging, rich context, and conditional logging. There are Logback and Log4J2 implementations, but Echopraxia's API is completely dependency-free, meaning it can be implemented with any logging API.
  • Graylog - Open-source aggregator suited for extended role and permission management. (GPL-3.0-only)
  • Kibana - Analyzes and visualizes log files. Some features require payment.
  • Logback - Robust logging library with interesting configuration options via Groovy.
  • Logbook - Extensible, open-source library for HTTP request and response logging.
  • Logstash - Tool for managing log files.
  • p6spy - Enables logging for all JDBC transactions without changes to the code.
  • SLF4J - Abstraction layer/simple logging facade.
  • tinylog - Lightweight logging framework with static logger class.
  • OpenTracing Toolbox - Collection of libraries that build on top of OpenTracing and provide extensions and plugins to existing instrumentations.

Machine Learning

Tools that provide specific statistical algorithms for learning from data.

  • Apache Flink - Fast, reliable, large-scale data processing engine.
  • Apache Mahout - Scalable algorithms focused on collaborative filtering, clustering and classification.
  • DatumBox - Provides several algorithms and pre-trained models for natural language processing.
  • Deeplearning4j - Distributed and multi-threaded deep learning library.
  • DJL - High-level and engine-agnostic framework for deep learning.
  • H2O c - Analytics engine for statistics over big data.
  • JSAT - Algorithms for pre-processing, classification, regression, and clustering with support for multi-threaded execution. (GPL-3.0-only)
  • m2cgen - CLI tool to transpile models into native code.
  • oj! Algorithms - High-performance mathematics, linear algebra and optimisation needed for data science, machine learning and scientific computing.
  • Oryx 2 - Framework for building real-time, large-scale machine learning applications. Includes end-to-end applications for collaborative filtering, classification, regression, and clustering.
  • Siddhi - Cloud native streaming and complex event processing engine.
  • Smile - Statistical Machine Intelligence and Learning Engine provides a set of machine learning algorithms and a visualization library.
  • Tribuo - Provides tools for classification, regression, clustering, model development and interfaces with other libraries such as scikit-learn, pytorch and TensorFlow.
  • Weka - Collection of algorithms for data mining tasks ranging from pre-processing to visualization. (GPL-3.0-only)

Messaging

Tools that help send messages between clients to ensure protocol independency.

  • Aeron - Efficient, reliable, unicast and multicast message transport.
  • Apache ActiveMQ - Message broker that implements JMS and converts synchronous to asynchronous communication.
  • Apache Camel - Glues together different transport APIs via Enterprise Integration Patterns.
  • Apache Kafka - High-throughput distributed messaging system.
  • Apache Pulsar - Distributed pub/sub-messaging system.
  • Apache RocketMQ - Fast, reliable, and scalable distributed messaging platform.
  • Apache Qpid - Apache Qpid makes messaging tools that speak AMQP and support many languages and platforms.
  • EventBus - Simple publish/subscribe event bus.
  • Hermes - Fast and reliable message broker built on top of Kafka.
  • JeroMQ - Implementation of ZeroMQ.
  • Nakadi - Provides a RESTful API on top of Kafka.
  • RabbitMQ Java client - RabbitMQ client.
  • Smack - Cross-platform XMPP client library.
  • NATS client - NATS client.

Microservice

Tools for creating and managing microservices.

  • ActiveRPC - Lightweight and fast library for complex high-load distributed applications and Memcached-like solutions.
  • Apollo - Libraries for writing composable microservices.
  • Armeria - Asynchronous RPC/REST client/server library built on top of Java 8, Netty, HTTP/2, Thrift and gRPC.
  • consul-api - Client for the Consul API: a distributed, highly available and datacenter-aware registry/discovery service.
  • Eureka - REST-based service registry for resilient load balancing and failover.
  • Helidon - Two-style approach for writing microservices: Functional-reactive and as an implementation of MicroProfile.
  • Micronaut - Modern full-stack framework with focus on modularity, minimal memory footprint and startup time.
  • Nacos - Dynamic service discovery, configuration and service management platform for building cloud native applications.
  • Quarkus - Kubernetes stack tailored for the HotSpot and Graal VM.
  • Sentinel - Flow control component enabling reliability, resilience and monitoring for microservices.

Miscellaneous

Everything else.

  • CQEngine - Ultra-fast, SQL-like queries on Java collections.
  • Design Patterns - Implementation and explanation of the most common design patterns.
  • FF4J - Feature Flags for Java.
  • FizzBuzz Enterprise Edition - No-nonsense implementation of FizzBuzz made by serious businessmen for serious business purposes. (No explicit license)
  • J2ObjC - Java-to-Objective-C translator for porting Android libraries to iOS.
  • JBake - Static website generator.
  • JBot - Framework for building chatbots. (GPL-3.0-only)
  • JCuda - JCuda offers Java bindings for CUDA and CUDA-related libraries.
  • Jimfs - In-memory file system.
  • JObfuscatorc - Source code obfuscator.
  • Joda-Money - Basic currency and money classes and algorithms not provided by the JDK.
  • JPad - Snippet runner.
  • jsweet - Source transpiler to TypeScript/JavaScript.
  • Maven Wrapper - Analogue of Gradle Wrapper for Maven, allows building projects without installing maven.
  • Membrane Service Proxy - Open-source, reverse-proxy framework.
  • MinimalFTP - Lightweight, small and customizable FTP server.
  • Modern Java - A Guide to Java 8 - Popular Java 8 guide.
  • Modernizer - Detect uses of legacy Java APIs.
  • OctoLinker - Browser extension which allows to navigate through code on GitHub more efficiently.
  • OpenRefine - Tool for working with messy data: cleaning, transforming, extending it with web services and linking it to databases.
  • PipelinR - Small utility library for using handlers and commands with pipelines.
  • Polyglot for Maven - Extensions for Maven 3.3.1+ that allows writing the POM model in dialects other than XML.
  • RR4J - RR4J is a tool that records java bytecode execution and later allows developers to replay locally.
  • Simple Java Mail - Mailing with a clean and fluent API.
  • Smooks - Framework for fragment-based message processing. (Apache-2.0 OR LGPL-3.0-or-later)
  • Togglz - Implementation of the Feature Toggles pattern.
  • TypeTools - Tools for resolving generic types.
  • XMLBeam - Processes XML by using annotations or XPath within code.
  • yGuard - Obfuscation via renaming and shrinking.

Mobile Development

Tools for creating or managing mobile applications.

  • Codename One - Cross-platform solution for writing native mobile apps. (GPL-2.0-only WITH Classpath-exception-2.0)
  • MobileUI - Cross-platform framework for developing mobile apps with native UI in Java and Kotlin.
  • Multi-OS Engine - Open-source, cross-platform engine to develop native mobile (iOS, Android, etc.) apps.

Monitoring

Tools that monitor applications in production.

  • Automon - Combines the power of AOP with monitoring and/or logging tools.
  • Failsafe Actuator - Out of the box monitoring of Failsafe Circuit Breaker in Spring-Boot environment.
  • Glowroot - Open-source Java APM.
  • inspectIT - Captures detailed run-time information via hooks that can be changed on the fly. It supports tracing over multiple systems via the OpenTracing API and can correlate the data with end user monitoring.
  • Instrumental c - Real-time Java application performance monitoring. A commercial service with free development accounts.
  • JavaMelody - Performance monitoring and profiling.
  • Jaeger client - Jaeger client.
  • jmxtrans - Connect to multiple JVMs and query them for their attributes via JMX. Its query language is based on JSON, which allows non-Java programmers to access the JVM attributes. Supports different output writes, including Graphite, Ganglia, and StatsD.
  • Jolokia - JMX over REST.
  • Metrics - Expose metrics via JMX or HTTP and send them to a database.
  • Datadog c - Modern monitoring & analytics.
  • nudge4j - Remote developer console from the browser for Java 8 via bytecode injection.
  • Pinpoint - Open-source APM tool.
  • Prometheus - Provides a multi-dimensional data model, DSL, autonomous server nodes and much more.
  • Sentry c - Integration with Sentry, an application error tracking and performance analysis platform.
  • SPM c - Performance monitor with distributing transaction tracing for JVM apps.
  • Stagemonitor - Open-source performance monitoring and transaction tracing for JVM apps.
  • Sysmon - Lightweight platform monitoring tool for Java VMs.
  • zipkin - Distributed tracing system which gathers timing data needed to troubleshoot latency problems in microservice architectures.

Native

For working with platform-specific native libraries.

  • Aparapi - Converts bytecode to OpenCL which allows execution on GPUs.
  • JavaCPP - Provides efficient and easy access to native C++.
  • JNA - Work with native libraries without writing JNI. Also provides interfaces to common system libraries.
  • JNR - Work with native libraries without writing JNI. Also provides interfaces to common system libraries. Same goals as JNA, but faster, and serves as the basis for the upcoming Project Panama.

Natural Language Processing

Libraries that specialize in processing text.

  • CogCompNLP - Provides common annotators for plain text input. (Research and Academic Use License)
  • CoreNLP - Provides a set of fundamental tools for tasks like tagging, named entity recognition, and sentiment analysis. (GPL-3.0-or-later)
  • DKPro - Collection of reusable NLP tools for linguistic pre-processing, machine learning, lexical resources, etc.
  • LingPipe - Toolkit for tasks ranging from POS tagging to sentiment analysis.

Networking

Libraries for building network servers.

  • Commons-networking - Client for server-sent events (SSE).
  • Comsat - Integrates standard Java web-related APIs with Quasar fibers and actors.
  • Dubbo - High-performance RPC framework.
  • Grizzly - NIO framework. Used as a network layer in Glassfish.
  • gRPC - RPC framework based on protobuf and HTTP/2.
  • KryoNet - Provides a clean and simple API for efficient TCP and UDP client/server network communication using NIO and Kryo.
  • MINA - Abstract, event-driven async I/O API for network operations over TCP/IP and UDP/IP via Java NIO.
  • Netty - Framework for building high-performance network applications.
  • Drift - Easy-to-use, annotation-based library for creating Thrift clients and serializable types.
  • ServiceTalk - Framework built on Netty with APIs tailored to specific protocols and support for multiple programming paradigms.
  • sshj - Programmatically use SSH, SCP or SFTP.
  • TLS Channel - Implements a ByteChannel interface over SSLEngine, enabling easy-to-use (socket-like) TLS.
  • Undertow - Web server providing both blocking and non-blocking APIs based on NIO. Used as a network layer in WildFly. (LGPL-2.1-only)
  • urnlib - Represent, parse and encode URNs, as in RFC 2141. (GPL-3.0-only)

ORM

APIs that handle the persistence of objects.

  • Apache Cayenne - Provides a clean, static API for data access. Also includes a GUI Modeler for working with database mappings, and DB reverse engineering and generation.
  • Doma - Database access framework that verifies and generates source code at compile time using annotation processing as well as native SQL templates called two-way SQL.
  • Ebean - Provides simple and fast data access.
  • EclipseLink - Supports a number of persistence standards: JPA, JAXB, JCA and SDO.
  • Hibernate - Robust and widely used, with an active community. (LGPL-2.1-only)
  • MyBatis - Couples objects with stored procedures or SQL statements.
  • ObjectiveSql - ActiveRecord ORM for rapid development and convention over configuration.
  • Permazen - Language-natural persistence layer.
  • SimpleFlatMapper - Simple database and CSV mapper.

PaaS

Java platform as a service.

PDF

Tools to help with PDF files.

  • Apache FOP - Creates PDFs from XSL-FO.
  • Apache PDFBox - Toolbox for creating and manipulating PDFs.
  • Dynamic Jasper - Abstraction layer to JasperReports. (LGPL-3.0-only)
  • DynamicReports - Simplifies JasperReports. (LGPL-3.0-only)
  • Eclipse BIRT - Report engine for creating PDF and other formats (DOCX, XLSX, HTML, etc) using Eclipse-based visual editor.
  • flyingsaucer - XML/XHTML and CSS 2.1 renderer. (LGPL-2.1-or-later)
  • iText c - Creates PDF files programmatically.
  • JasperReports - Complex reporting engine. (LGPL-3.0-only)
  • Open HTML to PDF - Properly supports modern PDF standards based on flyingsaucer and Apache PDFBox.
  • OpenPDF - Open-source iText fork. (LGPL-3.0-only & MPL-2.0)
  • Tabula - Extracts tables from PDF files.

Performance analysis

Tools for performance analysis, profiling and benchmarking.

  • fastThread c - Analyze and visualize thread dumps with a free cloud-based upload interface.
  • GCeasy c - Tool to analyze and visualize GC logs. It provides a free cloud-based upload interface.
  • honest-profiler - Low-overhead, bias-free sampling profiler.
  • jHiccup - Logs and records platform JVM stalls.
  • JITWatch - Analyze the JIT compiler optimisations made by the HotSpot JVM.
  • JMH - Harness for building, running, and analysing nano/micro/milli/macro benchmarks written in Java and other languages targeting the JVM. (GPL-2.0 only WITH Classpath-exception-2.0)
  • LatencyUtils - Utilities for latency measurement and reporting.

Platform

Frameworks that are suites of multiple libraries encompassing several categories.

Apache Commons

  • BCEL - Byte Code Engineering Library - analyze, create, and manipulate Java class files.
  • BeanUtils - Easy-to-use wrappers around the Java reflection and introspection APIs.
  • BeanUtils2 - Redesign of Commons BeanUtils.
  • BSF - Bean Scripting Framework - interface to scripting languages, including JSR-223.
  • Chain - Chain of Responsibility pattern implementation.
  • ClassScan - Find Class interfaces, methods, fields, and annotations without loading.
  • CLI - Command-line arguments parser.
  • CLI2 - Redesign of Commons CLI.
  • Codec - General encoding/decoding algorithms, e.g. phonetic, base64 or URL.
  • Collections - Extends or augments the Java Collections Framework.
  • Compress - Defines an API for working with tar, zip and bzip2 files.
  • Configuration - Reading of configuration/preferences files in various formats.
  • Convert - Commons-Convert aims to provide a single library dedicated to the task of converting an object of one type to another.
  • CSV - Component for reading and writing comma separated value files.
  • Daemon - Alternative invocation mechanism for unix-daemon-like java code.
  • DBCP - Database connection pooling services.
  • DbUtils - JDBC helper library.
  • Digester - XML-to-Java-object mapping utility.
  • Email - Library for sending e-mail from Java.
  • Exec - API for dealing with external process execution and environment management in Java.
  • FileUpload - File upload capability for your servlets and web applications.
  • Finder - Java library inspired by the UNIX find command.
  • Flatfile - Java library for working with flat data structures.
  • Functor - Function that can be manipulated as an object, or an object representing a single, generic function.
  • Graph - General purpose graph APIs and algorithms.
  • I18n - Adds the feature of localized message bundles that consist of one or many localized texts that belong together.
  • Id - Id is a component used to generate identifiers.
  • Imaging - Image library.
  • IO - Collection of I/O utilities.
  • Javaflow - Continuation implementation to capture the state of the application.
  • JCI - Java Compiler Interface.
  • JCS - Java Caching System.
  • Jelly - XML based scripting and processing engine.
  • Jexl - Expression language which extends the Expression Language of the JSTL.
  • JNet - JNet allows to use dynamically register url stream handlers through the java.net API.
  • JXPath - Utilities for manipulating Java Beans using the XPath syntax.
  • Lang - Provides extra functionality for classes in java.lang.
  • Logging - Wrapper around a variety of logging API implementations.
  • Math - Lightweight, self-contained mathematics and statistics components.
  • Monitoring - Monitoring aims to provide a simple but extensible monitoring solution for Java applications.
  • Nabla - Nabla provides automatic differentiation classes that can generate derivative of any function implemented in the Java language.
  • Net - Collection of network utilities and protocol implementations.
  • OGNL - Object-graph navigation language.
  • OpenPGP - Interface to signing and verifying data using OpenPGP.
  • Performance - Small framework for microbenchmark clients, with implementations for Commons DBCP and Pool.
  • Pipeline - Provides a set of pipeline utilities designed around work queues that run in parallel to sequentially process data objects.
  • Pool - Generic object pooling component.
  • Proxy - Library for creating dynamic proxies.
  • RDF - Common implementation of RDF 1.1 that could be implemented by systems on the JVM.
  • RNG - Commons Rng provides implementations of pseudo-random numbers generators.
  • SCXML - Implementation of the State Chart XML specification aimed at creating and maintaining a Java SCXML engine.
  • Validator - Framework to define validators and validation rules in an xml file.
  • VFS - Virtual File System component for treating files, FTP, SMB, ZIP and such like as a single logical file system.
  • Weaver - Provides an easy way to enhance (weave) compiled bytecode.

Other

  • CUBA Platform - High-level framework for developing enterprise applications with a rich web interface, based on Spring, EclipseLink and Vaadin.
  • Light-4J - Fast, lightweight and productive microservices framework with built-in security.
  • Orienteer - Open-source business application platform for rapid configuration/development of CRM, ERP, LMS and other applications.
  • Spring - Provides many packages for dependency injection, aspect-oriented programming, security, etc.

Processes

Libraries that help the management of operating system processes.

  • ch.vorburger.exec - Convenient API around Apache Commons Exec.
  • zt-exec - Provides a unified API to Apache Commons Exec and ProcessBuilder.
  • zt-process-killer - Stops processes started from Java or the system processes via PID.

Reactive libraries

Libraries for developing reactive applications.

  • Akka - Toolkit and runtime for building concurrent, distributed, fault-tolerant and event-driven applications.
  • Reactive Streams - Provides a standard for asynchronous stream processing with non-blocking backpressure.
  • Reactor - Library for building reactive fast-data applications.
  • RxJava - Allows for composing asynchronous and event-based programs using observable sequences.
  • vert.x - Polyglot event-driven application framework.

REST Frameworks

Frameworks specifically for creating RESTful services.

  • Dropwizard - Opinionated framework for setting up modern web applications with Jetty, Jackson, Jersey and Metrics.
  • Elide - Opinionated framework for JSON- or GraphQL-APIs based on a JPA data model.
  • Jersey - JAX-RS reference implementation.
  • Microserver - Convenient, extensible microservices plugin system for Spring & Spring Boot. With more than 30 plugins and growing, it supports both micro-monolith and pure microservices styles.
  • Rapidoid - Simple, secure and extremely fast framework consisting of an embedded HTTP server, GUI components and dependency injection.
  • rest.li - Framework for building robust, scalable RESTful architectures using typesafe bindings and asynchronous, non-blocking IO with an end-to-end developer workflow that promotes clean practices, uniform interface design and consistent data modeling.
  • RESTEasy - Fully certified and portable implementation of the JAX-RS specification.
  • RestExpress - Thin wrapper on the JBoss Netty HTTP stack that provides scaling and performance.
  • Restlet Framework - Pioneering framework with powerful routing and filtering capabilities, and a unified client and server API.
  • Spark - Sinatra inspired framework.
  • Crnk - Implementation of the JSON API specification to build resource-oriented REST endpoints with sorting, filtering, paging, linking, object graphs, type-safety, bulk updates, integrations and more.
  • springdoc-openapi - Automates the generation of API documentation using Spring Boot projects.
  • Swagger - Standard, language-agnostic interface to REST APIs.

Science

Libraries for scientific computing, analysis and visualization.

  • BioJava - Facilitates processing biological data by providing algorithms, file format parsers, sequencing and 3D visualization commonly used in bioinformatics.
  • Chart-FX - Scientific charting library with focus on performance optimised real-time data visualisation at 25 Hz update rates for large data sets.
  • DataMelt - Environment for scientific computation, data analysis and data visualization. (GPL-3.0-or-later)
  • Erdos - Modular, light and easy graph framework for theoretic algorithms.
  • GraphStream - Library for modeling and analyzing dynamic graphs.
  • JFreeChart - 2D chart library for Swing, JavaFX and server-side applications. (LGPL-2.1-only)
  • JGraphT - Graph library that provides mathematical graph-theory objects and algorithms.
  • JGraphX - Library for visualizing (mainly Swing) and interacting with node-edge graphs.
  • LogicNG - Library for creating, manipulating and solving Boolean and Pseudo-Boolean formulas.
  • Mines Java Toolkit - Library for geophysical scientific computation, visualization and digital signal analysis.
  • Morpheus - Provides a versatile two-dimensional memory efficient tabular data structure called a DataFrame to enable efficient in-memory analytics for scientific computing on the JVM.
  • Orson-Charts - Generates a wide variety of 3D charts that can be displayed with Swing and JavaFX or exported to PDF, SVG, PNG and JPEG. (GPL-3.0-only)
  • Tablesaw - Includes a data-frame, an embedded column store, and hundreds of methods to transform, summarize, or filter data.
  • XChart - Light-weight library for plotting data. Many customizable chart types are available.

Engines that index documents for search and analysis.

  • Apache Lucene - High-performance, full-featured, cross-platform, text search engine library.
  • Apache Solr - Enterprise search engine optimized for high-volume traffic.
  • Elasticsearch - Distributed, multitenant-capable, full-text search engine with a RESTful web interface and schema-free JSON documents.
  • Indexer4j - Simple and light full text indexing and searching library.

Security

Libraries that handle security, authentication, authorization or session management.

  • Apache Shiro - Performs authentication, authorization, cryptography and session management.
  • Bouncy Castle - All-purpose cryptographic library and JCA provider offering a wide range of functions, from basic helpers to PGP/SMIME operations.
  • Cryptomator - Multiplatform, transparent, client-side encryption of files in the cloud. (GPL-3.0-only)
  • Hdiv - Runtime application that repels application security risks included in the OWASP Top 10, including SQL injection, cross-site scripting, cross-site request forgery, data tampering, and brute force attacks.
  • jjwt - JSON web token for Java and Android.
  • jwt-java - Easily create and parse JSON Web Tokens and create customized JWT validators using a fluent API.
  • Jwks RSA - JSON Web Key Set parser.
  • Kalium - Binding for the Networking and Cryptography (NaCl) library.
  • Keycloak - Integrated SSO and IDM for browser apps and RESTful web services.
  • Keywhiz - System for distributing and managing secrets.
  • Nbvcxz - Advanced password strength estimation.
  • OACC - Provides permission-based authorization services.
  • OTP-Java - One-time password generator library according to RFC 4226 (HOTP) and RFC 6238 (TOTP).
  • pac4j - Security engine.
  • Password4j - User-friendly cryptographic library that supports Argon2, Bcrypt, Scrypt, PBKDF2 and various other cryptographic hash functions.
  • SecurityBuilder - Fluent Builder API for JCA and JSSE classes and especially X.509 certificates.
  • SSLContext-Kickstart - High-level SSL context builder for configuring HTTP clients with SSL/TLS.
  • Themis - Multi-platform high-level cryptographic library provides easy-to-use encryption for protecting sensitive data: secure messaging with forward secrecy, secure data storage (AES256GCM); suits for building end-to-end encrypted applications.
  • Tink - Provides a simple and misuse-proof API for common cryptographic tasks.

Serialization

Libraries that handle serialization with high efficiency.

  • FlatBuffers - Memory-efficient serialization library that can access serialized data without unpacking and parsing it.
  • FST - JDK-compatible, high-performance object graph serialization.
  • Kryo - Fast and efficient object graph serialization framework.
  • MessagePack - Efficient binary serialization format.
  • PHP Serializer - Serializing objects in the PHP serialization format.

Server

Servers specifically used to deploy applications.

  • Apache Tomcat - Robust, all-round server for Servlet and JSP.
  • Apache TomEE - Tomcat plus Java EE.
  • Jetty - Provides a Web server and javax.servlet container, plus support for HTTP/2, WebSocket, OSGi, JMX, JNDI, JAAS and many other integrations.
  • nanohttpd - Tiny, easily embeddable HTTP server.
  • WildFly - Formerly known as JBoss and developed by Red Hat with extensive Java EE support. (LGPL-2.1-only)

Template Engine

Tools that substitute expressions in a template.

  • Freemarker - Library to generate text output (HTML web pages, e-mails, configuration files, source code, etc.) based on templates and changing data.
  • Handlebars.java - Logicless and semantic Mustache templates.
  • Jade4J - Implementation of Pug (formerly known as Jade).
  • Jamal - Extendable template engine embedded into Maven/JavaDoc, supporting multiple extensions (Groovy, Ruby, JavaScript, JShell, PlantUml) with support for snippet handling.
  • jte - Compiles to classes, and uses an easy syntax, several features to make development easier and provides fast execution and a small footprint.
  • Jtwig - Modular, configurable and fully tested template engine.
  • Pebble - Inspired by Twig and separates itself with its inheritance feature and its easy-to-read syntax. It ships with built-in autoescaping for security and it includes integrated support for internationalization.
  • Rocker - Optimized, memory efficient and speedy template engine producing statically typed, plain objects.
  • StringTemplate - Template engine for generating source code, web pages, emails, or any other formatted text output.
  • Thymeleaf - Aims to be a substitute for JSP and works for XML files.

Testing

Tools that test from model to the view.

Asynchronous

Tools that simplify testing asynchronous services.

  • Awaitility - DSL for synchronizing asynchronous operations.
  • ConcurrentUnit - Toolkit for testing multi-threaded and asynchronous applications.
  • GreenMail - In-memory email server for integration testing. Supports SMTP, POP3 and IMAP including SSL. (GPL-2.0-only)
  • Hoverfly Java - Native bindings for Hoverfly, a proxy which allows you to simulate HTTP services.
  • Karate - DSL that combines API test-automation, mocks and performance-testing making testing REST/HTTP services easy.
  • REST Assured - DSL for easy testing of REST/HTTP services.

BDD

Testing for the software development process that emerged from TDD and was heavily influenced by DDD and OOAD.

  • Cucumber - Provides a way to describe features in a plain language which customers can understand.
  • Cukes-REST - Collection of Gherkin steps for REST-service testing using Cucumber.
  • J8Spec - Follows a Jasmine-like syntax.
  • JBehave - Extensively configurable framework that describes stories.
  • JGiven - Provides a fluent API which allows for simpler composition.
  • Lamdba Behave - Aims to provide a fluent API to write tests in long and descriptive sentences that read like plain English.
  • Serenity BDD - Automated Acceptance testing and reporting library that works with Cucumber, JBehave and JUnit to make it easier to write high quality executable specifications.

Fixtures

Everything related to the creation and handling of random data.

Frameworks

Provide environments to run tests for a specific use case.

  • ArchUnit - Test library for specifying and asserting architecture rules.
  • Apache JMeter - Functional testing and performance measurements.
  • Arquillian - Integration and functional testing platform for Java EE containers.
  • Citrus - Integration testing framework that focuses on both client- and server-side messaging.
  • Gatling - Load testing tool designed for ease of use, maintainability and high performance.
  • JUnit - Common testing framework.
  • jqwik - Engine for property-based testing built on JUnit 5.
  • Pact JVM - Consumer-driven contract testing.
  • PIT - Fast mutation-testing framework for evaluating fault-detection abilities of existing JUnit or TestNG test suites.

Matchers

Libraries that provide custom matchers.

  • AssertJ - Fluent assertions that improve readability.
  • Hamcrest - Matchers that can be combined to create flexible expressions of intent.
  • JSONAssert - Simplifies testing JSON strings.
  • Truth - Google's fluent assertion and proposition framework.
  • XMLUnit - Simplifies testing for XML output.

Miscellaneous

Other stuff related to testing.

  • ConsoleCaptor - Captures console output for unit testing purposes.
  • junit-dataprovider - TestNG-like data provider/runner for JUnit.
  • LogCaptor - Captures log entries for unit testing purposes.
  • Mutability Detector - Reports whether instances of a given class are immutable.
  • raml-tester - Tests if a request/response matches a given RAML definition.
  • TestContainers - Provides throwaway instances of common databases, Selenium web browsers, or anything else that can run in a Docker container.
  • pojo-tester - Automatically performs tests on basic POJO methods. (LGPL-3.0-only)

Mocking

Tools which mock collaborators to help testing single, isolated units.

  • JMockit - Integration testing, API mocking and faking, and code coverage.
  • Mockito - Mocking framework that lets you write tests with a clean and simple API.
  • MockServer - Allows mocking of systems integrated with HTTPS.
  • Moco - Concise web services for stubs and mocks.
  • PowerMock - Mocks static methods, constructors, final classes and methods, private methods, and removal of static initializers.
  • WireMock - Stubs and mocks web services.

Utility

Libraries which provide general utility functions.

  • Arthas - Allows to troubleshoot production issues for applications without modifying code or restarting servers.
  • bucket4j - Rate limiting library based on token-bucket algorithm.
  • cactoos - Collection of object-oriented primitives.
  • CRaSH - Provides a shell into a JVM that's running CRaSH. Used by Spring Boot and others. (LGPL-2.1-or-later)
  • Dex - Java/JavaFX tool capable of powerful ETL and data visualization.
  • Embulk - Bulk data loader that helps data transfer between various databases, storages, file formats, and cloud services.
  • fswatch - Micro library to watch for directory file system changes, simplifying java.nio.file.WatchService.
  • Gephi - Cross-platform for visualizing and manipulating large graph networks. (GPL-3.0-only)
  • Guava - Collections, caching, primitives support, concurrency libraries, common annotations, string processing, I/O, and more.
  • JADE - Framework and environment for building and debugging multi-agent systems. (LGPL-2.0-only)
  • Java Diff Utils - Utilities for text or data comparison and patching.
  • JavaVerbalExpressions - Library that helps with constructing difficult regular expressions.
  • JGit - Lightweight, pure Java library implementing the Git version control system.
  • minio-java - Provides simple APIs to access any Amazon S3-compatible object storage server.
  • Protรฉgรฉ - Provides an ontology editor and a framework to build knowledge-based systems.
  • Underscore-java - Port of Underscore.js functions.

Version Managers

Utilities that help create the development shell environment and switch between different Java versions.

  • jabba - Java Version Manager inspired by nvm. Supports macOS, Linux and Windows.
  • jenv - Java Version Manager inspired by rbenv. Can configure globally or per project. Tested on Debian and macOS.
  • SDKMan - Java Version Manager inspired by RVM and rbenv. Supports UNIX-based platforms and Windows.

Web Crawling

Libraries that analyze the content of websites.

  • Apache Nutch - Highly extensible, highly scalable web crawler for production environments.
  • Crawler4j - Simple and lightweight web crawler.
  • jsoup - Scrapes, parses, manipulates and cleans HTML.
  • StormCrawler - SDK for building low-latency and scalable web crawlers.
  • webmagic - Scalable crawler with downloading, url management, content extraction and persistent.

Web Frameworks

Frameworks that handle the communication between the layers of a web application.

  • ActiveJ - Lightweight asynchronous framework built from the ground up for developing high-performance web applications.
  • Apache Tapestry - Component-oriented framework for creating dynamic, robust, highly scalable web applications.
  • Apache Wicket - Component-based web application framework similar to Tapestry, with a stateful GUI.
  • Blade - Lightweight, modular framework that aims to be elegant and simple.
  • Bootique - Minimally opinionated framework for runnable apps.
  • Firefly - Asynchronous framework for rapid development of high-performance web application.
  • Jooby - Scalable, fast and modular micro-framework that offers multiple programming models.
  • Ninja - Full-stack web framework.
  • Pippo - Small, highly modularized, Sinatra-like framework.
  • Play - Built on Akka, it provides predictable and minimal resource consumption (CPU, memory, threads) for highly-scalable applications in Java and Scala.
  • PrimeFaces - JSF framework with both free and commercial/support versions and frontend components.
  • Ratpack - Set of libraries that facilitate fast, efficient, evolvable and well-tested HTTP applications.
  • Takes - Opinionated web framework which is built around the concepts of True Object-Oriented Programming and immutability.
  • Vaadin - Event-driven framework that uses standard web components. Server-side architecture with Ajax on the client side.

Workflow Orchestration Engines

  • Cadence - Stateful code platform from Uber.
  • flowable - Compact and efficient workflow and business process management platform.
  • Temporal - Microservice orchestration platform, forked from Cadence but gRPC based.

Resources

Awesome Lists related to the Java & JVM ecosystem.

Communities

Active discussions.

Frontends

Websites that provide a frontend for this list. Please note, there won't be an official website. We don't associate with a particular website and everybody is allowed to create one.

Influential Books

Books that made a big impact and are still worth reading.

Podcasts and Screencasts

Something to look at or listen to while programming.

People

Twitter

Active accounts to follow. Descriptions from Twitter.

  • Adam Bien - Freelance author, JavaOne Rockstar speaker, consultant, Java Champion.
  • Aleksey Shipilรซv - Performance geek, benchmarking czar, concurrency bug hunter.
  • Antonio Goncalves - Java Champion, JUG Leader, Devoxx France, Java EE 6/7, JCP, Author.
  • Arun Gupta - Java Champion, JavaOne Rockstar, JUG Leader, Devoxx4Kids-er, VP of Developer Advocacy at Couchbase.
  • Brian Goetz - Java Language Architect at Oracle.
  • Bruno Borges - Product Manager/Java Jock at Oracle.
  • Chris Richardson - Software architect, consultant, and serial entrepreneur, Java Champion, JavaOne Rock Star, *POJOs in Action- author.
  • Ed Burns - Consulting Member of the Technical Staff at Oracle.
  • Eugen Paraschiv - Author of the Spring Security Course.
  • Heinz Kabutz - Java Champion, speaker, author of The Java Specialists' Newsletter, concurrency performance expert.
  • Holly Cummins - Technical Lead of IBM London's Bluemix Garage, Java Champion, developer, author, JavaOne rockstar.
  • James Weaver - Java/JavaFX/IoT developer, author and speaker.
  • Java EE - Official Java EE Twitter account.
  • Java Magazine - Official Java Magazine account.
  • Java - Official Java Twitter account.
  • Javin Paul - Well-known Java blogger.
  • Josh Long - Spring Advocate at Pivotal, author of O'Reilly's Cloud Native Java- and Building Microservices with Spring Boot, JavaOne Rock Star.
  • Lukas Eder - Java Champion, speaker, Founder and CEO Data Geekery (jOOQ).
  • Mani Sarkar - Java champion, Polyglot, Software Crafter involved with @graalvm, AI/ML/DL, Data Science, Developer communities, speaker & blogger. Creator of couple of awesome lists like this one.
  • Mario Fusco - RedHatter, JUG coordinator, frequent speaker and author.
  • Mark Heckler - Pivotal Principal Technologist and Developer Advocate, conference speaker, published author, and Java Champion, focusing on Internet of Things and the cloud.
  • Mark Reinhold - Chief Architect, Java Platform Group, Oracle.
  • Markus Eisele - Java EE evangelist, Red Hat.
  • Martijn Verburg - London JUG co-leader, speaker, author, Java Champion and much more.
  • Martin Thompson - Pasty faced performance gangster.
  • Monica Beckwith - Performance consultant, JavaOne Rock Star.
  • OpenJDK - Official OpenJDK account.
  • Peter Lawrey - Peter Lawrey, Java performance expert.
  • Randy Shoup - Stitch Fix VP Engineering, speaker, JavaOne Rock Star.
  • Reza Rahman - Java EE/GlassFish/WebLogic evangelist, author, speaker, open source hacker.
  • Sander Mak - Java Champion, author.
  • Simon Maple - Java Champion, VirtualJUG founder, LJC leader, RebelLabs author.
  • Spencer Gibb - Software Engineer, Dad, Geek, Co-founder and Lead of Spring Cloud Core @pivotal.
  • Stephen Colebourne - Java Champion, speaker.
  • Trisha Gee - Java Champion and speaker.
  • Venkat Subramaniam - Author, University of Houston professor, MicroSoft MVP award recipient, JavaOne Rock Star, Java Champion.
  • Vlad Mihalcea - Java Champion working on Hypersistence Optimizer, database aficionado, author of High-Performance Java Persistence book.

Other

  • Groundbreakers - Oracle ACEs, Groundbreaker Ambassadors and Java Champions.

Websites

Sites to read.

Contributing

Contributions are very welcome!

Please have a look at the CONTRIBUTING guidelines and the validation tools.

Awesome RxJava Awesome

Useful resources for working with RxJava

Inspired by the awesome list thing.

Bindings

  • RxAndroid - Android specific bindings for RxJava.
  • RxBinding - RxJava binding APIs for Android UI widgets from the platform and support libraries.
  • rx-preferences - Reactive SharedPreferences for Android.
  • RxPermissions - Android M runtime permissions powered by RxJava.
  • SQLBrite - A lightweight wrapper around SQLiteOpenHelper and ContentResolver which introduces reactive stream semantics to queries.
  • Android-ReactiveLocation - Small library that wraps Google Play Service API in brilliant RxJava Observables reducing boilerplate to minimum.
  • ReactiveNetwork - Android library listening network connection state and change of the WiFi signal strength with RxJava Observables.
  • ReactiveSensors - Android library monitoring hardware sensors with RxJava Observables.
  • RxPalette - RxJava bindings for the Palette library on Android.
  • rxjava-jdbc - Efficient execution and functional composition of database calls using jdbc and RxJava Observables.
  • rxjava-file - RxJava observables for files including NIO events.
  • RxTuples - Simple tuples to use with RxJava.
  • RxAnimationBinding - RxJava binding APIs for Android's animations.

Utilities

  • RxJavaAsyncUtil - Async utilities for RxJava.
  • RxJavaJoins - Joins operators for RxJava.
  • RxJavaMath - Math operators for RxJava.
  • RxJavaString - String and Byte operators for RxJava.
  • RxJavaComputationExpressions - Computation expressions for RxJava.
  • rxjava-extras - Utilities for use with RxJava.
  • RxActions - Simple ActionN composition to use with RxJava.
  • RxRelay - RxJava types that are both an Observable and an Action1.
  • Frodo - Android Library for Logging RxJava Observables and Subscribers.
  • RxPartialApplication - Simple partial application for FuncN and ActionN on RxJava.
  • RxCurrying - Simple currying for FuncN and ActionN on RxJava.
  • RxEither - Either type for RxJava.
  • RxReplayingShare - An RxJava transformer which combines replay(1), publish(), and refCount() operators.
  • RxFunctions - Advanced Function composition to use with RxJava.
  • rxlint - An Android lint rule for RxJava code.
  • RxComprehensions - Reduce boilerplate in RxJava by abstracting chained flatMaps, concatMaps and switchMaps.

Testing

  • assertj-rx - AssertJ assertions for RxJava Observables.
  • rxpresso - Easy Espresso UI testing for Android applications using RxJava.

Guides

Articles

Tools

  • RxMarbles - Interactive diagrams of Rx Observables.

Community

License

CC0

To the extent possible under law, Jokubas Dargis has waived all copyright and related or neighboring rights to this work.

Awesome Kotlin (https://kotlin.link)

A curated list of awesome Kotlin related stuff inspired by awesome-java. :octocat:

Discuss this project in Kotlin Slack, channel: # awesome-kotlin

List of Awesome List Badge Build Awesome Kotlin Badge

:newspaper: RSS Feed of articles, videos, slides, updates (20 latest articles)

:newspaper: RSS Feed of articles, videos, slides, updates (full archive)

:octocat: Awesome Kotlin - README.md - README with links

Spread Awesome Kotlin!

Here is the awesome badge for your project:

markdown [![Awesome Kotlin Badge](https://kotlin.link/awesome-kotlin.svg)](https://github.com/KotlinBy/awesome-kotlin)

To contribute, check CONTRIBUTING.md.

Awesome OCaml Build Status

Everything you'll ever need on the road to mastering OCaml.

A curated list of references to awesome OCaml tools, frameworks, libraries and articles. Additionally there is a collection of freely available books, papers and presentations.

If you're looking for comprehensive community-driven content about OCaml visit ๐Ÿ“šOCamlverse!

For a quick introduction to the modern OCaml development workflow consult the Up and Running with OCaml tutorial.

Your favorite package is not listed? Fork and create a Pull Request to add it!

Contents


Community

Algorithms and Data Structures

Application Libraries

  • Batteries Included โ€“ A community-maintained foundation library for your OCaml projects.
  • Cmdliner โ€“ Declarative definition of command line interfaces for OCaml.
  • Core โ€“ Jane Street Capital's full-fledged standard library overlay. A portable subset of Core is also available: Core_kernel.
  • Base - Jane Street Capital's dependency-free, quick-compiling, fully-portable across any environment that can run OCaml code standard library.
  • React โ€“ React is an OCaml module for functional reactive programming (FRP). It provides support to program with time varying values: declarative events and signals.
  • Minicli โ€“ Minimalist library for command line parsing.
  • easy-format โ€“ Pretty-printing library for OCaml.
  • ocaml-rpc โ€“ Light library to deal with RPCs in OCaml.
  • ocaml-containers โ€“ A lightweight, modular standard library extension, string library and interfaces to various libraries (bigarrays, unix, etc...). BSD license.

Benchmarking

Blogs

Books

  • More OCaml: Algorithms, Methods, and Diversions โ€“ In More OCaml John Whitington takes a meandering tour of functional programming with OCaml, introducing various language features and describing some classic algorithms. The book ends with a large worked example dealing with the production of PDF files. There are questions for each chapter together with worked answers and hints.
  • How to Think Like a (Functional) Programmer by Allen Downey and Nicholas Monje โ€“ How to Think Like a Computer Scientist is an introductory programming textbook based on the OCaml language. It is a modified version of Think Python by Allen Downey. It is intended for newcomers to programming and also those who know some programming but want to learn programming in the function-oriented paradigm, or those who simply want to learn OCaml.
  • OCaml from the Very Beginning by J. Whitington - OCaml from the Very Beginning will appeal both to new programmers, and experienced programmers eager to explore functional languages such as OCaml.
  • Pearls of Functional Algorithm Design by Richard Bird - It summaries 30 hard algorithm problems in function programming world. Although it is for Haskell, the algorithm problems are very interesting and trying to solve them in OCaml also helps the thinking of functional programming. Partial solutions in OCaml are here.
  • Real World OCaml by Y. Minsky, A. Madhavapeddy and J. Hickey - Functional programming for the masses.
  • Unix System Programming in OCaml by X. Leroy and D. Rรฉmy โ€“ Introduction to Unix system programming, with an emphasis on communications between processes.
  • Using, Understanding, and Unraveling OCaml โ€“ This book describes both the OCaml language and the theoretical grounds behind its powerful type system.
  • Purely Functional Data Structures - This is the first or only book focus on various data structures in FP world. A must-read one.
  • OCaml for Scientists - by Jon Harrop.
  • Functional Programming in OCaml: A Principled Approach - Textbook for CS 3110 Functional Programming in OCaml, Cornell University.

Code Analysis and Linters

  • Mascot - Mascot is a style-checker for OCaml sources
  • pfff โ€“ pfff is a set of tools and APIs to perform some static analysis, dynamic analysis, code visualizations, code navigations, or style-preserving source-to-source transformations such as refactorings on source code.
  • Infer - Infer is a static analyzer for Java, C and Objective-C
  • Frama-C - Frama-C is a static analysis and formal proof framework for C and C++
  • flow - flow is a static type checker for JavaScript
  • SLAyer - SLAyer is an automatic formal verification tool that uses separation logic to verify memory safety of C programs.
  • MemCAD - MemCAD is an abstract interpreter for shape analysis. MemCAD can verify C programs manipulating complex data structures.
  • Camelot - Camelot is a modular and fully configurable OCaml linter and stylechecker.

Program analysis

  • BAP - BAP is a reverse engineering and program analysis platform that targets binary programs.
  • BinCat - BinCat is a binary code static analysis toolkit.
  • cwe_checker - cwe_checker finds vulnerable patterns in binary executables.

Compilers and Compiler Tools

Concurrency

Two concurrency libraries exist in OCaml: Lwt and Async. They provide very similar functionality but make radically different decisions with regards to error handling and internal implementation details (see the links below for more details). Real World OCaml uses Async but a version of the code examples translated to Lwt is also available.

There is also an ongoing experimental project to make OCaml multiprocessor and multicore aware at OCaml multicore fork.

Databases

  • Bindings
  • Dbm โ€” A binding to the NDBM/GDBM Unix "databases".
  • Mongo.ml โ€“ An OCaml driver for Mongodb
  • PG'OCaml โ€” A type-safe interface to PostgreSQL in pure OCaml.
    • ppx_pgsql โ€“ A syntax extension for embedded SQL queries using PG'OCaml.
  • PostgreSQL-OCaml โ€” An interface to PostgreSQL through the C API (libpq).
  • SQLite3 โ€” OCaml bindings to the SQLite3 database.
  • Sqlite3EZ โ€” Thin wrapper for SQLite3 with a simplified interface.
  • ocaml-redis โ€“ Redis bindings for OCaml.
  • mysql โ€“ Bindings to libmysqlclient for interacting with MySQL databases.
  • pgx โ€“ A pure OCaml PostgreSQL client library .
  • mysql_protocol โ€“ Implementation of MySQL Protocol with the Bitstring library.
  • New Implementations
  • Irmin โ€” A distributed database that follows the same design principles as Git.
  • Obigstore โ€” A database with BigTable-like data model atop LevelDB.
  • RunOrg - It is a WIP database server written in OCaml.
  • dokeysto - dumb OCaml key-value store, string keys and string values. Optional on-the-fly LZ4 compression of values or tokyocabinet backend.

  • Overlays

  • Sequoia - Sequoia is a type-safe query builder for MySQL/MariaDB and PostgreSQL
  • Macaque โ€” Macaque is a library for safe and flexible database queries using comprehensions on top of PG'OCaml.
  • ORM โ€” ORM for SQLite.
  • Caqti - Cooperative-threaded access to relational data
  • Articles:
  • Implementing the Binary Memcached Protocol with Ocaml and Bitstring
  • Interfacing OCaml and PostgreSQL with Caqti

Datetime

Developer Tools

  • Try OCaml โ€“ Try OCaml in your web browser.
  • BetterOCaml โ€“ An efficient, intuitive and cross-platform web IDE with your OCaml code interpreted and running in your browser!
  • codingground โ€“ Compile and execute OCaml code online.
  • OCaml: Learn & Code iOS app - Learn and execute OCaml code from your iPhone/iPad/Mac.
  • Jupyter โ€“ An OCaml kernel for the Jupyter notebook.
  • utop โ€“ Universal toplevel for OCaml with support of multiline edition, history, real-time and context sensitive completion, colors, and more.
  • ocamlformat - A command-line tool to format OCaml code.
  • ocamlbrowser โ€“ A source and compiled interface browser, written using LablTk. Included in the standard distribution for ocaml <= 4.01 and with labltk for ocaml >= 4.02.
  • ghim โ€“ A command-line tool to manage Github Issues.
  • OCaml Yeoman Generator โ€“ Yeoman generator to scaffold OCaml modules.

  • Foreign Function Interface:

  • ctypes โ€“ Library for binding to C libraries using pure OCaml.
  • ocaml-main-program-in-c โ€“ Example build system for making mixed C/Ocaml binaries where the main program is in C.
  • Modular foreign function bindings
  • Py.ml - OCaml bindings for Python.
  • Editor Integration:
  • ocaml-lsp - An LSP language server for OCaml that integrates with any editor that understands LSP like VSCode, Vim and Emacs.
  • merlin โ€“ Context sensitive completion for Ocaml in Vim and Emacs.
  • tuareg - OCaml mode for Emacs that can run the toplevel and the debugger within Emacs.
  • merlin-eldoc โ€“ Emacs package to provide merlin's features through eldoc.
  • vscode-ocaml โ€“ extension that provides OCaml language support for VSCode
  • OCaml Debugger โ€“ extension that provides OCaml Debugger for VSCode
  • Sublime better ocaml โ€“ Better OCaml mode for Sublime Text.
  • ocp-index โ€“ Easy access to the interface information of installed OCaml libraries. Provides standalone tools like ocp-browser and ocp-grep.
  • ocp-indent โ€“ Indentation tool for OCaml, to be used from editors like Emacs and Vim.
  • Code coverage:
  • Bisect_ppx

Exercises and Short Examples

Formal Software Verification

  • Coq โ€“ Coq is a formal proof management system. It provides a formal language to write mathematical definitions, executable algorithms and theorems together with an environment for semi-interactive development of machine-checked proofs.
  • Why3 โ€“ Why3 is a platform for deductive program verification. It provides a rich language for specification and programming, called WhyML, and relies on external theorem provers, both automated and interactive, to discharge verification conditions.
  • Alt-Ergo โ€“ Alt-Ergo is an open-source SMT solver dedicated to the proof of mathematical formulas generated in the context of program verification.

General

Graphics

  • 2D
  • archimedes โ€” 2D plotting library.
  • cairo2 โ€” Binding to Cairo, a 2D Vector Graphics Library. Integrates well with lablgtk.
  • Vg โ€“ Declarative 2D vector graphics for OCaml.
  • 3D
  • glMLite โ€” OpenGL bindings for OCaml. Provides an (experimental) functional API. (homepage)
  • lablgl โ€” Interface to OpenGL. Integrates well with lablgtk.
  • tgls โ€” Thin bindings OpenGL 3.{2,3},4.{0,1,2,3,4} and OpenGL ES {2,3}.

Internationalization

  • Camomile โ€” A Unicode library for OCaml.
  • ocaml-m17n โ€” Multilingualization for OCaml source code. Allows using Unicode identifiers in OCaml source code.
  • Uucd โ€” Unicode character database decoder for OCaml.
  • Uucp โ€” Unicode character properties for OCaml.
  • Uunf โ€” Unicode text normalization for OCaml.
  • Uuseg โ€” Unicode text segmentation for OCaml.
  • Uutf โ€” Non-blocking streaming Unicode codec for OCaml.

User Interface

  • lablgtk โ€” GTK2 and GTK3 bindings for OCaml with various higher-level facilities to define GUIs.
  • lablqml โ€“ QML Qt5 bindings for OCaml.
  • labltk โ€” Interface to the Tcl/Tk GUI framework. In the standard distribution for ocaml <= 4.01.
  • TSDL โ€“ Tsdl is an OCaml module providing thin bindings to the cross-platform SDL library.
  • Lambda-Term โ€“ Lambda-Term is a cross-platform library for manipulating the terminal. It provides an abstraction for keys, mouse events, colors, as well as a set of widgets to write curses-like applications.
  • Notty - Notty is a declarative terminal library for OCaml, structured around a notion of composable images.
  • ocaml-linenoise - Self-contained OCaml bindings to linenoise, easy high level readline functionality in OCaml.

Large Source Code Examples

  • Base - Standard library for OCaml
  • cil - C Intermediate Language
  • coq - formal proof management system
  • Dark - a combined language, editor, and infrastructure to make it easy to build backends
  • frama-c - platform dedicated to the analysis of source code written in C
  • libguestfs - library and tools for accessing and modifying virtual machine disk images
  • Liquidsoap - a swiss-army knife for multimedia streaming, notably used for netradios and webtvs
  • mirage - library operating system that constructs unikernels for secure, high-performance network applications across a variety of cloud computing and mobile platforms
  • MLDonkey - cross-platform multi-network peer-to-peer daemon
  • Oni2 - Native, lightweight modal code editor
  • pfff - an OCaml API to write static analysis, dynamic analysis, code visualizations, code navigations, or style-preserving source-to-source transformations such as refactorings on source code.
  • WHY3 - platform for deductive program verification
  • xen-api - management stack that configures and controls Xen-enabled hosts and resource pools, and co-ordinates resources within the pool

Logging

  • dolog โ€“ A dumb OCaml logger.
  • Volt โ€“ A variant of Bolt OCaml logging tool.
  • Logs - Logs provides a logging infrastructure for OCaml.

Machine Learning

Messaging

  • ocaml-zmq โ€“ ZeroMQ bindings for OCaml with Async and Lwt wrappers.
  • onanomsg โ€“ nanomsg bindings for OCaml.
  • Kafka โ€“ OCaml bindings for Apache Kafka.
  • AMQP โ€“ AMQP client library for Async and Lwt.
  • MPI โ€“ Message Passing Interface bindings for OCaml.
  • MQTT โ€“ OCaml implementation of the MQTT pubsub protocol.
  • capnp-ocaml โ€“ OCaml code generator plugin for the Cap'n Proto serialization framework.

Metaprogramming

Metrics

  • prometheus โ€“ OCaml client library for Prometheus monitoring.

Mobile Applications

Networking

  • HTTP Tools:
  • ocaml-cohttp โ€“ Very lightweight HTTP server using Lwt or Async.
  • ocurl โ€“ OCaml bindings to libcurl.
  • httpaf โ€“ A high performance, memory efficient, and scalable web server written in OCaml.
  • piaf - Client/server library for HTTP/1.X / HTTP/2 written entirely in OCaml.
  • ocaml-dns โ€“ A pure OCaml implementation of the DNS protocol.
  • fluent-logger โ€“ Fluentd logger for OCaml.
  • charrua-unix - charrua-unix is a Unix DHCP daemon based on charrua-core.

Online Courses

Package Management

  • Distribution:
  • OPAM โ€“ A flexible Git-friendly package manager with multiple compiler support.
  • ocamlfind โ€” Local OCaml library manager. Used by most of the OCaml ecosystem.
  • OCaml for Windows - opam repository and experimental build for Windows.
  • makorel โ€“ Release OPAM packages easily.
  • esy - package.json workflow for native development with Reason/OCaml.

  • Build Tools:

  • dune โ€“ A composable and opinionated build system for OCaml (former jbuilder)
  • Oasis - A tool to integrate a configure, build and install system in your OCaml project. It helps to create standard entry points in your build system and allows external tools to analyse your project easily.
    • oasis2opam โ€” Tool to convert OASIS metadata to OPAM package descriptions.
  • obuild โ€“ Simple package build system for ocaml.
  • ocaml-makefile โ€” Easy to use Makefile for small to medium-sized OCaml-projects.
  • topkg โ€” OPAM-aware packaging system using ocamlbuild.
  • Bazel - OCaml rules for Bazel, Google's multi-language and platform build tool.

Parallelism

(Note: Sorted from the easier to use to the more flexible.)

  • Libraries:
  • Parmap โ€” Provides easy-to-use parallel map and fold functions.
  • ForkWork โ€” A simple library for forking child processes to perform work on multiple cores.
  • Functory โ€” A distributed computing library which facilitates distributed execution of parallelizable computations in a seamless fashion.
  • Rpc.Parallel โ€” A library for spawning processes on a cluster of machines, and passing typed messages between them.
  • Ocamlnet โ€” An enhanced system platform library. Contains the netmulticore library to compute tasks on as many cores of the machine as needed.
  • Nproc โ€“ Process pool implementation for OCaml.
  • Parany โ€“ Parallelize computation over independent items, even if there is an infinite number of them.
  • Sklml โ€“ Functional parallel skeleton compiler and programming system for OCaml programs.
  • SPOC - Libraries and syntax extensions to offload intensive computations to parallel accelerators (multicore CPUs, GPUs and other accelerators compatible with GPGPU frameworks).

  • Articles:

  • What is the state of OCaml's parallelization abilities?

Project Starter Templates

  • drom - The drom tool is a wrapper over opam/dune in an attempt to provide a cargo-like user experience.
  • spin - Reason and Ocaml project generator
  • modern-ocaml - Template for an ocaml project with modern tooling

Questions

Science and Technical Computing

  • biocaml โ€“ OCaml Bioinformatics Library http://biocaml.org.
  • bistro โ€“ OCaml library for building bioinformatics pipelines.
  • lacaml - OCaml bindings for BLAS/LAPACK (high-performance linear algebra Fortran libraries).
  • obandit - OCaml library for multi-armed bandits.
  • onumerical โ€“ Numerical library for OCaml.
  • oml - OCaml library for general numerical work.
  • ocephes - Bindings to frequently used C special functions library.
  • slap - A linear algebra library in OCaml with type-based static size checking for matrix operations.
  • tensorflow-ocaml โ€“ OCaml bindings for TensorFlow.
  • owl - OCaml numerical library: dense and sparse matrix, linear algebra, regressions, maths and stats functions.

Regular Expressions

  • Re โ€“ a pure OCaml regular expressions library with combinators, supporting several formats (glob, posix, str...)
  • ocaml-pcre โ€“ bindings to the PCRE library (perl-compatible regular expressions)
  • Humane-re โ€“ Humane-re attempts to provide an easy interface for 90% of your regex needs Courtesy of ocaml-re
  • Tyre - Tyre is a set of combinators to build type-safe regular expressions, allowing automatic extraction and modification of matched groups.

Security and Cryptography

  • ocaml-tls โ€“ TLS in pure OCaml.
  • Digestif - Hash algorithms (like SHA or BLAKE2) in OCaml and C.
  • cryptokit โ€“ The Cryptokit library for OCaml provides a variety of cryptographic primitives that can be used to implement cryptographic protocols in security-sensitive applications.
  • nocoiner - A Commitment Schemes library for Multi-party Computations such as online Auctions and Gambling.
  • nocrypto โ€“ A small cryptographic library behind the ocaml-tls project. It is built to be straightforward to use, adhere to functional programming principles and able to run in a Xen-based unikernel.

Note: The differences between nocrypto and cryptokit cryptographic libraries are described in the following blog post: OCaml-TLS: building the nocrypto library core.

Semantic Technology

  • OCaml-RDF โ€“ OCaml library to manipulate RDF graphs and execute Sparql queries.

Serialization

  • bencode โ€” Bencode (.torrent file format) reader/writer.
  • biniou โ€“ Extensible binary data format, like JSON but faster.
  • cbor โ€” OCaml native CBOR decoder/encoder.
  • jsonm โ€” Non-blocking streaming JSON codec for OCaml.
  • xmlm โ€” A streaming codec to decode and encode the XML data format.
  • yojson โ€” An optimized parsing and printing library for the JSON format.
  • sexplib โ€“ A S-expression parser and printer

System Programming

  • Mirage OS โ€“ Mirage is a programming framework for constructing secure, high-performance network applications across a variety of cloud computing and mobile platforms.
  • ocaml-fat โ€“ Read and write FAT format filesystems from OCaml.
  • ocaml-git โ€“ Pure OCaml low-level git bindings.
  • ocaml-vchan โ€“ Pure OCaml implementation of the "vchan" shared-memory communication protocol.

  • Embedded systems

  • OMicroB - A virtual machine designed to run OCaml bytecode on AVR (Arduino for instance) micro-controlers.
  • OCaPIC - An OCaml virtual machine for PIC18 micro-controlers.
  • ocaml-esp32 - A compiler for ESP32 SoC.

Testing

  • Alcotest โ€“ A lightweight and colourful test framework.
  • OUnit โ€“ OUnit is a unit test framework for OCaml. It allows one to easily create unit-tests for OCaml code. It is based on HUnit, a unit testing framework for Haskell.
  • QCheck โ€” QCheck is a property testing library inspired from Haskell's QuickCheck
  • iTeML (formerly known as qtest) โ€” supports inline pragma's to generate tests.
  • Kaputt โ€” comprehensive testing framework.
  • Pa_test โ€” General inline testing macro's.
  • TestSimple - A lightweight unit testing framework compatible with the Test Anything Protocol.
  • expect-test โ€” A framework for writing tests in OCaml, similar to Cram, developed by JaneStreet.

Utilities

  • ocaml-cuid - Collision-resistant IDs for server scalability & database performance.
  • Uuidm - Uuidm is an OCaml module implementing 128 bits universally unique identifiers version 3, 5 (name based with MD5, SHA-1 hashing) and 4 (random based) according to RFC 4122.

Web Development

  • Frameworks:
  • Opium โ€“ Sinatra like web toolkit for OCaml.
  • Ocsigen Eliom โ€“ Eliom is a full-featured multi-tier framework, for developing multi-platform Web and mobile apps as 100% OCaml distributed applications. It can also be used for more traditional Web or mobile apps: Web sites, single page applications, REST API, etc.
  • Dream - Tidy Web framework for OCaml and ReasonML
  • webmachine โ€“ A REST toolkit for OCaml. OCaml webmachine is a layer on top of cohttp that implements a state-machine-based HTTP request processor. It's particularly well-suited for writing RESTful APIs. As the name suggests, this is an OCaml port of the webmachine project.
  • incr_dom - A library for building dynamic webapps, using Js_of_ocaml
  • ocaml-vdom - Elm architecture and (V)DOM for OCaml

  • Tools:

  • COW โ€“ Caml on the Web (COW) is a set of parsers and syntax extensions to let you manipulate HTML, CSS, XML, JSON and Markdown directly from OCaml code.
  • Ocamlnet has many relevant web libraries โ€” Nethtml html parser, Netasn1 for ASN.1 parsing, Netencoding for Base64, Quoted Printable, URL encoding and HTML escaping, Netmime for MIME processing, etc. See the list of modules in Ocamlnet's manual.
  • tyxml โ€” Library to build valid (according to the W3C spec) Html and Svg trees.
  • js_of_ocaml โ€“ Js_of_ocaml is a compiler of OCaml bytecode to Javascript. It makes it possible to run Ocaml programs in a Web browser.
    • commonjs_of_ocaml - Easily import and export CommonJS modules from a js_of_ocaml project.
  • ReScript - ReScript is a robustly typed language that compiles to efficient and human-readable JavaScript.
  • ocaml-uri โ€“ RFC3986 URI parsing library.
  • Goji โ€“ An OCaml bindings generator for JavaScript libraries.
  • Syndic โ€“ RSS and Atom feed parsing
  • ocaml-mustache โ€“ mustache.js logic-less templates in OCaml.
  • atdjs โ€“ atd code generator for OCaml/js_of_ocaml.
  • jingoo โ€“ OCaml template engine almost compatible with jinja2.
  • dispatch โ€“ Path-based dispatching for client- and server-side applications.
  • Lambda Soup - Functional HTML scraping and manipulation with CSS selectors, ร  la Python's Beautiful Soup.
  • Markup.ml - Error-recovering streaming HTML5 and XML parsers, serializers.
  • gen_js_api - gen_js_api aims at simplifying the creation of OCaml bindings for Javascript libraries.
  • routes - Typed routes for OCaml/ReasonML web applications.

  • Open Source Projects:

  • Cumulus โ€“ Hacker news like website with the OCaml framework Ocsigen

Inspired by awesome projects line. Discover more awesomeness :sparkles:.

Awesome ColdFusion Awesome

A curated list of awesome ColdFusion frameworks, libraries and software. Inspired by awesome-javascript.

Pull requests very welcome.


Engines

Application Frameworks

  • CFWheels - An open source CFML framework inspired by Ruby on Rails.
  • ColdBox - The Enterprise ColdFusion MVC Development Platform
  • FarCry - FarCry Core is a web application framework that helps CFML developers build tailor-made content solutions, fast.
  • FW/1 - Framework One - a lightweight, convention over configuration, MVC application framework

Testing

  • CFSelenium - A native Selenium RC binding for ColdFusion
  • MockBox - The ColdFusion Mocking/Stubbing Framework
  • MXUnit - xUnit style unit testing framework
  • mxunit-watch - watch a directory for file changes (.cfc, .cfm, .xml) to trigger mxunit test suite full run, displaying results in the console
  • TestBox - BDD style unit testing framework

Dependency Injection

  • ColdSpring - ColdSpring makes the configuration and dependencies of your CFCs easier to manage. ColdSpring brings the power of the popular Spring framework for Java to ColdFusion.
  • DI/1 - Inject One - a very lightweight, convention over configuration, dependency injection (inversion of control) framework
  • Wirebox - The Enterprise Dependency Injection Framework

CMS

NoSQL

  • CFArango - ArangoDB client for ColdFusion
  • CFCouchbase - Couchbase NoSQL and caching client wrapper for ColdFusion
  • cfmongodb - MongoDB client wrapper for ColdFusion

REST

  • ColdBox REST - Native REST routing and rendering capababilities
  • FW/1 REST - Native REST routing and rendering capababilities
  • Taffy - The REST Web Service framework for ColdFusion and Railo
  • CFWheels RESTful - CFWheels encourages a conventional RESTful and resourceful style of request handling.

Other Libraries

  • CacheBox - The Enterprise ColdFusion Caching Engine, Aggregator and API
  • cfbackport - Back porting features contained in newer versions of ColdFusion.
  • cfpayment - ColdFusion payment processing library makes plumbing e-commerce apps easy. Charging credit cards has never been easier. Inspired by Ruby's ActiveMerchant.
  • BugLogHQ - Exception Tracking
  • JavaLoader - JavaLoader is a library that has been built to ease the use, development and integration of Java within ColdFusion applications.
  • LogBox - The Enterprise ColdFusion Logging Library
  • Moment.cfc - Moment.js inspired date/time manipulation library for CFML (not a direct port)
  • Mustache.cfc - {{ mustache }} for ColdFusion
  • UnderscoreCF - An UnderscoreJS port for Coldfusion. Functional programming library.

Editors

Tools

References

  • CF411 - CF411: 1,800+ Tools and Resources for CFers, (in over 150 categories) by Charlie Arehart
  • CFLib - Common Function Library Project
  • ColdFusion Koans - The ColdFusion Koans are a set of unit tests that the user must make pass by filling in values
  • ColdFusion UI the Right Way - A list of articles demonstrating how to do UI with ColdFusion on the back end.
  • Learn CF in a Week - community driven training program that teaches all the basics you need to be a ColdFusion Developer in one week.
  • Try ColdFusion - Realtime interactive learning tool for CFML

Resources

  • CFRepo - A repository of ColdFusion installers created by Gavin Pickin
  • lucee5-heroku - Application template for deploying Lucee 5 apps to Heroku by Mike Sprague
  • Vagrant LEMTL - Vagrant box with Linux, Nginx, MariaDB (or MySQL), Tomcat, and Lucee for local development with CFML by Mike Sprague
  • ACF Docker Images on Amazon ECR and Docker Hub - Official Docker images from Adobe
  • Lucee Docker Images Docker Hub - Official Docker images from Lucee

Documentation

License

CC0

To the extent possible under law, Sean Coyne has waived all copyright and related or neighboring rights to this work.

Awesome Fortran Awesome Build Status

A curated list of awesome Fortran frameworks, libraries and software. Inspired by awesome-swift by @Wolg.

Functional Libraries

Graphics Libraries

Libraries for graphing, graphics, and GUIs

  • DISLIN - a high-level graphing and user-interface library.
  • f90gl - public domain implementation of the official NIST Fortran 90 bindings for OpenGL.
  • F03GL - a Fortran 2003 interface to the OpenGL library, along with the GLU and GLUT toolkits.
  • gtk-fortran - a cross-platform library to build Graphical User Interfaces (GUI) using GTK+. Very useful when combined with the Glade RAD tool.
  • PGPLOT - cross-platform scientific graphing library.
  • VTKFortran - Pure Fortran (2003+) library to write and read data conforming the VTK standard.

Math Libs

Libraries for calculating and other mathematical operations.

  • BLAS - application programming interface standard for publishing libraries to perform basic linear algebra operations such as vector and matrix multiplication.
  • CERNLIB - The CERN Program Library is a large collection of general purpose libraries and modules maintained and offered in both source and object code form on the CERN central computers
  • EISPACK - a software library for numerical computation of eigenvalues and eigenvectors of matrices, written in FORTRAN
  • FGSL - portable, object-based Fortran interface to the GNU scientific library
  • IMSL - The IMSL Fortran Numerical Library is the standard for high performance computing commercial mathematics and statistics libraries
  • Lis - a Library of Iterative Solvers for Linear Systems
  • NAG Fortran Library - Produced by experts for use in a variety of applications, the NAG Fortran Library has a global reputation for its excellence and, with hundreds of fully documented and tested routines, is the largest collection of mathematical and statistical algorithms available
  • netCDF - a set of software libraries and self-describing, machine-independent data formats that support the creation, access, and sharing of array-oriented scientific data.
  • OpenBLAS - one of the fastest open source BLAS libraries available. Almost as fast as Intel MKL.

JSON Manipulation

Libraries for JSON data manipulating with Fortran language.

XML Manipulation

Libraries for XML data manipulating with Fortran language.

  • fox - Fortran XML library
  • xml-fortran - an all-Fortran solution for reading and writing XML files.

Date and time manipulation

Libraries for date and time manipulation with Fortran language.

  • datetime-fortran - A Fortran 2003 date and time manipulation library, modeled after Python's datetime library.

Testing

Libraries for testing codebases and generating test data.

  • FRUIT - FORTRAN Unit Test Framework, written in FORTRAN 95
  • Ftunit - Fortran unit testing framework by Arjen Markus
  • pFUnit - Unit testing framework for Fortran with MPI extensions by developers from NASA and NGC TASC. Uses parallel codes and object-oriented design.
  • Vegetables - For a healthier code base, eat your vegetables

Encoding-Decoding

Libraries for encoding and decoding data with Fortran language.

  • BeFoR64 - Base64 encoding/decoding library for FoRtran poor men. A KISS library for base64 encoding/decoding for modern (2003+) Fortran projects.

Portability enabling

Libraries for enabling codes portability.

  • PENF - Pure Fortran (2003+) library for ensuring codes portability.

Command-Line parsing

Libraries for parsing command-line and building user interfaces.

  • FLAP - Fortran command Line Arguments Parser for poor men. A KISS library for building easily nice Command Line Interfaces (CLI) for modern (2003+) Fortran projects.
  • options.f90 - Options & input processing for modern Fortran.

Compiling and building

Libraries for compiling and building Fortran projects.

  • FoBiS - Fortran Building System for poor men. A KISS tool for automatic building modern Fortran projects.

Preprocessor

Libraries for conditional-compilation, macros for code simplification, and inclusion of additional source files, templating systems.

  • Blockit/PyF95++ - A fairly simple Python framework used to block parse your code (or any text file) into nested blocks. The BlockIt framework has already been used to create a templating capability for the Fortran 95/2003 language along with some language extensions.
  • PreForM - Preprocessor for Fortran poor Men.

Automatic documentation

Libraries for building documentation.

  • FORD - An automatic documentation generator for modern Fortran programs.

Computational Fluid Dynamics

Libraries for CFD computations

  • OFF - Open source Finite volume Fluid dynamics code.

Docker

Web

Resources

Various resources, such as books, websites and articles, for improving your Fortran development skills and knowledge.

Fortran Websites

  • The Fortran Company - A home page of FORTRAN programming language.
  • Fortran Dev - Fortran development blog.
  • Fortran WIKI - An open venue for discussing all aspects of the Fortran programming language and scientific computing.

Fortran Videos

Other Awesome Lists

Other amazingly awesome lists can be found in the awesome-awesomeness list.

Contributing

Your contributions are always welcome! Please submit a pull request or create an issue to add a new framework, library or software to the list. Do not submit a project, which hasn't been updated in the past 6 months or is not awesome.

Awesome PHP

A curated list of amazingly awesome PHP libraries, resources and shiny things.

Contributing and Collaborating

Please see CONTRIBUTING, CODE-OF-CONDUCT and COLLABORATING for details.

Table of Contents

Composer Repositories

Composer Repositories.

Dependency Management

Libraries for dependency and package management.

Dependency Management Extras

Extras related to dependency management.

  • Composed - A library to parse your project's Composer environment at runtime.
  • Composer Merge Plugin - A composer plugin to merge several composer.json files.
  • Composer Normalize - A plugin for normalising composer.json files.
  • Composer Patches - A plugin for Composer to apply patches.
  • Composer Require Checker - CLI tool to analyze composer dependencies and verify that no unknown symbols are used in the sources of a package.
  • Composer Unused - A CLI Tool to scan for unused composer packages.
  • Prestissimo - A composer plugin which enables parallel install process.
  • Repman - A private PHP package repository manager and Packagist proxy.
  • Satis - A static Composer repository generator.
  • Tooly - A library to manage PHAR files in project using Composer.
  • Toran Proxy - A static Composer repository and proxy.

Frameworks

Web development frameworks.

  • CakePHP - A rapid application development framework.
  • Laminas - A framework comprised of individual components (previously Zend Framework).
  • Laravel - A web application framework with expressive, elegant syntax.
  • Nette - A web framework comprised of mature components.
  • Phalcon - A framework implemented as a C extension.
  • Spiral - A high performance PHP/Go framework.
  • Symfony - A set of reuseable components and a web framework.
  • Yii2 - A fast, secure, and efficient web framework.

Framework Extras

Extras related to web development frameworks.

  • CakePHP CRUD - A Rapid Application Development (RAD) plugin for CakePHP.
  • Knp RAD Components - A set of Rapid Application Development (RAD) components for Symfony.
  • LaravelS - Glue for using Swoole in Laravel or Lumen.
  • Symfony CMF - A Content Management Framework to create custom CMS.

Content Management Systems (CMS)

Tools for managing digital content.

  • Backdrop - A CMS targeting small-to-medium sized business and non-profits (a fork of Drupal).
  • Concrete5 - A CMS targeting users with a minimum of technical skills.
  • CraftCMS - A flexible, user-friendly CMS for creating custom digital experiences on the web and beyond.
  • Drupal - An enterprise level CMS.
  • Grav - A modern flat-file CMS.
  • Joomla - Another leading CMS.
  • Kirby - A flat-file CMS that adapts to any project.
  • Magento - The most popular ecommerce platform.
  • Moodle - An open-source learning platform.
  • Pico CMS - A stupidly simple, blazing fast, flat file CMS.
  • Statamic - Build beautiful, easy to manage websites.
  • WordPress - A blogging platform and CMS.

Components

Standalone components from web development frameworks and development groups.

Micro Frameworks

Micro frameworks and routers.

  • Laravel-Zero - A micro-framework for console applications.
  • Lumen - A micro-framework by Laravel.
  • Mezzio - A micro-framework by Laminas.
  • Radar - An Action-Domain-Responder implementation for PHP.
  • Silly - A micro-framework for CLI applications.
  • Slim - Another simple micro framework.

Micro Framework Extras

Extras related to micro frameworks and routers.

Routers

Libraries for handling application routing.

  • Aura.Router - A full-featured routing library.
  • Fast Route - A fast routing library.
  • Klein - A flexible router.
  • Pux - Another fast routing library.
  • Route - A routing library built on top of Fast Route.

Templating

Libraries and tools for templating and lexing.

  • MtHaml - A PHP implementation of the HAML template language.
  • Mustache - A PHP implementation of the Mustache template language.
  • PHPTAL - A PHP implementation of the TAL templating language.
  • Plates - A native PHP templating library.
  • Smarty - A template engine to complement PHP.
  • Twig - A comprehensive templating language.

Static Site Generators

Tools for pre-processing content to generate web pages.

  • Couscous - Couscous turns Markdown documentation into beautiful websites. It's GitHub Pages on steroids.
  • Jigsaw - Simple static sites with Laravel's Blade.
  • Sculpin - A tool that converts Markdown and Twig into static HTML.
  • Spress - An extensible tool that converts Markdown and Twig into HTML.

HTTP

Libraries for working with HTTP.

  • Buzz - Another HTTP client.
  • Guzzle - A comprehensive HTTP client.
  • HTTPlug - An HTTP client abstraction without binding to a specific implementation.
  • Nyholm PSR-7 - A super lightweight PSR-7 implementation. Very strict and very fast.
  • PHP VCR - A library for recording and replaying HTTP requests.
  • Requests - A simple HTTP library.
  • Retrofit - A library to ease creation of REST API clients.
  • Symfony HTTP Client - A component to fetch HTTP resources synchronously or asynchronously.
  • Laminas Diactoros - PSR-7 HTTP Message implementation.

Scraping

Libraries for scraping websites.

  • Chrome PHP - Instrument headless Chrome/Chromium instances from PHP.
  • DiDOM - A super fast HTML scrapper and parser.
  • Embed - An information extractor from any web service or page.
  • Goutte - A simple web scraper.
  • Symfony Panther - A browser testing and web crawling library for PHP and Symfony.
  • PHP Spider - A configurable and extensible PHP web spider.

Middlewares

Libraries for building application using middlewares.

URL

Libraries for parsing URLs.

  • PHP Domain Parser - A domain suffix parser library.
  • Purl - A URL manipulation library.
  • sabre/uri - A functional URI manipulation library.
  • Uri - Another URL manipulation library.

Email

Libraries for sending and parsing email.

Files

Libraries for file manipulation and MIME type detection.

  • CSV - A CSV data manipulation library.
  • Flysystem - Abstraction for local and remote filesystems.
  • Gaufrette - A filesystem abstraction layer.
  • Hoa Mime - Another MIME detection library.
  • PHP FFmpeg - A wrapper for the FFmpeg video library.
  • UnifiedArchive - A unified reader and writer of compressed archives.

Streams

Libraries for working with streams.

  • ByteStream - An asynchronous stream abstraction.
  • Streamer - A simple object-orientated stream wrapper library.

Dependency Injection

Libraries that implement the dependency injection design pattern.

  • Aura.Di - A serializable dependency injection container with constructor and setter injection, interface and trait awareness, configuration inheritance, and much more.
  • Acclimate - A common interface to dependency injection containers and service locators.
  • Auryn - A recursive dependency injector.
  • Container - Another flexible dependency injection container.
  • Disco - A PSR-11 compatible, annotation-based dependency injection container.
  • PHP-DI - A dependency injection container that supports autowiring.
  • Pimple - A tiny dependency injection container.
  • Symfony DI - A dependency injection container component.

Imagery

Libraries for manipulating images.

Testing

Libraries for testing codebases and generating test data.

  • Alice - An expressive fixture generation library.
  • AspectMock - A mocking framework for PHPUnit/Codeception.
  • Atoum - A simple testing library.
  • Behat - A behaviour driven development (BDD) testing framework.
  • Codeception - A full stack testing framework.
  • Faker - A fake data generator library.
  • HTTP Mock - A library for mocking HTTP requests in unit tests.
  • Infection - An AST-based PHP Mutation testing framework.
  • Kahlan - Full stack Unit/BDD testing framework with built-in stub, mock and code-coverage support.
  • Mink - Web acceptance testing.
  • Mockery - A mock object library for testing.
  • ParaTest - A parallel testing library for PHPUnit.
  • Pest - A testing framework with a focus on simplicity.
  • Peridot - An event driven test framework.
  • Phake - Another mock object library for testing.
  • Pho - Another behaviour driven development testing framework.
  • PHP-Mock - A mock library for built-in PHP functions (e.g. time()).
  • PHP MySQL Engine - A MySQL engine written in pure PHP.
  • PHPSpec - A design by specification unit testing library.
  • PHPT - A test tool used by PHP itself.
  • PHPUnit - A unit testing framework.
  • Prophecy - A highly opinionated mocking framework.
  • VFS Stream - A virtual filesystem stream wrapper for testing.

Continuous Integration

Libraries and applications for continuous integration.

  • CircleCI - A continuous integration platform.
  • GitlabCi - Let GitLab CI test, build, deploy your code. TravisCi like.
  • Jenkins - A continuous integration platform with PHP support.
  • JoliCi - A continuous integration client written in PHP and powered by Docker.
  • PHPCI - An open source continuous integration platform for PHP.
  • SemaphoreCI - A continuous integration platform for open source and private projects.
  • Shippable - A Docker based continious integration platform for open source and private projects.
  • Travis CI - A continuous integration platform.
  • Setup PHP - A GitHub Action for PHP.

Documentation

Libraries for generating project documentation.

  • APIGen - Another API documentation generator.
  • daux.io - A documentation generator which uses Markdown files.
  • PHP Documentor 2 - A documentation generator.
  • phpDox - A documentation generator for PHP projects (that is not limited to API documentation).

Security

Libraries for generating secure random numbers, encrypting data and scanning and testing for vulnerabilities.

  • Halite - A simple library for encryption using libsodium.
  • HTML Purifier - A standards compliant HTML filter.
  • IniScan - A tool that scans PHP INI files for security.
  • Optimus - Id obfuscation based on Knuth's multiplicative hashing method.
  • PHPGGC - A library of PHP unserializeable payloads along with a tool to generate them.
  • PHP Encryption - Secure PHP Encryption Library.
  • PHP SSH - An experimental object orientated SSH wrapper library.
  • PHPSecLib - A pure PHP secure communications library.
  • random_compat - PHP 5.x support for random_bytes() and random_int()
  • RandomLib - A library for generating random numbers and strings.
  • Symfony Security Monitoring - A web tool to check your Composer dependencies for security advisories, previously known as "SensioLabs Security Check".
  • SQLMap - An automatic SQL injection and database takeover tool.
  • TCrypto - A simple encrypted key-value storage library.
  • VAddy - A continuous security testing platform for web applications.
  • Zap - An integrated penetration testing tool for web applications.

Passwords

Libraries and tools for working with and storing passwords.

  • GenPhrase - A library for generating secure random passphrases.
  • Password Compat - A compatibility library for the new PHP 5.5 password functions.
  • Password Policy - A password policy library for PHP and JavaScript.
  • Password Validator - A library for validating and upgrading password hashes.
  • Password-Generator - PHP library to generate random passwords.
  • PHP Password Lib - A library for generating and validating passwords.
  • phpass - A portable password hashing framework.
  • Zxcvbn PHP - A realistic PHP password strength estimate library based on Zxcvbn JS.

Code Analysis

Libraries and tools for analysing, parsing and manipulating codebases.

Code Quality

Libraries for managing code quality, formatting and linting.

  • CaptainHook - An easy-to-use and flexible Git hook library.
  • PHP CodeSniffer - A library that detects PHP, CSS and JS coding standard violations.
  • PHP CS Fixer - A coding standards fixer library.
  • PHP Mess Detector - A library that scans code for bugs, sub-optimal code, unused parameters and more.
  • PHPCheckstyle - A tool to help adhere to certain coding conventions.
  • PHPCPD - A library that detects copied and pasted code.

Static Analysis

Libraries for performing static analysis of PHP code.

  • Exakat - A static analysis engine for PHP.
  • Deptrac - A static code analysis tool that helps to enforce rules for dependencies between software layers.
  • Mondrian - A code analysis tool using Graph Theory.
  • phan - A static analyzer based on PHP 7+ and the php-ast extension.
  • PHP Architecture Tester - Easy to use architecture testing tool for PHP.
  • PHPCompatibility - A PHP compatibility checker for PHP CodeSniffer.
  • PhpDependencyAnalysis - A tool to create customisable dependency graphs.
  • PHP Metrics - A static metric library.
  • PHP Migration - A static analyzer for PHP version migration.
  • PHPStan - A PHP Static Analysis Tool.
  • Psalm - A static analysis tool for finding errors in PHP applications.

Architectural

Libraries related to design patterns, programming approaches and ways to organize code.

  • Design Patterns PHP - A repository of software patterns implemented in PHP.
  • Finite - A simple PHP finite state machine.
  • Functional PHP - A functional programming library.
  • Iter - A library that provides iteration primitives using generators.
  • Patchwork - A library for redefining userland functions.
  • Pipeline - A pipeline pattern implementation.
  • Porter - Data import abstraction library for consuming Web APIs and other data sources.
  • Ruler - A simple stateless production rules engine.
  • RulerZ - A powerful rule engine and implementation of the Specification pattern.

Debugging and Profiling

Libraries and tools for debugging errors and profiling code.

  • APM - Monitoring extension collecting errors and statistics into SQLite/MySQL/StatsD.
  • Barbushin PHP Console - Another web debugging console using Google Chrome.
  • Blackfire.io - A low-overhead code profiler.
  • Kint - A debugging and profiling tool.
  • Metrics - A simple metrics API library.
  • PCOV - A self contained code coverage compatible driver.
  • PHP Console - A web debugging console.
  • PHP Debug Bar - A debugging toolbar.
  • PHPBench - A benchmarking Framework.
  • PHPSpy - A low-overhead sampling profiler.
  • Symfony VarDumper - A variable dumper component.
  • Tideways.io - Monitoring and profiling tool.
  • Tracy - A simple error detection, logging and time measuring library.
  • Whoops - A pretty error handling library.
  • xDebug - A debug and profile tool for PHP.
  • XHProf - A profiling tool originally developed by Facebook.
  • Z-Ray - A debug and profile tool for Zend Server.

Build Tools

Project build and automation tools.

  • Box - A utility to build PHAR files.
  • Construct - A PHP project/micro-package generator.
  • Phing - A PHP project build system inspired by Apache Ant.
  • RMT - A library for versioning and releasing software.

Task Runners

Libraries for automating and running tasks.

  • Bldr - A PHP Task runner built on Symfony components.
  • Jobby - A PHP cron job manager without modifying crontab.
  • Robo - A PHP Task runner with object-orientated configurations.
  • Task - A pure PHP task runner inspired by Grunt and Gulp.

Tools for building navigation structures.

  • KnpMenu - A menu library.
  • Menu - A flexible menu library with a fluent interface.

Asset Management

Tools for managing, compressing and minifying website assets.

  • JShrink - A JavaScript minifier library.
  • Laravel Mix - An elegant wrapper around Webpack for the 80% use case.
  • Symfony Asset - Manages URL generation and versioning of web assets.
  • Symfony Encore - A simple but powerful API for processing and compiling assets built around Webpack.

Geolocation

Libraries for geocoding addresses and working with latitudes and longitudes.

  • Country List - A list of all countries with names and ISO 3166-1 codes.
  • GeoCoder - A geocoding library.
  • GeoJSON - A GeoJSON implementation.
  • GeoTools - A library of geo-related tools.
  • PHPGeo - A simple geo library.

Date and Time

Libraries for working with dates and times.

  • CalendR - A calendar management library.
  • Carbon - A simple DateTime API extension.
  • Chronos - A DateTime API extension supporting both mutable and immutable date/time.
  • Moment.php - Moment.js inspired PHP DateTime handler with i18n support.
  • Yasumi - An library to help you calculate the dates and names of holidays.

Event

Libraries that are event-driven or implement non-blocking event loops. * Amp - An event driven non-blocking I/O library. * Broadway - An event source and CQRS library. * CakePHP Event - An event dispatcher library. * Elephant.io - Yet another web socket library. * Evenement - An event dispatcher library. * Event - An event library with a focus on domain events. * Hoa EventSource - An event source library. * Hoa WebSocket - Another web socket library. * Pawl - An asynchronous web socket client. * Prooph Event Store - An event source component to persist event messages * PHP Defer - Golang's defer statement for PHP. * Ratchet - A web socket library. * ReactPHP - An event driven non-blocking I/O library. * RxPHP - A reactive extension library. * Swoole - An event-driven asynchronous and concurrent networking communication framework with high performance for PHP written in C. * Workerman - An event driven non-blocking I/O library.

Logging

Libraries for generating and working with log files.

  • Monolog - A comprehensive logger.

E-commerce

Libraries and applications for taking payments and building online e-commerce stores.

  • Money - A PHP implementation of Fowler's money pattern.
  • Brick\Money - A money library for PHP, with support for contexts, cash roundings, currency conversion.
  • OmniPay - A framework agnostic multi-gateway payment processing library.
  • Payum - A payment abstraction library.
  • Shopware - Highly customizable e-commerce software
  • Swap - An exchange rates library.
  • Sylius - An open source e-commerce solution.

PDF

Libraries and software for working with PDF files.

  • Dompdf - A HTML to PDF converter.
  • PHPPdf - A library for generating PDFs and images from XML.
  • Snappy - A PDF and image generation library.
  • WKHTMLToPDF - A tool to convert HTML to PDF.

Office

Libraries for working with office suite documents.

  • PHPPowerPoint - A library for working with Microsoft PowerPoint Presentations.
  • PHPWord - A library for working with Microsoft Word documents.
  • PHPSpreadsheet - A pure PHP library for reading and writing spreadsheet files (successor of PHPExcel).
  • Spout - Read and write spreadsheet files (CSV, XLSX and ODS), in a fast and scalable way .

Database

Libraries for interacting with databases using object-relational mapping (ORM) or datamapping techniques.

  • Atlas.Orm - A data mapper implementation for your persistence model in PHP.
  • Aura.Sql - Provides an extension to the native PDO along with a profiler and connection locator.
  • Aura.SqlQuery - Independent query builders for MySQL, PostgreSQL, SQLite, and Microsoft SQL Server.
  • Baum - A nested set implementation for Eloquent.
  • CakePHP ORM - Object-Relational Mapper, implemented using the DataMapper pattern.
  • Cycle ORM - PHP DataMapper, ORM.
  • Doctrine Extensions - A collection of Doctrine behavioural extensions.
  • Doctrine - A comprehensive DBAL and ORM.
  • Laravel Eloquent - A simple ORM.
  • Pomm - An Object Model Manager for PostgreSQL.
  • ProxyManager - A set of utilities to generate proxy objects for data mappers.
  • RedBean - A lightweight, configuration-less ORM.
  • Slimdump - An easy dumper tool for MySQL.
  • Spot2 - A MySQL datamapper ORM.

Migrations

Libraries to help manage database schemas and migrations.

  • Doctrine Migrations - A migration library for Doctrine.
  • Migrations - A migration management library.
  • Phinx - Another database migration library.
  • PHPMig - Another migration management library.
  • Ruckusing - Database migrations for PHP ala ActiveRecord Migrations with support for MySQL, Postgres, SQLite.

NoSQL

Libraries for working with "NoSQL" backends.

  • PHPMongo - A MongoDB ORM.
  • Predis - A feature complete Redis library.

Queue

Libraries for working with event and task queues.

  • Bernard - A multibackend abstraction library.
  • BunnyPHP - A performant pure-PHP AMQP (RabbitMQ) sync and also async (ReactPHP) library.
  • Pheanstalk - A Beanstalkd client library.
  • PHP AMQP - A pure PHP AMQP library.
  • Tarantool Queue - PHP bindings for Tarantool Queue.
  • Thumper - A RabbitMQ pattern library.
  • Enqueue - A message queue packages for PHP that supports RabbitMQ, AMQP, STOMP, Amazon SQS, Redis and Doctrine transports.

Libraries and software for indexing and performing search queries on data.

Command Line

Libraries related to the command line.

  • Aura.Cli - Provides the equivalent of request ( Context ) and response ( Stdio ) objects for the command line interface, including Getopt support, and an independent Help object for describing commands.
  • Boris - A tiny PHP REPL.
  • Cilex - A micro framework for building command line tools.
  • CLI Menu - A library for building CLI menus.
  • CLIFramework - A command-line framework supports zsh/bash completion generation, subcommands and option constraints. It also powers phpbrew.
  • CLImate - A library for outputting colours and special formatting.
  • Commando - Another simple command line opt parser.
  • Cron Expression - A library to calculate cron run dates.
  • GetOpt - A command line opt parser.
  • GetOptionKit - Another command line opt parser.
  • Hoa Console - Another command line library.
  • PsySH - Another PHP REPL.
  • ShellWrap - A simple command line wrapper library.

Authentication and Authorization

Libraries for implementing user authentication and authorization.

  • Aura.Auth - Provides authentication functionality and session tracking using various adapters.
  • SocialConnect Auth - An open source social sign (OAuth1\OAuth2\OpenID\OpenIDConnect).
  • Json Web Token - Json Tokens to authenticate and transmit information.
  • OAuth 1.0 Client - An OAuth 1.0 client library.
  • OAuth 2.0 Client - An OAuth 2.0 client library.
  • OAuth2 Server - Another OAuth2 server implementation.
  • OAuth2 Server - An OAuth2 authentication server, resource server and client library.
  • Opauth - A multi-provider authentication framework.
  • Paseto - Platform-Agnostic Security Tokens.
  • PHP oAuthLib - Another OAuth library.
  • Sentinel Social - A library for social network authentication.
  • Sentinel - A framework agnostic authentication & authorisation library.
  • TwitterOAuth - A Twitter OAuth library.

Markup and CSS

*Libraries for working with markup and CSS formats.

JSON

Libraries for working with JSON.

Strings

Libraries for parsing and manipulating strings.

  • Agent - A PHP desktop/mobile user agent parser, based on Mobiledetect.
  • ANSI to HTML5 - An ANSI to HTML5 converter library.
  • Color Jizz - A library for manipulating and converting colours.
  • Device Detector - Another library for parsing user agent strings.
  • Hoa String - Another UTF-8 string library.
  • Jieba-PHP - A PHP port of Python's jieba. Chinese text segmentation for natural language processing.
  • Mobile-Detect - A lightweight PHP class for detecting mobile devices (including tablets).
  • Patchwork UTF-8 - A portable library for working with UTF-8 strings.
  • Portable UTF-8 - A string manipulation library with UTF-8 safe replacement methods.
  • Slugify - A library to convert strings to slugs.
  • SQL Formatter - A library for formatting SQL statements.
  • Stringy - A string manipulation library with multibyte support.
  • UA Parser - A library for parsing user agent strings.
  • URLify - A PHP port of Django's URLify.js.
  • UUID - A library for generating UUIDs.

Numbers

Libraries for working with numbers.

  • Brick\Math - A library providing large number support: BigInteger, BigDecimal and BigRational.
  • ByteUnits - A library to parse, format and convert byte units in binary and metric systems.
  • DecimalObject - A value object to handle decimals/floats easily and more precisely.
  • IP - An immutable value object for working with IPv4 and IPv6 addresses.
  • LibPhoneNumber for PHP - A PHP implementation of Google's phone number handling library.
  • PHP Conversion - Another library for converting between units of measure.
  • PHP Units of Measure - A library for converting between units of measure.
  • MathPHP - A math library for PHP.

Filtering and Validation

Libraries for filtering and validating data.

  • Assert - A validation library with a rich set of assertions. Supports assertion chaining and lazy assertions.
  • Aura.Filter - Provides tools to validate and sanitize objects and arrays.
  • CakePHP Validation - Another validation library.
  • Filterus - A simple PHP filtering library.
  • ISO-codes - A library for validating inputs according standards from ISO, International Finance, Public Administrations, GS1, Book Industry, Phone numbers & Zipcodes for many countries.
  • JSON Schema - A JSON Schema validation library.
  • MetaYaml - A schema validation library that supports YAML, JSON and XML.
  • Respect Validation - A simple validation library.
  • Upload - A library for handling file uploads and validation.
  • Valitron - Another validation library.
  • Volan - Another simplified validation library.

API

Libraries and web tools for developing APIs.

  • API Platform - Expose in minutes an hypermedia REST API that embraces JSON-LD, Hydra format.
  • Laminas API Tool Skeleton - An API builder built with the Laminas Framework.
  • Drest - A library for exposing Doctrine entities as REST resource endpoints.
  • HAL - A Hypertext Application Language (HAL) builder library.
  • Hateoas - A HATEOAS REST web service library.
  • Negotiation - A content negotiation library.
  • Restler - A lightweight framework to expose PHP methods as RESTful web API.
  • wsdl2phpgenerator - A tool to generate PHP classes from SOAP WSDL files.

Caching and Locking

Libraries for caching data and acquiring locks.

  • APIx Cache - A thin PSR-6 cache wrapper to various caching backends emphasising cache tagging and indexing.
  • CacheTool - A tool to clear APC/opcode caches from the command line.
  • CakePHP Cache - A caching library.
  • Doctrine Cache - A caching library.
  • Metaphore - Cache slam defense using a semaphore to prevent dogpile effect.
  • Stash - Another library for caching.
  • Laminas Cache - Another caching library.
  • Lock - A lock library to provide exclusive execution.

Data Structure and Storage

Libraries that implement data structure or storage techniques.

  • CakePHP Collection - A simple collections library.
  • Fractal - A library for converting complex data structures to JSON output.
  • Ginq - Another PHP library based on .NET's LINQ.
  • JsonMapper - A library that maps nested JSON structures onto PHP classes.
  • JSON Machine - Provides iteration over huge JSONs using simple foreach
  • Knapsack - Collection library inspired by Clojure's sequences.
  • msgpack.php - A pure PHP implementation of the MessagePack serialization format.
  • PINQ - A PHP library based on .NET's LINQ (Language Integrated Query).
  • Serializer - A library for serialising and de-serialising data.
  • YaLinqo - Yet Another LINQ to Objects for PHP.
  • Laminas Serializer - Another library for serialising and de-serialising data.

Notifications

Libraries for working with notification software.

  • JoliNotif - A cross-platform library for desktop notification (support for Growl, notify-send, toaster, etc)
  • Notification Pusher - A standalone library for device push notifications.
  • Notificato - A library for handling push notifications.
  • Notificator - A lightweight notification library.
  • Php-pushwoosh - A PHP Library to easily send push notifications with the Pushwoosh REST Web Services.

Deployment

Libraries for project deployment.

  • Deployer - A deployment tool.
  • Envoy - A tool to run SSH tasks with PHP.
  • Rocketeer - A fast and easy deployer for the PHP world.

Internationalisation and Localisation

Libraries for Internationalization (I18n) and Localization (L10n).

  • Aura.Intl - Provides internationalization (I18N) tools, specifically package-oriented per-locale message translation.
  • CakePHP I18n - Message translation and localization for dates and numbers.

Serverless

Libraries and tools to help build serverless web applications.

  • Bref - Serverless PHP on AWS Lambda.
  • OpenWhisk - An open-source serverless cloud platform.
  • Serverless Framework - An open-source framework for building serverless applications.
  • Laravel Vapor - A serverless deployment platform for Laravel, powered by AWS.

Configuration

Libraries and tools for configuration.

Third Party APIs

Libraries for accessing third party APIs.

  • Amazon Web Service SDK - The official PHP AWS SDK library.
  • AsyncAWS - An unofficial asynchronous PHP AWS SDK.
  • Campaign Monitor - The official Campaign Monitor PHP library.
  • Github - A library to interface with the Github API.
  • Mailgun The official Mailgun PHP API.
  • Square - The official Square PHP SDK for payments and other Square APIs.
  • Stripe - The official Stripe PHP library.
  • Twilio - The official Twilio PHP REST API.

Extensions

Libraries to help build PHP extensions.

  • PHP CPP - A C++ library for developing PHP extensions.
  • Zephir - A compiled language between PHP and C++ for developing PHP extensions.

Miscellaneous

Useful libraries or utilities that don't fit into the categories above.

  • Annotations - An annotation library (part of Doctrine).
  • BotMan - A framework agnostic PHP library to build cross-platform chat bots.
  • ClassPreloader - A library for optimising autoloading.
  • Hprose-PHP - A cross-language RPC.
  • noCAPTCHA - Helper for Google's noCAPTCHA (reCAPTCHA).
  • Pagerfanta - A pagination library.
  • Safe - All PHP functions, rewritten to throw exceptions instead of returning false.
  • SuperClosure - A library that allows Closures to be serialized.

Software

Software for creating a development environment.

PHP Installation

Tools to help install and manage PHP on your computer.

Development Environment

Software and tools for creating and sharing a development environment.

  • Ansible - A radically simple orchestration framework.
  • Docker - A containerization platform.
  • Docker PHP Extension Installer - Easily install PHP extensions in Docker containers.
  • Expose - An open source PHP tunneling service.
  • Lando - Push-button development environments.
  • Laravel Homestead - A local development environment for Laravel.
  • Laradock - A full PHP development environment based on Docker.
  • Puppet - A server automation framework and application.
  • Takeout - A Docker-based development-only dependency manager.
  • Vagrant - A portable development environment utility.

Virtual Machines

Alternative PHP virtual machines.

  • Hack - A programming language for HHVM.
  • HHVM - A Virtual Machine, Runtime and JIT for PHP by Facebook.
  • PeachPie - PHP compiler and runtime for .NET and .NET Core.

Text Editors and IDEs

Text Editors and Integrated Development Environments (IDE) with support for PHP.

Web Applications

Web-based applications and tools.

  • 3V4L - An online PHP & HHVM shell.
  • Adminer - Database management in a single PHP file.
  • Cachet - The open source status page system.
  • DBV - A database version control application.
  • Lychee - An easy to use and great looking photo-management-system.
  • MailCatcher - A web tool for capturing and viewing emails.
  • phpMyAdmin - A web interface for MySQL/MariaDB.
  • PHP Queue - An application for managing queueing backends.
  • phpRedisAdmin - A simple web interface to manage Redis databases.
  • PHPSandbox - An online IDE for PHP in the browser.

Infrastructure

Infrastructure for providing PHP applications and services.

  • appserver.io - A multithreaded application server for PHP, written in PHP.
  • php-pm - A process manager, supercharger and load balancer for PHP applications.
  • RoadRunner - High-performance PHP application server, load-balancer and process manager.

Resources

Various resources, such as books, websites and articles, for improving your PHP development skills and knowledge.

PHP Websites

Useful PHP-related websites.

PHP Books

Fantastic PHP-related books.

PHP Videos

Fantastic PHP-related videos.

PHP Podcasts

Podcasts with a focus on PHP topics.

PHP Newsletters

PHP-related news directly to your inbox.

PHP Reading

PHP-releated reading materials.

PHP Internals Reading

Reading materials related to the PHP internals or performance.

Awesome Composer Awesome Build Status license

A curated list of resources for Composer, Packagist, Satis, Plugins, Scripts, Videos, Tutorials.

You might also like awesome-php.

Please read the contribution guidelines before contributing.

Composer

Support

Stack Overflow

IRC


Plugins

  • Documentation for Plugins - This offical documentation is good starting point, when writing a Composer plugin.
  • Composer-Asset-Plugin - A npm/Bower Dependencies Manager for Composer.
  • Composer-AWS - The plugin loads repository data and downloads packages from Amazon S3 (with authentication support for private repositories).
  • Composer-Composition - Provides an API, for checking your environment at runtime.
  • Composer-Suggest - Enables you to install a custom group of suggested packages, based on keyword patterns.
  • Composer-Versions-Check - Shows outdated packages from last major versions after using the update command (showing "Latest is vX.Y.Z").
  • Composer-Changelogs - Provides a summary of the updates with links to changelog/releasenote/tag. The output is ready to be pasted into the commit message when updating the composer.lock file.
  • Composer-Merge-Plugin - Merges multiple composer.json files at Composer runtime.
  • Composer-Bin-Plugin - Adds support for managing dependencies for multiple packages in a single repository or isolate bin dependencies.
  • Composer-Inheritance-Plugin - Opinionated version of Wikimedia composer-merge-plugin to work in pair with Bamarni composer-bin-plugin.
  • Composer-MonoRepo-Plugin - The plugin helps to manage dependencies for multiple packages in a single repository.
  • Composer-Patches-Plugin - Enables you to provide patches for any package from any package. When the dependency is fetched, the patch is applied on top.
  • Composer-Patches - The plugin applies a patch from a local or remote file to any required package.
  • Composer-Patches - Applies a patch from a local or remote file to any package that is part of a given composer project.
  • Composer-Patchset - Automatically fetch, update and apply patches to any composer package with a twist - store the patchset as a composer package itself.
  • Composer-Plugin-QA - Comprehensive Plugin for composer to execute PHP Quality assurance Tools.
  • Composer-Cleanup-Plugin - Removes tests & documentation folders from the vendor dir.
  • Composer-Cleaner - The tool removes unnecessary files and directories from the vendor directory.
  • Composer-Ignore-Plugin - Enables you to remove files and folders from the vendor folder (to make a cleaner and smaller deployment to production). It's an alternative to .gitattributes.
  • Composer-Vendor-Cleaner - Plugin removes unnecessary development files and directories from vendor directory by glob pattern syntax.
  • Drupal Vendor Hardening Composer Plugin - Removes extraneous directories from the project's vendor directory & adds .htaccess and web.config files to the root of the project's vendor directory.
  • Composer-Shared-Package-Plugin - Allows you to share selected packages between your projects by creating symlinks.
  • Composer-Symlinker - Enables you to load packages from different directories (instead of loading them from /vendor).
  • Prestissimo - A parallel downloader using phpext_curl.
  • Composer-Curl-Plugin - The plugin use phpext_curl for downloading packages.
  • Composer-Custom-Directory-Installer - A composer plugin, to install different types of composer packages in custom directories outside the default composer installation path (vendor folder).
  • Composer-Dependency-Analyzer - Allows you to build a dependency graph for an installed composer project.
  • Graph-Composer - Provides a graph visualization for your project's composer.json and its dependencies.
  • PackageVersions - Provides a very quick and easy access to installed composer dependency versions.
  • PackageVersions Deprecated - Is a fork of Ocramius/PackageVersions providing compatibility with Composer 1 and 2 on PHP 7+.
  • Composer Locator - Provides a means of locating the installation path for a given Composer package name.
  • PackageInfo - Enables you to retrieve all package informations (like version, tag, release date, description).
  • Composer-Git-Hooks - A library for easily managing git hooks in your composer config.
  • Symfony-Flex - Provides recipe-based installation and configuration management for Symfony packages.
  • Narrowspark-Automatic - Automates the most common tasks of applications, boost package downloads, adds a composer security audit and more.
  • PHPCodeSniffer-Composer-Installer - The plugin enables you to install PHP_CodeSniffer coding standards (rulesets).
  • Composer-Warmup - The plugin adds the command warmup-opcode to Composer, which triggers the compilation of all PHP files discovered in your project into the Opcache.
  • Foxy - Composer plugin that executes npm/yarn packages installation operations, when composer package is installed or updated.
  • NodeJS-Installer - Installer for NodeJS and npm.
  • Node-Composer - Installer for NodeJS, npm and yarn.
  • Imposter-Plugin - Wrapping all composer vendor packages inside your own namespace. Intended for WordPress plugins.
  • Composer Preload - The plugin generates a vendor/preload.php file to warm up the Opcache.
  • PHP Inc - Automatically includes files for autoload and autoload-dev to facilitate using functions and grouped definitions within composer loaded applications.
  • Composer Registry Manager - Enables you to switch between different composer repositories.
  • Production-Dependencies-Guard - Prevents development packages from being added into require and getting into production environment.
  • Composer Exclusive Install - Prevents more than one install or update operation at a time.
  • Composer-Downloads-Plugin - Lightweight mechanism to download external resources (ZIP/TAR files) with only a url and path.
  • Private-Composer-Installer - Install helper outsourcing sensitive keys from the package URL into environment variables.
  • CycloneDX-PHP-Composer - Creates a CycloneDX "Software Bill-of-Materials" (SBOM) for the dependencies of a project. The SBOM enables dependency monitoring and risk analysis by OWASP DependencyTrack.
  • Composer-Compile-Plugin - Allow PHP libraries to define simple, freeform compilation tasks. Support post-install hooks in any package.

Tools

  • Composer SemVer Checker - Enables you identify constraint to version resolution issues, by doing a semantic version check for Packagist hosted packages.
  • Composer-Yaml - This tool converts composer.yml to composer.json.
  • Studio - A workbench for developing Composer packages. Its an alternative to editing dependencies in the vendor folder or using PathRepositories to load a local clone of your dependency into your project.
  • OctoLinker Browser Extension - Enables you to navigate Composer/NPM dependencies on Github.
  • ComposerRequireChecker - A CLI tool to analyze dependencies and verify that no unknown imported symbols are used in the sources of a package.
  • Composer-Unused - A CLI tool, which scans your code and shows unused Composer dependencies.
  • Composer-Normalize - The plugin helps to keep your composer.json file(s) consistent by restructuring and sorting entries (normalizing).
  • Composer-Service - Enables you to run Composer as a service on a remote server.
  • Composer PreferLowest Checker - Strictly compare the specified minimum versions of your composer.json with the ones actually used by the prefer-lowest composer update command option.
  • Bramus/Composer-Autocomplete - A Bash/Shell autocompletion script for Composer.
  • Composer/Xdebug-Handler - Helps you to restart a CLI process without loading the xdebug extension.
  • Composer Semver Range Checker - A tool to help check the satisfiable ranges of a composer constraint.

Scripts

  • ParameterHandler - Allows you to manage your ignored parameters when running a composer install or update.
  • Tooly - Manage needed PHAR files in your project composer.json. Every PHAR file will be saved in the composer binary directory. Optional with GPG verification for every PHAR.
  • Melody - One-file composer scripts.
  • Composer-Travis-Lint - Allows you to lint the Travis CI configuration file (.travis.yml).
  • Composer-Multitest - Enables you to run a Composer script against multiple, locally installed PHP versions, which are managed by PHPBrew or phpenv.
  • ScriptsDev - Enables you to use a scripts-dev section, which triggers scripts only in dev mode.
  • PhantomJS-Installer - A Composer Package which installs the PhantomJS binary (Linux, Windows, Mac) into /bin of your project.
  • Composer-Vendor-Cleanup - A script which removes whitelisted unnecessary files (like tests/docs etc.) from the vendor directory.
  • Composer Substitution Plugin - A Composer plugin replacing placeholders in the scripts section by dynamic values.

Services

  • Packanalyst - Packanalyst is a service that lets you browse in any PHP class / interface / trait defined in Packagist.
  • Dependabot - Dependabot is a dependency update service. It monitors and updates your dependencies by sending a pull-request. The service is free for public repos and personal account repos.

Tutorials

Blogs

Videos

Slides


Packagist

Packagist is the PHP Package Repository.

Setup a Packagist Mirror

Packagist Mirrors

About metadata mirrors: https://packagist.org/mirrors

Composer Repositories

Private repositories

  • fxpio/tug - Enables you to host a private Composer registry on AWS Serverless serving your private PHP packages, which are hosted on Github or Gitlab services.

Private Packagist

Repman

  • repman.io & repman-io/repman - A Private PHP Package Repository Manager & Packagist Proxy.
  • repman-io/composer-plugin - This plugin enables downloading via Repman by adding a distribution mirror URL for all your dependencies (without need to update the composer.lock file).

Packagist-compatible repositories

  • WordPress Packagist - Mirrors the WordPress plugin and theme directories as a Composer repository.
  • Asset Packagist - Enables installation of Bower and NPM packages as native Composer packages.
  • Firegento - A Composer Repository providing Magento Modules.
  • Drupal Packagist - Composer repositories for Drupal 7 and 8 core, modules, and themes.
  • Satis Server - This docker container provides a Satis Server and enables you to run a private, self-hosted Composer repository with support for Git, Mercurial, and Subversion, HTTP API, HTTPs support, webhook handler and scheduled builds.
  • Cloudsmith - A fully managed package management SaaS with PHP/Composer support (and many others).
  • Release Belt - Selfโ€“hosted Composer repository implementation to quickly integrate ZIP files of third party nonโ€“Composer releases.
  • Packeton - Private self-hosted Composer repository for vendors. Fork of packagist with adding support for authorization, customer users, groups, webhooks.

Satis

  • Gitlab-Composer - This is a branch/tag indexer for Gitlab repositories.
  • Satisfy - Satis composer repository manager with a Web UI.
  • Satis Control Panel - A simple web UI for managing your Satis Repository with optional CI integration.
  • Satis Go - A web server for managing Satis configuration and hosting the generated Composer repository.

Toran Proxy

  • ToranProxy (deprecated) - In addition to providing a composer repository ToranProxy acts as a proxy server for Packagist and GitHub.

License

CC0

To the extent possible under law, Jens A. Koch has waived all copyright and related or neighboring rights to this work.

Awesome Pascal Awesome

A curated list of awesome Delphi, FreePascal and other *Pascal frameworks, libraries, resources, and shiny things. Inspired by awesome-xxx stuff.

Note that only open-source projects are considered. Dead projects (not updated for 3 years or more) must be really awesome or unique to be included. Feel free to suggest other missing nice projects either by comments or pull requests.

This awesome collection is also available on Delphi.ZEEF.com

:exclamation: Note on compiler compatibility. There are compiler/language dialect compatibility badges for all projects based on a project's description. No real compatibility with compilers not officially supported is checked. Often a code could be used with non-supported compiler/language dialect with minor modifications but there could be exceptions.

Contents


General Libraries

Big general-purpose libraries

  • JCL. [Delphi] [FPC] Set of thoroughly tested and fully documented utility functions and non-visual classes which can be instantly reused in your Delphi and C++ Builder projects. The library is grouped into several categories such as Strings, Files and I/O, Security, Math and many, many more.

  • JVCL. [Delphi] Library of over 600 Delphi components developed by "Project JEDI" members. // GUI, algorithms, classes, API headers etc.

  • Alcinoe (mirror at GH). [Delphi] Library of visual and non-visual components for Delphi. // Network: FTP/Http/NNTP/POP3/SMTP, ISAPI, WinInet Http/FTP clients; DB: Firebird/MySQL/SQLite3/Memcached/MongoDb/SphinxQL; XML/JSON Parser; ZLIB; Cryptography: AES, Blowfish, MD5, SHA, secure keyed MD5/SHA; opengl video player; FireMonkey controls; Other: Self-Balancing Binary Trees, expression evaluator

  • Fundamentals Code Library (abandoned, more recent fork is here - though it slightly differs in units set, f.ex. no XML. Recent major version 5 here). [Delphi] [FPC] Collection of Delphi / FreePascal code units. Includes libraries for Unicode, Strings, Data Structures, Sockets and Mathematics. // Utils: ZLIB compression; JSON; XML; ProtocolBuffers; Unicode routines; data structures; Hashes: XOR, CRC, Adler, MD5, SHA, secure keyed MD5/SHA, etc; Network: blocking TCP client/server, HTTP(S) via SSL3/TLS1.0/TLS1.1/TLS1.2 (fully native); SQL parser; BitCoin MtGox client; Blaise script engine; Cipher: AES, DES, FUNE, RC2, RC4, RSA, Diffie-Hellman; Maths: matrix, complex, statistics, huge numbers

  • Spring4D. [Delphi] Open-source code library for Embarcadero Delphi 2010 and higher. It consists of a number of different modules that contain a base class library (common types, interface based collection types, reflection extensions) and a dependency injection framework. Includes Encryption Library. // Collections and other containers using Generics and based on IEnumerable, probably more accurate and featured than RTL analogs; crypto: CRC, DES, MD5, SHA; file utils etc

  • TheUnknownOnes. [Delphi] Huge heap of classes, components, utilities for almost every purpose. Nearly undocumented and seems not very up-to-date though.

  • CNVCL. [Delphi] CnPack Component Package. Large collection of visual components, classes and utilities. // Lots of useful stuff; documentation and comments mainly in Chinese

  • mORMot. [Delphi] [FPC] Client-Server ORM/ODM SOA MVC framework for Delphi 6 and higher, or FPC 2.7. Direct SQL/NoSQL database access, ORM/ODM over objects, RESTful ORM and SOA services via interfaces over high performance HTTP server, MVC/MVVM web sites, testing including mocks and stubs, logging, cryptography, compression, huge documentation.

  • MARS - Curiosity. [Delphi] Delphi REST Library. Pure REST approach, standard concepts in a familiar Delphi flavor (including a component based client library). Known compatibility: Delphi versions from XE to 10 Seattle. Some functionalities requires FireDAC.

  • ADAPT. [Delphi] Advanced Developer Async Programming Toolkit, foundation library intended to be used at the heart of your projects for the purpose of providing extremely powerful, multi-threaded (and thread-safe) capabilities. Event Engine - a very powerful system for producing Multi-Threaded, Asynchronous and Event-Driven programs. Generics Collections - highly efficient Collection Types (Lists, Trees, Maps etc.). Math Library - a library for Unit Conversion, special calculation and other useful mathematics routines. Package Engine - extension of the Streamables Engine supporting the packaging of files together (a VFS of sorts). Shared Streams Library - 100% Thread-Safe Stream Classes (Interfaced too) allowing read/write from multiple Threads. Stream Handling Library - makes working with Streams much easier! Handles Deleting, Inserting, Reading and Writing data.

  • Redux Delphi. [Delphi] Predictable state container for Delphi apps utilizing a unidirectional data flow. Inspired by ReduxJS. Comes with Immutable Generic List.

  • GrijjyFoundation. [Delphi] Foundation classes and utilities that are used throughout the other Grijjy Repositories. // BSON/JSON, IOCP/EPOLL sockets, socket pools, HTTP, HTTP/2, OpenSSL, ProtocolBuffers.

  • unRxLib. [Delphi] Effort to keep RxLibrary (library of 60+ components) actual.

  • QuickLib. [Delphi] [FPC] Quick development library (AutoMapper, LinQ, IOC Dependency Injection, MemoryCache, Scheduled tasks, Config, Serializers, Json Serialize, Chronometer, Threads, Lists, Config, Console services etc) with crossplatform support for Delphi/Firemonkey (Windows,Linux,macOS/IOS/Android) and freepascal (Windows/Linux).

  • KOL. [Delphi] [FPC] (KOL-CE port to FPC) KEY OBJECTS LIBRARY for Delphi (and FPC) - to make applications small and power. This library is freeware and open source. MCK is a kit of mirror classes for the VISUAL project development in Delphi environment using KOL library.

  • cwRuntime. [Delphi] [FPC] Compiler agnostic and cross platform collection of utility libraries for Delphi and FreePascal. It is heavily interface based, offering ARC based memory management features and flexible implementation abstraction, with the goal of forming a source bridge for developers familiar with the two supported compilers. Unit testing, collections/containers, multiplatform interface for loading dynamic libraries, Unicode utils, interfaces for working with streams and buffers, logging, threading, high-precision timers, sockets.

  • minilib. [Delphi] [FPC] cross platform library, Socket wrapper (include SSL and TLS), and Database connection (SQLite, PostgeeSQL, FirebirdSQL, MariaDB), XML reader and writer, ComPort (COM1, COM2 etc).

Multimedia

Audio

  • Audio Tools Library. [Delphi] For manipulating many audio formats file information. // Abandoned since 2005.

  • Delphi ASIO & VST Project. [Delphi] Framework for writing applications using the ASIO interface and VST plugins. It comes with countless DSP algorithms all demonstrated in dozens of examples. // Not very active lately, but the trunk is in a usable state

  • NewAC - New Audio Components (abandoned, list of forks on GH here). [Delphi] Designed to help your Delphi programs perform different sound processing tasks. With NewAC you can play audio stored in many formats (wav, Ogg Vorbis, FLAC, Monkey Audio, WavPack, MP3, Windows WMA, DTS, AC-3 (Dolby Surround), VOB (DVD files)). // Playback, recording, tag read/write, some audio editing tasks and conversions

  • Audorra. [Delphi] [FPC] Digital audio library for Delphi and Freepascal. Using a flexible plugin architecture, it allows you to exchange the audio backend (e.g. WaveOut, OpenAL), add protocol classes (e.g. file, http) and decoders.

  • Delphi-BASS. [Delphi] Delphi's FMX and VCL header/wrapper units for BASS audio library plus add-ons.

Video

  • DSPack (abandoned, active fork is here). [Delphi] Set of components and classes to write Multimedia Applications using MS Direct Show and DirectX technologies.

  • Delphi-OpenCV. [Delphi] Translation of OpenCV library header files in Delphi // Includes FFMPEG headers

  • FFmpeg Delphi/Pascal Headers. [Delphi] [FPC] Open source translation of FFMPEG headers.

  • PasLibVlc. [Delphi] [FPC] Interface to VideoLAN libvlc.dll and VCL player component for Delphi / FreePascal based on VideoLAN

  • fevh264. [FPC] Baseline h.264 encoder. Windows and Linux are supported

Graphic

Image files, free drawing, barcodes etc. There are also some drawing engines in Game dev section

  • Graphics32. [Delphi] [FPC] Designed for fast 32-bit graphics handling on Delphi, Kylix and Lazarus. Optimized for 32-bit pixel formats, it provides fast operations with pixels and graphic primitives, and in most cases Graphics32 outperforms the standard TCanvas classes. It is almost a hundred times faster in per-pixel access and about 2-5 times faster in drawing lines.

  • GraphicEx. [Delphi] Addendum to Delphi's Graphics.pas to enable your application to load many common image formats. This library is primarily designed to load images as background (buttons, forms, toolbars) and textures (DirectX, OpenGL) or for image browsing and editing purposes as long as you don't need to save images.

  • Vampyre Imaging Library. [Delphi] [FPC] Cross-platform native Object Pascal (Delphi and Free Pascal) image loading, saving, and manipulation library.

  • CCR-EXIF (seems abandoned, list of forks on GH here). [Delphi] Library to read and write Exif, IPTC and XMP metadata from JPEG, TIFF and PSD images.

  • KIcon. [Delphi] [FPC] This component makes sense if a more complex manipulation with icons (or better icon files *.ico) than just viewing is needed. Full PNG icon image support, correct rendering, icons with alpha channel.

  • Delphi Twain. [Delphi] [FPC] The library allows you to easily access scanning functions from Delphi and Lazarus.

  • Synopse PDF. [Delphi] [FPC] Fully featured Open Source PDF document creation library for Delphi, embedded in one unit. Pure Delphi code, Delphi 5 up to Delphi 10.3 Rio (and latest version of FPC), for Win32 and Win64 platforms.

  • PowerPDF. [Delphi] VCL component to create PDF document visually. Like Forms, you can design PDF document easily on Delphi or C++Builder IDE.

  • IGDI+. [Delphi] The free open source library allows quick and easy implementations of complex GDI+ applications, in a natural Delphi-friendly code.

  • GLScene. [Delphi] [FPC] OpenGL based 3D library for Delphi, C++Builder and Lazarus. It provides visual components and objects allowing description and rendering of 3D scenes in an easy, no-hassle, yet powerful manner. GLScene is not just an OpenGL wrapper or utility library, it has grown to become a set of founding classes for a generic 3D engine with Rapid Application Development in mind. GLScene allows you to quickly design and render 3D scenes without having to learn the intricacies of OpenGL, if you know how to design a TForm, you'll easily master the basic operations of GLScene. The library comes with a large collections of demos showcasing the ease of use, and demonstrating RAD wasn't done at the expense of CPU/GPU horsepower.

  • SynGdiPlus. [Delphi] [FPC] Enables an application to load and save GIF, TIF, PNG and JPG pictures. It also allows anti-aliased drawing from any TMetaFile. That is, you can play a .emf content using GDI+ instead of GDI, for much better rendering result.

  • Andorra 2D. [Delphi] [FPC] New generation 2D Engine for Delphi and Lazarus. Andorra 2D is capable to use DirectX or OpenGL through graphic plugins. Andorra 2D is built in a very modular way and is yet easy to use.

  • Transparent-canvas. [Delphi] Delphi VCL / Windows project for drawing semi-transparent alphablended graphics. It provides a class similar to TCanvas.

  • Fully-justified-text. [Delphi] Delphi VCL / Windows project for text output, allowing printing of fully justified text with a variety of options.

  • AsciiImage. [Delphi] AsciiImage-Implementation for Delphi by Alexander Benikowski based on AsciiImage by Charles Parnot. Read more on his article. // Creates scalable monochrome image from ASCII pixel map

  • PngComponents. [Delphi] PngComponents is a set of components that allows you to include in your application real PNG files. PNG files on their own do not generate an enourmous advantage, but their support for an alpha-channel does indeed have quite a charm to it.

  • AggPasMod. [Delphi] Modernized Pascal Anti-Grain Geometry. Based on AggPas, which is itself based on the Anti-Grain Geometry, this project offers support for the latest Delphi Versions (XE and above) and contains some helper classes (VCL components and FireMonkey interface). 2D vector graphics library. Basically, you can think of AggPas as of a rendering engine that produces pixel images in memory from some vectorial data. But of course, AGG can do much more than that. // Vector graphic library, renders SVG and much more

  • delphi-shader. [Delphi] Hundreds of graphical effects, and a library that provides GLSL functionality in pure Delphi code. This project produces an executable with more than a hundred real-time graphical effects. All that is a 100% pascal implementation, without the use of external libraries or hardware acceleration.

  • dglOpenGL. [Delphi] [FPC] Delphi / Pascal OpenGL header translation.

  • DelphiZXingQRCodeEx. [Delphi] [FPC] Delphi/Lazarus port of the QR Code generating functionality from ZXing, an open source barcode image processing library.

  • ZXing.Delphi. [Delphi] Native Object Pascal library for Delphi XE to 10.2 Tokyo that is based on the well known open source Barcode Scanning Library ZXing (Zebra Crossing). It is aimed at all of the FireMonkey mobile platforms and, starting from v3.1, it fully supports also Windows VCL applications (no dependencies on FMX.Graphics unit).

  • Zint-Barcode-Generator-for-Delphi. [Delphi] Native Delphi port of Zint-Barcode-Generator.

  • QuickImageFX. [Delphi] Delphi library for simplifying image load/save, conversion and transformation. Load/save png, jpg, gif and bmp. get image from different resources: file, stream, http, imagelist, associated windows icon, executable file icon, etc. Rotate, flip, grayscale and many other transformations.

  • NativeJpg. [Delphi] Fully object-oriented Pascal implementation that allows to read and write Jpeg files. You can use this software to read and write Jpeg images from files or streams. It supports baseline and progressive Jpeg, support for metadata, as well as all conceivable lossless operations.

  • OpenGL Pascal Toolkit. [FPC] Easy to use native pascal toolkit that allows to create and manage OpenGL contexts in a platform independent way.

  • BGRAbitmap. [Delphi] [FPC] Drawing routines with transparency and antialiasing with Lazarus. Offers also various transforms. These routines allow to manipulate 32bit images in BGRA format or RGBA format (depending on the platform).

  • Clipper. [Delphi] Library performs line & polygon clipping - intersection, union, difference & exclusive-or, and line & polygon offsetting

  • dexif. [Delphi] [FPC] Lazarus port of Delphi EXIF Library to extract Exif Information from Images

  • FontIconEditor. [Delphi] Simple component editor that allow you to add icons to a TImageList from a font. You can use any font you want.

  • IconFontsImageList. [Delphi] Extended ImageList for Delphi (VCL & FMX) to simple use and manage Icon Fonts (with GDI+ support)

  • Mundus. [Delphi] Software renderer written in Delphi. Currently supports only Win32 as it makes use of some inline assembler.

  • Image32. [Delphi] [FPC] (Website) 2D graphics library written in Delphi Pascal. It provides an extensive range of image manipulation functions and includes a line and polygon renderer supporting a wide range of brush filling options.

  • SVGIconImageList. [Delphi] Four engines to render SVG (Delphi TSVG, Delphi Image32, Direct2D or Cairo) and four components to simplify use of SVG images (resize, fixedcolor, grayscale, etc).

  • Skia4Delphi. [Delphi] Cross-platform 2D graphics API for Delphi platforms based on Google's Skia Graphics Library. It provides a comprehensive 2D API that can be used across mobile, server and desktop models to render images.

  • PdfiumLib. [Delphi] Example of a PDF VCL Control using PDFium

  • llPDFLib. [Delphi] Pure Object Pascal library to create PDF documents. This library doesnโ€™t use any DLL or external third-party software to generate PDF files. Library includes TPDFDocument component with properties and methods like Delphiโ€™s TPrinter but is designed to generate a PDF file.

Game dev

There are also some drawing engines suitable for game dev in Graphic section

  • RecastNavigation. [Delphi] Navigation mesh construction toolset for games. Recast is accompanied with Detour, path-finding and spatial reasoning toolkit. You can use any navigation mesh with Detour, but of course the data generated with Recast fits perfectly. This is a port of the original RecastNavigation written in C++.

  • Kraft Physics Engine. [Delphi] [FPC] Open source Object Pascal physics engine library that can be used in 3D games. Compatible with: Delphi 7-XE7 (but not with the Android and iOS targets), FreePascal >= 2.6.2 (with almost all FPC-supported targets including Android and iOS)

  • ZenGL. [Delphi] [FPC] OpenGL Cross-platform game development library written in Pascal, designed to provide necessary functionality for rendering 2D-graphics, handling input, sound output, etc. // Not updated lately, but is working ok

  • Asphyre aka Platform eXtended Library (PXL). [Delphi] [FPC] Cross-platform framework for developing 2D/3D video games, interactive and scientific applications. It aids the developer with mathematics, hardware control, resource management, displaying real-time graphics and text, handle user input and network communication capabilities.

  • CrystalPathFinding. [Delphi] [FPC] Simple and effective library with an open source intended for the searching of the shortest paths by algorithms A/WA for maps based on tiles with 4 (simple), 8 (diagonal/diagonalex) or 6 (hexagonal) neighbors.

  • Allegro-Pas (GitHub). [Delphi] [FPC] Wrapper to use the Allegro game library with Pascal/Delphi.

  • Castle Game Engine. [Delphi] [FPC] Complete Pascal Game Engine. Cross-platform 3D and 2D game engine with a lot of graphic effects and a scene graph based on X3D.

  • TileEngine. (GitHub) [Delphi] [FPC] OOP Pascal Wrapper and bindings for Tilengine 2D retro graphics engine. Tilengine is a cross-platform 2D graphics engine for creating classic/retro games with tilemaps, sprites and palettes. Its scanline-based rendering algorithm makes raster effects a core feature, a technique used by many games running on real 2D graphics chips.

  • SDL2 (GitHub). [Delphi] [FPC] Pascal SDL 2 Headers. Simple DirectMedia Layer is a cross-platform development library designed to provide low level access to audio, keyboard, mouse, joystick, and graphics hardware via OpenGL and Direct3D.

  • SFML. [Delphi] [FPC] Pascal SFML Headers. SFML provides a simple interface to the various components of your PC, to ease the development of games and multimedia applications. It is composed of five modules: system, window, graphics, audio and network. Currently Delphi and FPC/Lazarus are supported. However, due to a compiler incompatibility with the Delphi compiler (solved with workarounds), FPC is recommended at the moment.

  • pasvulkan. [Delphi] [FPC] Vulkan header generator, OOP-style API wrapper, framework and prospective Vulkan-based game engine for Object Pascal.

  • DarkGlass. [Delphi] DarkGlass is a general purpose game engine written using Delphi.

  • JEDI-SDL. [Delphi] [FPC] Pascal headers for SDL from JEDI. Works with Delphi, Kylix, Free Pascal, Gnu Pascal and TMT Pascal.

  • Apus Game Engine. [Delphi] [FPC] Cross-platform library for making mostly 2D games, GUI applications and web services. Supports UI, text rendering, on-fly localization, particles, basic scripting and many lower level subsystems. Uses OpenGL/GLES and DirectX.

  • Delphi3D Engine. [Delphi] A 3D-graphic and game engine for Delphi and Windows

  • Ray4Laz. [FPC] A complete header translation (binding) of raylib 4.0 to Pascal.

Communications

Network

Socket communication, network protocols, encodings, etc

  • Internet Component Suite. [Delphi] Asynchronous-based library composed of various Internet components and applications. Clients/servers for TCP, UDP, raw sockets, FTP, SMTP, POP3, NNTP, HTTP, Telnet and more. Supports SSL and TLS with the help of OpenSSL. Also includes Mime Decoder, SHA1/MD4/MD5 hashes, DES encryption.

  • Indy. [Delphi] [FPC] Network components for Delphi, C++Builder, Delphi.NET, and FreePascal // All-in-one network library based on blocking sockets and threads. Included in default RAD studio installation since 2006.

  • Ararat Synapse. [Delphi] [FPC] Pascal TCP/IP Library for Delphi, C++Builder, Kylix and FreePascal. Deals with network communication by means of blocking (synchronous) sockets or with limited non-blocking mode. This project not using asynchronous sockets! The Project contains simple low level non-visual objects for easiest programming without problems (no required multithread synchronisation, no need for windows message processing, etc) Great for command line utilities, visual projects, NT services, etc // TCP, UDP, ICMP, RAW; ICMP, DNS, SMTP, HTTP, SNMP, NTP, FTP, LDAP, NNTP, Telnet; IPv6; SOCKS proxy; SSL/TLS (via OpenSSL or Windows CryptoApi); PING; character code transcoding; MIME coding and decoding; CRC16, CRC32, MD5 and HMAC-MD5.

  • Internet Professional. [Delphi] Set of VCL components providing Internet connectivity for Borland Delphi & C++Builder. iPRO includes POP3, SMTP, NNTP, FTP, HTTP, Instant Messaging, & HTML viewer components, as well as components for low-level socket access. // Seems abandoned but contains pretty large set of features incl ICMP, POP, SMTP, HTTP, NNTP, NTP, FTP, SMTP; HTML parser and viewer; MIME utils; cookies, certificates, caching, encryption etc

  • SynCrtSock. [Delphi] [FPC] Features several sockets and HTTP client-server classes, including a high-performance http.sys based server under Windows, and a new thread-pool powered socket server. // Also implements http.sys binding under Windows and cURL binding under nix

  • TML Messaging Suite. [Delphi] [FPC] Network messaging library for rapid development of extensible and scalable interfaces. Based on the peer to peer standard protocol BEEP (Blocks Extensible Exchange Protocol), defined in RFC3080 and RFC3081. libTML is suitable for many use cases and communication patterns. Equipped with a type safe data API, TML can transport hierarchical data structures fast and reliable. // The libTML Object Pascal Components are not only a language binding to the core library but a complete set of non visual components to simplify the usage of libTML with Embarcadero RAD Studio and Lazarus.

  • DMVCFramework. [Delphi] Popular and powerful framework for web solution in Delphi.

  • Delphi IOCP. [Delphi] Implements several network classes based on Windows IOCP technology. Socket, HTTP, Ntrip servers and clients. // Quite well documented and good styled code but Chinese only.

  • delphi-aws-ses. [Delphi] Amazon Simple Email Service (AWS SES) library for Delphi applications.

  • delphi-slackbot. [Delphi] Delphi library to send messages on Slack using slackbot.

  • Kitto. [Delphi] Allows to create Rich Internet Applications based on a data model that can be mapped onto any database. The client-side part uses ExtJS (through the ExtPascal library) to create a fully AJAX application, allowing you to build standard and advanced data-manipulating forms in a fraction of the time. Kitto is aimed at Delphi developers that need to create web application without delving into the intricacies of HTML, CSS, JavaScript or learning to use a particular library such as ExtJS, yet it allows access to the bare metal if required.

  • Daraja Framework. [Delphi] [FPC] Lightweight HTTP server framework for Object Pascal (Delphi 2009+ / Free Pascal 3.0). Implementing RESTful services is supported via the daraja-restful extension.

  • Alcinoe. FTP/Http/NNTP/POP3/SMTP, ISAPI, WinInet Http/FTP clients.

  • Fundamentals Code Library. Blocking TCP client/server, HTTP(S) via SSL3/TLS1.0/TLS1.1/TLS1.2 (fully native).

  • mORMot. RESTful ORM and SOA services via interfaces over high performance HTTP server, MVC/MVVM web sites

  • SDriver. [Delphi] Delphi wrapper for Slack API.

  • Hprose for Delphi/Lazarus. [Delphi] [FPC] High Performance Remote Object Service Engine. It is a modern, lightweight, cross-language, cross-platform, object-oriented, high performance, remote dynamic communication middleware. It is not only easy to use, but powerful. This project is the implementation of Hprose for Delphi/Lazarus.

  • TelegAPI. [Delphi] Library for working with Telegram messenger Bot API in Delphi.

  • fp-telegram. [FPC] Library for working with Telegram bots API in FreePascal/Lazarus.

  • DelphiZeroMQ. [Delphi] Delphi implementation of ZeroMQ Majordomo protocol and CZMQ high level binding.

  • GrijjyFoundation. IOCP/EPOLL sockets, socket pools, HTTP, HTTP/2, OpenSSL, ProtocolBuffers.

  • STOMP Client. [Delphi] [FPC] STOMP client for Embarcadero Delphi and FreePascal. The project can use INDY (Delphi) or Synapse (Delphi or FreePascal).

  • delphiXero. [Delphi] XERO cloud accounting API for Delphi.

  • BesaSoap. [Delphi] The BesaSoap library is designed to help programmers develop faster and more native web service client applications. Represents C# or Java like native class support, nullable data types and custom attributes.

  • IndySoap. [Delphi] Open Source Library for implementing Web services using Delphi/CBuilder Compilers. IndySoap isn't tied to Indy for transport services, though Indy based transport services are included.

  • Fano Framework. [FPC] Web application framework for modern Pascal programming language. It is written in Free Pascal.

  • Internet Tools. XPath/XQuery/JSONiq/CSS/HTML; functions to perform HTTP/S requests on Windows/Linux/macOS/Android, an XSLT-inspired webscraping language, and an auto update class.

  • Delphi Cross Socket. [Delphi] Delphi cross platform socket library (Chinese). Uses different IO models for different platforms: IOCP (Windows), KQUEUE (FreeBSD(macOS, iOS, etc)), EPOLL (Linux(Linux, Android)).

  • ToroKernel. [FPC] This is a library-kernel that allows freepascal applications which are specially ported to run alone in the system. Toro is compiled within the user's application thus resulting in a single binary that can boot on baremetal or as a guest in a modern hypervisor,e.g., hyperv, kvm, qemu, firecraker. ToroKernel addresses the development of microservices by providing a dedicated API.

  • Horse. [Delphi] [FPC] Fast and minimalist web framework. Horse allows to create powerful RESTful servers without effort. Focused on microservices.

  • Bauglir WebSocket. [Delphi] [FPC] WebSocket server/client implementation based on Ararat Synapse.

  • Delphi-RabbitMQ. [Delphi] RabbitMQ driver for Delphi

  • DelphiGrpc. [Delphi] Implementation of the realtime and streaming gRPC protocol

  • Google API for Delphi. [Delphi] Google API for Delphi

  • Delphi JOSE and JWT Library. [Delphi] Delphi implementation of JOSE (JSON Object Signing and Encryption) and JWT (JSON Web Token)

  • WiRL. [Delphi] Project was created to simplify RESTful service implementation in Delphi but, more importantly, to enable maximum interoperability with REST clients written in other languages and tools

  • OpenSSL. [Delphi] Delphi wrapper for OpenSSL

  • Thrift Delphi Software Library. [Delphi] Lightweight, language-independent software stack for point-to-point RPC implementation. Thrift provides clean abstractions and implementations for data transport, data serialization, and application level processing. The code generation system takes a simple definition language as input and generates code across programming languages that uses the abstracted stack to build interoperable RPC clients and servers. Thrift makes it easy for programs written in different programming languages to share data and call remote procedures. With support for 28 programming languages, chances are Thrift supports the languages that you currently use.

  • Delphi Modbus. [Delphi] [FPC] Implementation of a ModbusTCP protocol master and slave over TCP/IP.

  • RESTRequest4Delphi. [Delphi] RESTRequest4Delphi is a API to consume REST services written in any programming language. Designed to facilitate development, in a simple and minimalist way.

  • LazWebsockets. [FPC] This provides a small Websocket server and client implementation written for the FPC and Lazarus. It is fully based upon the fcl ssockets unit and therefore independent from any additional dependencies except from the FCL.

  • NetCom7. [Delphi] This set of components is the fastest possible implementation of socket communications, in any language; this is an extremely optimised code on TCP/IP sockets.

  • VK API. [Delphi] Library for working with Vkontakte (Russian social network) API in Delphi. Full API (with Bot samples).

  • AWS SDK for Dephi. [Delphi] Unofficial AWS (Amazon Web Services) SDK for Delphi. WARNING! Requires paid libs from TMS

  • Voice Communication. [Delphi] Voice Communicator Components. // Implement RTP, RTSP, SHOUT, SNTP, STUN protocols and multiple audio format endocing/deconding

  • libPasCURL. [Delphi] [FPC] Bindings and wrapper around cURL library. libcurl is the library is using for transferring data specified with URL syntax, supporting HTTP, HTTPS, FTP, FTPS, GOPHER, TFTP, SCP, SFTP, SMB, TELNET, DICT, LDAP, LDAPS, FILE, IMAP, SMTP, POP3, RTSP and RTMP.

  • Delphi_SChannelTLS. [Delphi] Helper functions and socket classes to perform TLS communication by means of WinAPI (SChannel). Includes Overbyte ICS TWSocket descendant class.

  • Delphi-Kafka. [Delphi] High performance Delphi client based on Librdkafka with full protocol support.

  • DelphiKafkaClient. [Delphi] Cross platform Delphi client/wrapper for Apache Kafka. Windows (i386/x64) and Linux (x64) are supported. Tested on Delphi 10.4, but should work with all modern Delphi releases. While it appears to work as expected, the project is a proof of concept and has never been tested in production.

  • KafkaGate. [FPC] Apache Kafka Free Pascal bindings using librdkafka and ZeroMQ.

  • delphi-mqtt. [Delphi] MQTT server and client components for Delphi based on ICS network components.

  • mqtt. [FPC] Message Queue Telemetry Transport (MQTT) client and server component pack for Lazarus/FPC with demo applications. For the client and server demo applications the LNet components are used.

  • LNet. [FPC] Lightweight Networking library written in Free Pascal. Asynchronous, TCP/UDP communications classes. LTCP, LUDP, LTELNET, LFTP and LSMTP are example programs.

  • NamedPipeExchange. [Delphi] Server and client classes for communication via named pipes. Based on FWIOCompletionPipes unit.

  • delphizmq. [Delphi] [FPC] This is a binding for ZeroMQ. Should work with Delphi7+ versions and with FPC 2.6.0. The package contains a wrapper (zmq.pas), and a higher level api (zmqapi.pas). It should work with ZMQ 2.2.x, and with 3.2.x. For version 2.2.x undefine zmq3, in zmq.inc. The dll's are not part of this repo, you can download the appropriate from the official distro, and rename it to libzmq.dll.

Serial port

  • Synaser. [Delphi] [FPC] Library for blocking communication on serial ports. It is non-visual class as in Synapse, and programmer interface is very similar to Synapse.

  • Async Professional (Newest and maintained version for recent compiler version only). [Delphi] Comprehensive communications toolkit for Embarcadero Delphi, C++Builder, & ActiveX environments. It provides direct access to serial ports, TAPI and the Microsoft Speech API (TTS/Speech recognition). It supports faxing, terminal emulation, VOIP, RAS dial & more. // Seems outdated (last update in 2011) but adapted to XE and should be easy to use in newer versions. The project is also very thoroughly documented. Second link points to an adapted version for newest compiler versions.

  • TComPort. [Delphi] Delphi/C++ Builder serial communications components. It is generally easy to use for basic Serial Communications purposes. // Seems abandoned since 2011

GUI

Visual components

Control packs

Large sets of GUI controls

  • Cindy components. [Delphi] Packages with 71 components: VCL controls (labels, buttons, panels, Edits, TabControls, StaticText) with features like background gradient, colored bevels, wallpaper, shadowText, caption orientation etc.

  • Orpheus (Newest and maintained version for recent compiler version only). [Delphi] Award-winning UI toolkit for Borland Delphi & C++Builder. It contains over 120 components covering everything from data entry to calendars and clocks. Other noteworthy components include an Object Inspector, LookOut bar & report views. // Advanced edits, comboboxes, grids + component (de)serializers. GUI components look rather old-style, theme support might be limited. Package contains many demos but no docs seem available. Second link points to an adapted version for newest compiler versions.

  • KControls. [Delphi] [FPC] Control components. All controls have been written with the aim to become both cross-IDE compatible (Delphi/C++Builder VCL and Lazarus LCL) and cross-platform compatible in Lazarus. // Most useful are TKGrid with its DB-aware heritage TKDBGrid โ€” a very full-featured grid implementation incl. inplace editors. There's also hex editor, print preview, editors, labels, buttons etc.

  • D.P.F Delphi Android / D.P.F Delphi iOS native components. [Delphi] D.P.F Delphi Native Components, 100% iOS Performance and styles. Develop iPhone & iPad & iPod Touch applications with fast native performance and native styles. Use native Android controls and services. Fast native performance. Mixed with FM VCL controls. Can be quick updated with latest Android controls & features.

  • Essentials. [Delphi] Contains 13 native VCL controls for Embarcadero Delphi and C++Builder. The controls include drop-down calendars and calculators, roll-up dialogs, 3-D labels, tiled backgrounds, scrolling messages, menu buttons, and more.

  • FreeEsVCLComponents. [Delphi] Free library of VCL components for Delphi and C++Builder. This new controls and components to improve the appearance applications and to better user experience. Components support visual styles and has modern style. All components has best support transparency, not flicker, and has support interesting possibility for double buffering for TGraphicControl heirs.

  • SpTBXLib. [Delphi] Add on package for Toolbar2000 components, it adds the following features: Skins, Unicode support, Custom painting events and many more.

  • Kastri. [Delphi] Cross-platform library which builds upon the existing RTL and FMX libraries in Delphi. Supports a number of newer APIs that you won't find in FMX/RTL, and "backfills" for missing APIs

  • DelphiUCL. [Delphi] UWP controls for Delphi VCL.

  • JPPack. [Delphi] [FPC] Collection of VCL components for Delphi and LCL components for Lazarus and CodeTyphon - buttons, panels, LinkLabel, ProgressBar, ColorComboBox, ColorListBox, Timer and other

  • DDuce. [Delphi] Components, modules, extensions and primitives using Delphi new language features like operator overloading, attributes, generics, anonymous methods and extended RTTI providing some new powerful tools to extend the developer's creativity. // Property editors, grids, XML Tree, etc

Single controls

  • EasyListView (seems abandoned, active fork on GH here). [Delphi] Part of VirtualShellTools for the Listview but can be used for a TListview Replacement that is faster and more customizable. // Feature-rich Listview implementing virtual (callback-based) MVC paradigm.

  • VirtualTreeView. [Delphi] (VirtualTreeView-Lazarus port to FPC [FPC]). Treeview control built from ground up. Many years of development made it one of the most flexible and advanced tree controls available today. // Extremely flexible visual component implementing virtual (callback-based) MVC paradigm. Could be also used as a listview or grid. Used in RAD Studio GUI.

  • Delphi Chromium Embedded. [Delphi] Embedding Chromium in Delphi, tested on Delphi 2010, XE, XE2, Delphi 7. // Several Chromium DLLs required

  • TChromeTabs. [Delphi] Comprehensive implementation of Google Chrome's tabs for Delphi 6 - Delphi 10.1 Berlin

  • TFrameStand. [Delphi] Easily use TFrame(s) in your FireMonkey (FMX) applications to gain visual consistency though the whole user experience and easily add modern looking elements like effects and transitions.

  • TPrintPreview. [Delphi] Print Preview Component for Delphi Vcl Win32/Win64

  • VolgaDB. [Delphi] Pretty customizable DBgrid for Delphi. TCustomGrid descendant. CheckBox, ComboBox column styles. Also includes TVolgaDBEdit that replaces TDBEdit, TDBComboBox, TDBLookupCombo, TDBLookupTree andTDBDatePicker in one component. TVolgaDBEdit may be DB-aware and non DB-aware. // Seems abandoned since 2013

  • TTreeListView. [Delphi] [FPC] This component is a mix between TTreeView and TListView and can paint a tree whose nodes have additional information sorted in columns.

  • neTabControl. [Delphi] FireMonkey control for Delphi. It builds on the native TabControl and adds a number of features.

  • ATTabs. [Delphi] [FPC] Delphi/Lazarus component for lite tabs. OS independent, fully custom drawn.

  • zControls. [Delphi] Contains TzObjectInspector - a powerful object inspector with many features.

  • RiverSoftAVG Charting Component Suite. [Delphi] Free (for non-commercial use) with source charting Suite for adding charts and graphs to your programs. For Delphi 2010-Tokyo (Win32/Win64/macOS/iOS/Android) and Appmethod (Object Pascal).

  • DzHTMLText. [Delphi] [FPC] Visual component that allows you to specify a formatted text in a label, using almost the same syntax used in HTML code.

  • SMDBGrid component. [Delphi] The successor of TDBGrid with the extended features. Is able to display multiline wordwrap column titles, checkboxs for boolean fields, a convenient select of records from the keyboard and mouse via checkboxs, extanded Indicator column, fixing of columns, an opportunity to exclude insert and delete of records in the DBGrid, own standard PopupMenu, save/restore of a column states, processing of additional events etc. Multilanguage resources.

  • decTreeView. [Delphi] The decTreeView library is an alternative implementation of the TreeView (SysTreeView32) control

  • TeeGrid. [Delphi] [FPC] Lightweight full-featured Grid / Tabular control. For Embarcadero RAD Studio 2009 and up to Sydney 10.4, Delphi and C++, VCL and Firemonkey frameworks (all platforms: Windows 32 and 64 bit, Mac OSX, Android and iOS), and Lazarus FreePascal (Windows, Linux, etc)

  • AXW Ribbon. [Delphi] Ribbon component with the Office 2016 style. Works with Delphi 7 and up to the current Delphi version. Will probably compile with Delphi 6 and possibly Delphi 5.

Editors

  • SynEdit (mirror at GitHub). [Delphi] Syntax highlighting edit control, not based on the Windows common controls. SynEdit is compatible with both Delphi and Kylix

  • LazEdit. [FPC] General text editor with syntax highlighting and tools to help edit HTML.

  • ATSynEdit. [FPC] Multi-line editor control for Lazarus including syntax highlighting.

  • QDSEquations. [Delphi] Equation editor for Delphi and Lazarus that allows you to enter and display math formulas of any complexity, from simple Greek symbols to matrixes and complex integral expressions.

  • TBCEditor. [Delphi] A syntax highlighting edit control for RAD Studio (Delphi/C++ Builder) with code folding, completion proposal, matching pair, minimap, sync edit, word wrap, etc. External highlighter and color scheme files are in JSON format which can be also loaded from a stream.

Viewers

  • ATViewer (mirror at GitHub). [Delphi] Delphi components to view various file types: text, binary, images, multimedia, webpages, etc. // Used in Universal Viewer software. Could be used to display hex dumps, features fast display of unlimited size files/streams. Supports Total Commander Lister plugins.

  • ATImageMap (mirror at GitHub). [Delphi] Component designed to show many images (parts of the whole image) as a single map. For example, you may have array of images, 200 by X, and 100 by Y and control will show them as a single map. Component also allows to draw paths: each path consists of many lines, points, and icons.

  • HtmlViewer. [Delphi] [FPC] Delphi/Lazarus HtmlViewer/FrameViewer. // Html visualiser supporting majority of tags, inline styles and CSS.

  • SciDe. [Delphi] [FPC] Sciter (Embeddable HTML/CSS/script engine) wrapper for Delphi.

  • ATBinHex for Delphi [Delphi], ATBinHex for Laz. [FPC] Viewer for files of unlimited size like in Total Commander.

  • ATImageBox for Delphi [Delphi], ATImageBox for Laz. [FPC] TScrollBox with embedded TImage. Control can auto position image inside.

  • CEF4Delphi. [Delphi] [FPC] Project to embed Chromium-based browsers in applications made with Delphi or Lazarus/FPC

  • WebView4Delphi. [Delphi] [FPC] Project to embed Chromium-based browsers in applications made with Delphi or Lazarus/FPC for Windows.

Other GUI

  • GMLib (Google Maps Library) (seems abandoned, active fork on GH here and here). [Delphi] Components for Delphi/C++ Builder that encapsulate the GoogleMaps API to administrate a map, markers, polygons, rectangles, polylines, etc. All objects that you can put into a map.

  • VCL Styles Utils. [Delphi] Collection of classes and style hooks, which extend, fix QC reports and add new features to the VCL Styles. // Collection of patches/enhancements that promote stock VCL style engine to a new level. Styling for Inno Setup and NSIS also available.

  • TaskbarListComponents. [Delphi] Set of components designed as Delphi wrappers for the Windows 7 Taskbarlist Interfaces (e.g. ITaskbarlist3) // Requires JVCL

  • TFireMonkeyContainer. [Delphi] Delphi VCL component to host a FMX HD or 3D form. It means you can embed a FireMonkey (FMX) form as a control in a VCL form, so you can design a FMX form and use it in your VCL app.

  • PascalSCADA. [Delphi] [FPC] Set of components (framework) for Delphi/Lazarus to make easy the development of industrial applications (HMI=Human Machine Interface/SCADA=System Control And Data Acquisition). It runs on Windows, Linux and FreeBSD.

  • Windows Ribbon Framework for Delphi. [Delphi] This Delphi library allows Delphi developers to use of the Windows Ribbon Framework in their Delphi applications. This library uses the native Windows library to implement the Ribbon functionality. It does not emulate the Ribbon user interface like other Delphi component sets do (or Delphi's built-in Ribbon emulation components).

  • DKLang. [Delphi] DKLang Localization Package is a set of classes intended to simplify the localization of applications written in Delphi.

  • GNU Gettext for Delphi, C++ and Kylix. [Delphi] GNU GetText translation tools for Borland Delphi and Borland C++ Builder.

  • OpenWire. [Delphi] The library allows writing advanced VCL and FireMonkey components for rapid codeless application development. The components developed with the library allow creation of complex applications with zero lines of program code.

  • SynTaskDialog. [Delphi] [FPC] Implement TaskDialog window (native on Vista/Seven, emulated on XP)

  • AnyiQuack. [Delphi] jQuery-like control animation framework.

  • TLanguages. [Delphi] Localization tool for VCL and FMX.

  • BitMapEditor - Delphi. [Delphi] Single-form, simple bitmap editor for Delphi.

  • BearLibTerminal. [Delphi] Provides a pseudoterminal window with a grid of character cells and a simple yet powerful API for flexible textual output and uncomplicated input processing. // Multiplatform dynamic library that has Delphi bindings

  • Dam. [Delphi] [FPC] Delphi and Lazarus Message Dialogs with Formatted Text.

  • Windows 7 Taskbar Components. [Delphi] One of the most notable feature in Windows 7 is a new Windows taskbar. It offers a new way of controlling your desktop, managing your windows, and launching applications.

Database

  • ZeosLib. [Delphi] [FPC] Set of database components for MySQL, PostgreSQL, Interbase, Firebird, MS SQL, Sybase, Oracle and SQLite.

  • Unified Interbase. [Delphi] Set of components to use Interbase, FireBird and YAFFIL. These components were born from the need to use Interbase, FireBird or Yaffil indifferently as fast as possible in a Multithreading environment, a Server for example.

  • ASQLite. [Delphi] Delphi SQLite set of DAC components from aducom software, based on their latest release for Delphi 2009, and updated to support newer editions of Delphi as included in RemObjects Data Abstract for Delphi.

  • TxQuery. [Delphi] TDataSet descendant component that can be used to query one or more TDataSet descendant components using SQL statements. It is implemented in Delphi 100% source code, no DLL required, because it implements its own SQL syntax parser and SQL engine.

  • Delphi-ORM. [Delphi] Object-Relational Mapping for Delphi XE2-7 (Win32). Supports for FirebirdSQL, SQLServer and SQLite3.

  • delphimemcache. [Delphi] Implements a thread safe client for memcached. // Requires Indy 10

  • SynDB (docs). [Delphi] [FPC] High performance direct access to SQLite3, Oracle, MSSQL, PostgreSQL, Firebird, MySQL, ODBC, OleDB, including remote HTTP connection and direct JSON support.

  • SynMongoDB (docs). [Delphi] [FPC] Offers direct low-level access to any MongoDB server, its custom data types, JSON or via TDocVariant custom variant document storage.

  • DSharp. [Delphi] Small library for providing data binding in Delphi. It does not require special components to data bind to properties. It also provides dependency injection, MVVM and more interesting utilities.

  • ghORM. [FPC] Object Relational Mapping unit to ease database access from Free Pascal, by abstracting the backend and simple data retrieval (with filtering), insertion and update.

  • tDBF. [Delphi] [FPC] Native dBASE III+, dBase IV and dBase 2k data access component for Delphi, BCB, Kylix, FreePascal. It allows you to create very compact database programs which don't need any special installer programs. The DB engine code is compiled right into your executable.

  • Redis client [Delphi] Delphi Redis Client version 2 is compatible with Delphi 10.1 Berlin and better. WARNING! If you use an older Delphi version you have to use Delphi Redis Client Version 1 wich works for Delphi 10 Seattle, XE8, XE7, XE6 and XE5 (should works also with older versions). This client is able to send all Redis commands and read the response using an internal parser.

  • QDAC3 (SVN: svn://www.qdac.cc/QDAC3). [Delphi] Stands for quick data access components. Useful units such as QJson (easy to use json unit), QWorker (job delivery) etc. // Description and comments in Chinese, author is not good at English. Haven't tested this library by myself.

  • InstantObjects. [Delphi] Integrated framework for developing object-oriented business solutions in Delphi. The framework provides the foundation for the development process as well as the engine that powers the final application. InstantObjects offers: Model realization in the Delphi IDE via integrated two-way tools; Object persistence in the most common relational databases or flat XML-based files; Object presentation via standard data-aware controls.

  • Alcinoe. Firebird/MySQL/SQLite3/Memcached/MongoDb/SphinxQL.

  • SynBigTable. [Delphi] [FPC] Class used to store huge amount of data with fast retrieval.

  • tiOPF. [Delphi] [FPC] Object Persistent Framework written in Object Pascal, for use with Delphi and Free Pascal (FPC) compilers. tiOPF simplifies the mapping of an object oriented business model into a relational database. Persistence layers are available for Firebird, Oracle, MS SQL Server, MySQL, PostgreSQL, SQLite, NexusDB, XML, CSV, TAB, Remote (via HTTP) and many more. It also allows you to use your choice of database connection components, like IBX, dbExpress, DOA, SqlDB, FBLib etc.

  • hcOPF. [Delphi] Object Persistent Framework written in Embarcadero's Delphi (Object Pascal). This Value Type Framework provides a base class (ThcObject) composed of attribute objects that can be automatically persisted to an object store (normally an RDBMS).

  • Marshmallow. [Delphi] Object-Relational Mapping for Delphi XE2-7 (Win32) inspired by .NET micro ORM's (mostly by PetaPoco) and Java Hibernate. Developed by Linas Naginionis. Supports SQLite, Sybase ASA, SQL Server, Firebird, Oracle, MySQL, PostgreSQL, MongoDB. Uses Spring Framework. In active development.

  • DelphiCassandra. [Delphi] Delphi driver classes to communicate with Cassandra database.

  • DelphiCouchbase. [Delphi] Delphi driver classes to communicate with Couchbase database.

  • DelphiMongoDB. [Delphi] Delphi driver classes to communicate with MongoDB database.

  • QuickORM. [Delphi] [FPC] QuickORM is a simple RestServer and Restclient based on mORMot framework. Provides a fast implementation of client-server applications in few minutes.

  • iORM. [Delphi] Delphi ORM interface based useful to develop desktop and mobile application.

  • d-ORModel. [Delphi] ORM for Delphi, based on models and object fields. LINQ support, fully typed and compile time checks.

Scripting

Using script engine in your applications

  • Pascal Script. [Delphi] [FPC] Free scripting engine that allows you to use most of the Object Pascal language within your Delphi or Free Pascal projects at runtime. Written completely in Delphi, it is composed of a set of units that can be compiled into your executable, eliminating the need to distribute any external files. Pascal Script started out as a need for a good working script, when there were none available at the time.

  • DWScript. [Delphi] Object-oriented scripting engine for Delphi based on the Delphi language, with extensions borrowed from other Pascal languages (FreePascal, Prism, etc.). It introduces a few Pascal language extensions of its own as well.

  • Delphi-JavaScript. [Delphi] JavaScript engine for delphi based on Mozilla's Spidermonkey. // Spidermonkey DLL required

  • Blaise. [Delphi] Open-source object-oriented scripting language. Language features: Object-oriented; Unicode support; Optional typing, ie dynamic or static typing; Richly typed; Higher-level mathematics support, for example Complex numbers, Rational numbers and Matrices; Virtual Machine architecture; Co-routines; Familiar language syntax, influenced by Object Pascal, Python and Ada.

  • SpiderMonkey. [Delphi] [FPC] Binding for Mozilla JavaScript engine, including JIT and multi-threading, with easy objects access via Delphi variants. // Spidermonkey DLL required

  • BESEN. [Delphi] [FPC] Complete ECMAScript Fifth Edition Implementation in Object Pascal, which is compilable with Delphi >=7 and Free Pascal >= 2.5.1 (maybe also 2.4.1).

  • Python for Delphi (P4D). [Delphi] [FPC] Set of free components that wrap up the Python dll into Delphi and Lazarus (FPC). They let you easily execute Python scripts, create new Python modules and new Python types. You can create Python extensions as dlls and much more

  • CrystalLUA. [Delphi] Lua binding (Delphi6-2007). // LUA DLL required

  • lua4delphi. [Delphi] Delphi binding for Lua 5.1 language. // LUA DLL required

  • chakracore-delphi. [Delphi] [FPC] Delphi and Free Pascal bindings and classes for Microsoft's ChakraCore JavaScript engine library.

  • VerySimple.Lua. [Delphi] Lua Wrapper for Delphi XE5-D10.1 which automatically creates OOP callback functions for Delphi <-> Lua. // LUA DLL required

  • QuickJS-Engine. [Delphi] [FPC] Delphi and Free Pascal bindings for Bellard's QuickJS JavaScript Engine.

Machine Learning

Machine learning and neural networks

  • noe. [FPC] Framework to build neural networks in pure object pascal.

Non-visual Classes/Utils

Compression

  • FWZip. [Delphi] Classes to work with Zip archives using Store and Deflate methods, supports ZIP64, DataDescryptors, PKWARE encryption, NTFS attributes, Utf8 in filenames. // Uses stock ZLIB.obj that gets compiled into binary. Comments and description in Russian.

  • Abbrevia (Newest and maintained version for recent compiler version only). [Delphi] Advanced data compression toolkit for Delphi and C++Builder. Supports PKZIP, Microsoft CAB, tar, gzip, and bzip2 archives, and can create self-extracting executables. On Windows it also provides Delphi wrappers for the LZMA, Bzip2, and WavPack SDKs, and PPMd decompression. Abbrevia also has several visual controls that simplify displaying and manipulating archives, including treeview and listview components. Features: Unicode filenames in all archive formats; Decompress most .zipx and legacy (PKZIP v1) zips; ZIP64 support for archives larger than 2GB; Spanned and split zip archives; Cross-platform (Windows, OS X, and Linux); No DLLs required; Includes COM component; Extensive documentation // Second link points to an adapted version for newest compiler versions.

  • SynLZ SynLZO SynZip PasZip. [Delphi] [FPC] Several high speed compression units, featuring ZIP/LZ77 Deflate/Inflate, LZO and SynLZ algorithm, in pascal and optimized assembler.

  • Delphi zlib. [Delphi] Wrapper for zlib.obj originally used by Borland. Delphi up to XE3 supported.

  • DIUcl. [Delphi] DIUcl is a lossless compression library with extremely fast and small (200 bytes only!) ASM decompressor. Compression times and ratios are similar to those of deflate/zip and bzip2. Delphi port of the popular UCL Compression Library, which is also used by the popular and well known UPX Ultimate Packer for eXecutables.

Encryption

  • Delphi Encryption Compendium (DEC). [Delphi] [FPC] Cryptographic library for Delphi & C++ Builder. Symmetric cryptographic functions: Blowfish, Twofish, IDEA, Cast128, Cast256, Mars, RC2, RC4, RC5, RC6, Rijndael / AES, Square, SCOP, Sapphire, 1DES, 2DES, 3DES, 2DDES, 3DDES, 3TDES, 3Way, Gost, Misty, NewDES, Q128, SAFER, Shark, Skipjack, TEA, TEAN; Block cipher modes of operation: CTSx, CBCx, CFB8, CFBx, OFB8, OFBx, CFSx, ECBx, GCM; Hashes: MD2, MD4, MD5, RipeMD128, RipeMD160, RipeMD256, RipeMD320, SHA, SHA1, SHA224, SHA256, SHA384, SHA512, SHA3-224, SHA3-256, SHA3-384, SHA3-512, Shake128, Shake256, Haval128, Haval160, Haval192, Haval224, Haval256, Tiger, Panama, Whirlpool, Whirlpool1, WhirlpoolT, Square, Snefru128, Snefru256, Sapphire.

  • LockBox (Newest and maintained version for recent compiler version only). [Delphi] Delphi library for cryptography. Currently supported Delphi XE6. It provides support for AES, DES, 3DES, Blowfish, Twofish, SHA2 (including the new SHA-512/224 & SHA-512/256), MD5; ECB, CBC, CFB8, CFB, CTR, ECB, OFB, PCBC chaining modes, RSA digital signature and verification. Has interface to OpenSSL library. // Check out this page as well for alternative version.

  • SynCrypto. [Delphi] [FPC] Fast cryptographic routines (hashing and cypher), implementing AES, XOR, RC4, ADLER32, MD5, SHA1, SHA256 algorithms, optimized for speed (tuned assembler and VIA PADLOCK optional support).

  • TForge. [Delphi] [FPC] Open-source crypto library written in Delphi, compatible with Free Pascal Compiler. MD5, SHA1, SHA256, CRC32, Jenkins-One-At-Time, HMAC, PBKDF1, PBKDF2, AES, DES, RC4, RC5, Salsa20.

  • Spring4D. CRC, DES, MD5, SHA

  • Fundamentals Code Library. Hashes: XOR, CRC, Adler, MD5, SHA, secure keyed MD5/SHA, etc; Cipher: AES, DES, FUNE, RC2/4, RSA.

  • Alcinoe. AES, Blowfish, MD5, SHA, secure keyed MD5/SHA.

  • DCPcrypt (fork #1), DCPcrypt (fork #2). [Delphi] Suite of cryptographic components for Delphi.

  • bcrypt. [Delphi] A library to help you hash passwords.

  • MurMur-Delphi. [Delphi] MurMur1/2/3 fast seeded hashing algorithms port in pure-pascal.

  • HashLib4Pascal. [Delphi] [FPC] Object Pascal hashing library released under the permissive MIT License which provides an easy to use interface for computing hashes and checksums of data. It also supports state based (incremental) hashing. CRC, Adler, Murmur, Jenkins, MD5, SHA, Blake, many more.

  • SimpleBaseLib4Pascal. [Delphi] [FPC] Simple to use Base Encoding Package for Delphi/FreePascal Compilers that provides at the moment support for encoding and decoding various bases such as Base16, Base32 (various variants), Base58 (various variants) and Base64 (various variants) and Base85 (various variants).

  • CryptoLib4Pascal. [Delphi] [FPC] Object Pascal cryptographic library released under the permissive MIT License. Ciphers: AES (128, 192, and 256), Rijndael, Blowfish, Speck, ChaCha, (X)Salsa20, DSA, (DET)ECDSA (supported curves: NIST, X9.62, SEC2, Brainpool), ECNR, ECSchnorr, EdDSA (Ed25519, Ed25519Blake2B)

XML/JSON/YAML/HTML

  • dataset-serialize. [Delphi] [FPC] This component is a JSON serializer for the DataSet component. Allows you to convert JSON to DataSet, DataSet to JSON, and export and load the structure of DataSet fields in JSON format. Compatible with VCL projects, FMX and uniGUI (framework).

  • OmniXML. [Delphi] XML parser written in Delphi. Full support for Document Object Model (DOM) Level 1 specification; Supports Extensible Markup Language (XML) 1.0 (Second Edition) specification; Has built-in support for different code pages (main 8-bit code pages, UTF-8, UTF-16); Is compatible with MS XML parser; Fast parsing even large and highly structured documents; Includes helper functions to ease processing XML documents; Simplified XPath support.

  • SAX for Pascal. [Delphi] [FPC] Designed to implement the Simple API for XML Parsing in Pascal/Delphi. // Callback-based XML parser, useful for processing huge XML streams. Abandoned since 2004 but is almost the only SAX implementation available.

  • KDS XML. [Delphi] Class library for streamed parsing, validating and generating XML. It is written in Object Pascal/Delphi and works on Win32 (Delphi) and Linux (Kylix). Parts of it depend on the SAX for Pascal interface specifications. // Seems dead.

  • XML Partner. [Delphi] Helps add the power of XML to Borland Delphi, C++ Builder, and Kylix projects through native, easy to use VCL and CLX components. These powerful components simplify the process of creating, modifying, and parsing XML data documents. // Seems dead, check out this page for probably newer version.

  • Open XML. [Delphi] Provides a wide range of methods, components and foundation classes. It can be used for Win32/Kylix as well as for .NET development.

  • SuperObject. [Delphi] [FPC] Parser/writer for JSON data format. This toolkit is designed to work with Delphi and FreePascal (win32, win64, linux32, linux64, macOS Intel). Supports reading/writing XML as well.

  • Libxml2 for pascal. [Delphi] [FPC] Pascal units accessing the popular XML API from Daniel Veillard. This should be usable at least from Kylix and Delphi, but hopefully also from other Pascal compilers (like freepascal).

  • NativeXml. [Delphi] This component contains a small-footprint Object Pascal (Delphi) XML implementation that allows to read and write XML documents. You basically only need one unit and you can simply add it to the "uses" clause. You can use this software to read XML documents from files, streams or strings. The load routine generates events that can be used to display load progress on the fly. You can also use it to create and save XML documents.

  • Delphi-XmlLite. [Delphi] Header translation for Microsoft XmlLite. XmlLite is a native C++ implementation of .NET XmlReader+Writer for stream-based, forward-only XML parsing and creation. XmlLite.dll is required. It is included with all new versions of Windows, and service packs for old versions. XmlReader's pull-based interface is cleaner to use than SAX's event-based interface. // Seems abandoned and reported to be somewhat buggy.

  • Chimera. [Delphi] Open Source (MIT License) library for Delphi XE2 which provides a fast and cross platform JSON generator/parser (serializer/deserializer) under a license that doesn't suck.

  • SynCommons. [Delphi] [FPC] High speed JSON library, using TDocVariant custom variant type for storage and access.

  • SynCrossPlatformJSON. [Delphi] [FPC] High speed cross-platform JSON library, using TJSONVariant custom variant type for storage and access.

  • Json Data Objects. [Delphi] This Delphi unit contains a JSON parser that supports Delphi 2009-10Seattle and the platforms Win32, Win64 and ARM Android (MacOS and iOS may work).

  • TinyJSON (mirror at GH). [Delphi] This is a small and clean library for associative arrays with Boolean / Integer / Float / WideString values. Allows import (export) from (to) JSON text. Extensive error-checking. Uses FunHash (by Sokolov Yura), HatTrie (by Daniel C. Jones), FastInt64 and FastMove (by FastCode project).

  • JSON delphi library. [Delphi] This is a delphi library implementing JSON data format and objects structure. Lightweight and fast.

  • dwsJSON. [Delphi] [FPC] dwsJSON is a unit that supports JSON parsing/creating, it's part of DWScript but relatively "standalone", in that if you add it in your Delphi (or FPC) projects, it won't pull the whole of DWScript library, and thus can be used anywhere you need.

  • Fundamentals Code Library. JSON, XML.

  • Alcinoe. XML/JSON Parser.

  • delphi-yaml. [Delphi] Delphi 7 compatible bindings for libyaml, YAML parser and emitter library implemented in C. Four layers of bindings are proposed.

  • GrijjyFoundation. JSON/BSON.

  • VerySimpleXML. [Delphi] Lightweight, one-unit, cross-platform XML reader/writer for Delphi 2010 - 10.2.2 Tokyo

  • XSuperObject. [Delphi] Delphi Cross Platform Rapid JSON

  • Internet Tools. [Delphi] [FPC] Package provides standard conformant XPath 2.0, XQuery 1.0 and XPath/XQuery 3.0 interpreters with extensions for - among others - JSONiq, pattern matching, CSS and HTML; as well as functions to perform HTTP/S requests on Windows/Linux/macOS/Android, an XSLT-inspired webscraping language, and an auto update class.

  • Delphi-JsonToDelphiClass (Newer fork. [Delphi] Generates Delphi Classes based on JSON string (Json To Delphi Class Generator / JSON Data Binding Tool). Also includes unit for interaction with GitHub.

  • XML Parser. [Delphi] [FPC] Lightweight ObjectPascal XML parser for Delphi and FreePascal. By leaving out syntax checking, well-formedness checks and/or validation, and by choosing a progressive scanning technique, this parser is very fast.

  • HTML parser. [Delphi] HTML parser. Supports Windows, macOS, iOS, Android platform. Comments in Chinese

  • Neslib. [Delphi] Ultra light-weight and cross-platform XML library for Delphi.

  • DJSON. [Delphi] Delphi JSON object mapper

  • fast-html-parser. [Delphi] [FPC] Fast HTML Parser

  • THTMLWriter. [Delphi] Class library that enables the developer to create HTML and HTML documents. It uses the fluent interface to make creating HTML text easy and natural.

Language

Tools for Pascal and other languages

  • Next Delphi Yacc & Lex. [Delphi] Parser generator toolset for Delphi.

  • Abstract Syntax Tree Builder. [Delphi] With DelphiAST you can take real Delphi code and get an abstract syntax tree. One unit at time and without a symbol table though.

  • Castalia-Delphi-Parser. [Delphi] These files make up a hand-written high speed parser for the Object Pascal dialect known as "Delphi". The original work was done by Martin Waldenburg in the late 1990s, and the project was abandoned sometime before 2003, when I found the code and began working on it. I have kept it updated as necessary to work with my project, called "Castalia".

  • CrossPascal. [Delphi] Aims to be a Delphi 7 compatible cross-platform source-to-source compiler (together with the new unicode string types from XE3 but where ansistring is still the default string type for to be still Delphi 7 compatible) which generates intermediate C code. // Quite interesting project though seems abandoned

  • pas2js, docs. [Delphi] [FPC] An open source Pascal to JavaScript transpiler. It parses Object Pascal and emits JavaScript. The JavaScript is currently of level ECMAScript 5 and should run in any browser or in Node.js (target "nodejs"). Basically, Delphi 7 syntax is supported. Used in tools like TMS WebCore and Elevate Web Builder.

Memory managers

Libraries that implement dynamic memory allocation

  • FastMM. [Delphi] Lightning fast replacement memory manager for Embarcadero Delphi Win32 and Win64 applications that is not prone to memory fragmentation, and supports shared memory without the use of external .DLL files. // Used as stock memory manager since 2006 but in simplified version. Provides powerful memory leak/corruption detection instruments.

  • ScaleMM. [Delphi] Fast scaling memory manager for Delphi

  • BrainMM. [Delphi] Extremely fast memory manager for Delphi. // Advanced memory allocation functions for faster aligned operations.

  • FastMM4-AVX. [Delphi] [FPC] FastMM4 fork with AVX support and multi-threaded enhancements (faster locking)

  • FastMM5. [Delphi] Fast replacement memory manager for Embarcadero Delphi applications that scales well across multiple threads and CPU cores, is not prone to memory fragmentation, and supports shared memory without the use of external .DLL files. Version 5 is a complete rewrite of FastMM.

System

Low-level helper stuff: memory, threading etc

  • OmniThreadLibrary. [Delphi] Simple to use threading library for Delphi. // Easy integration of async processes in your app

  • Delphi Detours Library. [Delphi] [FPC] Library allowing you to hook Delphi functions and object methods and Windows API functions. It provides an easy way to insert and remove hook. // Supports x64, calling original functions, multi hooks, COM/Interfaces/win32api, object methods hooking, fully thread-safe, Delphi 7/2005-2010/XE-XE7 & Lazarus/FPC, 64 bit address is supported.

  • MemoryModule. [Delphi] [FPC] With the MemoryModule engine you can store all required DLLs inside your binary to keep it standalone. Additional hook units allow transparent using of MM engine thus allowing switching MM/WinAPI loading as well as enabling 3rd party dynamic-load DLL interfaces that are unaware of MM (tested with Interbase Express components and Firebird client library). MemoryModule is a Pascal port of Joachim Bauch's C MemoryModule.

  • DirectoryWatcher. [Delphi] Watch changes in directories on different platforms (Windows/Linux/Mac OS).

  • ezthreads. [FPC] simple to use threading library

  • AsyncCalls. [Delphi] Asynchronous function call framework

Template

Engines to generate text output based on templates

  • SynMustache. [Delphi] [FPC] Delphi implementation of the Mustache template language, supporting Delphi 6 up to Delphi 10 Seattle (and FPC/Lazarus compilation).

  • Delphi Template Engine. [Delphi] Template engine designed to be used as a library in Delphi (mainly Delphi 7) applications, allowing developers to use templating on their software with no worry about implementing it.

  • MustaPAS. [Delphi] [FPC] Mustache implementation in simple procedural Pascal.

  • Sempare Template Engine. [Delphi] The template engine allows for flexible text manipulation. It can be used for generating email, html, source code, xml, configuration, etc. It is very easy to use, flexible and extensible, where templates are readable and maintainable. It supports: conditions, looping, custom functions and referencing data via RTTI. XE4, XE8+

  • DVD Chief Template Engine. [Delphi] [FPC] Fork of abandoned implementation of PHP Smarty template engine for Delphi by DVD Chief.

  • liquid-delphi. [Delphi] Delphi port of the popular Ruby Liquid templating language and dotLiquid implementation. It is a separate project that aims to retain the same template syntax as the original, while using delphi coding conventions where possible.

Logging

  • Log4d. [Delphi] [FPC] Implementation of logging system for Delphi, based on Log4j.

  • TraceTool. [Delphi] C#, C++, Delphi, ActiveX and Java trace framework and a trace viewer.

  • LoggerPro. [Delphi] A modern and pluggable logging framework for Delphi.

  • SynLog. [Delphi] [FPC] Logging functions used by Synopse projects.

  • slf4p. [Delphi] [FPC] A simple logging facade with support for LazLogger, Log4D, and other logging frameworks.

  • GrijjyCloudLogger. [Delphi] Remote logging tool that allows you to send log messages over the Intranet or Internet from Windows, Linux, iOS, Android and macOS devices to a viewer running on Windows. Besides sending messages along with any data, it has numerous features including custom live watches, remote live views of objects, tracking live memory usage, object allocations, growth leaks and more.

  • QuickLogger. [Delphi] [FPC] Delphi/freepascal/.NET (Windows/Linux) library for logging on files, console, memory, email, rest, telegram, slack, eventlog, redis, ide debug messages and throw events..

Math

  • Big Decimal Math. [Delphi] This unit provides a arbitrary precision BCD float number type. It can be used like any numeric type and supports: At least numbers between 10-2147483647 to 102147483647 with 2147483647 decimal digit precision; All standard arithmetic and comparison operators; Rounding functions (floor, ceil, to-even, ..); Some more advanced operations, e.g. power and sqrt.

  • TIntX. [Delphi] [FPC] Pascal port of IntX arbitrary precision Integer library with fast, about O(N * log N) multiplication/division algorithms implementation. It provides all the basic arithmetic operations on Integers, comparing, bitwise shifting etc. It also allows parsing numbers in different bases and converting them to string, also in any base. The advantage of this library is its fast multiplication, division and from base/to base conversion algorithms. all the fast versions of the algorithms are based on fast multiplication of big Integers using Fast Hartley Transform which runs for O(N * log N * log log N) time instead of classic O(N^2).

  • DelphiBigNumberXLib. [Delphi] Arbitrary Precision Library for Delphi with Support for Integer and Floating Point Computations.

  • FastMath. [Delphi] Delphi math library that is optimized for fast performance (sometimes at the cost of not performing error checking or losing a little accuracy). It uses hand-optimized assembly code to achieve much better performance then the equivalent functions provided by the Delphi RTL. // Floating-point, vector, matrix operations.

  • MPArith. [Delphi] Multi precision integer, rational, real, and complex arithmetic.

  • AMath and DAMath. [Delphi] Accurate mathematical methods without using multi precision arithmetic and double precision accurate mathematical methods without using multi precision arithmetic or assembler respectively.

  • ALGLIB. [Delphi] [FPC] Cross-platform numerical analysis and data processing library. It supports several operating systems (Windows and POSIX, including Linux). ALGLIB features include: Data analysis (classification/regression, statistics); Optimization and nonlinear solvers; Interpolation and linear/nonlinear least-squares fitting; Linear algebra (direct algorithms, EVD/SVD), direct and iterative linear solvers; Fast Fourier Transform and many other algorithms. // Free edition is Delphi wrapper around generic C core licensed for Personal and Academic Use.

  • CAI NEURAL API. [FPC] [Delphi] Cross-platform Neural Network API optimized for AVX, AVX2 and AVX512 instruction sets plus OpenCL capable devices including AMD, Intel and NVIDIA.

  • DFF Library. [Delphi] [FPC] Big Floating Point, Big Integers, Astronomical calcualtions

Command-line

Libraries for parsing command-line arguments

  • TCommandLineReader. [Delphi] [FPC] This unit provides an advanced, platform-independent command line parser for Lazarus and Delphi. It checks for allowed options, automatically prints a help with a list of all of them, and - contrary to the parser in the rtl - behaves the same on Windows and Linux.

  • CommandLineParser. [Delphi] Simple Command Line Options Parser - spawned from the DUnitX Project.

  • GpCommandLineParser. [Delphi] Attribute based command line parser.

  • JPL.CmdLineParser. [Delphi] [FPC] Command-line parser for Delphi and Free Pascal

  • Nullpobug.ArgumentParser. [Delphi] [FPC] Command-line parser for Delphi and Free Pascal

Other non-visual

  • TRegExpr. [Delphi] [FPC] Regular expressions engine in pure Object Pascal.

  • FLRE. [Delphi] [FPC] FLRE ( F ast L ight R egular E xpressions) is a fast, safe and efficient regular expression library, which is implemented in Object Pascal (Delphi and Free Pascal) but which is even usable from other languages like C/C++ and so on.

  • OnGuard (Alternate and maintained version for recent compiler version only). [Delphi] Library to create demo versions of your Borland Delphi & C++Builder applications. Create demo versions that are time-limited, feature-limited, limited to a certain number of uses, or limited to a certain # of concurrent network users. // Second link points to an adapted version for newest compiler versions.

  • StringSimilarity. [Delphi] Package designed for some fuzzy and phonetic string comparison algorithms. So far implemented are the following algorithms: DamerauLevenshtein, Koelner Phonetik, SoundEx, Metaphone, DoubleMetaphone, NGram, Dice, JaroWinkler, NeedlemanWunch, SmithWatermanGotoh, MongeElkan.

  • PubSub Chimera. [Delphi] Open Source (MIT License) library for Delphi which provides a fast and cross platform PubSub and Message Queue implementation under a license that doesn't suck.

  • DuckDuckDelphi. [Delphi] Adds simple duck typing to Delphi Objects and provides an RTTI helper class to simplify many common RTTI tasks.

  • byterage. [Delphi] Object pascal class library designed to remove some of the limitations of streams. The framework is very simple to use, with only one common ancestor class (TBRBuffer) which defines a set of storage agnostic mechanisms for allocating, scaling, inserting, deleting and otherwise manipulating a segment of raw binary data.

  • stateless. [Delphi] Simple library for creating state machines in Delphi code.

  • GenericTree. [Delphi] Delphi implementation of a generic Tree structure.

  • Delphi Event Bus (for short DEB). [Delphi] Event Bus framework for Delphi.

  • DelphiEventBus. [Delphi] Yet another Event Bus framework for Delphi, with annotations and rich event filtering.

  • DHibernate. [Delphi] Object Persistent Framework based on Hibernate and NHibernate for Delphi. // Abandoned since 2012

  • UniConv. [Delphi] [FPC] Universal text conversion library is a universal quick and compact library intended for conversion, comparison and change of the register of text in concordance with the latest standards of the Unicode Consortium. The librarys function greatly resembles ICU, libiconv and Windows.kernel which are de facto standard for popular operating systems.

  • CachedBuffers. [Delphi] [FPC] The library is irreplaceable for the tasks of sequential data reading or writing, especially if the requirements for the performance are increased and there are much data.

  • CachedTexts. [Delphi] [FPC] Powerful and compact cross-platform library aimed at parsing and generating of text data with the maximum possible performance. Depends on the two other libraries: CachedBuffers and UniConv.

  • ZEXMLSS. [Delphi] [FPC] Lazarus/Delphi component for read/write ods, excel xml, xlsx.

  • PasMP. [Delphi] [FPC] Parallel-processing/multi-processing library for Object Pascal.

  • ICU4PAS. [Delphi] [FPC] Object Pascal, cross platform, Direct Class Wrapper over the mature and widely used set of C/C++ ICU libraries providing Unicode support, software internationalization (i18n) and globalization (g11n), giving applications the same results on all platforms. You can use it on Windows with Delphi and FreePascal and on Linux with Kylix and FreePascal. // Hadn't been updated since 2007 but ICU interface probably remains the same

  • GpDelphiUnits. [Delphi] Collection of useful Delphi units. Various TList descendants, TList-compatible, and TList-similar classes. Dynamically allocated, O(1) enqueue and dequeue, threadsafe, microlocking queue. Interface to 64-bit file functions with some added functionality. String hash, table and dictionary. Collection of Win32/Win64 wrappers and helper functions. Time Zone Routines. Embedded file system.

  • BaseNcodingPascal. [Delphi] [FPC] Library for encoding of binary data into strings using base32, base85, base128 and other algorithms for FPC and Delphi.

  • ByteSizeLibPascal. [Delphi] [FPC] TByteSize is a utility "record" that makes byte size representation in code easier by removing ambiguity of the value being represented.

  • EmailValidationPascal. [Delphi] [FPC] Simple Class for Validating Email Address Syntax in Pascal/Delphi.

  • PRNG. [Delphi] Seven fast pseudo random number generators with period lengths much greater than Pascal's random function. All are implemented with context records, therefore several independent generators can be used simultaneously, they are not cryptographically secure. In addition there are three cryptographic generators.

  • CSV File and String Reader. [Delphi] TnvvCSVFileReader and TnvvCSVStringReader are light weighted and fast classes that resemble unidirectional data set.

  • HTMLBuilder. [Delphi] Build simplified html with pascal code.

  • Marvin.IA. [Delphi] Machine learning collection of object-oriented Pascal primitives (only interfaces and classes).

  • FreePascal Generics.Collections. [FPC] FreePascal Generics.Collections library (TList, TDictionary, THashMap and more)

  • FuzzyWuzzy.pas. [FPC] Port of the well-known Python fuzzy string matching package that uses the Levenshtein distance to compute differences between string sequences.

  • GS.Core. [Delphi] [FPC] Core functions shared by several projects. // Thread Pool, file operations, Key<>Value database, JSON lib, etc

  • PascalTZ. [FPC] Pascal Time Zone allows you to convert between local times in various time zones and GMT/UTC, taking into account historical changes to time zone rules.

  • Charset Enigma. [Delphi] Delphi charset detector Community Edition

  • DelphiPatterns. [Delphi] Complete set of design patterns implemented in Delphi language

  • Markdown Processor for Pascal. [Delphi] [FPC] This is a Pascal (Delphi) library that processes to markdown to HTML

  • Coroutine-based multithreading library. [Delphi] AIO implement procedural oriented programming (POP) style in Delphi. It means developer can combine advantages of OOP and POP, splitting logic to multiple state machines, schedule them to threads, connect them by communication channels like in GoLang

  • Rapid.Generics. [Delphi] Rapid generics/defaults equivalent classes for Delphi (XE8+)

  • Keras4Delphi. [Delphi] High-level neural networks API, written in Pascal with Python Binding

  • TZDB. [Delphi] [FPC] IANA Time Zone Database for Delphi/FreePascal

  • PascalUtils. [Delphi] [FPC] Delphi and object pascal library of utils data structures

  • libPasC-Algorithms. [Delphi] [FPC] Delphi and object pascal library of common data structures and algorithms. Library rewritten from c-algorithms repository and other sources.

  • VSoft.Messaging. [Delphi] Libary that provides an internal synchronous/asynchronous publish/subscribe messaging system for Delphi applications.

  • Delphi-Hunspell. [Delphi] Simple Hunspell spell checking engine wrapper for Delphi.

  • CocinAsync. [Delphi] High performance library for Delphi to simplify coding and improve performance of asynchronous and multithreaded applications.

  • Delphi LightSaber. [Delphi] Lightweight alternative to Jedi library. Simple, crystal clear, non-obfuscated, fully commented code. No external dependencies. Hundreds of super useful functions for file/folder/disk manipulation, fast (buffered) binary file access, string conversions, OS version detection, etc.

  • LAMW. [FPC] Lazarus Android Module Wizard to create JNI Android loadable module (.so) and Android Apk using Lazarus/Free Pascal.

OS

Tools that help dealing with OS-specific internals

  • GLibWMI. [Delphi] Component Library for Delphi that encapsulate the classes for access to WMI of Windows in a set of VCL. BiosInfo, PrinterInfo, DiskInfo, etc. Allow access WMI Classes: WIN32_Bios, WIN32_Printers, WIN32_DiskDrive.

  • MemoryMap. [Delphi] Set of classes to get all the info about a memory of a running process.

  • The Drag and Drop Component Suite. [Delphi] VCL component library that enables your Delphi and C++Builder applications to support COM based drag and drop and integrate with the Windows clipboard.

  • TSMBIOS. [Delphi] [FPC] Allows access the System Management BIOS (SMBIOS) using the Object Pascal language (Delphi or Free Pascal). The SMBIOS (System Management BIOS) is a standard developed by the DMTF. The information stored in the SMBIOS includes devices manufacturer, model name, serial number, BIOS version, asset tag, processors, ports and device memory installed.

  • VersionInfo for Delphi. [Delphi] The library makes it very easy to read values from the Version Info resource of Windows executables and DLLs. Optionally extends the TApplication class with a version info property via class helper.

  • Magenta Systems WMI and SMART Component. [Delphi] Contains WMI, SMART and SCSI PassThrough functions, of particular use for getting hard disk information and configuring network adaptors, but also for many other general uses. MagWMI provides general view access to any WMI information using SQL like commands, and also a number of dedicated function relating to TCP/IP configuration, such as setting the adaptor IP addresses, the computer name, domain/workgroup, BIOS and disk drive information.

  • madKernel. [Delphi] The package is about Kernel Objects for the biggest part. The most important object types are wrapped up in interfaces, utilizing all the specific kernel32 APIs. Has interface wrappers for: Events, Mutexes, Threads, Processes, Windows, Modules, Tray Icons, shared memory buffers. // Free with source for non-commercial usage (only) with some conditions. Available to download as part of madCollection installer. Pretty well documented. Requires madBasic package.

  • madSecurity. [Delphi] The package makes it easily possible to handle Shares and other Security Objects like file security or registry security. To be able to do so, this package also features functionality around Accounts and ACEs and ACLs. // Free with source for non-commercial usage (only) with some conditions. Available to download as part of madCollection installer. Pretty well documented. Requires madBasic package.

  • madShell. [Delphi] The package implements often needed shell functionality, beginning with Special Folders like the "Windows" folder or the "Program Files" folder, continuing with Shell ID Lists, Shell Objects and Shell Events. Then you'll find functionality around ShortCuts/ShellLinks and finally everything about Display Modes. // Free with source for non-commercial usage (only) with some conditions. Available to download as part of madCollection installer. Pretty well documented. Requires madBasic package.

  • WindowsAutorun. [Delphi] Helps you manage autoload in Windows OS.

  • ActiveDirectory4Delphi. [Delphi] Delphi basic library for validation and authentication of LDAP users in Active Directory.

Report generating

  • Report Manager. [Delphi] Report manager is a reporting application (Report Manager Designer) and a set of libraries and utilities to preview, export or print reports. Include native .Net and Delphi/C++Builder libraries, ActiveX component and also standard dynamic link library for use in any language like GNU C.

  • FortesReport. [Delphi] The FortesReport is a powerful report generator available as a package of components for Delphi.

  • mORMotReport (docs). [Delphi] Fast and efficient code-based reporting component, with preview form and PDF export.

Unit Testing

  • DUnitX. [Delphi] New test framework, taking ideas from DUnit, NUnit and other test frameworks. It is designed to work with Delphi 2010 or later, it makes use of language/RTL features that are not available in older versions of Delphi.

  • DUnit. [Delphi] Unit Testing Framework, that has been the standard testing framework for years, the Delphi IDE now ships with this library. // Included since XE, deprecated since XE8 in favor of DUnitX; seems abandoned.

  • DUnit2. [Delphi] Fork of the DUnit Project that adds several new features. // Seems abandoned, lacks some features from last DUnit version.

  • DelphiSpec. [Delphi] Library for running automated tests written in plain language. Because they're written in plain language, they can be read by anyone on your team. Because they can be read by anyone, you can use them to help improve communication, collaboration and trust on your team.

  • Delphi-Mocks. [Delphi] Simple mocking framework for Delphi XE2 or later. Allow you to mock both classes and interfaces for testing.

  • DUnit-XML. [Delphi] Test runner that allows DUnit Tests to output NUnit compatible XML.

  • Smoketest. [Delphi] Framework for writing tests and performance benchmarks using the Delphi language for Microsoft Windows. It has been tested on all versions of Delphi from 7 thru to 2010.

  • SynTests. [Delphi] [FPC] Unit test functions including mocks and stubs.

  • OpenCTF. [Delphi] Test framework add-on for Embarcadero Delphi which performs automatic checks of all components in Forms (or DataModules). It provides an easy way to build automatic quality checks for large projects where many components have to pass repeated tests. OpenCTF is based on the DUnit open source test framework and extends it by specialized test classes and helper functions.

  • DelphiUIAutomation. [Delphi] Delphi classes that wrap the MS UIAutomation library. DelphiUIAutomation is a framework for automating rich client applications based on Win32 (and specifically tested with Delphi XE5). It is written in Delphi XE5 and it requires no use of scripting languages. It provides a consistent object-oriented API, hiding the complexity of Microsoft's UIAutomation library and windows messages.

Debugging / error handling

  • Delphi LeakCheck. [Delphi] Free code library to check the memory leaks in the DUnit and DUnit2 tests. Supports Delphi XE-XE7.

  • FastMM. Provides powerful memory leak/corruption detection instruments.

  • JclDebug (part of Project JEDI). [Delphi] [FPC] Tracing, MAP file parser, exception report generation, exception stack traces.

  • DebugEngine. [Delphi] Collection of utilities related to debug stuff (stack trace, CPU registers snapshot, debug info, etc). Accessing Delphi debug info, Getting address of symbol from its name, Delphi map parsing and map converter to binary format, Smart stack trace, Delphi exception stack trace hook, etc.

  • ObjectDebugger. [Delphi] Run-time Object Inspector for Delphi VCL applications.

Utilities

Free non-opensource products allowed here.

RAD Studio IDE plugins/wizards

  • Delphi IDE theme editor / Delphi IDE Colorizer. Tool to change the IDE color highlighting of several Object Pascal IDE's like Delphi (RAD Studio), Appmethod, Lazarus and Smart Mobile Studio. DITE supports Delphi 5-7, 2005-2010, XE-XE8, Appmethod 1.13-1.14, Lazarus v1.0.1.3 and Smart Mobile Studio IDE v1.1.2.17. The Delphi IDE Colorizer (DIC) is a plugin which allows to customize the look and feel of the workspace of the RAD Studio IDE and Appmethod.

  • DDevExtensions. Extends the Delphi/C++Builder IDE by adding some new productivity features. // Many useful IDE tweaks, must have.

  • VCL Fix Pack. Delphi unit that fixes VCL and RTL bugs at runtime by patching the original functions. If you want all IDE Fix Pack fixes in your application this unit is what you are looking for. Adding the unit to your project (Delphi and C++Builder) automatically installs the patches that are available for your Delphi/C++Builder version. // Actual for Delphi/C++ 6..2009

  • IDE Fix Pack. Collection of unofficial bug fixes and performance optimizations for the RAD Studio IDE, Win32/Win64 compiler and Win32 debugger. IDE Fix Pack is an IDE plugin for RAD Studio 2009-XE6 that fixes IDE bugs at runtime. All changes are done in memory. No files on disk are modified. None of your projects are modified or benefit from the IDE Fix Pack other than being compiled faster. Only the IDE gets the fixes and optimizations. // Supports all RAD Studio versions since 2007. Removes lots of annoying bugs that EMBT haven't fixed for years. Yay!

  • GExperts. Free set of tools built to increase the productivity of Delphi and C++Builder programmers by adding several features to the IDE. GExperts is developed as Open Source software and we encourage user contributions to the project. Grep search and replace supporting unicode files, DFMs, etc; Automatically rename components, insert text macros, open recent files; Easily backup your projects, with custom additional file lists; Keep nested lists of favorite files for quick access; Track dependencies between units in your project; Quickly jump to any procedure in the current unit; And much, much more.

  • CnWizards. Free Plug-in Tool Set for Delphi/C++ Builder/CodeGear RAD Studio to Improve Development Efficiency.

  • Delphi Package Installer (DelphiPI). Tool which aids you installing components to your Delphi IDE. DelphiPI automatically resolves dependencies between packages, compiles, installs and adds source paths to your IDE.

  • ResEd. Expert for Delphi 2005, 2006, 2007, 2009, 2010 and XE. This expert is designed for editing the resource files (.res; .resx) that are linked to the active project. It will automatically search for all occurrences of {$R xyz.res} lines and will open/create resourcefiles for them. The expert registers itself in the menubar of Delphi under View.

  • Parnassus Bookmarks. IDE plugin that extends bookmark functionality.

  • DelphiSettingManager. Multiple IDE profiles for Delphi (up to XE6). Allows to install multiple versions of the same component or different component sets for different projects.

  • Delphinus. New Packagemanager which runs on Delphi XE and newer and uses GitHub as a Backend to Provide the packages.

  • TestInsight. Unit testing IDE Plugin for Delphi. It supports all versions from XE to 10 Seattle. Supports DUnit, DUnit2, DUnitX frameworks.

  • Delphi IDE Explorer. Wizard / expert / plugin that allows you to browser the internal fields, methods, properties and events of the IDE. // Mainly useful for developers of IDE experts

  • Multi-RAD Studio IDE Expert Manager. Application is for editing the installed experts in all versions of RAD Studio (and older Delphi and C++ Builder) on a machine.

  • OTA Interface Search. Application helps to find Open Tools API (OTA) interfaces, methods and properties and understand how to get to those interfaces or methods / properties of the interfaces.

  • AutoSave. Expert that periodically auto saves all the open modified IDE files.

  • Browse and Doc It. Plug-in allows you to document and browse your code from within the IDE.

  • Integrated Testing Helper. Plugin for Delphi and RAD Studio that allows you to run command-line application before and after the compilation of you projects. It also provides the ability to zip you projects files into an archive on each compile/build and manage the application's version information.

  • Project Magician. Wizard for advanced project options manipulation.

  • Selective Debugging. Wizard that allows to tune for which units their debug version will be used.

  • MMX Code Explorer. Feature-rich productivity enhancing plugin. Includes refactoring, class browser, advanced editing, metrict and many more.

  • FormResource. Wizard that helps storing various data as form resources.

  • Delphi Library Helper Tool to assist Delphi developers configuring library folders.

  • Mobile Image Creator Creating Icons and Launcher Images for Delphi Mobile Applications (Firemonkey). This is a fork of Mobile Gfx created by Thomas Grubb of RiverSoftAVG.

  • Delphi-Adb-WiFi. Plugin for RAD Studio, which allows launching and debugging on an Android device without connecting to a computer via USB. Works over WiFi.

  • RADSplit. Dockable Split-Screen Editors for RAD Studio (Delphi and C++ Builder).

  • DzNoteEditor. Delphi Property Editor for TStrings supporting formatted languages with syntax highlight.

Plugins for other IDE's

Documentation

  • SynProject (docs). Tool for code source versioning and automated documentation of Delphi projects.

  • PasDoc. [Delphi] [FPC] Documentation tool for ObjectPascal (FreePascal and Delphi) source code. Documentation is generated from comments found in source code. Available output formats are HTML, HtmlHelp, LaTeX, latex2rtf, simplexml. More output formats may be added in the future.

Code check/review, debug

  • GpProfiler2017. [Delphi] Source code instrumenting profiler for Delphi XE and higher. Other forks support older versions.

  • SamplingProfiler. [Delphi] Performance profiling tool for Delphi 5 to 32bits Delphi XE4. Its purpose is to help locate bottlenecks, even in final, optimized code running at full-speed.

  • Delphi Code Coverage. [Delphi] Simple Code Coverage tool for Delphi that creates code coverage reports based on detailed MAP files.

  • Pascal Analyzer (free Lite version available). [Delphi] Pascal Analyzer, or PAL for short, parses Delphi or Borland Pascal source code. It builds large internal tables of identifiers, and collects other information such as calls between subprograms. When the parsing is completed, extensive reports are produced. These reports contain a great deal of important information about the source code. This information will help you understand your source code better, and assist you in producing code of higher quality and reliability.

  • madExcept. [Delphi] madExcept was built to help you locate bugs in your software. Whenever there's a crash/exception in your program, madExcept will automatically catch it, analyze it, collect lots of useful information, and give the end user the possibility to send you a full bug report. madExcept is also able to find memory leaks, resource leaks and buffer overruns for you. // Free without source for non-commercial usage (only) with some conditions. Available to download as part of madCollection installer (you'll need to install madExcept item). Pretty well documented.

  • delphiunitsizes. [Delphi] Tool to display the sizes of each unit in a Delphi executable. Shows the size of each unit that is included in a Delphi exe-file. It also shows an approximate size of each symbol (classes, methods, procedures etc) in a unit.

  • MapFileStats. [Delphi] Tool that provides simple binary size statistics from .MAP files (any Delphi version up to at least Delphi XE5).

  • Spider. [Delphi] Real time profiler for Delphi applications

  • AsmProfiler. [Delphi] Full tracing 32bit profiler (instrumenting and sampling), written in Delphi and some assembly

  • map2pdb. [Delphi] Tool used to convert the MAP files produced by the Delphi and C++ Builder compilers to Microsoft PDB files for use in tools that support that format.

Setup

  • Lazy Delphi Builder. Build tool for Delphi. Recompile projects/packages from sources with all dependencies, without need to mess around with configs. Quickly (re-)install components from sources into IDE, with no need to change your Library Path. // Powerful automating tool. Freeware but not open source

  • Inno Setup. Free installer for Windows programs. First introduced in 1997, Inno Setup today rivals and even surpasses many commercial installers in feature set and stability.

  • WinSparkle and its Delphi wrapper. WinSparkle is an easy-to-use software update library for Windows developers. WinSparkle is a heavily (to the point of being its almost-port) inspired by the Sparkle framework originally by Andy Matuschak that became the de facto standard for software updates on macOS.

  • Silverpoint MultiInstaller. Multi component package installer for Embarcadero Delphi and C++Builder, it was created to ease the components installation on the IDE.

  • Grijjy Deployment Manager. Tool to simplify the deployment of files and folders for iOS and Android apps written in Delphi. It is especially useful if you need to deploy a lot of files, such as 3rd party SDKs.

Other

  • WMI Delphi Code Creator. Allows you to generate Object Pascal, Oxygene, C++ and C# code to access the WMI (Windows Management Instrumentation) classes, events and methods. Also includes a set of tools to explorer and Query the content of the WMI.

  • Delphi Preview Handler. Preview handler for Windows Vista, 7 and 8 which allow you read your object pascal, C++ and Assembly code with Syntax highlighting without open in a editor

  • Delphi Dev. Shell Tools. Windows shell extension with useful tasks for Object Pascal Developers (Delphi, Free Pascal).

  • Delphi.gitignore. .gitignore templates for Delphi. There is also one for Lazarus.

  • OmniPascal. Project that enables Delphi and Free Pascal developers to write and maintain code using the modern editor Visual Studio Code.

  • Delphi Unit Tests. Set of unit tests for Delphi's libraries. Delphi community members are encouraged to fork the repository, add tests, and create a pull request. Embarcadero employees are particularly encouraged to add tests from the internal tests that are run with official Delphi builds.

  • madDisAsm. The package features a full x86 disassembler including MMX, 3dNow enhanced, SSE and SSE2 support. The disassembler can examine a single x86 instruction (see ParseCode) or a full function (see ParseFunction) and either return a short analysis or a full text disassembly. Register contents are watched/followed if possible, this improves the analyses for jump/call targets. Case/switch jump tables are automatically detected and handled correctly. // Free without source for non-commercial usage (only) with some conditions. Available to download as part of madCollection installer (you'll need to install madExcept item). Pretty well documented.

  • Chet - C Header Translator for Delphi. Chet is a .h-to-.pas translator powered by libclang for Delphi. Uses the Clang compiler to parse header files, resulting in more accurate translations that require fewer manual adjustments.

  • Boss. Dependency Manager for Delphi projects.

  • C-To-Delphi. [Delphi] This tool will convert most of your standard C code.

  • Better Translation Manager. [Delphi] Translation Manager

  • dzBdsLauncher. [Delphi] Launcher for the Delphi IDE that decides which of multiple IDEs to launch based on the suffix of the dproj file passed to it.

  • DFMJSON. [Delphi] Library to convert between Delphi's .DFM (or .FMX) format and JSON. It can be used to parse a DFM file into an Abstract Syntax Tree in JSON, which can then be edited and the results turned back to DFM format.

Awesome AutoHotkey AutoHotkey Awesome

A curated list of awesome AutoHotkey libraries, library distributions, scripts, tools and resources. Inspired by the other awesome lists. Please read CONTRIBUTING.md before contributing.

Out-of-date or discontinued, but nonetheless historically relevant items can be found on Historical.md

Development state: Build Status awesome_bot


Libraries

List of useful AutoHotkey libraries. Library is code that has some reusable functionality that can be combined with your own code in order to create new functionality.

Clipboard

  • WinClip - by Deo - WinClip is a clipboard manipulation class extending AutoHotkey's clipboard capabilities including support for RTF, HTML and images. Forum thread: link.

Console

  • AHKonsole - by G33kdude - Class based AutoHotkey library for console support. This library enables you to create an object representing a console to interact with, as well as multiple console buffer objects to facilitate in double buffering. Forum thread: link.
  • LibCon - by joedf - AutoHotkey Library For Console Support. This library enables you to write console applications and interact with other console instances. Basically, this library facilitates anything that has to do with writing and interacting with consoles. Forum thread: link.

Data format

  • AHK_ctable - by hoppfrosch - Library to handle strings in tabular format - Forum thread: link.
  • AutoHotkey-JSON - by cocobelgica - JSON lib for AutoHotkey. Forum thread: link.
  • CSV - by trueski/kdoske - Library to work with CSV files and Listview functions. Forum thread: link.
  • List manipulation functions - by Laszlo - Function library to manipulate comma delimited lists. Forum thread: link.
  • ObjCSV - by JnLlnd - Library to load/save CSV files to Objects and and Listview functions. Forum thread: link.
  • ObjDump/ObjLoad - by HotKeyIt - Serialize/deserialize object to/from variable/memory.
  • SerDes - by cocobelgica - Serialize / de-serialize an AutoHotkey object structure. Forum thread: link.
  • Table - by VxE - Library to manipulate strings in tabular (TSV) format and Listview functions. Forum thread: link.
  • XA - by trueski/hi5 - Serialize/deserialize array to/from XML. Forum thread: link.

Data Structures and Algorithms

  • Facade - by Shambles - A Set of Functional Programming Libraries. - Forum thread: link
  • HashTable - by Shambles - A Hash Table Implementation for AutoHotkey.
  • LibCrypt - by different authors - A collection of crypting and encoding functions.
  • Type_Checking - by Shambles - Type Checking for AutoHotkey - Forum thread: link

Database

  • AHKDb - by AHKDb - A database library for tab-separated data.
  • ahkDBA - by IsNull - An OOP-SQL database access framework. Forum thread: link.
  • Class_SQLiteDB - by just Me - AHK SQLite API wrapper class. Forum thread: link.
  • Leya - MySQL API - by kevgk - Work with MySQL databases in autohotkey, without exposing server credentials to the client.

Filesystem

Graphics

  • GDIp - by tic - Full featured library that helps in interaction with Microsoft's gdiplus.dll - Forum thread: link.
  • ImagePut - by iseahound - Image library for converting to files, streams, windows, base64, urls, cursors, screen coordinates, clipboard, pointers, handles, and more. Supports AutoHotkey v1 and v2. - Forum thread: link
  • AHKv2-GDIP - Update of the above GDI+ library compatiable with both AHK v1.1 and AHK v2 - Forum thread: link.
  • GDIp_ImageSearch - by tic - Library using gdiplus.dll for searching image instances on the screen. See the end of that thread for MasterFocus' improved version, or see his GitHub repo here
  • Simple GDI class - by GeekDude - A class aiming to make using low-level GDI functions simple.
  • Particle System - by tidbit - A simple class to add particles to your GUI or onto your screen, using GDI+. Forum thread: link.

GUI

Combobox

  • CbAutoComplete - by Pulover - Auto-completes typed values in an AHK ComboBox. Forum thread: link

Custom Controls

  • Rebar - by Pulover - AHK class for AutoHotkey Rebar custom controls. Forum thread: link
  • Toolbar - by Pulover - AHK Class for AutoHotkey Toolbar custom controls. Forum thread: link

Edit

  • Edit v2.0 - by jballi - Library for the lightweight and surprisingly powerful default Edit control for displaying and editing text. Forum thread: link

General

  • AutoXYWH - by tmplinshi - Move and resize controls automatically when a GUI is resized.
  • TaskDialog - by just Me - enhanced MsgBox for Win Vista+ - link
  • OnWin - by cocobelgica - Call function on window event (WinWaitXXX async). Forum thread: link
  • CGUI - by ChrisS85 - An object-oriented GUI library for AutoHotkey. Forum thread: link
  • Class_ScrollGUI - by just me - Creates a scrollable GUI as a parent for AHK GUI windows. Forum thread: link

ListBox

  • LBEX - by just me - a collection of utility functions for ListBoxes. Forum thread: link
  • TransparentListBox - by just Me - Provides transparent listbox controls for AHK GUIs. Forum thread: link

ListView

  • LV_Colors - by just Me - Individual background and/or text colours for a GUI ListView's cells or rows. Forum thread: link
  • LV_EX - by just me - Some additional functions for AHK GUI ListView controls. Forum thread: link
  • LV_InCellEdit - by just Me - In-cell editing for ListView controls. Forum thread: link
  • LV_Rows - by Pulover - Additional functions for AHK ListView controls. Forum thread: link
  • [Lib] Menu - by just me - Some functions related to AHK menus. Forum thread: link

Web

  • Neutron - by G33kDude - Set of tools for build HTML-based user interfaces with AutoHotkey. Forum thread: link

Hotkeys

  • CHotkeyControl - by evilC - Replacement for AHK hotkey GuiControl that supports mouse buttons etc (Partially mature).
  • HParse - by Avi - Function to convert meaningful shortcuts (Ctrl+X) to AutoHotkey syntax (^x).

Joystick

  • CvJoyInterface - by evilC - Control a vJoy virtual joystick using AHK.
  • JoystickWrapper - by evilC - Full event-based, 8 axis, 128 button, 4 POV joystick reading (C# DLL, Uses Lexikos' CLR).
  • XInput - by Lexikos - Read XBOX gamepads using XInput (Only way to independently read L/R triggers), control rumble motors.

Maths

  • calc() - math expression evaluation incl brackets.
  • Eval - by Pulover - Evaluate expressions in strings. Forum thread: link
  • Scientific Maths - by Avi - Library facilitating high precision mathematics.
  • Time() - by HotkeyIt - Count Days, hours, minutes, seconds between dates. Forum thread: link

Memory

  • classMemory - by RHCP (Kalamity) - An AHK memory reading/writing class with pattern scans. Forum thread: link

Networking

  • AHKhttp - Basic HTTP Server. Forum link
  • AHKsock - by TheGood - Function based sockets library. Supports TCP. Forum link
  • Chrome.ahk - by G33kDude - Automate Google Chrome using native AutoHotkey - Forum link
  • FTP - by jNizM - AutoHotkey wrapper for FTP Sessions (Class) - Forum link
  • Socket Class (รผberarbeitet) - by Bentschi - Class based sockets library. Supports TCP and UDP.
  • Socket.ahk - by GeekDude - Socket library based on Bentschi's - Forum link
  • WebSocket.ahk - by GeekDude - Class based WebSocket library - Forum link
  • WinSCP.ahk - by Lipkau - Lib allows the use of WinSCP in AHK

Plotting (graphs, bars, charts and etc)

  • BarChart - by Learning One - Library for making bar charts. Download link.
  • Excel Charts - by Xx7 - Library for creating a graph in Excel, save the graph as an image and display it in a GUI.
  • XGraph - by SKAN - Function library for graphically plotting real time data.
  • SVGraph - by CapnOdin - SVGraph bringing graphing and charting to AutoHotkey. Forum link
  • gdiChartLib - by nnnik - a gdip chart lib for autohotkey. Forum link

System

  • RunAsTask - by SKAN - Auto-elevates script without UAC prompt.
  • Vista Audio Control Functions - by Lexikos - Provides alternatives to some SoundSet/SoundGet subcommands, as well as some additional features that SoundSet/SoundGet do not support. Forum thread: Link

Text manipulation

  • String Things - by tidbit - Stand-alone string manipulation functions.
  • TF - by hi5 - Functions for manipulation of text files such as .txt, .ahk, .html, .css etc and Strings (or variables). Forum thread: link.

Library Distributions

List of useful AutoHotkey library distributions. Library Distribution is a system that is made for distributing libraries.

  • ahk-libs - Ryan Shipp's collection of libraries.
  • ASPDM - package/stdlib distribution and management from the ahkscript folks. Trello link.
  • pAHKlight - Your Lightweight Guide to AutoHotkey libraries, classes, functions and tools.

Scripts

List of useful AutoHotkey scripts. Script is code that is intended to be used as standalone programs, and is not meant to be integrated with other code.

Clipboard

  • CL3 - A clipboard manager (text only) with plugins (Search, predefined Slots, ClipChain, FIFO, Editor and more). Forum thread link.
  • ClipBoardMonitor - Monitor clipboard changes, show tooltip of word count for text or a temporary GUI for pictures.
  • Clipjump - is a Multiple-Clipboard management utility for Windows. Source code: GitHub. Forum threads: link 1, link 2.

Filesystem

  • Belvedere - sets up rules for taking actions on files (move, copy, delete, etc) based on the name of a file, its extension, size, age, and more. More info link.
  • QuickAccessPopup - Multi purpose launcher and file switcher. Website link.
  • SpicyKeys - Use hotkeys to open or move/copy selected files in Windows Explorer. Forum thread: link

Graphics

GUI

Maths

  • Monster - evaluate math expressions in strings (calculator).
  • Unit Converter - unit converter that has most common English and scientific units and most common quantities from length to density to thermal conductivity. Also includes a section for physical and mathematic constants.

Mouse

  • EitherMouse - Multiple mice, individual settings, auto swap mouse buttons on second mouse. Forum thread: link.
  • MouseGestureL - Control applications by mouse gestures. Gestures and actions can be defined via customizable interface. Documentation in English and Japanese - Japanese Homepage link
  • Radial Menu - Powerful hotkey, launcher, mouse gestures system, and much more (skinable) - Forum thread: link

Typing

  • AutoComplete - Suggests and completes words as you type. Forum thread: link.
  • DateHotkey - Hotkey to easily receive current, past or upcomming date strings. Forum thread: link
  • Half-QWERTY - One-handed Typing. Using the space bar as a modifier, the user can generate the characters of either side of a full-sized keyboard using only one hand. More information via Forum thread: link
  • KeyPress OSD - On-Screen Display which displays every key or mouse button press at a clearly visible text size. Forum thread: link
  • Lintalist - Searchable interactive lists to copy & paste text with plugins. Forum thread: link.
  • Portable Keyboard Layout - helps people to learn better, more efficient keyboard layouts such as Dvorak, Colemak or Asset. Forum thread: link.
  • Static Hands - Super useful shortcuts with the CapsLock key that spare the need to move hands while typing. Super simple. No learning curve.
  • Thumbscript - Allows you to type using the number pad, with only 2 number presses for every letter. Documentation: link
  • TypingAid - Suggests and completes words as you type. Forum thread: link GitHub link.

Window Management

  • Automatic Window Manager - Save and restore last window position for each process. Forum thread: link
  • bug.n - Tiling Window Manager. Forum thread: link
  • Min2Tray - Minimize window to tray & more. Forum thread: link
  • Open-Show-Apps - Open, restore or minimize the desired Window's or Chrome's Apps. Forum thread: link
  • SnapX - Enhances Windows/Aero Snap by taking over its hotkeys (Win+Left/Right, etc) and providing more fine-grained control over snap location and size. Works with multiple monitors, resolutions, and DPI levels.
  • WindowPadX - tool which provides some useful functionality within multi monitor environments. WindowPadX is an enhancement of WindowPad, originally released by Lexikos, see original forum thread: link

Games

Tools

List of useful AutoHotkey tools. Tools made for AutoHotkey

Interpreter

  • AutoHotkey - AutoHotkey interpreter installer and binaries.
  • AutoHotkey DLL - AutoHotkey.dll opens the world of AutoHotkey to other programming and scripting languages. Forum thread: link. Documentation link.
  • AutoHotkey build for CE - AutoHotkey for Pocket PCs / WinCE / Smartphones. Forum thread: link. Documentation link.
  • IronAHK - Cross platform .NET rewrite - unfinished.

Debugging

  • [Class] Console - This class is meant to simplify debugging for scripts from simple text handling, to outputting and logging data & arrays. GitHub link.
  • Print Array - Function that prints array content in GUI.
  • Yunit - by Uberi and infogulch - Simple unit testing framework for AutoHotkey.

Decompilers

Integrated Development Environment

GUI WYSIWYG Builders

Script Recorders and Writers

Web Syntax Highlighters

  • highlight.js - A syntax highlighter written in JavaScript supporting more than 130 languages (including AutoHotkey).
  • PrismJs - Lightweight minimal AutoHotkey syntax highlighting.
  • Syntax Highlighter - Legacy syntax highlighter for AutoHotkey with default support for line numbers.

Others

  • GoTo - Addon for any text editor that helps you jump to labels, hotkeys, hotstrings and functions in the active file.
  • GoToTilla - Addon which allows jumping to tokens within AHK source code.
  • Context sensitive help in any editor - Addon for any text editor that provides context sensitive help by pressing F1.
  • CodeQuickTester - by GeekDude - A lightweight dynamic code tester.
  • iWB2 Learner - by jethrow - iWB2 Learner is a tool for gathering information about Internet Explorer webpages. Forum thread: link
  • AHK-EXE-Swapper - by evilC - Swap AHK version quickly! Forum thread: link.
  • AEI - by joedf - Displays AutoHotkey Environment Information and AHK support relevant System Information with a fancy update checker that auto-downloads with a progress bar. Forum thread: link.
  • WinSpy - by Alguimist - Useful window spy / information tool written in AHK.

(Use in) other programming languages

Tutorials

List of useful AutoHotkey tutorials.

Classes

COM

GUI

MCode (machine code)

Resources

List of useful AutoHotkey resources. Various websites, documentation, guides, videos and articles related to AutoHotkey.

Documentation

Books

  • ahkbook - a book on AutoHotkey (not completed yet). Forum thread: link.

Quick-start guides

Websites

Forks

Forks of AHK which add new features to the core language

AutoHotkey_H

License

Creative Commons License

This work is licensed under a Creative Commons Attribution 4.0 International License.

Awesome AutoIt

Awesome Build Status Creator Twitter Follow

A curated list of awesome UDFs, example scripts, tools and useful resources for AutoIt.

Created by Juno_okyo. Inspired by the awesome list thing.

Table Of Contents

UDF/Libraries

Listing of libraries of user defined functions (UDF). These libraries have been written to allow easy integration into your own scripts and are a very valuable resource for any programmer.

Automation

Browsers

Microsoft Office

OpenOffice

Databases and web connections

Data compression

Encryption and hash

GUI Additions

Controls

Hardware

Information gathering

Internet protocol suite

Maths

Media

Graphics and image

Players

Sound

PDF

Security

Social Media and other Website API

Windows

Misc

Tools

  • SciTE4AutoIt3 contains SciTE, wrapped into a single installer with all needed configuration settings and lots of utility programs like AutoIt3Wrapper, SciTEConfig, Tidy, Au3Stripper etc to enhanced SciTE for use with AutoIt3.
  • KODA Form Designer - a standalone application that was developed to help creating forms (GUIs) for AutoIt3 scripting language. It's included in SciTE4AutoIt3.
  • ISN AutoIt Studio - a complete IDE for the AutoIt programming language.
  • ISN AutoIT form Studio - Graphical Form Designer for AutoIt.
  • AutoIt Obfuscator - Obfuscate your AutoIt script source code & algorithms to protect it against reverse engineering analysis, cracking and decompilation.

Useful Resources

Documents

Websites

Guides/Tutorials

  • Tutorials - There are many tutorials available for AutoIt. This page is an overview of a few known tutorials.
  • Best coding practices - a detailed explanation of what are to be considered the best coding practices within AutoIt. These recommendations are based on accepted coding practices common to a number of other programming languages. You do not need to follow them, but it is recommended that you do.
  • Snippets - generally single functions or small pieces of code which can be incorporated into a script to add extra functionality.

Videos

Books

Syntax Highlighter

License

Creative Commons License

This work is licensed under a Creative Commons Attribution 4.0 International License.


Other Awesome Lists

[Back to Top]

SWUbanner

awesome-crystal

Awesome Crystal

Awesome

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

  • 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
  • edits.cr - Collection of edit distance algorithms
  • fzy - A Crystal port of awesome Fzy project fuzzy finder algorithm
  • graphlb - Collection of graph datastructure and algorithms
  • 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
  • qr-code - QR Code generator
  • radix - Radix Tree implementation
  • s2_cells - S2 Geometry for spatial indexing
  • splay_tree_map - Splay Tree implementation that conforms to the Hash ducktype

Blockchain

  • Axentro - A custom blockchain platform
  • Cocol - A minimal blockchain testbed
  • secp256k1.cr - Elliptic curve used in the public-private-key cryptography

C bindings

Caching

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
  • 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
  • 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)
  • 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 - (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 - Separates a files front matter from its content
  • geoip2.cr - GeoIP2 reader
  • HAR - HAR (HTTP Archive) parser
  • INI - INI file parser (Crystal stdlib)
  • JSON - parsing and generating JSON documents (Crystal stdlib)
  • JSON::OnSteroids - handle and mutate JSON document easily
  • maxminddb.cr - MaxMindDB reader
  • toml.cr - TOML parser
  • XML - parsing and generating XML documents (Crystal stdlib)
  • YAML - parsing and generating YAML documents (Crystal stdlib)

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

Database Drivers/Clients

Database Tools

  • migrate - A simpler database migration tool with transactions
  • queryit - A setupless terminal based SQL query runner

Debugging

  • backtracer.cr - Shard aiming to assist with parsing backtraces into a structured form
  • debug.cr - debug!(โ€ฆ) macro for pp-style debugging

Dependency Injection

  • Athena Dependency Injection - Robust dependency injection service container framework
  • Crystal-DI - Lightweight DI Container
  • HardWire - A compile-time non-intrusive dependency injection system
  • syringe - A simple and basic dependency injection shard for crystal

Email

Environment Management

Examples and funny stuff

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
  • mochi - Authentication shard inspired by Devise supporting: Authenticable, Confirmable, Invitable & more
  • motion.cr - Object oriented frontend library for Amber
  • 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

Game Development

GUI Development

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/XML Parsing

HTTP

Image processing

Implementations/Compilers

  • charly - Charly Programming Language
  • cltk - A crystal port of the Ruby Language Toolkit
  • crisp - Lisp dialect implemented with Crystal
  • 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
  • runic-lang - In-design toy language

Internationalization

  • crystal-i18n - An internationalization library inspired by Ruby-I18n
  • i18n.cr - Internationalization shard
  • Lens - A multiformat internationalization (i18n) shard for Crystal. Supports Gettext, Ruby YAML, etc.
  • Rosetta - A blazing fast internationalization (i18n) library with compile-time key lookup supporting YAML and JSON formats

Logging and monitoring

Machine Learning

  • ai4cr - Artificial Intelligence (based on https://github.com/SergioFierens/ai4r)
  • Cadmium - NLP library based heavily on natural
  • crystal-fann - FANN (Fast Artifical Neural Network) binding
  • mxnet.cr - Bindings for MXNet
  • shainet - SHAInet (Neural Network in pure crystal)

Markdown/Text Processors

  • 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
  • anyolite - Full mruby interpreter with simple bindings, allowing for easy scripting support in projects
  • 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
  • CrSignals - Signals/slots notification library
  • 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
  • gphoto2-web.cr - Web API for libgphoto2
  • immutable - Implementation of thread-safe, persistent, immutable collections
  • iterm2 - Display images within the terminal using the ITerm2 Inline Images Protocol
  • monads - Monad implementation
  • pinger - Ping IP addresses and DNS entries without requiring sudo
  • port_midi - Crystal C bindings for the PortMIDI cross-platform MIDI I/O library
  • retriable.cr - Simple DSL to retry failed code blocks
  • serf-handler.cr - Framework for building Serf handlers, with a suite of useful builtin capabilities
  • simple_retry - Simple tool for retrying failed code blocks
  • sslscan.cr - Crystal shard wrapping the rbsec/sslscan utility
  • version_tools - Version-dependent behaviour, specified at compile-time
  • wafalyzer - Web Application Firewall (WAF) Detector - shard + cli
  • zaru_crystal - Filename sanitization

Network Protocols

Networking

ORM/ODM Extensions

  • avram - A database wrapper for reading, writing, and migrating Postgres databases
  • 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
  • rethinkdb-orm - ORM for RethinkDB / RebirthDB

Package Management

  • shards - Dependency manager for the Crystal

Processes and Threads

  • await_async - Add keywords await & async in Crystal Lang
  • neph - A modern command line job processor that can execute jobs concurrently
  • promise - A Promise implementation with type inference
  • werk - Dead simple task runner with concurrent support, ideal for local CI

Project Generators

  • crystal_lib - Automatic binding generator for native libraries
  • fez - A Kemal application generator
  • libgen - Automatic bindings generator configured using JSON/YAML files

Queues and Messaging

  • mosquito - Redis backed periodic and ad hoc job processing
  • NATS.io - NATS client
  • sidekiq.cr - Simple, efficient job processing

Routing

  • orion - A minimal, rails-esque routing library
  • router.cr - Minimum but powerful http router for HTTP::Server

Scheduling

  • 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

  • alea - Repeatable sampling, CDF and other utilities to work with probability distributions
  • ishi - Graph plotting package with a small API and sensible defaults powered by gnuplot
  • linalg - Linear algebra library inspired by MATLAB and SciPy.linalg
  • num.cr - Numerical computing library supporting N-Dimensional data
  • predict.cr - Satellite prediction library using the sgp4 model
  • quartz - Modeling and simulation framework
  • hermes - Data Mapper pattern implementation for ElastiSearch
  • 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
  • secrets-env - Extends ENV module to read values injected by docker / kubernetes secrets and other orchestration tools

System

  • baked_file_system - Virtual file system implementation
  • hardware - Get CPU, Memory and Network informations of the running OS and its processes

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)
  • Jbuilder - Generate JSON objects with a Builder-style DSL, inspired by jbuilder
  • Kilt - Abstraction layer for template engines
  • Slang - Lightweight, terse, templating language inspired by Ruby's Slim
  • teeplate - A library for rendering multiple template files
  • Water - A library for writing HTML in plain Crystal

Testing

  • Athena Spec - Common/helpful Spec compliant testing utilities
  • crotest - A tiny and simple test framework
  • 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

Web Frameworks

  • amber - Open source efficient and cohesive web application framework
  • Athena - A web framework comprised of reusable, independent components
  • grip - The microframework for writing powerful web applications
  • kemal - Lightning Fast, Super Simple web framework. Inspired by Sinatra
  • lucky - Catch bugs early, forget about most performance issues, and spend more time on code instead of debugging and writing tests
  • runcobo - An api framework with simple, intuitive and consistent DSL, using jbuilder to render json
  • Shivneri - Component based MVC web framework for crystal targeting good code structures, modularity & performance
  • spider-gazelle - A Rails esque web framework with a focus on speed and extensibility

Community

Unofficial

Resources

Official Documentation Translations

Services and Apps

  • carc.in - A web service that runs your code and displays the result
  • Crank - A Procfile-based application manager (like Foreman)
  • 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
  • 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
  • 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

Tools

DevOps

  • ansible-crystal - Ansible playbook for installing crystal
  • DPPM - An easy, universal way to install and manage applications as packages (mostly Linux)

Editor Plugins

LSP Language Server Protocol Implementations

  • crystalline - Crystalline is an implementation of the Language Server Protocol written in and for the Crystal Language
  • scry - Code analysis server for Crystal implementing the Language Server Protocol

Shell plugins

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

Awesome Frege Awesome

Useful resources for the Frege programming language

You might also like awesome-haskell.

Please read the contribution guidelines before contributing.

Contents

Introduction

Overview

  • Frege - Official website.

First Steps

Comparisons

Official Resources

Community

Chat

  • Gitter - Gitter channel.
  • IRC - IRC channel.

Questions

Social Media

Information

Articles & Blogs

Books

Conferences

  • ICFP - International Conference on Functional Programming.

Courses

  • FP101x - Introduction to Functional Programming on edX.

Talks

  • Overview - Frege, a Haskell for the JVM by Dierk Kรถnig.
  • Frege vs. Haskell - FregeDay: Roadmap for resolving differences between Haskell and Frege (Ingo Wechsung).
  • ICFP Videos - Videos about functional programming.
  • Frege Wiki - List of more talks on the Frege wiki.

Libraries

  • Frege Wiki - List of libraries on the Frege wiki.

Android

  • FregeAndroid - Frege interface to the Android API.
  • frege-on-android - How to use Frege on Android.
  • FregeAndroid - Proof of concept Android application in Frege.
  • GeoQuiz-Frege - Port of the BigNerd Ranch GeoQuiz application in Frege.
  • froid - Library for using Frege in Android development.

Big Data

  • Spark - Apache Spark with Frege.

Databases

  • Sirocco - Frege library for relational databases.
  • frege-dbc - JDBC with Frege.

Email

Graphics

GUI

  • FregeFX - Frege bindings for JavaFX.

Web Frameworks

  • Chinook - Frege web framework based on SparkJava.
  • Fregelet - Frege web framework based on servlet.
  • Play - Play framework with Frege.

Sample Applications

Games

  • 2048 - Frege clone of 2048.
  • frech - Fully functional chess engine.

Media

  • Zwana - Piano using Java Midi.

Web

Tools

Build Tools

IDEs

REPLs

Unit Testing

Awesome CMake Awesome

A curated list of awesome CMake scripts, modules, examples and others

Your contributions are highly welcome (first see CONTRIBUTING.md).

There is another file NonModernCMake.md with other links worth taking a look, but they use obsolete practices which are considered non-modern - like not using target_*-based dependency management - see #16 and #42 for more details.

Contents

Community

Resources

  • Latest Documentation
  • FAQ
  • Wiki
  • Webinars
  • Web Book - CGold: The Hitchhikerโ€™s Guide to the CMake. [BSD2]
  • Modern CMake - Modern CMake PDF and samples by the creator of cmakepp. [MIT]
  • Tutorial - Modern CMake tutorials part1: CMake basics
  • Article - Easily supporting CMake install and find_package().
  • Article - Easy dependency management for C++ with CMake and Git.
  • Article - Opt-in header-only libraries with CMake.
  • Article - Ultimate Guide to Modern CMake.
  • Article - A list of common CMake antipatterns (from 2013 but still relevant).
  • Article - How to Build a CMake-Based Project.
  • Article - Learn CMake's Scripting Language in 15 Minutes.
  • Article - The architecture of CMake.
  • Lecture - Effective CMake - by Daniel Pfeifer, C++Now 2017.
  • Article - Building Cross-Platform CUDA Applications with CMake.
  • Tutorial - A step-by-step guide for understanding CMake.
  • Article + Lecture - Embracing Modern CMake - by Stephen Kelly.
  • Lecture - Modern CMake for Modular Design - by Mathieu Ropert, CppCon 2017.
  • Article - It's Time To Do CMake Right (one of the best articles about CMake).
  • Articles - A series on CMake - by Martin Hoล™eลˆovskรฝ
  • Lecture - Introduction to CMake - by Florent Castelli, C++ Sweden 2018.
  • Article - Some nice and accurate CMake tips.
  • Article - Modern CMake for Library Developers.
  • Article - Effective Modern CMake: a great summary of most good practices - by Manuel Binna.
  • Book - Professional CMake: A Practical Guide (paid).
  • Book - Effective CMake: Practical Advice to Write Better CMake (not fully written yet).
  • Web Book - An Introduction to Modern CMake.
  • YouTube Series - How to CMake Good. [CC0-1.0]
  • Lecture - More Modern CMake (slides & examples)- by Deniz Bahadir, Meeting C++ 2018.
  • Lecture - Oh No! More Modern CMake (slides)- by Deniz Bahadir, Meeting C++ 2019.
  • Article - Modifying the default CMake build types/flags, toolchains and patches - Oh my! - by Cristian Adam.
  • Tutorial - Tutorial and Example on How to Properly Use Modern CMake.

Package Management / Build Systems

  • hunter - Cross-platform package manager for C++ (based on CMake ExternalProject). [BSD2]
  • cget - CMake package retrieval. This can be used to download and install CMake packages. [BOOST]
  • cppan - C++ Archive Network - C++ Package Manager based on CMake, implemented in C++14. [APACHE2]
  • cpm - C++ Package Manager based on CMake and Git. [MIT]
  • conan - Conan C++ Package Manager, implemented in Python and has a CMake integration backend. [MIT]
  • fips - High-level build system/dependency management for distributed, multi-platform C/C++ projects. [MIT]
  • Ninja - Build system that differs from others in two major respects: it is designed to have its input files generated by a higher-level build system (like CMake), and it is designed to run builds as fast as possible. [APACHE2]
  • vcpkg - A tool to acquire and build C++ open source libraries. Uses CMake internally as a build script language. [MIT]
  • pmm - PMM is a module for CMake that manages... package managers. [MIT]
  • cpm - A setup-free CMake + git dependency manager. [MIT]

Modules

Utility Scripts

These provide a wide range of functionality - from dealing with compiler flags to using tools. Some also contain modules.

Toolchains

Examples / Templates

Other

License

This is released under the Creative Commons Attribution 4.0 International License (CC BY 4.0).

Awesome ActionScript 3 Awesome

A curated list of awesome libraries and components for ActionScript 3 and Adobe AIR.

Adobe AIR provides a single set of APIs to build cross-platform desktop/mobile applications and games. ActionScript 3 is the programming language for AIR. Powerful native functionality such as file system, SQLite, sensors are included by default. To add missing functionality, you can build ANEs (Air Native Extensions) coded in the native language (eg VC++ for Windows, Java for Android, Swift/Objective-C for iOS). To build mobile apps/games with GPU-rendered graphics, use the Starling framework and optionally the Feathers UI. Adobe AIR is very popular in the mobile gaming space.

Contributions welcome. To add a useful project simply create an Issue.

Contents

Development Tools

This section includes commercial tools as well as free/open source tools.

Code Editors

  • FlashDevelop - Premiere free & open-source IDE for AS3 & AIR, with code completion, debugging, and more.
  • Powerflasher FDT - Commercial IDE built on the Eclipse platform for development of Adobe Flash/AIR content.
  • Adobe Flash Builder - Commercial IDE for building applications on the Flex framework (with advanced debugging tools).
  • Moonshine IDE - Moonshine is a free and open source middleweight IDE built with ActionScript 3 for ActionScript 3, Apache Flexยฎ, Apache FlexJSยฎ and Feathers development with Cloud and Desktop support.
  • IntelliJ IDEA - Commercial IDE that supports many different languages including AS3.
  • Visual Studio Code - An AS3 & MXML language extension for Visual Studio Code. Runs on Windows, macOS, and Linux.

Live Debuggers

Asset Creators

SWF Obfuscators

  • secureSWF - Commercial AS3/AIR obfuscator with renaming, asset encryption and automatic code optimization.
  • irrFuscator - Commercial AS3 obfuscator for Flash and Flex SWF files.

SWF Inspectors

SWF Decompilers

  • AS3Sorcerer - Premiere AS3 decompiler with 99% decompilation accuracy (supports SWF/SWC, Alchemy opcodes).
  • Sothink Decompiler - Advanced decompiler for AS2/AS3 (supports asset extraction and conversion of SWF to FLA/Flex).

ANE Dev Tools

  • FreSharp - Build ANEs using C# with this C# wrapper for FlashRuntimeExtensions .
  • Swift-IOS-ANE - ANE starter kit written in Swift 3 for iOS 10 .

Frameworks

MVC Frameworks

  • PureMVC - Industry-standard MVC framework for Flash (multicore).
  • Robotlegs - Dependency injection, module/view/command management framework for Flash.
  • Hummingbird - Build and deploy robust MVC applications for AS3, Mobile and the Starling Framework.
  • Apollo - Dependency injection and messaging framework, which can be used as the basis for MVC projects.
  • Somacore - Lightweight event-based AS3 MVC framework.
  • Kote - Fast and lightweight MVC framework that brings together the best of PureMVC and as3-signals.
  • StarlingMVC - IOC Framework for Starling based games.

UI Frameworks

  • Starling - High-performance 2D graphics engine built on Stage3D. API identical to Flash API. (github, help).
  • Feathers UI - User interface components for Starling Framework (github, help).
  • Flow - Layout, effects, data binding and remoting framework to be used instead of Flex.
  • AS3Commons UI - Layouting, focus and keyboard management framework.
  • Swiz - Brutally simple micro-architecture for creating RIAs with AS3 and Adobe Flex.
  • Hiddenwood - User interface library developed for a web app project, written in AS3 and in a MVC pattern.
  • Elastic-Lists - Fluid and powerful interface for facet browsing.
  • Apache Flexยฎ - The Apache Flexยฎ SDK is the evolution of the popular Adobe Flex SDK. The Apache Flexยฎ SDK is an application development framework for easily building Flash-based applications for mobile devices, web browsers, and desktop platforms.
  • Apache Royaleยฎ - The Apache Royaleยฎ project is developing a next-generation of the Apache Flexยฎ SDK. Royale has the goal of allowing applications developed in MXML and ActionScript to not only run in the Flash/AIR runtimes, but also to run natively in the browser without Flash, on mobile devices as a PhoneGap/Cordova application, and in embedded JS environments such as Chromium Embedded Framework. Royale has the potential to allow your MXML and ActionScript code to run in even more places than Flash currently does.

Game Frameworks

  • CitrusEngine - Professional-grade game engine built built on Starling & Away3D.
  • StarlingPunk - Framework built on Starling to add structure and organization to your game projects.
  • FlashPunk - Framework to build 2D games. Provides graphics, events, inputs, animation, etc.
  • Flixel - Useful base classes that you can extend to make your own game objects.
  • Tetragon - Cross-platform framework to build any kind of game. Provides resource management, debugging facilities, multi-locale support, layered extendability, a game-oriented data structure, and more.
  • Pixelizer - Component based game engine to build 2D games. Provides rendering, animation, input, etc.
  • AS3isolib - Isometric Library developed to assist in creating isometrically projected games.
  • IsoHill - GPU-based Isometric engine built on Starling, with TILED map parser, layers, etc (website).
  • YCanvas - High-performance 2D tile renderer and world map renderer.
  • ND2D - GPU-accelerated 2D game engine using Stage3D (ND2Dx).
  • Nexus - GPU-accelerated 2D game engine using Stage3D.

3D Frameworks

  • AwayBuilder - Visual workflow tool to import, optimise and bake 3D assets from a variety of sources.
  • Away3D - Open-source GPU-accelerated 3D engine for Flash Player 11+ (examples).
  • Away3D OpenFL - Away3D for Neko, HTML5 and native CPP. (examples).
  • AwayPhysics FP11 - Away Physics - 3D physics library for the Away3D FP 11 (examples).
  • Alternativa3D - Alternativa3D GPU accelerated 3D engine (examples).
  • Flare3D - Commercial 3D platform with high-performance engine and Level-editor IDE.
  • Zen3D - High-performance 3D engine for Adobe Flash & AIR (GPU based).

Animation

  • GreenSock GSAP - The industry-standard animation library for Flash (TweenLite, TweenMax) (github).
  • GTween - Small but robust library for programmatic tweening, animation, and transitions.
  • DragonBones - High-speed skeletal animation using Starling, and tools to export animations from Flash Pro.
  • FlashEff2 - Premiere programmatic animation library with 100+ transitions and text effects.
  • FlashEffNano - FlashEff transition library optimized for mobile devices, with 20+ transitions in 750 styles.
  • StarlingGAFPlayer - Play back GAF animations using Starling (animations authored in Flash Pro).

Signals

  • AS3-signals - New approach for AS3 events inspired by C# events and signals/slots in Qt.
  • react-as3 - Signals/slots and functional reactive programming library.
  • Signaller - Signals implementation with restricted rights for dispatching.
  • Fa-as3 - Write less, do more framework, modeled like jQuery.

Functional

  • AS3FP - Collection of functional idioms based on Haskell and Coffeescript.
  • Raix - Reactive And Interactive eXtensions simplifies working with interactive data (arrays) or reactive data (events).
  • Fxp-as3 - Functional library inspired by the "mostly adequate guide".

Unit Testing

  • AS3unit - Unit testing framework for ActionScript 3.
  • hamcrest-as3 - Matcher objects allowing 'match' rules to be defined declaratively.
  • expect.as - BDD-style assertion library for ActionScript 3.
  • AS3spec - Tiny BDD framework for AS3, inspired by Bacon and RSpec.
  • Flexunit - FlexUnit project for Actionscript 3 and Flex projects.
  • ASunit - The only unit test framework that supports Flash Players 6, 7, 8, 9 and 10.
  • RobotEyes - End-to-end testing for TDD. Hybrid of WindowLicker and Drew Bourne's Mockolate.

User Interface

UI Components

  • MinimalComps - Minimal ActionScript 3.0 UI Components for Flash.
  • MadComponents - Popular Mobile UI Framework for AS3 / AIR.
  • AsWing - Open Source Flash ActionScript GUI framework.
  • GPUI - Tiny GUI Library based on Stage3D (GPU).
  • Falcon - responsive/flexible mobile ui controls for Feathers.
  • Flex-maps - Definitive solution for maps in Apache Flex.
  • FlexBook - Awesome Page Flip component for Flex.
  • Flex-Android-Material-Skins - Android Material Design skins for Flex Mobile components.

Starling Components

  • TabbedApplication - View-based navigation model with swipe to navigate tabs.
  • DataGrid - Displays a datagrid with column headings and smooth scrolling.
  • DataTree - Displays hierarchical data arranged as an expandable tree.
  • Canvas - Supports basic vector drawing functionality.
  • CircleProgress - Displays progress using a radial progressbar.
  • ZoomableControl - Allows a pinch to zoom using the multitouch inputs.
  • Toaster - Simple feedback about an operation in a small popup. .
  • Google Maps - Google Maps for Starling, optimized for mobile devices.

Layout

  • Adobe TLF - Adobe/Apache Flex Text Layout Framework (TLF).
  • TinyTLF - Versatile text layout framework built on top of the Flash Text Engine for Flash/Flex.
  • TransformManager - By Greensock. Interactive scaling/rotating/moving of DisplayObjects.
  • TransformTool - Free Transform Tool (AS, JS) for manipulating objects in 2D space.
  • Argilla-Mosaic - Dynamic layout library.
  • xrope - Simple layout library for native AS3 display objects.
  • miglayout-as - Port of MigLayout, a superbly versatile Flash/Flex/FlashCocoa (SWT/Swing/JavaFX) layout manager.

Multi Touch

  • TUIO Client - Common framework for multi-touch hardware, supporting TUIO/FLC and TUIO/TCP (web).
  • Gestouch - Multitouch gesture recognition library for building better Natural User Interfaces.
  • Gestures.IO - Simplifies the way you create gesture-based Natural Interactions.
  • TouchScript - Multitouch framework that makes handling complex gesture interactions on large touch surfaces easier.

Game Controllers

  • AS3dpad - A virtual touchscreen gamepad designed for Adobe AIR Mobile (Android/iOS).
  • Gamepad - Simulates an analog joystick input using the keyboard.
  • Advanced_Joystick - Joystick for the Starling Framework, designed for Adobe AIR Mobile.
  • AS3-Controller-Input - Interact with Ouya and Xbox360 game controllers from Adobe AIR.

Multimedia

Augmented Reality

  • FLARToolKit - AS3 port of the industry standard ARToolkit library, for Flash Player 11. (website).
  • FLAREmulator - Test AR demos to see what works and what doesn't with or without a webcam.
  • FLARManager - Lightweight framework for building augmented reality apps, using FLARToolkit/flare.tracker/flare.NFT.
  • NyARToolkitAS3 - NyARToolkit AS3 edition. Marker based Augmented reality library.
  • EZFLAR - A little wrapper to ease the way AR works.
  • IN2AR - SDK for IN2AR cross-platform Augmented Reality Engine.

Data Visualization

  • Axiis - Data visualization framework with line, bar, wedge, column, cluster, area, smith and treemap charts.
  • Open Flash Charts - Line charts, Area charts, Bar charts, Pie charts, Scatter charts.
  • Flare - charts and graphs, supports data management, visual encoding, animation, and interaction techniques.
  • clearmaps - Mapping framework for data visualization.
  • redada - Interactive visualization of weighted graphs using GraphML files.
  • Flextreemap - TreeMap data visualization component for Adobe Flex.
  • GraphVisualizer - A Flex 3 + ActionScript 3 web software to draw dynamic graphcs.
  • Weave - Web-based Analysis and Visualization Environment.
  • Social-grid - Abstract Grid Visualization for Social Media.

Camera

Image

Font

  • Firetype - Parse OpenType fonts and render them using Stage3D.
  • BMFontRenderer - AS3 renderer for bitmap font data in the BMFont format.
  • HanFont - AIR app for Chinese Font Embeding in ActionScript.
  • Ficon.as - Library to easily include icon fonts.

Particle

  • Flint - Particle Engine for Flash and Flex.
  • Desuade Partigen - Desuade Partigen particle generation system (github).
  • Angulex - Particle Designer for the Starling framework (ActionScript 3).
  • SAP - Particle System for Starling.
  • Starling-Particles - Particle system for the Starling framework, compatible with the "Particle Designer" from 71squared.com.
  • MotionParticleSprite - Design motion paths in Flash Pro and use it to guide Starling particles.

Panorama Viewer

QR Code

Sound

  • SoundAS - Modern & lightweight sound manager for AS3.
  • Standingwave3 - Dynamic audio library.
  • Standingwave3-addons - Addons for SW3.
  • Soundtouch-as3 - AS3 Port of the SoundTouch Sound Processing Library.
  • SeiON - Sound Management Library.
  • AS3-Sound-Manager- Upgraded version of the Sound Manager Class from Matt Przybylski.
  • AS3sfxr - Port of sfxr from C++ to AS3, using the new sound and file capabilities of Flash Player 10.
  • AS3-audio - Audio Management in Actionscript.
  • SiON - Flash Software Synthesizer.
  • FlashWavRecorder - Recording audio and saving as a WAV.
  • Local-recorder - Local audio recorder (no streaming server required). Currently requires Flash Player 10.1 or above.
  • Jukebox - Music manager for Actionscript 3 projects.
  • Flod - Amiga SoundTracker (MOD) and FastTracker (XM) Replay Library.

Video Player

  • Flowplayer - Flowplayer Flash, the video player for the Web.
  • Goplayer - Modern open-source video player written in ActionScript 3.
  • OSFlashVideoPlayer - Open source flash video player.
  • F4player - Open Source AS3 Flash Video Player.
  • dashas - MPEG-DASH player written in ActionScript.
  • hlsplayer - HLS player for OSMF flash framework.
  • vgaplayer - Open source player for Adobe Flash Media Server streams (RTMP).

Database

SQLite

  • AS3Query - Another SQLite ORM and query DSL for ActionScript.
  • AIRdb - AIR ORM for using client-side SQLite within AIR and Flex apps. Supports ActiveRecord style models, migrations and associations.
  • Flexine - SQLite ORM for AIR.
  • AIR-sqlite - Utilities for working with SQLite databases in AIR.

MongoDB

CouchDB

  • AS3couchdb - Client-side API for interacting with a CouchDB instance.
  • Soup - Mixing CouchDB, Sinatra, AIR and RestfulX to create an offline/online ready app with undo/redo capabilities.

MySQL

  • AS3mysql - Driver for the MySQL open source database.

PostgreSQL

  • Pegasus - Driver for the PostgreSQL open source database.

DynamoDB

  • AWS-dynamodb - Driver for accessing Amazon's AWS DynamoDB.

Redis

File Formats

Archives

  • FZip - Mature library to load, modify and create standard ZIP archives.
  • ASZip - Generate ZIP archives from AS3.
  • Untar-Worker - TAR extraction using AS3 Workers (background threads).

3D Formats

  • AsCollada - Parse COLLADA 3D model files (fork).
  • AsBlender - Parse Blender .BLEND files.
  • AS3-bvh-parser - Parse BVH files.
  • EasyAGAL - Simplifies development of AGAL shaders with code completion, code hinting, macros, etc.

CSV

  • CSV4AS3 - CSV library ported from Apache Commons CSV.
  • Csvlib - CSV parser.

CSS

  • AS3csslib - CSS3 parser, selector and style engine for ActionScript 3.0.
  • Fcss - Flash Cascading StyleSheet Library.
  • Stylekit-as3 - Skinnable user interfaces using CSS3.
  • Sass4as - Syntactically Awesome Stylesheets for ActionScript 3.
  • Jakute-CSS - Jakute is a CSS framework for ActionScript/Flash.
  • CSS.as - Single-file CSS parser, part of TinyTLF project.

BSON

  • ActionBSON - BSON data encoder/decoder.
  • MongoAS3 - MongoDB Driver which includes BSON I/O.

EXIF

FXG

  • Fxg-as3-lib - Pure AS3 FXG rendering library (both runtime rendering and mxml supported).
  • Fxg2as3 - Converting FXG markup into executable Actionscript 3 code.

GIF

ICAL

  • AS3iCAL - iCal parser based on the RFC2445 specification.

JSON

  • Actionjson - Faster, more advanced ActionScript 3 JSON library.
  • Jameson - JSON Document Object Mapper.
  • Serialkiller - JSON & XML serialization library.
  • JsonMapper - Typed JSON parser.
  • JSONTools - JSON errors, the speed of the JSWoof JSON library, and E4X style queries dubbed E4J.

Markdown

MP3

  • AS3id3lib - Parse MP3 ID3 data.
  • AS3Icy - Decode and play live MP3 streams from Shoutcast, Icecast and Limewire.

PDF

PSD

  • AS3-psd-parser - Parse Photoshop PSD files and render as BitmapData objects.

SWF

  • AS3swf - Low level library to parse, create, modify and publish SWF files.
  • AS3abc - Low level library to parse, create, modify and publish ABC (Actionscript Block Code) files.
  • SWFWire - SWF Decompiler and Inspector Tools.
  • Abc-abstraction - Allows ABC to be analyzed, manipulated, packaged back into an SWF, and run.

SVG

XML

  • XMLSerializer - Library which allows data serialisation from ActionScript to XML and from XML to ActionScript.
  • DynamicXMLParser - Dynamic parse xml content into predefined data classes (actionscript 3).
  • Nudge - Framework to serialize/deserialize objects as XML.
  • AStream - XML to Object (and vice versa) mapping library written in AS3. Compatible with XStream.

XLSX

  • AS3-xlsx-reader - Parse Open XML Excel (.XLSX) or Open Office spreadsheets.

Networking

Data Loader

  • GreenSock LoaderMax - Provides an easy and powerful way to load assets at runtime.
  • BulkLoader - Bulk asset loading library for Actionscript.
  • AssetLoader - Multi-file/asset loader for AS3 built on AS3Signals.

Hardware

  • AS3midilib - Work with MIDI files and MIDI input/output devices.
  • AS3glue - Communication for Arduino boards.
  • AS3-arduino - Connecting Arduino Prototyping board to Adobe AIR.
  • AIRkinect - ANE for integrating with Microsoft Kinect. (examples).
  • KinectGate - KinectSDK to AS3 socket gate.
  • Kinect-Gestures - AIR Kinect Gesture Library.
  • OpenTSPS - TSPS is a cross platform Toolkit for Sensing People in Spaces. It performs openCV operations on live video (Kinect, web camera, etc) and sends it to clients as JSON (via WebSockets), OSC, TUIO, or TCP.
  • LeapMotionAS3 - Integrate with the LeapMotion sensor (provides Gestures, Image, Skeleton/Bone @ 210 FPS).

Servers

  • AIRhttp - HTTP Server for Adobe AIR.
  • AIR-Server - Socket Server library for Adobe AIR.

OAuth

  • Actionscript-oauth2 - Interfacing with OAuth 2.0 services.
  • oauth-flex - OAuth.io plugin for Apache Flex/ActionScript.
  • oauth-as3 - Mavenized, RSL version of oauth-as3 library - OAuth for ActionScript 3.

HTTP

P2P

  • P2Plocal - Local RTMFP connections.
  • Android-Flash-P2P - P2P Communication between a Client.swf and an Android Device with AIR.
  • NetGrouper - Wrapper for NetGroup and RTMFP Multicasting abilities to create quick P2P multiplayer games over local networks or Adobe Cirrus.
  • HydraP2P - Simplifies the peer-to-peer API introduced in Flash Player 10.1.
  • GroupP2P - P2P-based netgroup.
  • HLS-P2P - Flash OSMF based hybrid cdn&p2p hls solution.
  • P2Pmessaging - Simple messaging framework for doing P2P in Flash.
  • ArcusNode - RTMFP Rendevouz Service For Peer Assisted Networking With Adobe Flash on Node JS.

Sockets

  • AS3WebSocket - WebSocket client implementation for the final WebSocket Draft RFC6455.
  • SmartSocket - SmartSocket is a Java and PHP socket server engine, to make creating multi-user applications quick and painless.
  • FlashSocket.IO - Clients connect to Socket.IO servers from AS3/AIR clients.
  • Socket.io - Socket.IO Actionscript 3 client.
  • AMFsocket - Bi-directional RPC library for high performance network communication.
  • Sockpuppet - Complete Ruby/ActionScript socket client/server with AMF.
  • Socket.io-flash - Communication to Socket.IO v.0.8+ servers.
  • ws-flash-client - Reliable minimalistic WebSocket client (uses Adobe Flash where native WebSocket is not available).

Protocols

  • GIT - Client-side implementation of Git.
  • AIRplay - Client-side implementation of Apple's Airplay.
  • TeaTime - AS3/Erlang implementation of the Croquet project's TeaTime protocol.
  • XMPP - Client-side implementation of XMPP library.
  • XMPP - Lightweight implementation of XMPP library.
  • AMQP - Client-side implementation of the 0-8 version of AMQP.
  • NTP - Client-side implementation of NTP Client (Network Time Protocol).
  • FUDI - Client-side implementation of the Puredata FUDI protocol.
  • BDD Cucumber - A BDD Cucumber wire protocol implementation for Flash ActionScript.

Email

  • AIRXMail - Complete client-side email library supporting SMTP, POP3 and IMAP4.
  • AS3Mailer - Sends email using server script or invokes a mailto.

Utilities

Artificial Intelligence

Async

Crypto

  • BlooddyCrypto - High-performance library for processing binary data. This library contains MD5, SHA-1, SHA-2, Base64, CRC32, JSON, PNG/JPEG encoders.
  • AS3Crypto - Fork of Henri Torgemane's excellent cryptography library (patched).
  • AS3corelib - MD5 and SHA1 hashing, Image encoders, and JSON serialization.
  • ASCrypt - Crypto library with a similar API for multiple languages.
  • Nexuslib - Reflection, serialization, seeded random number generation, cryptography, networking, and more.
  • Hashlib - Over 30 different hashing functions.
  • XXTEA-AS3 - XXTEA encryption algorithm library for ActionScript 3.
  • Gibberish-AES - A fully OpenSSL compliant ActionScript 3 library for AES encryption.

Data

Geometry

  • AS3geometry - Primitives, Polygons, Intersections, etc.
  • AS3GeomAlgo - Collection of geometry algorithms. Port of hxGeomAlgo.
  • Coral - High-performance classes for 3D mathematics (Point, Vector, Matrix, Quaternion).
  • Csg.as - Constructive Solid Geometry on 3D meshes.
  • PathUtils - Working with quadratic, bezier and line sequences.
  • Hilbert - Port of Hilbert curve from cortesi/scurve.
  • AS3AStar - Fast A-Star pathfinding algorithm.
  • A-star_pathfinder - A-Star pathfinding interface for tile based maps.
  • As3Pathfinder - Grid Path finding Library written using Dijkstra's algorithm.

Math

  • AS3Units - Port of NGUnits. Parsing, formatting, and converting between units of measure.
  • AS3LinAlg - Linear Algebra library (Jacobi SVD, Eigen Vectors/Values, Cholesky LU, etc).
  • Performance Primitives - High-performance math modeled on the Intel Performance Primitives.
  • Zexpression - Parse and evalate math expressions with functions and variables.
  • FlexibleMatrix - A multi purpose Matrix class.
  • AS3eval - Packages the Tamarin ESC compiler to work within Flash Player. (alternate).
  • FlashFormulaEditor - Formula editor made in Adobe Flex.

Text

  • Linkify-as3 - Convert URLs, e-mail addresses, phone numbers, into clickable links.
  • AS3hyphenation - Port of the Javascript text hyphenation library Hyphenator.js.

Runtimes

Emulators

  • NES Emulator - Emulator of NES, Super Nintendo, Sega Mega Drive, GameBoy video consoles.
  • Commodore 64 Emulator - A low level Commodore 64 emulator written in Actionscript 3.
  • 8080 Emulator - An actionscript 3 space invaders emulator based on the intel 8080 processor.
  • 8-bit VM - An eight bit virtual machine written in actionscript.

Interpreters

  • JS - RhinoJS, Port of Mozilla's Rhino JavaScript interpreter.
  • Simple JS - AS3-based Javascript interpreter.
  • MIL - A MIL language VM and interpreter written in ActionScript.
  • TALES - TALES interpreter for ActionScript.
  • Scheme - Scheme interpreter in ActionScript.
  • Lisp - Lisp dialect written in Actionscript, with compiler and bytecode interpreter.
  • Lisp Compiler - A lisp compiler for the AVM2.
  • CannonML - keim's CannonML (shmup scripting language) interpreter.

AIR Native Extensions

Audio ANE

  • SongPicker - A song picker/player ANE for iOS and Android.
  • SilentSwitch - ANE for iOS to mute sounds if the hardware silent switch is on.
  • VolumePro - Control native music stream volume and you can listen to the volume changes.
  • SystemVolume - Interact with the system volume for iOS and Android devices.

Multimedia ANE

  • WebView (Tuarua) - Modern WebView for OSX 10.10+, Windows Desktop, iOS 9.0+ and Android 21+. Uses CEF (Chromium Embedded Framework) on Windows, WKWebView on iOS/OSX, and WebView on Android.
  • WebView (FlashLab) - Replacement for StageWebView, allows calling Javascript functions from AIR.
  • AVANE - For building video encoding applications using FFmpeg.
  • PDF - Lets you open PDF files from your AIR mobile apps. Supported on Android and iOS.
  • VideoPlayer - Play video files in Android or iOS native video player.
  • SurfaceVideoPlayer - SurfacePlayer ANE helps you play video files inside your air mobile projects.
  • Speech - Convert strings to voice files and vice versa fully in the background.
  • MyAR - AR ANE supporting Android and iOS 64-bit based on Metaio's SDK.
  • QR-zbar - ANE for QR Code Reader.
  • Barcode - Scan almost any barcode type with this super fast barcode scanner ANE.
  • Bullet - Bullet physics simulation library.

File System ANE

  • FileChooser - Enable users to select a file from the device filesystem.
  • ZipManager - Zip or unzip large zip archives super fast using native process on Android and iOS.
  • Spotlight - Integrate with iOS 9 Spotlight Search, to index search items and user generated content.

Networking ANE

  • Firebase - API for Google Firebase on Android and iOS with 100% identical ActionScript API.
  • DownloadManager - Download large data files with pause/resume support.
  • BitTorrent - For building BitTorrent enabled applications.

Hardware ANE

  • Bluetooth - Scan for other devices, connect to and pair with them and transfer data between them.
  • GPS - Get current device GPS location as fast as possible by automatically checking the best available provider.
  • GoogleVR - Google Virtual Reality SDK available to AIR developers.
  • Joystick-ANE - ANE Joystick Library.
  • AIRControl - Adobe AIR Game Controller ANE.
  • AIROUYAController - ANE for the OUYA Controller.
  • AIRKinectv2 - ANE for Microsoft Kinect v2 for Windows SDK.
  • Serial/MIDI/DMX - AIRBonjour, NativeSerial, NativeDMXController, NativeMIDI, VirtualMIDI, ExtendedMouse.
  • LeapMotionAS3 - ANE for LeapMotion sensor (provides Gestures, Image, Skeleton/Bone @ 210 FPS).

System ANE

  • TaskbarProgress - Display taskbar progress on OSX & Windows 7/8/10 .
  • DesktopToast - Display interactive toast notifications in Windows 8/10 and OSX.
  • AlarmManager - Run a scheduled task even if your AIR app is closed.
  • InAppPayments - Identical in-app-billing and in-app-purchase ANE for Android and iOS.
  • PermissionCheck - Check and request for permissions in your Adobe Air app.
  • RateMe - Ask your users to rate your app in the most efficient way.
  • Statusbar - Control the Statusbar in your AIR apps in runtime.
  • Badge - Control the iOS badge value.
  • WinDebug - Windows ANE to control applications, windows, memory, breakpoints, metadata, registry, etc.
  • Can-Open-URL - ANE for iOS to detect whether an app is installed to handle a specific URL scheme.

Social ANE

  • Facebook - Integrate Facebook SDK into your AIR apps.
  • GCM - Use Google Cloud messaging on Android and iOS. .
  • Baidu - Baidu ANE for for iOS and Android.

Analytics ANE

  • Admob - Admob ANE.
  • GameServices - Google Game Services for Android+iOS.
  • MoPub - ANE for MoPub advertising.
  • UMAnalytics - ANE for UMAnalytics SDK (iOS and Android).
  • Localytics - Localytics analytics for mobile Adobe AIR applications (iOS & Android).
  • Testflight - Apple TestFlight ANE.
  • HockeyApp - ANE for the Hockeyapp testing & distribute platform.
  • Chartboost - ANE for the Chartboost SDK with compile scripts.

Awesome Eta Awesome

Useful resources for the Eta programming language

You might also like awesome-haskell.

Please read the contribution guidelines before contributing.

Contents

Introduction

Overview

  • Eta - Official website.
  • GitHub - Eta on GitHub.
  • Philosophy - Interview about the philosophy behind Eta's development.

First Steps

Comparisons

Compatibility

Official Resources

Community

Twitter

Information

Articles

  • InfoWorld - Short article about Eta.
  • Jaxenter - Functional programming made easy: Here comes Eta.

Blogs

Conferences

  • ICFP - International Conference on Functional Programming.

Courses

  • FP101x - Introduction to Functional Programming on edX.

Talks

Tools

  • IntelliJ Eta - Plugin for IntelliJ.
  • sbt - Plugin for integrating Eta into Scala.
  • gradle - Gradle plugin for Eta projects.

Sample Applications

Android

Web

  • eta-todo - Example of a Spock web application written in Eta.
  • eta-yesod-minimal - Example of a Yesod web application in Eta.

Miscellaneous

Awesome Idris Awesome

An auxiliary list of awesome Idris resources.

Idris is a general purpose pure functional programming language with dependent types. Dependent types allow types to be predicated on values, meaning that some aspects of a programโ€™s behaviour can be specified precisely in the type. It is compiled, with eager evaluation. Its features are influenced by Haskell and ML.

Contents

Official resources

Articles

Books

Papers

Presentations

Projects

Backends

Build tools | Package managers

  • Idris Rules - Idris rules for Bazel
  • Ikan - A package manager for idris, in idris
  • Elba - A package manager for Idris
  • idream - A simple build system for Idris

Community

License

CC0



Awesome



Ada is powering satellites, aircrafts, ships, power plants, surgical robots, drones, CNCs, servers, games and coffee makers.
Ada is arguably the most { performant โˆฉ capable โˆฉ precise โˆฉ readable โˆฉ mature } programming language.
Ada is alive and kicking!

Long live Ada/SPARK.



Awesome
A curated list of awesome resources related to the Ada and SPARK programming language.

Contents

Click to expand 1. [Presentation](#Presentation) 2. [Education](#Education) 1. [Entry Point](#Entry-Point) 1. [Tutorials](#Tutorials) 2. [Online Books](#Online-Books) 3. [Books](#Books) 4. [Specialties](#Specialties) 5. [Reference](#Reference) 3. [Community](#Community) 1. [Questions and Answers](#Questions-and-Answers) 2. [News and Resources](#News-and-Resources) 3. [Competition](#Competition) 4. [Compilers](#Compilers) 1. [Open source](#Open-source) 2. [Commercial / Open source](#Commercial--Open-source) 3. [Commercial / Closed source](#Commercial--Closed-source) 4. [Online](#Online) 5. [Editors](#Editors) 1. [Integrated Development Editors](#Integrated-Development-Editor) 2. [Text Modes](#Text-Modes) 3. [VSCode Extensions](#VSCode-Extensions) 6. [Deployment](#Deployment) 1. [Build and Package](#Build-and-Package) 2. [Continuous Integration](#Continuous-Integration) 7. [Runtimes](#Runtimes) 8. [OS and Kernels](#OS-and-Kernels) 9. [Games](#Games) 10. [Frameworks](#Frameworks) 1. [Components](#Components) 2. [Distributed](#Distributed) 3. [Graphical User Interface](#Graphical-User-Interface) 3. [Terminal User Interface](#Terminal-User-Interface) 4. [3D](#3D) 5. [Web](#Web) 6. [Unit Test](#Unit-Test) 7. [Logging](#Logging) 8. [Machine Learning](#Machine-Learning) 9. [Automation](#Automation) 11. [Tools](#Tools) 1. [Verification](#Verification) 2. [Generation](#Generation) 3. [UML](#UML) 4. [Encryption](#Encryption) 12. [Libraries](#Libraries) 1. [Math](#Math) 2. [Science](#Science) 3. [Algorithms, Containers and Protocols](#Algorithms-Containers-and-Protocols) 4. [Cryptograrphy](#Cryptography) 5. [Compression](#Compression) 6. [Patterns](#Patterns) 7. [System Modeling](#System-Modeling) 8. [Parsers, Scanners, Linters, Analysers, Interpreters and Prettyprinters](#Parsers-Scanners-Linters-Analysers-Interpreters-and-Prettyprinters) 9. [Format Readers and Writers](#Format-Readers-and-Writers) 10. [Networking and Communication Middleware](#Networking-and-Communication-Middleware) 11. [Chatting and Communication](#Chatting-and-Communication) 12. [Web](#Web-1) 13. [Graphics and Multimedia](#Graphics-and-Multimedia) 14. [General Purpose Computing](#General-Purpose-Computing) 15. [Sound](#Sound) 16. [Localization](#Localization) 17. [Utilities](#Utilities) 18. [Robotics](#Robotics) 19. [Linux and POSIX](#Linux-and-POSIX) 20. [Windows and .NET](#Windows-and-.NET) 13. [Hardware and Embedded](#Hardware-and-Embedded) 1. [Frameworks](#Frameworks) 2. [Firmwares](#Firmwares) 3. [Drivers](#Drivers) 4. [Controllers](#Controllers) 5. [Communication](#Communication) 6. [Libraries](#Libraries-1) 7. [Applications](#Applications) 8. [Bindings](#Bindings) 14. [Applications](#Applications-1) 1. [Office](#Office) 2. [Web](#Web-2) 3. [Multimedia](#Multimedia-1) 4. [Automation](#Automation) 5. [Simulation](#Simulation) 6. [Generators and Translators](#Generators-and-Translators) 7. [Shells and Interpreters](#Shells-and-Interpreters) 8. [Programming Languages](#Programming-Languages) 9. [Misc](#Misc) 15. [Bindings](#Bindings) 16. [License](#Licence)

Presentation

Education

Entry Point

  • learn - Interactive learning platform designed to teach the Ada and SPARK programming languages.

Tutorials

Online books

  • ada-wikibook - Ada Programming book at Wikibooks.
  • ada-distilled - Ada Distilled for Ada 2005.
  • ada-craft - Ada 95: The Craft of Object-Oriented Programming.
  • ada-cpp-java - Ada for the C++ or Java Developer.
  • spark-guidance - Implementation Guidance for the Adoption of SPARK.
  • ada-safe-secure - Safe and Secure Software. An invitation to Ada 2012.
  • ada-95-tutorial - A book going from beginner to advanced concepts in Ada 95, complete with source files.

Books

Programming in Ada 2012 - Comprehensive.
Beginning Ada Programming: From Novice to Professional - Introduction.
Ada 95: The Craft of Object-Oriented Programming - General, intermediate.
Ada Plus Data Structures: An Object Oriented Approach - Data Structures.
Ada for Software Engineers - Idioms, Architecture.
Concurrent and Real-Time Programming in Ada - Concurrency, Containers, Scheduling.
Data Structures and Algorithms: An Object-Oriented Approach Using Ada 95 - Data structures, Algorithms.
Building Parallel, Embedded, and Real-Time Applications with Ada - Concurrency, Distributed.
Analysable Real-Time Systems: Programmed in Ada - Scheduling.
Building High Integrity Applications with SPARK - Formal verification.
Ada and SPARK on ARM Cortex-M - Embedded.

Specialties

  • gems - Ada Gem Archive.
  • ada-composition - A collections of small nifty demos/sample code that may help better layout data or structure project.
  • ada-ic-learning - For additional learning resources, see the AdaIC learning section.
  • ada-at-rosetta-code - A collection of programming tasks and their sample solutions in Ada.

Reference

  • iso-standard - The 2012 revision to the Ada Standard, usually known as Ada 2012.
  • adalib - Standard Ada library specification as defined in Reference Manual.

Community

Questions and Answers

News and Resources

  • adacore-blog - An insight into the AdaCore ecosystem.
  • ada-europe - Ada-Europe is an international organization, set up to promote the use of Ada.
  • acm-sig-ada - The Special Interest Group on Ada.
  • ada-resource-association - Since 1990 the Ada Resource Associationโ€™s principal mission has been โ€œTo ensure continued success of Ada users and promote Ada use in the software industryโ€.
  • ada-information-clearinghouse - News and resources for the Ada programming language.
  • ada-planet - News Aggregator from the Ada programming language world.

Competition

Compilers

Open source

GPL (no linking exception)
  • gnat-ce - GNAT Community edition. A release of AdaCore GNAT for free software developers, hobbyists, and students. The run-time libraries provided with GNAT Community are licensed under GPLv3 without linking exception. It supports Ada 2012 only.
GPL (with linking exception)
  • fsf-gnat - Free Software Foundation compiler for the Ada programming language which forms part of the GNU Compiler Collection. It supports all versions of the language, i.e. Ada 2012, Ada 2005, Ada 95 and Ada 83.
Other / unknown licence
  • hac - HAC Ada Compiler - a small, quick Ada compiler fully in Ada.
  • byron - The Byron project is a community-driven Ada compiler, toolchain, and IDE-system.

Commercial / Open source

  • gnat-pro - The GNAT Pro product line offers a comprehensive toolset (IDEs, debugger, librairies, dynamic and static analysis tools) for Ada, C and C++.

Commercial / Closed source

  • janus-ada - Compiler supporting all the major features of the Ada 83, Ada 95, Ada 2005 and Ada 2012 versions of the language.
  • object-ada - PTC ObjectAda is an extensive family of native and cross development tools and runtime environments.
  • apex-ada - PTC ApexAda is one of the industryโ€™s most popular development environments for Ada and mixed Ada/C/C++ applications.
  • greenhills-ada - Green Hills Software offers the industry's first, fully validated family of Ada Cross Compilers for real-time targets.
  • xgc - XGC provide GCC-based bare-metal toolchains with Ada95 support for aerospace-specific targets such as MIL1750, ERC32 and LEON. As well as a legacy M68000 toolchain.

Online

Edit

Integrated Development Editor

The GNAT Programming Studio - ada-visual - Ada language integration for Visual Studio 2017.

Editors

  • lea - LEA, a Lightweight Editor for Ada, aims to provide an easy, script-world-like, "look & feel" for developing Ada projects of any size and level, while enabling access to full-scale development tools like GNAT. LEA includes HAC, the HAC Ada Compiler.

Text Modes

VSCode Extensions

Deployment

Build and Package

  • alire - A catalog of ready-to-use Ada libraries plus a command-line tool (alr) to obtain, compile, and incorporate them into your own projects. It aims to fulfill a similar role to Rust's cargo or OCaml's opam.
  • gprbuild - Adacore multi-language software build tool.
  • ravenadm - Administration tool for Ravenports http://www.ravenports.com.
  • synth - Next D/Ports build tool for live systems (Alternative for Portmaster and Portupgrade tools).
  • ada4cmake - CMake macros for simple gnat project inclusion.
  • cmake-ada-offa - Ada language support for CMake.
  • cmake-ada-cho3 - CMake language support for Ada, fork of PLplot's cross-platform support code.

Continuous Integration

Runtimes

  • bb-runtimes - GNAT bare metal board support package (BSP).
  • avr-ada - GNAT for 8-bit AVR microcontrollers.
  • ada-runtime - A downsized Ada runtime which can be adapted to different platforms.
  • cortex-gnat-rts - This package includes GNAT Ada Run Time Systems (RTSs) based on FreeRTOS and targeted at boards with Cortex-M0, M3, -M4, -M4F MCUs.
  • adawebpack - GNAT RTL for WASM and bindings for Web API.

OS and Kernels

  • m2os - RTOS with simple tasking support for small microcontrollers.
  • marte-os - MaRTE OS is a Hard Real-Time Operating System for embedded applications that follows the Minimal Real-Time POSIX.13 subset. It provides an easy to use and controlled environment to develop Multi-Thread Real-Time applications.
  • muen - An x86/64 Separation Kernel for High Assurance.
  • ewok - EwoK is a microkernel targeting micro-controllers and embedded systems.
  • bare-bones - An Ada port of the osdev.org minimal 32-bit x86 kernel.
  • lovelace-os - Lovelace is an effort to write a Unix like operating system using the Ada 2012 language.
  • ada-kalinda-os - Ada_KALINDA is a sort of Mac Plus like OS written in Ada95.
  • cxos - Ada Operating System development example.
  • havk - x86-64 security-focused OS being created with SPARK.
  • cubit - CuBitOS is a multi-processor, 64-bit, (partially) formally-verified, general-purpose operating system, currently for the x86-64 architecture.

Games

  • steamsky - Roguelike in sky with a steampunk setting.
  • unity-ada-tetris - Tetris, in Ada, for the Unity game engine.
  • tictactoe - A tictactoe game written and proven in SPARK/Ada.
  • ada-gate - AdaGate is a first-person 3D sokoban puzzle game within a Stargate / Portal fantasy setting for Windows, OS-X and Linux.
  • rufas-cube - RufasCube is a puzzle game for Windows, OS-X and GNU Linux... it looks like a rubic cube but it's a slider, not a twister.
  • ada-venture - AdaVenture is a kid-friendly retro point&click game with mazes, dragons, bats & snakes.
  • co-terminal-apps - Retro Games that run in a terminal on any platform.
  • mini-pacman - MiniPac is a kid friendly ascii character version of Pacman that plays in a commandline terminal.
  • world-cup-sokerban - This is a soccer-themed, 3D sokoban puzzle game that runs on Windows, Mac OS-X and GNU Linux.
  • pasta - Pasta! is a game of the "match-3" genre, implemented in gnoga.
  • buttons - A simple gtkada Button Mania game.
  • mine-detector - Mine Detector: a mine-finding game that never requires guessing.
  • play-2048 - Play 2048! is a clone of the popular 2048 game, implemented in Ada using asfml for graphics and ada-toml for saving state.
  • bingada - Bingo application in gtkada

Frameworks

Components

  • simple-components - ASN.1, MQTT client and server/broker implementation, B-trees, Multiple connection TCP servers, Chebyshev series, Mutexes, Cryptography, Objects and handles to, Doubly-linked webs and lists, ODBC bindings, Blackboards (lock-free), OpenSSL bindings, ELV/eQ-3 MAX! client implementation, Parsers, Events (plain, pulse, array of), Persistent objects and handles to, GNUTLS bindings, Persistent storage and handles to, Graphs (directed, weighted, acyclic, trees), Pools, HTTP implementation, Sets and maps, FIFO (lock-free), SMTP client implementation, IEEE 754, SQLite bindings, Inter-process communication, Stacks, Interfacing Julia language, Streams, JSON, Strings editing, LDAP, Tables (maps of strings), MODBUS client implementation, Unbounded arrays.
  • ada-util - A logging framework close to Java log4j framework, support for properties, serialization/deserialization framework for XML/JSON/CSV, Ada beans framework, encoding/decoding framework (Base16, Base64, SHA, HMAC-SHA), a composing stream framework (raw, files, buffers, pipes, sockets), several concurrency tools (reference counters, counters, pools, fifos, arrays), process creation and pipes, support for loading shared libraries (on Windows or Unix), HTTP client library on top of CURL or AWS.
  • gnatcoll-core - This is the core module of the GNAT Components Collection.
  • gnatcoll-bindings - This is the bindings module of the GNAT Components Collection.
  • gnatcoll-db - This is the DB module of the GNAT Components Collection.
  • gnatcoll-json - This is a set of helpers for writing JSON-intefaces it contains JSON parses for most of the Ada runtime components.
  • gneiss - Gneiss is an interface collection to be used with applications for component based systems. It aims to be easily portable/platform independent and is compatible with the ada-runtime
  • lace - A set of Ada components to allow 3D simulations, games and GUI's in Ada.

Distributed

  • poly-orb - PolyORB provides a uniform solution to build distributed applications relying either on middleware standards.

Graphical User Interface

  • gnoga - The GNU Omnificent GUI for Ada.
  • gwindows - GNU Ada Visual Interface.
  • claw - CLAW, a High Level, Portable, Ada 95 Binding for Microsoft Windows.
  • gtkada - Ada graphical toolkit based on Gtk3 components.
  • qt-ada - Ada-2012 port to QT 5 framework.
  • vtk-ada - Ada-2012 port to VTK 8.1 (Visualization Toolkit).
  • fltk-ada - Ada-2012 port to FLTK.

Terminal User Interface

  • curses - Advanced UNIX Terminal UI Ada Binding Package.
  • ncurses-ada95 - Ada95 bindings for ncurses.

3D

  • globe-3d - GL Object Based Engine for 3D.
  • engine-3d - A 3D engine for DOS-talgics.
  • ada-ogl - Ada OpenGL Framework.
  • ada-doom-3 - Id Software's Id-tech-4-BFG in the Ada programming language.

Database

  • ada-ado - Ada Database Objects is an Ada05 library that provides object relational mapping to access a database in Ada05. The library supports Postgresql, MySQL, SQLite as databases. Most of the concepts developped for ADO come from the Java Hibernate ORM.
  • ada-base - Thick database bindings to MySQL, PostgreSQL and SQLite for Ada.
  • apq-base - APQ is a database interface library written in Ada95.

Web

  • aws - AWS is a complete framework to develop Web based applications in Ada.
  • awa - Ada Web Application is a framework to build a Web Application in Ada 2012. The framework provides several ready to use and extendable modules that are common to many web application. This includes the login, authentication, users, permissions, managing comments, tags, votes, documents, images.
    • dynamo - Code generator used to generate an Ada Web Application or database mappings from hibernate-like XML description, YAML doctrine model or UML models.
    • ada-wiki - Ada Wiki is a small library that provides a Wiki engine.
    • ada-security - OAuth 2.0 client and server framework to secure web applications.
    • ada-el - This library provides the support for a simple Expression Language close to the Java Unified Expression Language (EL).
    • ada-asf - Ada Server Faces allows to create web applications using the same pattern as the Java Server Faces (See JSR 252, JSR 314 and JSR 344).
    • ada-servlet - Ada Servlet allows to create web applications using the same pattern as the Java Servlet (See JSR 154, JSR 315).
  • swagger-ada - Ada support for Swagger codegen: OpenAPI Generator is a code generator that supports generation of API client libraries, server stubs and documentation automatically given an OpenAPI Spec.
  • ews - Embedded Web Server is a web server construction kit, designed for embedded applications using the GNAT Ada compiler.
  • matreshka - Matreshka is an Ada framework to develop information systems. It consists of five major components: League, XML processor, Web framework, SQL access, and the Modeling framework.

Unit Test, Testing

  • ahven - Ahven is a simple unit test library and framework for the Ada programming. language. It is loosely modelled after JUnit and some ideas from AUnit.
  • aunit - Ada unit testing framework.
  • gnatbdd - Behavior Driven Development in Ada.
  • scripted-testing - Supports functional testing using Tcl scripts.

Logging

  • alog - Alog is a stackable logging framework for Ada.

Machine Learning

  • fuzzyml - Fuzzy machine learning framework.

Automation

  • aicwl - Collection of packages provided for design of high-quality industrial control widgets for Ada applications.
  • ada-for-automation - A4A is a framework for designing industrial automation applications using the Ada language.

Tools

Verification

  • gnat-coverage - GNATcoverage is a tool to analyze and report program coverage.
  • adacontrol - Ada constructs lint tool.
  • spark-2014 - SPARK formal verification toolset.
  • acats - The Ada Conformity Assessment Test Suite, customised for GCC.
  • acats-grading - Tools for grading ACATS results, modified for Unix-like systems.

Generation

  • asn1scc - ASN1SCC: An open source ASN.1 generator to Ada type declarations and encoders/decoders.
  • ocarina - AADL model processor: mappings to Ada code; Petri Nets; scheduling tools (MAST, Cheddar); WCET; REAL.
  • fmt - Formal Methods Toolkit is a set of extension packages for Mathematica, supporting software. engineering activities related to modeling, verification and Ada code generation.
  • automate - Finite-state machine generator.
  • ajunitgen - Generator of JUnit-compatible XML reports in Ada.
  • record-flux - RecordFlux: Toolset for the formal specification of messages and the generation of verifiable binary parsers and message generators in SPARK.

UML

  • ada-ml - Ada-tailored UML Modeling Language.
  • coldframe - ColdFrame generates Ada framework code and documentation from UML models.
  • umbrello - Unified Modelling Language (UML) diagram program based on KDE Technology. Outputs Ada.

Encryption

  • ada-keystore - Ada Keystore - protect your sensitive data with secure storage.

Libraries

Math

  • math-packages - Collection of basic math routines in Ada.
  • mathpaqs - Mathpaqs is a collection of mathematical, 100% portable, packages in the Ada programming language.
  • mandelbrot-ascii - Mandelbrot renderer in "ASCII" (unicode actually, but text nonetheless).
  • lalg - Interface to dense linear algebra packages.

Science

  • si - SI units checked and unchecked.

Algorithms, Containers and Protocols

  • ada-language-server - Adacore server implemention of the the Microsoft Language Protocol for Ada and SPARK.
  • ada-lsp - Language Server Protocol for Ada.
  • ada-lsp-client - Prototype implementation of LSP client - Visual Studio 2017.
  • ada-traits-containers - Generic Ada Library for Algorithms and Containers.
  • dequesterity - Deque/buffer generics that consist of building blocks that may be combined in various ways to create higher abstraction buffers.
  • pragmarc - PragmAda Reusable Components (PragmARCs) from PragmAda S/W Engineering.
  • booch95 - The Ada 95 Booch components are a port of Grady Booch's C++ components.
  • ada-id - Simple Ada library for generating UUIDs.
  • ada-ga - Genetic Algorithm Implementation for Ada.
  • ada-sodoku - Small Library for Sodoku grid solving / finding.
  • sl3p - Simple Layer 3 Protocol.
  • smart-pointers - A package providing a reference-counted access type Smart_Pointer.
  • hungarian-algorithm - Hungarian Algorithm implementation in Ada.
  • sal - SAL (Stephe's Ada Library).
  • nb-ada - NBAda : An Ada library of lock-free data structures and algorithms.
  • paraffin - A suite of Ada 2012 generics to facilitate iterative and recursive parallelism for multicore systems.
  • deepend - Deepend is a storage pool with subpool capabilities for Ada 2012, Ada 2005, and Ada 95.
  • charles - Charles is an Ada 95 container library, precursor to Ada 2005+ standard containers.
  • simple-blockchain - Simple blockchain in Ada.
  • adagio - Gnutella2 (G2) network server leaf.
  • agpl - Ada General Purpose Library (Miscellaneous utilities, with a robotic flavor).
  • az3 - Ada binding for Z3

Cryptography

  • threefish - Ada Implementation of the Threefish-256 Encryption Algorithm.
  • fletcher - Trivial implementation of fletcher_16 checksum computation algorithm.
  • base58-ada - Base58 encoding and decoding in Ada.
  • ada-crypto-library - This is a crypto library for Ada with a nice API and is written for the i386 and x86_64 hardware architecture.
  • libsparkcrypto - A cryptographic library implemented in SPARK.
  • sip-hash - A pure Ada implementation of the SipHash PRF.
  • libkeccak - A SPARK implementation of the Keccak family of sponge functions and related constructions.
  • ascon-spark - Ada/SPARK implementation of the Ascon Authenticated Encryption with Additional Data Algorithm.
  • spark-sip-hash - Ada/SPARK implementation of the SipHash keyed hash function.
  • spark-norx - Ada/SPARK implementation of the NORX Authenticated Encryption with Additional Data Algorithm.
  • spark-nacl - SPARK 2014 re-implementation of the TweetNaCl crypto library.
  • stotp - Timed One-Time-Pad (RFC 6238) implementation in SPARK.
  • xxhash-ada - Extremely fast non-cryptographic Hash algorithm, xxhash is working at speeds close to RAM limits.
  • libsodium-ada - A secure cryptographic library (libsodium for Ada).
  • ada-libsecret - Ada Binding for the libsecret library.
  • blake2s - SPARK83 implementation of the BLAKE2s hash function.

Compression

  • zip-ada - Zip-Ada is a programming library for dealing with the Zip compressed archive file format.
  • ada-lzma - Ada binding for liblzma compression library.
  • dcf-ada - An Ada 2012 library for document container files (Based on zip-ada).

Patterns

  • ada-promises - Implementing promises in Ada. Type-safe, efficient, thread-safe.
  • reqrep-task-pools - Task pool system for jobs.
  • rxada - An Ada 2012 implementation of the Rx methodology.

System Modeling

  • ada-fuzzy - A fuzzy inference system library for Ada.
  • radalib - Ada library and tools for the analysis of Complex Networks and more.

Parsers, Scanners, Linters, Analysers, Interpreters and Prettyprinters

  • libadalang - Libadalang is a library for parsing and semantic analysis of Ada code. It is meant as a building block for integration into other tools (IDE, static analyzers, etc).
  • aflex-ayacc - Ada95 scanner and parser generators.
  • wisitoken - WisiToken is an LALR, LR1, and Packrat parser generator and run-time.
  • gela - Ada code analyzer.
  • anagram - Grammar handling and parser generation Ada library.
  • ada-pretty - Pretty printing library for Ada.
  • increment - Incremental analysis in Ada.
  • parse-args - Simple command-line argument parsing.
  • aforth - Embeddable Forth interpreter written in Ada.
  • parser-tools - Tools for writing lexers / parsers in Ada.
  • xia - An Ada implementation of XPath 1.0.

Format Readers and Writers

  • ini-files - The Ini file manager consists of a package, Config, which can read and modify informations from various configuration files known as "ini" files.
  • protobuf-ada - Experimental Ada code generation support for Google Protocol Buffers.
  • protobuf - A Google Protocol Buffers implementation in Ada, using matreshka.
  • ada-yaml - Experimental YAML 1.3 implementation in Ada.
  • json-ada - An Ada 2012 library for parsing JSON.
  • jwx - A formally verified JSON library in SPARK.
  • xmlada - The XML/Ada toolkit.
  • xml-ez - Library for emitting XML from Ada programs.
  • spark-xml - A formally verified XML library in SPARK.
  • excel-writer - Create Excel files with basic formats.
  • generic-image-decoder - Multi-format image decoder library for Ada.
  • ada-pdf-writer - Ada package for producing easily and automatically PDF files, from an Ada program, with text, vector graphics, images (JPEG).
  • ada-midi - Implementation of Midi / MidiFile reading and writing.
  • ada-bar-codes - Ada Bar Codes provides a package for generating various types of bar codes (1D, or 2D like QR codes) on different output formats, such as PDF or SVG.
  • ada-bin2asc - Various binary-to-ASCII codecs such as Base64.
  • abf-io - A library of access routines to Axon's ABF file format (electrophysiology, most common) in Ada.
  • ada-toml - TOML parser for Ada.

Networking and Communication Middleware

  • anet - Anet is a networking library for the Ada programming language.
  • adhcp - ADHCP is an implementation of the DHCP protocol in Ada.
  • adasockets - IPv4 socket library (TCP, UDP, and multicast).
  • dbus-ada - The D_Bus/Ada library provides an Ada binding to the D-Bus message bus system.
  • zeromq-ada - Binding to the ZeroMQ comunications-library.
  • tomi-4-ada - Wrappers for various client/server and pub/sub messaging protocols (AMQP, STOMP and ZeroMQ), focusing exclusively on text message communications.
  • mosquitto-ada - Binding for the MQTT broker Mosquitto.

Chatting and Communication

  • axmpp - With the AXMPP library you can connect to a Jabber server to send and receive messages.
  • weechat-ada - Ada 2012 library for WeeChat plug-ins.
  • weechat-canberra - A WeeChat plug-in written in Ada 2012 that plays sounds using Canberra.
  • weechat-emoji - A WeeChat plug-in written in Ada 2012 that displays emoji.

Web

Graphics and Multimedia

  • orka - The OpenGL 4.6 Rendering Kernel in Ada 2012.
  • opengl-ada - Thick Ada binding for OpenGL and GLFW.
  • adagl - Multiplatform Ada/OpenGL bindings (ported to native/OpenGL, A2JS/WebGL and WASM/WebGL).
  • sdlada - Ada 2012 bindings to SDL 2.
  • ada-nanovg - Ada bindings to NanoVG.
  • free-type-ada - FreeType binding for Ada 2005.
  • asfml - Ada binding to the Simple and Fast Multimedia Library.

General Purpose Computing

  • cuda - CUDA support from AdaCore.
  • cuda-ada - CUDA/Ada is an Ada binding to NVIDIAโ€™s CUDA parallel computing platform and programming model.
  • opencl-ada - An Ada binding for the OpenCL host API.

Sound

  • opus-ada - Ada 2012 bindings for the Opus audio codec.
  • canberra-ada - Ada 2012 bindings for libcanberra, an implementation of the XDG Sound Theme and Name Specifications.
  • ada-soundio - Ada bindings for libsoundio.
  • oto - Ada binding to OpenAL which tries to mimic original API while using Ada types.
  • ada-synthetizer - Sound Synthetizer Library implemented in Ada.
  • ada-synth-lib - Simple audio synthesis library.
  • scala - Scala is a powerful software tool for experimentation with musical tunings, such as just intonation scales, equal and historical temperaments, microtonal and macrotonal scales, and non-Western scales.
  • ada-portable-sound - a linux-sound-playing package for Ada apps that can asynchronously start and stop music loops, as well as initiate transient sounds. Suitable for games.

Localization

  • zanyblue - An Ada package allowing the externalization of application messages into a properties file.

Utilities

  • auto-counters - Reference counting approaches to resource management.
  • a-stream-tools - Stream utilities for Ada2005 and 2012.
  • ssprep - An extensible template engine akin to jinja but using template-parser and intended for command line usage.
  • licensing - Open Source Licenses library for Ada.
  • simple-logging - Easy to use logging facilities for output to console in Ada programs.
  • rsfile - Command-line utility that picks a file from a folder hierarchy with probability proportional to its size.
  • cstrings - Convenience subprograms to interact with C strings.
  • cvsweb2git - Tool to imports CVS repository shared on Ada Conformity Assessment Authority into the Git repository.
  • ada-bundler - Library and tool for transparently handling data and configuration file access in an Ada application. Supports MacOSX, Linux and Windows.
  • macos-sdks-vs-gcc - Provides GCC 'specs' files to cope with SDK policy changes.
  • ux-strings - Unicode extended strings.

Robotics

  • rclada - Ada client library for ROS2/RCL.
  • player-ada - Ada bindings for the player robotic platform.

Linux and POSIX

  • florist - POSIX Ada binding, IEEE Standards 1003.5(b,c).
  • wposix - Ada Windows POSIX binding.
  • ada-v4l2 - Ada Posix Binding to Video 4 Linux, used for RPI.
  • inotify-ada - An Ada 2012 library for monitoring filesystem events using Linux' inotify API.
  • dl-ada - Minimal binding to libdl.

Windows and .NET

Hardware and Embedded

Frameworks

Firmwares

  • certiflie - Source code for the full Ada + SPARK Crazyflie 2.0 firmware.

Drivers

  • ada-drivers-library - Ada drivers for various MCU and sensors.
  • em-brick - emBRICK driver and support for emBRICK in Ada.
  • dw1000 - Ada/SPARK driver for the DecaWave DW1000 ultra-wideband (UWB) radio chip.
  • evb1000 - Ada/SPARK drivers to control the on-board peripherals of the DecaWave EVB1000 evaluation board.
  • multiplexed-io - This contains explorations, for AdaPilot, of implementing drivers for the AdaRacer MCU, using the Ravenscar profile of Ada 2012 from AdaCore and device bindings generated using SVD2Ada.

Controllers

Communication

  • sensortile - This project shows how to initialize a SensorTile and how to send sensor data over BLE from a SensorTile to a suitable host.

Libraries

  • giza - Giza is trying to be a simple widget tool kit for embedded platforms.
  • ada-synth-lib - Simple audio synthesis library.
  • geste - GESTE is a sprite and tile 2D render engine designed to run on micro-controllers.
  • sancta - SANCTA multi-robot task allocation library.

Applications

  • coffee-clock - Waking up with a fresh cup of coffee.
  • noise-nugget - Square Inch Synthesizer.
  • spark-railway-demo - Simulated railway network in SPARK/Ada.
  • micro-tem-pi - Raspberry Pi using a BBC Micro:Bit as temperature sensor.
  • wee-noise-maker - Wee Noise Maker is an open source pocket synthesizer.
  • lunar-lander-rotation - Program that interacts with the AdaFruit BNO055 breakout board in order to send orientation data to a host computer.
  • railway-simulation - Program simulating a railway network with trains, switches and signaling. The signaling system is proven with SPARK/Ada to ensure that trains cannot collide.
  • etherscope - Ethernet traffic monitor on a STM32F746 board.

Bindings

  • svd2ada - An Ada binding generator from SVD descriptions for bare board ARM devices.
  • ada-time - Ada binding for the Pebble Time smartwatch.
  • wiring-pi-ada - Ada bindings for wiringPi.

Applications

Office

  • azip - A free, portable Zip Archive Manager.
  • texcad - TeXCAD is a program for drawing or retouching {picture}s in LaTeX.
  • cbsg - The Corporate Bullshit Generator.
  • hunter - Graphical (gtkada) file manager for Linux.

Mail

  • trash-finder - Trash Finder is a mail filter that operates as a plugin for your mail server, providing filtering on dozens of criteria along with management of known good mail.

Web

  • ironsides - Authoritative DNS server verified by SPARK/Ada.
  • wasabee - A Web browser with safety focus.
  • yass - Yet Another Static Site Generator (like Jekyll or Hugo).

Multimedia

Automation

  • acnc - A G-code parser and CNC controller (in Ada).

Simulation

  • ghdl - VHDL 2008/93/87 simulator.
  • parallel-sim - Distributed Simulation of Transport Networks.
  • covid-19-simulator - Multi engine/algorithms COVID-19 simulator. Ada, Qt code under the hood.

Generators and Translators

  • adabrowse - HTML generator for Ada95 library unit specs.
  • pascal-to-ada - A Pascal to Ada translator.
  • tiled-code-gen - Code generator for Tiled the map editor.
  • cvsweb2git - This tool imports CVS repository shared on Ada Conformity Assessment Authority into the Git repository.
  • j2ada - Translator for a Java valid source code in Ada source code.
  • a2js - Ada2JS is experimental open source compiler, component of matreshka.
  • ada-magic - SofCheck AdaMagic is ACATS validated and certified Ada compiler targeting C and/or C++ (4 command line switches for fine tuning). ObjectAda and several other commercial compilers share engine with AdaMagic. MapuSoft distributes AdaMagic as integral component of AppCOE.
  • cappulada - Ada binding generator for C++.
  • asis2xml - Converts Ada sourcesโ€™ ASIS representation to XML, so as to make it easier to develop reporting and transformational tools using (for example) XSLT.

Shells, Interpreters and Emulators

  • sparforte - SPARforte programming language is an Ada-like scripting language, previously known as business user shell (bush). Can be used as interactive UNIX shell replacement.
  • gsh - GSH is non interactive POSIX shell for Windows, aimed at GNU software builds. 2-3 times faster than Cygwin.
  • gnatcoll-scripts-shell - GNATCOLL.Scripts.Shell is a simple embeddable scripting language, part of GNATCOLL Core.
  • analytical-engine - An Ada 2012 emulation of Charles Babbageโ€™s Analytical Engine.
  • a-shell - A component to aid in writing shell-like applications in Ada.

Programming Languages

  • para-sail - ParaSail is a highly parallel experimental language, similar to Go and Erlang. Originaly owned by SofCheck (now AdaCore), it is a test project to try new ideas. Expandable pointers is a sample feature that is about to be introduced to SPARK and Ada. There are in fact 4 experimental languages: ParaSail, Sparkel, Javallel, Parython, all sharing bytecode interpreter and LLVM engine.

Misc

  • dhondt - Ada implementation of Dโ€™Hondt electoral result calculator.
  • septum - An interactive context-based text search tool for searching large codebases.

Bindings

  • pcsc-ada - PCSC/Ada provides a thick Ada binding to PC/SC-middleware. The library allows programs written in Ada to communicate with smart cards using the SCard API.
  • areadline - Ada interface to the readline library.
  • tp7-ada-gtkada - Implementation of Turbo Pascal 7.0 units with gtkada.
  • tp7-ada-gnoga - Implementation of Turbo Pascal 7.0 units with gnoga.
  • ada-bfd - Ada BFD is an Ada binding for the GNU Binutils BFD library. It allows to read binary ELF, COFF files by using the GNU BFD.
  • boehmgc-ada - Ada binding to the Boehm-Demers-Weiser conservative garbage collector.
  • tcl-ada-shell - Tcl Ada SHell (Tash) is an Ada binding to Tcl/Tk.
  • tashy - Tashy is short from Tcl Ada SHell Younger. It is derivate of Tash, focused mostly on Tk binding.
  • tashy2 - Tashy2 is short from Tcl Ada SHell Younger. It is derivate of Tashy, and aims to be more idiomatic and uses a more permisive license.
  • hungarian - Ada wrapper for the fast Stachniss' Hungarian solver.
  • ada-lua - Ada binding for Lua.
  • coreland-lua-ada - Ada bindings to the Lua language.

License

CC0

Awesome Q# Awesome

Q# is a domain-specific programming language used for expressing quantum algorithms. It was initially released to the public by Microsoft as part of the Quantum Development Kit. โ€“Wikipedia

A list of Q# code and resources.

Feel free to improve this list using GitHub pull request mechanism, see CONTRIBUTING for more information.

Contents

Official Resources

Tutorials

Books

Videos

Q/A

Coding Contests and Solutions

Official resources

Participants' solutions

IDE Integration

Demos, Samples, and Additional Libraries

Blogs

Awesome Imba Awesome GitHub contributors

A curated list of awesome Imba frameworks, libraries, software and resources

Imba is a programming language inspired by Ruby and Python and compiles to performant and readable JavaScript with build-in transpilers and webpack loader.

Contents

Resources

Official Resources

Toolkits and Frameworks

Editor Plugins and IDEs

Guides and Tutorials

Articles

Built with Imba

Real World Apps

  • Scrimba - The interactive screencasting platform Scrimba.com is written in Imba, both frontend and backend.
  • Iceland Fish Auction Market - A website for the iceland fish market.
  • GitSpeak - A project management tool for developers.

Tools

Apps/Websites

Contribution

Your contributions and suggestions are welcome anytime. Are you building great stuff with Imba? Feel free to share with us! :blush:

Here are instructions. Please read the Code of Conduct as well.

Contributors

Thanks goes to these wonderful people (emoji key):

Yury Shapkarin
Yury Shapkarin

๐Ÿš‡ โš ๏ธ ๐Ÿ’ป ๐Ÿ’ก ๐Ÿ“–
Andrew Miracle
Andrew Miracle

๐Ÿ’ป ๐Ÿ“– ๐Ÿ‘€ ๐Ÿ”ง
activestylus
activestylus

๐Ÿ’ก
Nathaniel Johnson
Nathaniel Johnson

๐Ÿ“– ๐Ÿ’ก
Sindre Aarsaether
Sindre Aarsaether

๐Ÿ’ป ๐Ÿ“– ๐Ÿ’ก
David Konsumer
David Konsumer

๐Ÿ’ป ๐Ÿ“– ๐Ÿ’ก
At Indo
At Indo

๐Ÿ’ป ๐Ÿ“– ๐ŸŽจ
SamirH
SamirH

๐Ÿ’ป ๐Ÿ“– ๐Ÿ’ก

This project follows the all-contributors specification. Contributions of any kind welcome!

License

CC0

See LICENSE.md

Awesome Vala Awesome

A programming language using modern high level abstractions without imposing additional runtime requirements, by leaning on GLib and GObject.

Contents

Data Structures & Data Types

  • Libgee - A utility library providing GObject-based interfaces and classes for commonly used data structures (lists, maps, queues, trees, etc.).
  • Graphene - A thin layer of types for graphic libraries. It provides common types needed to handle 3D transformations: points, triangles, rectangles, quads, quaternions, vectors, matrices, spheres, etc.
  • Numeric-GLib - A collection of numeric data types for GLib (and Vala) via GCC extensions. It includes 128 bit integers & floats, complex types, vectorized operations, and decimal types.
  • United - A library for unit manipulation (like kilograms, meters, etc).

Editor Plugins

  • Vala Code - A plugin for VIsual Studio Code that enables basic autocompletion and syntax highlighting for Vala.
  • Vala-TMBundle - A TextMate bundle that provides Vala syntax highlighting, code completion, etc. Sublime Text 3 can also use this plugin.
  • language-vala-modern - Provides Vala language support in Atom. It's a fork of the unmaintained "language-vala package".
  • Vala Syntax 4 Sublime Text - A basic plugin for Sublime Text 3 that provides syntax highlighting.

Language Servers

  • GVLS - A service that provides code completion and formatting for Vala. This does not currently work with Visual Studio Code due to missing details on the lsp implementation, but it does work with GNOME Builder.
  • vala-language-server - A language server that aims to provide code completion, formatting, syntax highlighting, and everything else according to the Language Server spec.

Graphic Libraries

  • Cairo - A 2D graphics library with support for multiple output devices. This is pretty much the default library you get in Vala.
  • SDL2 - A cross-platform development library designed to provide low level access to audio, keyboard, mouse, joystick, and graphics hardware via OpenGL, Direct3D, and Vulkan. Bindings are included in Vala and will be available starting with Vala 0.52.
  • GRX - A graphics library for simple graphics displays (think 1-bit displays or Adafruit's PiTFT displays). It also includes keyboard, mouse, joystick and touchscreen input support.
  • GEGL - A data flow based image processing framework, providing floating point processing and non-destructive image processing capabilities. Think of it as "Reactive Programming for Images".
  • Babl - A dynamic, any to any, pixel format translation library.

GUI Programming

  • GTK - The de facto library for GUI development in Vala. Bindings are included with the vala compiler.

Multimedia Processing

  • GStreamer - A powerful framework for creating multimedia applications.

XML & Data Serialization

  • GXML - A GObject API for manipulating XML and a Serializable framework from GObject to XML.
  • Json-GLib - Implements a full JSON parser and generator using GLib and GObject, and integrates JSON with GLib data types.
  • libyaml-glib - The GLib binding of libyaml, plus a GObject builder that understands YAML.

Templating

  • Compose - A functional templating library for Vala.
  • template-glib - A library for template expansion which supports calling into GObject Introspection from templates.

Numerical Computation

  • vast - A project for generative modeling in Vala. Think of TensorFlow rewritten in Vala.
  • balistica - An open source ballistic simulation library. There's a complete calculator here.

Crypto & Security

  • GnuTLS - A secure communications library implementing the SSL, TLS and DTLS protocols and technologies around them. It provides a simple API to access the secure communications protocols as well as APIs to parse and write X.509, PKCS #12, and other required structures.

Web Development

  • Valum - A Web micro-framework entirely written in Vala.
  • Ambition - A web framework written in Vala, with the MVC pattern in mind. Kinda unmaintained (someone could refactor it to use Valum under the hood, and maybe move it to Meson ๐Ÿ˜‰)

IoC and Dependency Injection

  • Vadi - An IoC Container developed in order to facilitate the usage of dependency injection for Vala developers.

Awesome Coq Awesome

coq-community logo

A curated list of awesome Coq libraries, plugins, tools, and resources.

The Coq proof assistant provides a formal language to write mathematical definitions, executable algorithms, and theorems, together with an environment for semi-interactive development of machine-checked proofs.

Contributions welcome! Read the contribution guidelines first.

Contents


Projects

Frameworks

  • CoqEAL - Framework to ease change of data representations in proofs.
  • FCF - Framework for proofs of cryptography.
  • Fiat - Mostly automated synthesis of correct-by-construction programs.
  • FreeSpec - Framework for modularly verifying programs with effects and effect handlers.
  • Hybrid - System for reasoning using higher-order abstract syntax representations of object logics.
  • Iris - Higher-order concurrent separation logic framework.
  • Q*cert - Platform for implementing and verifying query compilers.
  • Verdi - Framework for formally verifying distributed systems implementations.
  • VST - Toolchain for verifying C code inside Coq in a higher-order concurrent, impredicative separation logic that is sound w.r.t. the Clight language of the CompCert compiler.

User Interfaces

  • CoqIDE - Standalone graphical tool for interacting with Coq.
  • Coqtail - Interface for Coq based on the Vim text editor.
  • Proof General - Generic interface for proof assistants based on the extensible, customizable text editor Emacs.
  • Company-Coq - IDE extensions for Proof General's Coq mode.
  • jsCoq - Port of Coq to JavaScript, which enables running Coq projects in a browser.
  • Jupyter kernel for Coq - Coq support for the Jupyter Notebook web environment.
  • VSCoq - Extension for the Visual Studio Code editor.

Libraries

  • ALEA - Library for reasoning on randomized algorithms.
  • Algebra Tactics - Ring and field tactics for Mathematical Components.
  • Bignums - Library of arbitrarily large numbers.
  • Bedrock Bit Vectors - Library for reasoning on fixed precision machine words.
  • CertiGraph - Library for reasoning about directed graphs and their embedding in separation logic.
  • CoLoR - Library on rewriting theory, lambda-calculus and termination, with sub-libraries on common data structures extending the Coq standard library.
  • coq-haskell - Library smoothing the transition to Coq for Haskell users.
  • CoqInterval - Tactics for performing proofs of inequalities on expressions of real numbers.
  • Coq record update - Library which provides a generic way to update Coq record fields.
  • Coq-std++ - Extended alternative standard library for Coq.
  • ExtLib - Collection of theories and plugins that may be useful in other Coq developments.
  • FCSL-PCM - Formalization of partial commutative monoids as used in verification of pointer-manipulating programs.
  • Flocq - Formalization of floating-point numbers and computations.
  • Formalised Undecidable Problems - Library of undecidable problems and reductions between them.
  • Hahn - Library for reasoning on lists and binary relations.
  • Interaction Trees - Library for representing recursive and impure programs.
  • MathComp Extra - Extra material for the Mathematical Components library, including the AKS primality test and RSA encryption and decryption.
  • Mczify - Library enabling Micromega arithmetic solvers to work when using Mathematical Components number definitions.
  • Metalib - Library for programming language metatheory using locally nameless variable binding representations.
  • Paco - Library for parameterized coinduction.
  • Regular Language Representations - Translations between different definitions of regular languages, including regular expressions and automata.
  • Relation Algebra - Modular formalization of algebras with heterogeneous binary relations as models.
  • Simple IO - Input/output monad with user-definable primitive operations.
  • TLC - Non-constructive alternative to Coq's standard library.

Package and Build Management

  • coq_makefile - Build tool distributed with Coq and based on generating a makefile.
  • Coq Nix Toolbox - Nix helper scripts to automate local builds and continuous integration for Coq.
  • Coq Package Index - Collection of Coq packages based on opam.
  • Coq Platform - Curated collection of packages to support Coq use in industry, education, and research.
  • coq-community Templates - Templates for generating configuration files for Coq projects.
  • Docker-Coq - Docker images for many versions of Coq.
  • Docker-MathComp - Docker images for many combinations of versions of Coq and the Mathematical Components library.
  • Docker-Coq GitHub Action - GitHub container action that can be used with Docker-Coq or Docker-MathComp.
  • Dune - Composable and opinionated build system for OCaml and Coq (former jbuilder).
  • Nix - Package manager for Linux and other Unix systems, supporting atomic upgrades and rollbacks.
  • Nix Coq packages - Collection of Coq-related packages for Nix.
  • opam - Flexible and Git-friendly package manager for OCaml and Coq with multiple compiler support.

Plugins

  • AAC Tactics - Tactics for rewriting universally quantified equations, modulo associativity and commutativity of some operator.
  • Coq-Elpi - Extension framework based on ฮปProlog providing an extensive API to implement commands and tactics.
  • CoqHammer - General-purpose automated reasoning hammer tool that combines learning from previous proofs with the translation of problems to automated provers and the reconstruction of found proofs.
  • Equations - Function definition package for Coq.
  • Gappa - Tactic for discharging goals about floating-point arithmetic and round-off errors.
  • Hierarchy Builder - Collection of commands for declaring Coq hierarchies based on packed classes.
  • Ltac2 - Experimental typed tactic language similar to Coq's classic Ltac language.
  • MetaCoq - Project formalizing Coq in Coq and providing tools for manipulating Coq terms and developing certified plugins.
  • Mtac2 - Plugin adding typed tactics for backward reasoning.
  • Paramcoq - Plugin to generate parametricity translations of Coq terms.
  • QuickChick - Plugin for randomized property-based testing.
  • SMTCoq - Tool that checks proof witnesses coming from external SAT and SMT solvers.
  • Unicoq - Plugin that replaces the existing unification algorithm with an enhanced one.

Tools

  • Alectryon - Collection of tools for writing technical documents that mix Coq code and prose.
  • Autosubst 2 - Tool that generates Coq code for handling binders in syntax, such as for renaming and substitutions.
  • CFML - Tool for proving properties of OCaml programs in separation logic.
  • coq2html - Alternative HTML documentation generator for Coq.
  • coqdoc - Standard documentation tool that generates LaTeX or HTML files from Coq code.
  • CoqOfOCaml - Tool for generating idiomatic Coq from OCaml code.
  • coq-dpdgraph - Tool for building dependency graphs between Coq objects.
  • coq-scripts - Scripts for dealing with Coq files, including tabulating proof times.
  • coq-tools - Scripts for manipulating Coq developments.
  • find-bug.py - Automatically minimizes source files producing an error, creating small test cases for Coq bugs.
  • absolutize-imports.py - Processes source files to make loading of dependencies robust against shadowing of file names.
  • inline-imports.py - Creates stand-alone source files from developments by inlining the loading of all dependencies.
  • minimize-requires.py - Removes loading of unused dependencies.
  • move-requires.py - Moves all dependency loading statements to the top of source files.
  • move-vernaculars.py - Lifts many vernacular commands and inner lemmas out of proof script blocks.
  • proof-using-helper.py - Modifies source files to include proof annotations for faster parallel proving.
  • Cosette - Automated solver for reasoning about SQL query equivalences.
  • hs-to-coq - Converter from Haskell code to equivalent Coq code.
  • lngen - Tool for generating locally nameless Coq definitions and proofs.
  • Menhir - Parser generator that can output Coq code for verified parsers.
  • mCoq - Mutation analysis tool for Coq projects.
  • Ott - Tool for writing definitions of programming languages and calculi that can be translated to Coq.
  • Roosterize - Tool for suggesting lemma names in Coq projects.
  • Sail - Tool for specifying instruction set architecture semantics of processors and generating Coq definitions.
  • SerAPI - Tools and OCaml library for (de)serialization of Coq code to and from JSON and S-expressions.

Type Theory and Mathematics

  • Analysis - Library for classical real analysis compatible with Mathematical Components.
  • Category Theory in Coq - Axiom-free formalization of category theory.
  • Completeness and Decidability of Modal Logic Calculi - Soundness, completeness, and decidability for the logics K, K*, CTL, and PDL.
  • CoqPrime - Library for certifying primality using Pocklington and Elliptic Curve certificates.
  • CoRN - Library of constructive real analysis and algebra.
  • Coqtail Math - Library of mathematical results ranging from arithmetic to real and complex analysis.
  • Coquelicot - Formalization of classical real analysis compatible with the standard library and focusing on usability.
  • Finmap - Extension of Mathematical Components with finite maps, sets, and multisets.
  • Four Color Theorem - Formal proof of the Four Color Theorem, a landmark result of graph theory.
  • Gaia - Implementation of books from Bourbaki's Elements of Mathematics, including set theory and number theory.
  • GeoCoq - Formalization of geometry based on Tarski's axiom system.
  • Goedel - Constructive proof of the Gรถdel-Rosser incompleteness theorem.
  • Graph Theory - Formalized graph theory results.
  • Homotopy Type Theory - Development of homotopy-theoretic ideas.
  • Infotheo - Formalization of information theory and linear error-correcting codes.
  • Mathematical Components - Formalization of mathematical theories, focusing in particular on group theory.
  • Math Classes - Abstract interfaces for mathematical structures based on type classes.
  • Monae - Monadic effects and equational reasoning.
  • Odd Order Theorem - Formal proof of the Odd Order Theorem, a landmark result of finite group theory.
  • Puiseuxth - Proof of Puiseux's theorem and computation of roots of polynomials of Puiseux's series.
  • UniMath - Library which aims to formalize a substantial body of mathematics using the univalent point of view.

Verified Software

  • CompCert - High-assurance compiler for almost all of the C language (ISO C99), generating efficient code for the PowerPC, ARM, RISC-V and x86 processors.
  • Ceramist - Verified hash-based approximate membership structures such as Bloom filters.
  • Fiat-Crypto - Cryptographic primitive code generation.
  • Incremental Cycles - Verified OCaml implementation of an algorithm for incremental cycle detection in graphs.
  • Jasmin - Formalized language and verified compiler for high-assurance and high-speed cryptography.
  • JSCert - Coq specification of ECMAScript 5 (JavaScript) with verified reference interpreter.
  • lambda-rust - Formal model of a Rust core language and type system, a logical relation for the type system, and safety proofs for some Rust libraries.
  • Prosa - Definitions and proofs for real-time system schedulability analysis.
  • RISC-V Specification in Coq - Definition of the RISC-V processor instruction set architecture and extensions.
  • Tarjan and Kosaraju - Verified implementations of algorithms for topological sorting and finding strongly connected components in finite graphs.
  • Vรฉlus - Verified compiler for a Lustre/Scade-like dataflow synchronous language.
  • Verdi Raft - Implementation of the Raft distributed consensus protocol, verified in Coq using the Verdi framework.

Resources

Community

Blogs

Books

  • Coq'Art - The first book dedicated to Coq.
  • Software Foundations - Series of Coq-based textbooks on logic, functional programming, and foundations of programming languages, aimed at being accessible to beginners.
  • Certified Programming with Dependent Types - Textbook about practical engineering with Coq which teaches advanced practical tricks and a very specific style of proof.
  • Program Logics for Certified Compilers - Book that explains how to construct program logics using separation logic, accompanied by a formal model in Coq which is applied to the Clight programming language and other examples.
  • Formal Reasoning About Programs - Book that simultaneously provides a general introduction to formal logical reasoning about the correctness of programs and to using Coq for this purpose.
  • Programs and Proofs - Book that gives a brief and practically-oriented introduction to interactive proofs in Coq which emphasizes the computational nature of inductive reasoning about decidable propositions via a small set of primitives from the SSReflect proof language.
  • Computer Arithmetic and Formal Proofs - Book that describes how to formally specify and verify floating-point algorithms in Coq using the Flocq library.
  • The Mathematical Components book - Book oriented towards mathematically inclined users, focusing on the Mathematical Components library and the SSReflect proof language.
  • Modeling and Proving in Computational Type Theory - Book covering topics in computational logic using Coq, including foundations, canonical case studies, and practical programming.
  • Hydras & Co. - Continuously in-progress book on Kirby and Paris' hydra battles and other entertaining formalized mathematics in Coq, including library code and exercises.

Course Material

Tutorials and Hints

Awesome V Awesome

A curated list of awesome V frameworks, libraries, software and resources.

V is a simple, fast, safe, compiled language for developing maintainable software.

Contents

Applications

Interpreters/Compilers

  • v - V itself. Simple, fast, safe, compiled language for developing maintainable software.
  • vbf - A brainfuck interpreter/compiler.
  • monkey_v - Implementation of Thorsten Ball's Monkey Language in V.
  • vcc - A C compiler written in V.
  • Vork - Alternative V compiler/interpreter written in Python.
  • Foxil - An intermediate language designed to facilitate compiler code generation.

Operating systems/Kernels

  • Vinix - Small and simple OS in V. Runs bash.

Package managers

  • vpm - The V language package management tool written in V.

Editors

  • ved - 1 MB text editor written in V with hardware accelerated text rendering. Compiles in <1s.

Web

Graphics

Games

  • Boundstone - High Performance / Fast Compilation / Lightweight Minecraft: Bedrock Edition Server.
  • v-pong - A classic paddle game brought back to life through the power of V.
  • minesweeper - A simple Minesweeper game written in vlang.
  • flappylearning-v - A simple flappy learning demo in v. ( Archived )
  • Kurarin - osu! beatmap visualizer made in V. Example video.

Command-line

  • HN-top - A simple command to list most recent news from hacker-news.
  • vast - A simple tool for vlang, generate v source file to AST json file.
  • symlinker - A small Linux tool to manage symlinks.
  • runner - A tool that automates running/compiling code written in various programming languages.
  • vcredits - A tool that creates CREDITS from LICENSE files of dependencies.
  • vinit - A tool to generate v projects.
  • vspect - A tool to inspect vlang source file. ( Archived )
  • vLogQL - A tiny command-line utility to query LogQL APIs.

Project management

  • vset - A project setup and configuration tool for V projects.

Serialization

  • vproto - Protobuf compiler and runtime in V.
  • v-toxml - XML Serialization library for V.
  • vlang-yaml - A V-native YAML reader, incl. YAML-to-JSON converter.

Libraries

Command line interface (CLI) / Terminal / Shell

  • boxx - Create highly customizable terminal boxes that also look great! ๐Ÿ“ฆ
  • lol - V version of lolcat (text/character rainbowizer).
  • progressbar - An easy to use V library for creating progress bars in cli.
  • termtable - V Terminal Tables: Simple and highly customizable library to display tables in the terminal.
  • vargs - V library for parsing arguments from argv-like arrays. ( Archived )
  • vesseract - V wrapper for Tesseract-OCR (optical character recognition).
  • spinners - Create spinners in your terminal!

Text processing

  • v-regex - A simple regex library for V.
  • chalk - Colorize strings in the terminal.
  • crayon - Paint your terminal output like Picasso. ๐Ÿ–๏ธ๐ŸŽจ
  • cjson - Wrap cJSON for vlang.
  • ascii_robot - ASCII Robot generator written in V.
  • iconv - Wrap iconv for vlang.
  • Rosie-RPL - A Rosie Pattern Language (RPL) implementation.
  • strfmt - Tiny and fast string formatting library ideal for templating.

Graphics

  • vgl - Low-level graphics API access.
  • viup - V wrapper for the C-based cross-platform UI library, IUP.
  • vsdl - V wrapper for the C-based SDL library.
  • vsdl2 - A libSDL2 wrapper.
  • V Earcut - fast (real-time) polygon triangulation library based on mapbox/Earcut to handle holes, twisted polygons, degeneracies and self-intersections.
  • vgui - Minimal, lightweight and cross-platform GUI library.

Game development

  • engine - WIP Vulkan in V.
  • raylib.v - Updated V bindings for raylib with plans for complete cross-platform support.
  • vraylib - V wrapper (bindings) for raylib, the C game development framework.

Web

  • vex - Web framework written on V inspired by Express and Sinatra.
  • vweb - V's built-in web framework. Used by Vorum.
  • validate - A simple library to validate strings in V.
  • valval - Web framework written in V, improved by vweb.
  • v-jsonrpc - Basic JSON-RPC 2.0-compliant server written on V.
  • pico.v - A web server in V based on picoev and picohttpparser.
  • vxbloauth - A minimalistic Xbox Live authenticator for vweb.
  • vcurrency - API wrapper (written in V) for https://api.exchangeratesapi.io.

Database clients

  • redis - Redis client for V, written in V.
  • vsql - A sql query builder for V.
  • vmemcached - Memcached client for V, written in V.

Audio

  • vave - A crazy simple library for reading/writing WAV files in V. ๐ŸŒŠ
  • vspeech - Complete V bindings for Mozilla's DeepSpeech TensorFlow based Speech-to-Text library. ๐Ÿ“ข๐Ÿ“œ
  • v-miniaudio - Bindings for the excellent miniaudio C audio library.

Operating system

  • clipboard - V module for interacting with the OS clipboard. Fully cross-platform.
  • vlipboard - An easy to use wrapper of clipboard with Wayland and Termux support.
  • mmap - Provide native V-lang support for memory-mapping on Linux and Windows.

Networking

  • vmq - V wrapper For ZMQ (aka ZeroMQ, ร˜MQ, 0MQ: a high-performance asynchronous messaging library).

Serial Communications

  • vserialport - V wrapper for libserialport.
  • vserialx - A tiny (wrapper) serial communication library for Linux written in V.
  • vi2c - A tiny (wrapper) library for I2C serial communication for Linux written in V.

Automation

  • vrobot - Desktop automation for V. Only supports Windows.

Telegram

  • vgram - Telegram bot library.

Discord

  • viscord - Pretty basic library for connecting to the Discord gateway.
  • discord.v - User-friendly Discord bot library.
  • vord - Library for interacting with user account endpoints and gateway (Self-bots, custom clients, etc).

IRC

  • vitric - A transparent IRC library.

Files

  • v-mime - MIME detection library for V.
  • vmon - Asynchronously watch for file changes in a directory. The module is essentially a V wrapper for septag/dmon. It works for Windows, macOS and Linux.

Eventing

  • eventbus - A simple event bus system for V.

User Interface toolkits

  • V UI - Integrated cross platform UI toolkit for Windows, macOS, Linux, Android, iOS and the web.
  • vgtk3 - A wrapper for GTK3 in V.
  • vig - Bindings for Dear ImGui GUI toolkit.
  • vnk - Bindings for Nuklear GUI toolkit.

Scientific computing

  • vsl - A pure-V scientific library with a great variety of functions.
  • vtl - Numerical computing library supporting n-dimensional data structure, backed by LAPACKE and OpenBLAS.
  • vplot - V wrapper for GNU Plot (gnuplot_i).

Utility

  • range - Functionality of Python's range() in V.
  • random - An all purpose random library written in V.
  • vdotenv - Support for .env files which loads environment variables.
  • vaker - A light-weight compile-time-generated data faker written in V.

Other

Syntax highlighting

Editor plugins

  • vim-vtools - V tools for Vim, including auto formatting.
  • sublime-v - Fully-featured Sublime Text 3 package for the V Programming Language.

GitHub actions

Videos

Programming contests

Tutorials

Online IDEs with V

Articles

Books

Communities

Forums

Operating Systems & OS Development Examples