# awesome-purescript [![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/sindresorhus/awesome)

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

## Build Tooling

- [pulp](https://github.com/bodil/pulp)
- [psvm-js](https://github.com/ThomasCrvsr/psvm-js) - PureScript Version Manager
- [purescript-psa](https://github.com/natefaubion/purescript-psa) - A pretty, flexible error/warning reporting frontend for `psc`
- [grunt-purescript](https://github.com/purescript-contrib/grunt-purescript)
- [gulp-purescript](https://github.com/purescript-contrib/gulp-purescript)
- [purs-loader](https://github.com/ethul/purs-loader) for webpack
- [psc-package](https://github.com/purescript/psc-package) - A package manager for PureScript based on package sets
- [spago](https://github.com/spacchetti/spago) - PureScript package manager and build tool powered by Dhall and package-sets

## Preludes

- [purescript-prelude](https://github.com/purescript/purescript-prelude) - The standard Prelude.
- [purescript-batteries](https://github.com/tfausak/purescript-batteries) - A PureScript prelude with more features.

## UI Libraries

CSS:

- [purescript-css](https://github.com/slamdata/purescript-css) - A clean, type-safe library for describing, manipulating and rendering CSS.

React-based:

- [purescript-thermite](https://github.com/paf31/purescript-thermite) - A simple wrapper for ReactJS inspired by `react-blaze`.
- [purescript-react](https://github.com/purescript-contrib/purescript-react) - React bindings for PureScript
- [purescript-react-basic](https://github.com/lumihq/purescript-react-basic) - An opinionated set of bindings to the React library, optimizing for the most basic use cases.
- [purescript-react-basic-hooks](https://github.com/spicydonuts/purescript-react-basic-hooks) - An alternative way to define React components using React's "hooks" APIs. Compatible with `purescript-react-basic`.
- [purescript-pux](https://github.com/alexmingoia/purescript-pux) - Build type-safe web apps with PureScript.
- [purescript-spork](https://github.com/natefaubion/purescript-spork) - Elm-like for PureScript.
- [purescript-concur](https://github.com/ajnsit/purescript-concur) - Concur UI framework. React backend, but can use others.
- [purescript-presto](https://github.com/juspay/purescript-presto) - Write Apps like Mathematical Equations!
- [purescript-optic-ui](https://github.com/zrho/purescript-optic-ui) - Write single page web user interfaces declaratively and concisely with the help of lenses and traversals.
- [purescript-react-explor](https://github.com/paf31/purescript-react-explore) - Experiments with comonads for modelling React UIs.

Virtual-DOM based:

- [purescript-halogen](https://github.com/slamdata/purescript-halogen) - A declarative, type-safe UI library.
- [purescript-hedwig](https://github.com/utkarshkukreti/purescript-hedwig) - Hedwig is a fast, type safe, declarative PureScript library for building web applications.
- [purescript-flame](https://github.com/easafe/purescript-flame) - Flame is a fast & simple framework for building web applications in PureScript inspired by purescript-hedwig and Elm

Signals/Behaviors/FRP:

- [purescript-flare](https://github.com/sharkdp/purescript-flare) - Applicative-style reactive user interfaces built on top of purescript-signal.
- [purescript-turbine](https://github.com/funkia/purescript-turbine) - Purely functional frontend framework powered by FRP.
- [purescript-outwatch](https://github.com/OutWatch/purescript-outwatch) - A functional and reactive UI framework based on Rx and VirtualDom.
- [purescript-panda](https://github.com/i-am-tom/purescript-panda) - What would TEA look like if we had no VDOM?
- [purescript-specular](https://github.com/restaumatic/purescript-specular) - A Reflex-Dom inspired UI library for PureScript.
- [purescript-sdom](https://github.com/paf31/purescript-sdom) - An experiment in replacing the virtual DOM and avoiding diffing.
- [purescript-purview](https://github.com/paf31/purescript-purview) - A UI library based on the incremental lambda calculus.

## URL Routers

- [purescript-routing](https://github.com/slamdata/purescript-routing) - A clean, type-safe routing library for PureScript.
- [purescript-cofree-react-router](https://github.com/coot/purescript-cofree-react-router) - React-Router implemented in PureScript as Cofree Comonad for the Array functor.
- [purescript-trout](https://github.com/owickstrom/purescript-trout) - Type-level routing for PureScript.
- [purescript-boomboom](https://github.com/paluh/purescript-boomboom) - Never hard code your urls again. Boomboom them all!
- [purescript-routing-duplex](https://github.com/natefaubion/purescript-routing-duplex) - Simple bidirectional parser/printers for your routing data types.

## Components

- [purescript-halogen-formless](https://github.com/thomashoneyman/purescript-halogen-formless) - A renderless component for building painless forms in Halogen
- [purescript-halogen-select](https://github.com/citizennet/purescript-halogen-select) - Building blocks for common selection user interfaces like dropdowns, typeaheads, image pickers, and calendars.
- [purescript-halogen-echarts](https://github.com/slamdata/purescript-halogen-echarts) - A Halogen integration for the popular ECharts charting library
- [purescript-halogen-day-picker](https://github.com/rnons/purescript-halogen-day-picker) - A day picker for Halogen
- [purescript-halogen-menu](https://github.com/slamdata/purescript-halogen-menu) - Interactive menus in Halogen

## Asynchronicity and Parallelism

- [purescript-aff](https://github.com/slamdata/purescript-aff) - An asynchronous effect monad for PureScript.
- [purescript-affjax](https://github.com/slamdata/purescript-aff) - An asynchronous AJAX library built using Aff.
- [purescript-queue](https://github.com/athanclark/purescript-queue) - An asynchronous queue library for PureScript.
- [purescript-signal](https://github.com/bodil/purescript-signal) - An asynchronous signal library for PureScript, similar to Elm.
- [purescript-zeta](https://github.com/athanclark/purescript-zeta) - An alternative signal implementation in PureScript.

## Effect Management

- [purescript-eff](https://github.com/purescript/purescript-eff) - The Eff monad, for handling native side effects.
- [purescript-effect](https://github.com/purescript/purescript-effect) - The Effect monad, for handling native side effects in PureScript v0.12.x.

## Json Serialization

- [purescript-argonaut](https://github.com/purescript-contrib/purescript-argonaut) - Json encoding and decoding typeclasses.
- [purescript-simple-json](https://github.com/justinwoo/purescript-simple-json) - Json encoding and decoding through Generics.

## Binary Serialization

- [purescript-arraybuffer](https://github.com/jacereda/purescript-arraybuffer) - Bindings to the ArrayBuffer JavaScript type.
- [purescript-arraybuffer-class](https://github.com/athanclark/purescript-arraybuffer-class) - Typeclasses for ArrayBuffer encoding and decoding.
- [purescript-arraybuffer-builder](https://github.com/jamesdbrock/purescript-arraybuffer-builder) - Builder for serializing ArrayBuffer
- [purescript-parsing-dataview](https://github.com/jamesdbrock/purescript-parsing-dataview) - Parser for deserializing ArrayBuffer
- [purescript-protobuf](https://github.com/xc-jp/purescript-protobuf) - Google Protocol Buffers

## Testing

- [purescript-test-unit](https://github.com/bodil/purescript-test-unit) - An asynchronous unit test runner for PureScript.
- [purescript-quickcheck](https://github.com/purescript/purescript-quickcheck) - An implementation of QuickCheck in PureScript.
- [purescript-quickcheck-laws](https://github.com/garyb/purescript-quickcheck-laws) - Law tests for core classes.
- [purescript-benchotron](https://github.com/hdgarrood/purescript-benchotron) - Straightforward benchmarking for PureScript/JavaScript.

## Learning Resources

- [Video - "PureScript (Maybe This Time We Get JavaScript Right)" by Bodil Stokke](https://www.youtube.com/watch?v=yIlDBPiMb0o)
- [Book - "PureScript by Example" by Phil Freeman](https://leanpub.com/purescript/read)
- [Book (ish) - Jordan's Purescript Reference](https://github.com/JordanMartinez/purescript-jordans-reference)
- [PureScript for Haskellers by Dennis Gosnell](http://www.arow.info/blog/posts/2015-12-17-purescript-intro.html)
- [Podcast - Functional Geekery Episode 22](https://www.functionalgeekery.com/episode-22-lambdaconf-2015-part-1/)
- [Podcast - JSJ 189](https://devchat.tv/js-jabber/189-jsj-purescript-with-john-a-de-goes-and-phil-freeman)
- [Course (egghead.io) - Functional Programming Concepts in Purescript](https://egghead.io/courses/functional-programming-concepts-in-purescript)
- [Guide - Real World Halogen](https://thomashoneyman.com/guides/real-world-halogen)

## Discovery

- [Module Linker](https://fiatjaf.alhur.es/module-linker/#/purescript) - Extension that lets you browse docs by just clicking on `import` declarations on GitHub.
- [Pursuit](https://pursuit.purescript.org/)

## Editor and IDE Plugins

See [Editor and tool support](https://github.com/purescript/purescript/wiki/Editor-and-tool-support)

## Community

- [`/r/purescript` subreddit](http://www.reddit.com/r/purescript)
- [`#purescript` on Freenode](http://webchat.freenode.net/?channels=purescript)
- [Stack Overflow `purescript` tag](http://stackoverflow.com/questions/tagged/purescript)
- [Google Group](https://groups.google.com/forum/#!forum/purescript)

## More Resources

- [Purescript Ecosystem](https://github.com/xgrommx/purescript-ecosystem) - Ranked list of popular libraries.

## Contribute

Contributions welcome! Read the [contribution guidelines](contributing.md) first.


## License

[![CC0](http://i.creativecommons.org/p/zero/1.0/88x31.png)](http://creativecommons.org/publicdomain/zero/1.0/)

To the extent possible under law, [Pascal Hartig](https://passy.me/) has waived all copyright and related or neighboring rights to this work.

[purescript.md Github](https://github.com/passy/awesome-purescript
)
