Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/typeonce-dev/effect-getting-started-course
Complete effect getting started course: learn how to build production effect applications with error handling, configuration, services, and layers 🚀
https://github.com/typeonce-dev/effect-getting-started-course
effect effect-beginner effect-schema effect-ts
Last synced: about 2 months ago
JSON representation
Complete effect getting started course: learn how to build production effect applications with error handling, configuration, services, and layers 🚀
- Host: GitHub
- URL: https://github.com/typeonce-dev/effect-getting-started-course
- Owner: typeonce-dev
- Created: 2024-07-12T17:03:31.000Z (6 months ago)
- Default Branch: main
- Last Pushed: 2024-08-29T07:29:28.000Z (5 months ago)
- Last Synced: 2024-08-29T08:55:55.997Z (5 months ago)
- Topics: effect, effect-beginner, effect-schema, effect-ts
- Language: TypeScript
- Homepage: https://www.typeonce.dev/course/effect-beginners-complete-getting-started
- Size: 39.1 KB
- Stars: 12
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Effect: Beginners Complete Getting Started
This repository contains all the code for the course [`Effect: Beginners Complete Getting Started`](https://www.typeonce.dev/course/effect-beginners-complete-getting-started).
The app is implemented using typescript. You can get started by forking/cloning the repository and installing the dependencies:
```sh
pnpm install
```The project follows the implementation of the app in the course:
- Entry point inside [index.ts](./src/index.ts)
- All *Pascal Case* files in [src](./src/) are effect services
- Testing inside [test](./test/)
- [[+1]](./src/+1/) contains topic explained inside extra lessons in the course***
[`effect`](https://effect.website/) is the missing standard library for TypeScript. `effect` provides everything that you need to **build type-safe production typescript applications**.
## Course content
This course will guide you from 0 knowledge of `effect` to build your first API with `Runtime`, `Layer`, `Config` and more. It shows you *how to implement a single API request* using `effect`.
This may sound simple, but in reality you need to account for a lot of configurations and possible errors. `effect` makes everything type-safe, maintainable, testable:
- Error handling
- Configuration (environmental variables)
- Mocking and testing (dependency injection)
- Organizing and composing services### How the course is organized
The course is organized in small self-contained lessons. Each lesson introduces 1 single new concept.
We will explore why using plain `fetch` and `Promise` is not enough. For each problem we explore the solution offered by `effect`, how it works, why it's needed, and how it integrates with the other modules to build a complete app.
## Course outline
These are some of the concepts you will learn:
- Creating and running effects (`Effect` type)
- Type safe error handling
- How to use `pipe` and `gen` to compose effects
- How to use `@effect/schema` to parse request responses
- Manage environmental variables with the `Config` module
- Testing and mocking using dependency injection
- Composing services using `Context` and `Layer`
- How to build your custom runtime using `ManagedRuntime`We will learn these step by step. Every new module or API will be introduced only when required, specifically when implementing a missing feature of solving a problem with the app.
***
## Prerequisites
The only prerequisite is knowing typescript.This does not require being advanced in the language. Nonetheless, the course assumes you know *what types are and how they work*.
Here are some of the typescript concepts we are going to use:
- Type inference
- `typeof`
- `never`
- `interface`/`type`
- `readonly`
- `function*`/`yield*`We will briefly review some of these during the course to understand how and why they are used.
### Good to have
Some patterns and APIs in `effect` derive from functional programming principles.Those are **not** required, but they may help you better understand some APIs used in `effect`:
- Piping: `pipe` function in `effect`
- Pure functions
- Function composition
- High-order functions
- Pattern matching
- Dependency injection> We are going to learn more about some of these principles during the course