• Stars
    star
    169
  • Rank 224,453 (Top 5 %)
  • Language
    Haskell
  • License
    Other
  • Created over 10 years ago
  • Updated 2 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Website for hosting and searching PureScript API documentation

Pursuit

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 https://pursuit.purescript.org.

Information for package authors can be found at https://pursuit.purescript.org/help.

Development

It's recommended to use stack: http://docs.haskellstack.org.

Build

To build in development mode:

$ stack build

To build in production mode:

$ stack build --flag pursuit:-dev

Develop

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.

Database

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:

/
  cache/
    packages/
      purescript-prelude/
        0.1.0/
          index.html
          docs/
            Prelude/
              index.html
  verified/
    purescript-prelude/
      0.1.0.json
      0.1.1.json

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.

Configuration

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.

Assets

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

More Repositories

1

purescript

A strongly-typed language that compiles to JavaScript
Haskell
8,420
star
2

documentation

Documentation for the PureScript language, compiler, and tools.
1,027
star
3

spago

🍝 PureScript package manager and build tool
PureScript
783
star
4

psc-package

A package manager for PureScript based on package sets
Haskell
227
star
5

package-sets

PureScript packages for Spago and Psc-Package
Dhall
195
star
6

purescript-prelude

The PureScript Prelude
PureScript
160
star
7

trypurescript

PureScript in the browser
PureScript
120
star
8

purescript-quickcheck

An implementation of QuickCheck in PureScript
PureScript
102
star
9

registry-dev

Development work related to the PureScript Registry
PureScript
96
star
10

purescript-free

Free monads, Cofree comonads, Yoneda and Coyoneda functors, and the Trampoline monad.
PureScript
93
star
11

purescript-record

Functions for working with records and polymorphic labels
PureScript
70
star
12

purescript-transformers

Monad and comonad transformers
PureScript
69
star
13

purescript-foreign

Library for dealing with foreign data (JavaScript objects) in PureScript
PureScript
63
star
14

purescript-typelevel-prelude

Types and kinds for basic type-level programming
PureScript
63
star
15

purescript-in-purescript

PureScript compiler written in PureScript (On hold / inactive)
PureScript
60
star
16

purescript-arrays

Array utility functions
PureScript
58
star
17

purescript-lists

Linked Lists
PureScript
57
star
18

purescript-control

Common control classes and utility functions
PureScript
56
star
19

purescript-strings

String utility functions, Char type, regular expressions.
PureScript
54
star
20

purescript-effect

The Effect monad, for handling native side effects
PureScript
53
star
21

purescript-datetime

Date and time library for PureScript.
PureScript
50
star
22

purescript-foldable-traversable

Classes for foldable and traversable data structures
PureScript
50
star
23

purescript-validation

Applicative-style validation
PureScript
47
star
24

purescript-parallel

Classes for parallel composition and racing of asynchronous computations
PureScript
43
star
25

registry

Registry of PureScript packages and metadata about them
42
star
26

purescript-tailrec

A type class which captures stack-safe monadic tail recursion
PureScript
37
star
27

purescript-ordered-collections

Purely functional map and set data structures
PureScript
36
star
28

purescript.github.io

Project Homepage
HTML
35
star
29

purescript-profunctor

Profunctor type classes and data structures
PureScript
33
star
30

purescript-exists

Existential types as a library
PureScript
33
star
31

purescript-lazy

Call-by-need values
PureScript
30
star
32

survey

Home for the State of PureScript annual survey
Haskell
29
star
33

purescript-foreign-object

Functions for working with homogeneous JavaScript objects
PureScript
29
star
34

purescript-either

Values with two possibilities
PureScript
26
star
35

purescript-filterable

Classes for filterable and witherable data structures
PureScript
25
star
36

purescript-st

The ST effect, for safe local mutation
PureScript
25
star
37

purescript-tuples

Tuple data type and utility functions
PureScript
25
star
38

purescript-docs-search

Search frontend for the documentation generated by the PureScript compiler
PureScript
24
star
39

purescript-graphs

Purely functional graph data structure
PureScript
24
star
40

purescript-console

Console-related functions
PureScript
23
star
41

purescript-refs

Mutable value references
PureScript
21
star
42

governance

21
star
43

roadmap

Long-term projects not covered by other issues lists
20
star
44

purescript-catenable-lists

Catenable lists
PureScript
19
star
45

purescript-safe-coerce

Library support for the compiler-builtin Coercible type class.
PureScript
19
star
46

purescript-functions

Function combinators and types for multi-argument functions
PureScript
18
star
47

purescript-maybe

Optional values
PureScript
18
star
48

purescript-integers

Functions and bitwise operators for the Int numeric type
PureScript
18
star
49

purescript-json

Standard types and basic operations for working with JSON
PureScript
17
star
50

purescript-nonempty

A generic non-empty data structure
PureScript
17
star
51

purescript-type-equality

Type equality constraints
PureScript
16
star
52

purescript-exceptions

Exception effects
PureScript
16
star
53

purescript-assert

Basic assertions library for low level testing
PureScript
16
star
54

purescript-newtype

Type class and functions for working with newtypes
PureScript
15
star
55

purescript-random

Random number generation
PureScript
15
star
56

purescript-unfoldable

Unfoldable functors
PureScript
15
star
57

purescript-partial

Utilities for working with partial functions
PureScript
14
star
58

purescript-minibench

A minimal benchmarking library
PureScript
14
star
59

purescript-functors

Functor products, coproducts, and composition
PureScript
13
star
60

purescript-numbers

Functions for working with PureScripts 'Number' type
PureScript
13
star
61

purescript-const

Const data type and typeclass instances
PureScript
12
star
62

purescript-bifunctors

Bifunctors and biapplicatives
PureScript
12
star
63

purescript-contravariant

Contravariant functors
PureScript
10
star
64

purescript-enums

Operations for sequentially ordered types
PureScript
10
star
65

npm-installer

JavaScript
10
star
66

purescript-identity

Identity value
PureScript
10
star
67

registry-index

9
star
68

purescript-semirings

Semiring instances and functions
PureScript
9
star
69

purescript-unsafe-coerce

Unsafe coercion of values
PureScript
9
star
70

purescript-distributive

Distributive typeclass
PureScript
8
star
71

purescript-psci-support

Support module for the PSCI interactive mode
PureScript
8
star
72

purescript-gen

A type class for random generator implementations.
PureScript
8
star
73

purescript-invariant

Invariant functors
PureScript
7
star
74

pursuit-backups

A backup of Pursuit's documentation snapshots
5
star
75

purescript-lcg

A seeded pseudorandom number generator based on the linear congruential generator algorithm.
PureScript
4
star
76

gsoc

Google Summer of Code Projects
4
star
77

purescript-orders

Utilities for the Ord type class.
PureScript
4
star
78

purescript-metadata

Bogus package to add metadata to package-sets
Shell
2
star
79

infrastructure

ops things
Shell
1
star