This is a simple template to play with websockets, IPC (libipc) communications and Halogen. Nothing serious.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Philippe Pittoli c94a509f0d
Project now compiles.
10 months ago
.github/workflows Update CI and packages for PureScript 0.14 3 years ago
dev Update index.html 1 year ago
src Project now compiles. 10 months ago
test Update template for Halogen 5 and Spago (#23) 4 years ago
.gitignore Update CI and packages for PureScript 0.14 3 years ago
LICENSE Initial commit 8 years ago Convert to Parcel (#26) 4 years ago
makefile Remove useless JSON stuff, replace it with ArrayBuffer serialization. 10 months ago
package.json Update package.json build-prod script 1 year ago
packages.dhall Project now compiles. 10 months ago
spago.dhall Project now compiles. 10 months ago

Halogen Template

Quick Start

git clone halogen-project
cd halogen-project
npm install
npm run build
npm run serve


This is a template for starting a fresh project with the Halogen library for writing declarative, type-safe user interfaces.

You can learn more about Halogen with these resources:

You can chat with other Halogen users on the PureScript Discourse, or join the Functional Programming Slack (invite link) in the #purescript and #purescript-beginners channels.

If you notice any problems with the below setup instructions, or have suggestions on how to make the new-user experience any smoother, please create an issue or pull-request.

Compatible with PureScript compiler 13.x

Initial Setup

Prerequisites: This template assumes you already have Git and Node.js installed with npm somewhere on your path.

First, clone the repository and step into it:

git clone halogen-project
cd halogen-project

Then, install the PureScript compiler, the Spago package manager and build tool, and the Parcel bundler. You may either install PureScript tooling globally, to reduce duplicated node_modules across projects, or locally, so that each project uses specific versions of the tools.

To install the toolchain globally:

npm install -g purescript spago parcel

To install the toolchain locally (reads devDependencies from package.json):

npm install


You can now build the PureScript source code with:

# An alias for `spago build`
npm run build

Launching the App

You can launch your app in the browser with:

# An alias for `parcel dev/index.html --out-dir dev-dist --open`
npm run serve

Development Cycle

If you're using an editor that supports purs ide or are running pscid, you simply need to keep the previous npm run serve command running in a terminal. Any save to a file will trigger an incremental recompilation, rebundle, and web page refresh, so you can immediately see your changes.

If your workflow does not support automatic recompilation, then you will need to manually re-run npm run build. Even with automatic recompilation, a manual rebuild is occasionally required, such as when you add, remove, or modify module names, or notice any other unexpected behavior.


When you are ready to create a minified bundle for deployment, run the following command:

npm run build-prod

Parcel output appears in the ./dist/ directory.

You can test the production output locally with a tool like http-server. It seems that parcel should also be able to accomplish this, but it unfortunately will only serve development builds locally.

npm install -g http-server
http-server dist -o

If everything looks good, you can then upload the contents of dist to your preferred static hosting service.