|piq9117 b71a19752f||10 months ago|
|.circleci||1 year ago|
|.github||1 year ago|
|assets||1 year ago|
|src||11 months ago|
|test||2 years ago|
|.editorconfig||11 months ago|
|.gitignore||1 year ago|
|LICENSE||2 years ago|
|Makefile||10 months ago|
|README.md||1 year ago|
|package-lock.json||10 months ago|
|package.json||10 months ago|
|packages.dhall||1 year ago|
|spago.dhall||1 year ago|
PureScript is a delightful purely-functional language that offers powerful, pragmatic tools to manage complexity and help you design, build, and refactor reliable apps of any size. This repository demonstrates the principles I apply at work every day in more than 2,000 lines of thoroughly commented code and has an accompanying long-form guide to building real-world Halogen applications.
I’m a senior software engineer at Awake Security (and previously at CitizenNet). Both companies have large production PureScript applications that have remained reliable, understandable, and maintainable as they scale. I’m convinced PureScript is the best language available today for most single-page applications.
This repository follows the RealWorld spec to implement a Medium clone called Conduit using Halogen. It’s large enough to demonstrate real world examples (CRUD, state management, scalable architecture, type classes, components, etc.) but not so large as to be overwhelming.
First, clone the repository:
git clone https://github.com/thomashoneyman/purescript-halogen-realworld cd purescript-halogen-realworld
Next, build the project (this command will run
spago build; see the
package.json file to see
all helper scripts for the project):
Finally, bundle the JS and run a local server (defaults to port 8080, but if this port is already in use it will increment to 8081, etc.):
You can also run
This project is intended to give non-PureScript developers a taste of what a small application in the language looks like, and to give advanced beginners in PureScript a resource to feel comfortable building reliable applications of their own.
PureScript is a delightful language that becomes only more interesting and rewarding the more you use it and the larger your application becomes; if you haven’t yet tried it out, I encourage you to do so. Not convinced? Kris Jenkins has a lovely talk about PureScript which might change your mind.
The PureScript community is overwhelmingly warm and helpful. If you would like some help getting started, please consider joining the official Discourse and functional programming Slack (invite link). You may also want to check out:
PRs are welcome! Any functional changes will need to remain compliant with the RealWorld spec, and I may re-word documentation changes to fit with the voice used throughout the repository.