All Projects → profunktor → typelevel-stack.g8

profunktor / typelevel-stack.g8

Licence: other
📚 Unofficial Giter8 template for the Typelevel Stack (Http4s / Doobie / Circe / Cats Effect / Fs2) based on Cats v1.x.x

Programming Languages

scala
5932 projects

Projects that are alternatives of or similar to typelevel-stack.g8

scala-functional-programming-tutorial
Functional Programming in Scala Tutorial
Stars: ✭ 23 (-63.49%)
Mutual labels:  cats, http4s, fs2, circe, cats-effect
http4s-modules
Web modules built on Http4s
Stars: ✭ 31 (-50.79%)
Mutual labels:  typelevel, http4s, circe, doobie
http4s-dom
http4s, in a browser near you
Stars: ✭ 13 (-79.37%)
Mutual labels:  cats, typelevel, http4s
classy-optics
🔎 Source code shown at my talks at Scale by the Bay 2018 and Scalar 2019
Stars: ✭ 25 (-60.32%)
Mutual labels:  cats, http4s, cats-effect
pfps-examples
🏮 Standalone examples shown in the book "Practical FP in Scala: A hands-on approach"
Stars: ✭ 167 (+165.08%)
Mutual labels:  cats, fs2, cats-effect
swam
WebAssembly engine in Scala
Stars: ✭ 38 (-39.68%)
Mutual labels:  cats, fs2, cats-effect
play-angular-typescript.g8
A giter8 template for a Play Angular 4 Typescript application
Stars: ✭ 91 (+44.44%)
Mutual labels:  sbt, giter8, giter8-template
Monix
Asynchronous, Reactive Programming for Scala and Scala.js.
Stars: ✭ 1,819 (+2787.3%)
Mutual labels:  cats, typelevel, cats-effect
nine-cards-backend
An Open Source Android Launcher built with Scala on Android
Stars: ✭ 61 (-3.17%)
Mutual labels:  cats, sbt, doobie
ecommerce
A project for exploring Akka with Scala
Stars: ✭ 24 (-61.9%)
Mutual labels:  cats, sbt, circe
tradeio
A disciplined way to purely functional domain models in Scala
Stars: ✭ 19 (-69.84%)
Mutual labels:  cats, http4s, cats-effect
pfhais
Source code of the book Pure functional HTTP APIs in Scala including a chapter about upgrading to Scala 3.
Stars: ✭ 48 (-23.81%)
Mutual labels:  http4s, fs2, cats-effect
tutorials
🎥 Source code of the examples shown in the video tutorials
Stars: ✭ 18 (-71.43%)
Mutual labels:  cats, fs2, cats-effect
Http4s
A minimal, idiomatic Scala interface for HTTP
Stars: ✭ 2,173 (+3349.21%)
Mutual labels:  cats, typelevel, fs2
fs2-ftp
Simple client for Ftp/Ftps/Sftp
Stars: ✭ 24 (-61.9%)
Mutual labels:  cats, fs2, cats-effect
influencer-stats
Playground for measuring performance of functional programming tools in Scala. Gathers statistics about videos.
Stars: ✭ 24 (-61.9%)
Mutual labels:  cats, http4s, cats-effect
cats-helper
Helpers for cats & cats-effect
Stars: ✭ 19 (-69.84%)
Mutual labels:  cats, cats-effect
cats-effect-testing
Integration between cats-effect and test frameworks
Stars: ✭ 155 (+146.03%)
Mutual labels:  cats, cats-effect
Scala Pet Store
An implementation of the java pet store using FP techniques in scala
Stars: ✭ 812 (+1188.89%)
Mutual labels:  cats, typelevel
Cats Infographic
typeclass diagram for cats
Stars: ✭ 403 (+539.68%)
Mutual labels:  cats, typelevel

Unofficial Giter8 template for the Typelevel Stack (Http4s / Doobie / Circe / Cats Effect / Fs2) based on Cats v1.x.x

Typelevel Stack QuickStart

  1. Install sbt
  2. sbt new profunktor/typelevel-stack.g8
  3. cd quickstart
  4. Install PostgreSQL and configure access for user postgres and password postgres (or change it in Module)
  5. Create database users and table api_user (see src/main/resources/users.sql or use Flyway as in the tests).
  6. sbt test (optional)
  7. sbt run
  8. curl http://localhost:8080/users/$USERNAME

About Template

It contains the minimal code to get you started:

  • UserRepository: Defines a method to find a user without commiting to a Monad (kind of tagless-final).
    • PostgresUserRepository: Implementation of the UserRepository interface using Doobie and PostgreSQL abstracting over the Effect F[_].
  • UserService: Business logic on top of the UserRepository again abstracting over the Effect F[_].
  • UserHttpEndpoint: Defines the http endpoints of the REST API making use of the UserService.
  • HttpErrorHandler: Mapping business errors to http responses in a single place.
  • http package: Includes custom Circe Json Encoders for value classes.
  • validation object: Includes fields validation using cats.data.ValidatedNel.
  • Module: Dependencies module.
  • Server: The main application that wires all the components and starts the web server.

Template License

Written in <2017> by @gvolpe

To the extent possible under law, the author(s) have dedicated all copyright and related and neighboring rights to this template to the public domain worldwide. This template is distributed without any warranty. See http://creativecommons.org/publicdomain/zero/1.0/.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].