Code Monkey home page Code Monkey logo

haskell-scotty-realworld-example-app's Introduction

RealWorld Example App

Haskell/Scotty codebase containing real world examples (CRUD, auth, advanced patterns, etc) that adheres to the RealWorld spec and API.

Build Status

This codebase was created to demonstrate a fully fledged fullstack application built with Haskell/Scotty including CRUD operations, authentication, routing, pagination, and more.

We've gone to great lengths to adhere to the Haskell/Scotty community styleguides & best practices.

For more information on how to this works with other frontends/backends, head over to the RealWorld repo.

How it works

Environment Variables

Name Desc Default Value
DATABASE_URL PostgreSQL Database URL postgresql://localhost/realworld
ENABLE_HTTPS Server will run on HTTPS if True True
PORT Port 3000
JWK_PATH Path to JWK signature file secrets/jwk.sig
JWT_EXPIRATION_SECS How long until JWT expire (in secs) 7200

Notable Dependencies

  • classy-prelude - Better Prelude for Haskell
  • scotty - Web framework library
  • postgresql-simple - PostgreSQL library
  • aeson - JSON serialization & deserialization
  • digestive-functors & digestive-functors-aeson - Input parsing & validation
  • jose-jwt - JWT encode & decode
  • slug - Slug string builder
  • hspec - Test framework

Quick Repo Walkthrough

  • /postgresql - Database migration scripts.
  • /secrets - Default HTTPS & JWT configuration files for development. Please replace with something else for production.
  • /scripts - Bash scripts to help development.
  • /app - Haskell files for application entry point.
  • /test - Haskell test files.
  • /src - Main Haskell code.

Getting started

Installation

Install Stack.

Install PostgreSQL.

Clone the repository and cd to repo

git clone https://github.com/eckyputrady/haskell-scotty-realworld-example-app.git

cd haskell-scotty-realworld-example-app

Install GHC

stack setup

Install dependencies and build project

stack build

Run project

stack exec realworld

Alternatively, to watch file changes and start the server automatically

./scripts/dev.sh

Alternatively, to watch file changes and run the tests automatically

stack test --file-watch --coverage

To setup deployment to Heroku, please configure this custom buildpack

heroku buildpacks:set https://github.com/mfine/heroku-buildpack-stack

Misc

Logo image - credits to @EricSimmon

haskell-scotty-realworld-example-app's People

Contributors

eckyputrady avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.