TODO double-check that other commands work good in this context
This is the home of Moot, a CFP and event management system. To learn more, please see the slides for the launch announcement.
If you're interested in learning Haskell or would like to help, please contact me! We're still looking for:
- Backend and frontend developers
- Designers
- UI/UX pros
- People willing to help with tutoring and teaching
I'll (Chris) be doing the heavy lifting but I'd like this application to be an opportunity for people to kick around a real Haskell application. To that end, I'm offering tutoring to folks interested in helping out. Don't be afraid to help out in one capacity (e.g. UI/UX) while asking for tutoring in another.
The easiest way to contact me is to send a message to the email address on my GitHub profile.
The current milestone is for CFP functionality. Some of the CFP milestone is general functionality needed for CFP features to be complete.
- Install Docker.
- Later, when you build
moot
, if you see out of memory errors, you may need to increase the memory allocated to Docker beyond the default.
- Later, when you build
- Clone this repo
- In
config/settings.yml
, change the postgres hostname fromlocalhost
topostgres
:- change this:
host: "_env:PGHOST:localhost"
- to this:
host: "_env:PGHOST:postgres"
- change this:
- Start up with
docker-compose up -d
- Run commands to set up container environment:
make deps
.make -f Makefile.docker create-db-user
.make -f Makefile.docker reset-database
.
- Docker-specific
make
command docs:make -f Makefile.docker docker-backend-shell
-- Create shell from host into in moot app backend container. Most development work can be done from this shell (e.g. runbackend-watch
, etc).make -f Makefile.docker docker-postgres-shell
-- Create shell from host into postgres DB container (for administrative things, if needed).make -f Makefile.docker docker-postgres-shell
-- Create shell in postgres DB container (for administrative things, if needed).make -f Makefile.docker docker-psql
-- From within backend container, create psql shell for development.
After installing Postgres, run:
sudo -u postgres createuser moot --superuser
sudo -u postgres createdb moot_dev
sudo -u postgres createdb moot_test
echo "ALTER USER moot WITH PASSWORD 'moot'" | sudo -u postgres psql
If using Postgres.app: https://postgresapp.com/documentation/cli-tools.html Homebrew: https://www.codementor.io/engineerapart/getting-started-with-postgresql-on-mac-osx-are8jcopb
Either way, these commands should be in your path and you shouldn't need to sudo as a separate user specially made for Postgres in the typical macOS PostgreSQL server install:
createuser moot --superuser
createdb moot_dev
createdb moot_test
echo "ALTER USER moot WITH PASSWORD 'moot'" | psql
???
- 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.
This should install the yesod
binary for the development server and also install the dependencies for the gulp build:
make deps
Start the gulp watch with:
make frontend-watch
Start a development server with:
make backend-watch
As your code changes, your site will be automatically recompiled and redeployed to localhost.
stack test --flag moot:library-only --flag moot: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).
- 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
- 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.