b074e81b2b
Right now I have no idea how it works, but it builds with "stack build" and serves something on localhost:3000. I am not exactly happy that building and interactive development depends on "stack(1)" instead of more familiar "cabal repl", but I can live with it. It requires Postgres database running on the localhost, which is configured in my NixOS configuration, and not inside of this repository. Probably can be done better. |
||
---|---|---|
app | ||
config | ||
nix | ||
src | ||
static | ||
templates | ||
test | ||
.dir-locals.el | ||
.envrc | ||
.gitignore | ||
README.md | ||
package.yaml | ||
shell.nix | ||
stack.yaml | ||
stack.yaml.lock |
README.md
Database Setup
After installing Postgres, run:
createuser chirp --pwprompt --superuser
# Enter password chirp when prompted
createdb chirp
createdb chirp_test
Haskell Setup
- If you haven't already, install Stack
- On POSIX systems, this is usually
curl -sSL https://get.haskellstack.org/ | sh
- On POSIX systems, this is usually
- Install the
yesod
command line tool:stack install yesod-bin --install-ghc
- Build libraries:
stack build
If you have trouble, refer to the Yesod Quickstart guide for additional detail.
Development
Start a development server with:
stack exec -- yesod devel
As your code changes, your site will be automatically recompiled and redeployed to localhost.
Tests
stack test --flag chirp:library-only --flag chirp:dev
(Because yesod devel
passes the library-only
and dev
flags, matching those flags means you don't need to recompile between tests and development, and it disables optimization to speed up your test compile times).
Documentation
- Read the Yesod Book online for free
- Check Stackage for documentation on the packages in your LTS Haskell version, or search it using Hoogle. Tip: Your LTS version is in your
stack.yaml
file. - For local documentation, use:
stack haddock --open
to generate Haddock documentation for your dependencies, and open that documentation in a browserstack hoogle <function, module or type signature>
to generate a Hoogle database and search for your query
- The Yesod cookbook has sample code for various needs
Getting Help
- Ask questions on Stack Overflow, using the Yesod or Haskell tags
- Ask the Yesod Google Group
- There are several chatrooms you can ask for help:
- For IRC, try Freenode#yesod and Freenode#haskell
- Functional Programming Slack, in the #haskell, #haskell-beginners, or #yesod channels.