Search courses, chapters, or pages...
Install a current Node.js LTS release, preferably through a version manager such as nvm, fnm, or Volta. Verify `node`, `npm`, and `corepack` from the terminal so later tools run on the same runtime.
Create a new project with `npm init` or a pnpm equivalent, then read what `package.json` and the lockfile do. Distinguish project metadata, dependencies, dev dependencies, and repeatable installs.
Use what you learned in the previous lesson to solve real-world problems.
Add `effect` as the runtime library and TypeScript tooling such as `typescript`, `tsx`, and `@types/node` as development dependencies. Reason through why Effect is shipped with your app while compiler tools usually are not.
Check what you understood with a short quiz.
Create a `tsconfig.json` that fits a modern Node.js Effect project: strict checking, Node module resolution, and source files under `src`. Recognize the settings that make TypeScript catch mistakes before the program runs.
Run a `.ts` file directly with `tsx` during development instead of manually compiling first. Use this to create a fast edit-run loop for small Effect examples.
Write a tiny program using `Effect.succeed`, `Console.log`, or `Effect.gen`, then start it with `Effect.runPromise`. Trace the difference between describing an Effect and actually executing it.
Use `tsc` to typecheck the project and optionally emit JavaScript into a build folder. Read a compiler error as feedback from TypeScript, not as a runtime crash.
Add a formatter such as Prettier or Biome and run it on the project files. See how formatting stays separate from typechecking: it changes style, not program meaning.
Install Vitest and create a small `.test.ts` file that checks an ordinary TypeScript value. Run the test command and identify how the test runner finds files, executes tests, and reports failures.
Test a small Effect by running it inside a Vitest test with `Effect.runPromise`. Compare a successful Effect result with a failed test assertion so setup problems and program behavior are easier to separate.
Add `dev`, `typecheck`, `format`, `test`, and optional `build` commands to `package.json` scripts. Use scripts as the stable entry points for the compiler, formatter, runner, and test runner.
Review this chapter with practice based on your mistakes.