Website for hosting and searching PureScript API documentation
Haskell JavaScript Shell CSS
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
app Add yesod scaffold site Jul 4, 2015
backup Add initial version of backup script Jul 4, 2015
config Add user help explaining the search feature Dec 20, 2017
license-generator Add back name search using a trie Jul 31, 2016
src Display all builtin modules, not just Prim (#379) Aug 7, 2018
static Add OpenSearch description, resolves #325 (#377) Aug 4, 2018
test Use type variable names when comparing types (#355) Dec 27, 2017
travis Include stack installation in CI timeout mechanism Aug 7, 2018
.gitignore Switch to stack Feb 20, 2016
.travis.yml Extend Travis CI cache timeout Aug 7, 2018 Update changelog for 0.7.0 Aug 7, 2018
LICENSE Update LICENSE with instructions for relinking Jul 17, 2015 Merge pull request #272 from naehrstoff/favicon Jun 12, 2017
pursuit.cabal v0.7.0 Aug 7, 2018


Build Status

Pursuit hosts API documentation for PureScript packages. It lets you search by package, module, and function names, as well as approximate type signatures.

Pursuit is currently deployed at

Information for package authors can be found at


It's recommended to use stack:


To build in development mode:

$ stack build

To build in production mode:

$ stack build --flag pursuit:-dev


To iterate quickly during development, you can use ghci:

$ stack ghci

Once the REPL has loaded, you can reload the code and then update the web server:

> :l DevelMain
> update

Web server

To run the web server on http://localhost:3000:

$ stack exec pursuit

You might want to add some content to the database (see Database), otherwise you will not be able to browse any packages. The database will be regenerated from this data source before the server starts listening; this can take a short time depending on how much data you have.


Pursuit currently uses the filesystem as a database, since it requires no setup and it makes it easy to use Git and GitHub for backing up. The data directory is set via an environment variable (see Configuration, the default is data).

If you need some sample packages to work with, you can clone the pursuit-backups repo and copy the packages you want to the verified/ directory. This is more convenient than manually uploading each package.

Database structure

The database structure is as follows:


The cache/ directory has files that mirror the URL structure of the web application, and contains files which do not change and may be served as-is without forwarding the request on to the Yesod application. See Handler.Caching for more details.

The verified/ directory stores uploaded packages. Each package has its own directory, and then there is a JSON file for each version. These JSON files each contain a serialized Package GithubUser; see Language.PureScript.Docs.Types in the compiler for details about these types.

The backup process simply involves rsyncing everything in the verified/ directory into a git repository, making a commit, and pushing it to GitHub.


All configuration is done at startup via environment variables. The relevant code is in the Settings module.

All configuration variable names start with PURSUIT_ (eg, PURSUIT_APPROOT). All configuration variables are optional; for development, it is fine to just run stack exec pursuit leaving them all unset.

See src/Settings.hs for more details.


The favicon assets in static/favicon were taken from the Purescript Logo repository.