English | MP4 | AVC 1920×1080 | AAC 44KHz 2ch | 71 Lessons (29h 56m) | 4.96 GB
The experience of a software engineer.
Build your own full-stack product in Scala 3 with the Typelevel stack.
Build a Full-Stack Application with Scala 3 and the Typelevel Stack
Just as Scala has transformed the way we build applications with functional programming, the Typelevel stack is changing how we build strong, testable and provably correct APIs.
With a focus on functional Scala and a real world application, this course is a start-to-finish way to learn Full Stack Scala 3 with Cats, Cats Effect and friends.
Join me as I show you how to build a full stack jobs platform with the latest evolution of Scala and functional libraries.
What will you build?
Together we will build the Rock the JVM Jobs Board, a full stack online jobs platform with credit card integration. Users can create and manage their account, post and view jobs, and apply for them.
We will build the application from scratch, using a decoupled layered architecture on the backend, and an Elm-like architecture on the frontend with ScalaJS.
The app includes many server-side bits including authentication, permissions, sending email, uploading images, and charging credit cards. We have almost complete test coverage in the backend, and we develop some core modules with test-driven development (TDD).
The frontend is built as a single-page application, organized for for scalability if you want to add new pages or functional components.
Cats
The functional programming library for Scala. We will use it to make our code modular, expressed in terms of capabilities.
Cats Effect
The Scala library that allows us to write composable and high-performance applications with pure functional programming.
Every action we perform is built with Cats Effect.
Doobie
The Typelevel library that allows us to work with databases, using type-safe queries. We will use PostgreSQL as an actual database.
Http4s
With this Typelevel library we’ll build our REST APIs with JSON payloads, automatic validation, incremental content loading with pagination etc., as well as manage authentication, authorization with JWTs and role-based access control.
Tyrian
A lightweight Scala 3 library for single-page applications in a purely functional way, Elm-style. While not “officially” a Typelevel project, it is based on Cats Effect and FS2 to manage application state. Our entire frontend is built with Tyrian:
- routing
- authentication flow
- checkout
- error/success UI state
- fetching data from backend
Honorable Mentions
- PureConfig for configuration
- FS2 for incremental loading on the backend
- FS2 for SPA history management on the frontend
- TSec for JWT authorization and RBAC
- Circe for JSON
- Log4Cats for purely-functional logging
- ScalaTest with TestContainers wrapped in Cats Effect
Table of Contents
1 Intro & Setup
2 Foundations Cats – Rock the JVM
3 Foundations Cats Effect – Rock the JVM
4 Foundations Doobie – Rock the JVM
5 Foundations Http4s – Rock the JVM
6 Backend Scaffolding
7 Jobs Endpoints
8 Jobs Endpoints Implementation – Rock the JVM – 1728×1080 471K
9 Logging & Debugging Infra
10 Jobs Core Module, aka _Algebra_
11 Running Jobs _Algebra_
12 A Full Jobs CRUD App
13 Adding Database Configuration
14 Testing Jobs HTTP API
15 Testing Jobs
16 HTTP Payload Validation
17 Filtering and Pagination
18 Finishing Tests
19 Users with TDD
20 Designing the Auth API
21 Auth TDD-Style
22 Auth Implementation
23 Auth HTTP API
24 Auth HTTP, TDD-Style
25 Auth HTTP Implementation A Note
26 Auth HTTP Validation
27 Role-Based Access Control (RBAC)
28 Integrating the Auth Stack
29 Taking the Backend for a Spin
30 Protecting Jobs HTTP Endpoints
31 A Quick Refactor
32 Password Recovery Tokens
33 Password Recovery Sending Emails
34 Password Recovery Finishing Up
35 Completing the Server
36 Inception Adding ScalaJS SBT PluginsCommon and Frontend ModulesPackage File for Frontend
37 Foundations Tyrian
38 Single-Page Application (SPA) Routing
39 Adding a Header with Links
40 Adding Pages
41 Signing Up
42 Signing Up Interacting with the Backend
43 Logging In
44 User Sessions
45 Session Cookies
46 Logging Out
47 Invalidating User Sessions
48 The _Forgot Password_ Flow
49 Resetting Password
50 Profile Page
51 Posting Jobs
52 Uploading Files
53 Showing the Job List
54 Implementing Backend Filters
55 Adding a Filter Panel
56 The Filter Panel UI
57 Displaying Individual Jobs and Rendering Markdown
58 Header
59 Job Filter Panel
60 Job List Page
61 Job Page
62 Auth Pages
63 Post Job Page
64 Stripe Integration Overview
65 Stripe Endpoints
66 Stripe Webhooks
67 Full-Stack Integration
68 Preparing the App for the World Finishing Touches
69 DEPL~1
70 Deployment, Part 2 Frontend
71 JWTs & Suboptimal Database Queries
Resolve the captcha to access the links!