Awesome ReasonML
A collection of awesome things regarding Reason/OCaml ecosystem. Inspired by the awesome list thing. Feel free to improve this list.
Reason
General Resources
BuckleScript
- Homepage
- BuckleScript Manual
- BuckleScript attributes explained with examples
- Reason Playground
- BuckleScript Playground
- Reason package index
Starter Kits
- Example Project
- Example Native Project
- Reason React lib starter kit
- ReasonReact Playground on Glitch
- Reason + Express.js boilerplate
- NextJS - Opinionated Boilerplate for NextJS, Tailwind and Reason
Tutorials
- An Invitation to ReasonML
- Armed with Reason - Target Raspberry PI
- Intro to Reason Compilation
- Exploring ReasonML
- Build Tic-Tac-Toe with ReasonML
- Get Started with Reason (Free Video Course)
- Build a Simon Game in ReasonReact
- Implement a chart layout algorithm in ReasonML
ReasonReact
- A First ReasonReact App for JS Developers
- A ReasonReact Tutorial
- Another ReasonReact Tutorial for Beginners
Talks
- 2019/09 - @flaviocorpa - LambdAle - What happens if you let the creator of React design a programming language
- 2019/08 - @jordwalke - ReasonConf US - React to the Future
- 2018/05 β @cristianoc β React Europe β ReasonReact and local state
- 2017/11 - @sgrove - Finding joy in programming
- 2017/10 - @bassjacob - Universal Reason
- 2017 06 β @bassjacob β Node.ninjas Sydney β Everything happens for a Reason
- 2017/05 β @chenglou β React Europe β Imperfection
- 2017/05 β @chenglou β React London β What's in a language?
- 2017/04 β @chenglou β React Conf β Taming the Meta Language
- 2016 Phil Holden - Reason slides
- 2016/11 - @sgrove - Age of Reason + slides
- 2016/11 - @ferakpeter - How to build your first Reason App/ - slides
- 2016 - Dawn of Reason - Sander Spies slides
- 2016/07 - @sgrove - From Unikernels to Databases to UIs: Truly full-stack apps in OCaml
Tools
- reason-tools - Chrome/Firefox Reason extension
- RED - Native Reason/OCaml debugger
- bs-loader - Webpack loader for Bucklescript
- resuggest - Discover Reason functions based on examples.
- rollup-plugin-bucklescript - rollup plugin for using bucklescript
- type-o-rama - JS type systems interportability
Libraries and Bindings
GraphQL
- reasonql - Type-safe and simple GraphQL client for ReasonML
- RemoteData - Tools for fetching data from remote sources
- reason-apollo-hooks - Ergonomic focused bindings for @apollo/react-hooks
- graphql_ppx - GraphQL PPX rewriter for Bucklescript/ReasonML written in ReasonML.
- reason-relay - Use Relay with ReasonML
Standard Libs
- Belt - A stdlib shipped with BuckleScript.
- tablecloth - An ergonomic, cross-platform, standard library for ReasonML and OCaml
- Rationale - Ramda inspired library of helper functions for ReasonML
- relude - FP-inspired prelude/standard library for ReasonML projects.
Form
UI Libraries
- reason-react - React.js bindings
- reaml - A React binding for (OCaml | ReasonML) + BuckleScript with compile time enforcement of the "Rules of Hooks".
- rembrandt - Simple functional UI framework written in Reasonml.
- re-ansi - Render ANSI code to HTML
Design system
- bs-ant-design - React Ant design bindings.
Promises and Async
- bs-let - A PPX for async/await (and general monadic binding) in ReasonML.
- future - A Js.Promise alternative for ReasonML
- bs-rx - Reactive extensions(RxJS) in ReasonML
CSS
- bs-react-fela - Bindings for fela
- bs-css - CSS-in-Reason typed CSS inspired by Elm (using glamor)
- bs-glamor - Bindings for glamor
- bs-nice - CSS-in-Reason typed CSS by Sunil Pai (glamor author)
- flex - CSS flexbox layout engine in Reason (port of Yoga)
- re-classnames - Simple reimplementation of classnames in ReasonML
- reason-css-modules-loader - Drop-in replacement for css-loader.
- re-tailwind - Brings TailwindCSS to ReasonML.
- tailwind-ppx - Reason/OCaml PPX that validates your Tailwind classes at compile-time
- styled-ppx - CSS-in-Reason that mimics styled-components
State managment
- restorative - Simple ReasonML state management
- reductive - Redux in Reason
- refractive - Lenses and tracked selectors enhancer and hooks for reductive
Utils
- reason-powerplug - Renderless containers for ReasonReact.
- ReDate -
π A collection of useful helpers for handling dates in ReasonML with the same modern API as the well-knowndate-fns
- bs-typing - Typed.js bindings
- bs-pixi - PixiJS(2D WebGL rendering) in ReasonML.
- genType - Auto generation of idiomatic bindings between Reason and JavaScript: either vanilla or typed with TypeScript/FlowType.
JSON encoding and decoding
- bs-json - Compositional JSON encode/decode library for BuckleScript
- milk - Milk
π₯ Stress-free serialization & deserialization for Reason/OCaml - ocaml-decoders - Elm-inspired decoders for Ocaml
- decco - Bucklescript PPX which generates JSON (de)serializers for user-defined types
- atd - Static types for JSON APIs
- bs-decode - Type-safe JSON decoding for ReasonML and OCaml (documentation site)
Editor Plugins
See the official guide here
Example Apps
- Reason Catstagram - A Catstagram built with Reason and React hooks!
- ReasonReact example - ReasonReact examples
- ReasonReact Hacker News - Hacker News written in Reason
- Mareo - Online Mario game demo drawn on canvas
- Reason Maze - Amazing online maze generation
- ReLayout - Standalone CSS Flexbox Implementation in Reason
- Red - Simple to use pomodoro webapp
- Si - A 3D connect four game
- 99.re - Solutions to 99 problems implemented in Reason
- Gravitron - A game about gravity on iOS/Android/Browser
- Reason Game of Life - Conway's Game of Life written in Reason using ReasonReact. (demo)
- 2048 Reasons - A functional implementation of the viral 2048 game in Reason using ReasonReact. (demo)
- ReasonML RealWorld example app - Medium.com clone written using ReasonReact
- ReasonML RealWorld example app #2 - Another Medium.com clone written using ReasonReact
- re:bench - Benchmarking playground built with ReasonReact. A real app in real use.
- TicTacToe ReasonML engine - Minimax Tic-Tac-Toe implementation in ReasonML
- reason-chess - Chess engine for multiple platforms and web example chess game. (demo)
- Repos - Fetches Github repos by username
- Re-Memory - Memory game in ReasonReact
- Another memory cards game - Memory cards game with GIFs (demo)
- Reason Reversi Game - Reversi Game in ReasonReact
- Snake - Snake game in ReasonReact (demo)
- ReasonML CRUD example - RealWorld CRUD entity example
- Dokusho - CRUD example with authentication, react toolbox, and CI.
- A* pathfinder maze - A* search algorithm written in ReasonML (demo)
- Reatris: ReasonReact tetris - Classic tetris game written on ReasonReact (demo)
- ReasonSplash - Unsplash mobile client in Reason
- Simple Calculator - It's another calculator written on ReasonReact (demo)
- Bouken - ASCII rogue written using ReasonReact. (demo)
- Simon Game - The handheld Simon game written in ReasonReact
- We Write - the App utilizes Github API as the backend, so non-tech writers could collaborate
- Coronate - A Swiss-style chess tournament manager for the web and desktop, written with ReasonReact. (web demo)
- Pomodoro - A pomodoro webapp written in ReasonReact, using webpack, and fully tested with bs-react-testing-library and reason-hooks-testing-library. (demo)
Contribution
Your contributions and suggestions are heartilyβ‘ welcome. (βΏβ βΏβ )