Create Effect App (Release)

Sep 13th, 2024

We are thrilled to announce the release of a brand new command-line tool for the Effect-TS ecosystem - create-effect-app!

This handy tool streamlines the process of setting up new Effect projects, allowing you to quickly bootstrap either an official Effect example or a project template with Effect and all our recommended developer tooling pre-configured for you.

Why create-effect-app?

Setting up a new Effect project can involve several steps, including creating folders, installing dependencies, and configuring tools. create-effect-app eliminates the boilerplate, allowing you to worry less about project configuration and focus instead on writing application code.

How to Use

For complete documentation, see the project's README.

Interactive Usage

To get started, simply run the create-effect-app command in your terminal using your preferred package manager:

npm

sh
# npm
npx create-effect-app@latest
# pnpm
pnpm create effect-app@latest
# yarn
yarn create effect-app@latest
# bun
bunx create-effect-app@latest
sh
# npm
npx create-effect-app@latest
# pnpm
pnpm create effect-app@latest
# yarn
yarn create effect-app@latest
# bun
bunx create-effect-app@latest

This will launch an interactive setup process, guiding you through the steps needed to bootstrap your project:

Animated GIF demonstrating the interactive experience when create-effect-app is run in interactive mode

Once you've made your selections, create-effect-app will create your new Effect project and configure it according to the preferences you selected.

Non-Interactive Usage

If you prefer to use create-effect-app non-interactively, that is also supported:

sh
create-effect-app
(-t, --template basic | cli | monorepo)
[--changesets]
[--flake]
[--eslint]
[--workflows]
[<project-name>]
create-effect-app
(-e, --example http-server)
[<project-name>]
sh
create-effect-app
(-t, --template basic | cli | monorepo)
[--changesets]
[--flake]
[--eslint]
[--workflows]
[<project-name>]
create-effect-app
(-e, --example http-server)
[<project-name>]

Let's break down each of the options available to customize an Effect project template:

OptionDescription
--changesetsInitializes your project with the Changesets package for managing version control.
--flakeInitializes your project with a Nix flake for managing system dependencies.
--eslintIncludes ESLint for code formatting and linting.
--workflowsSets up Effect's recommended GitHub Action workflows for automation.

Example

For example, to create a new Effect project in a directory named "my-effect-app" with the basic template and ESLint integration, you can run:

$ npx create-effect-app --template basic --eslint my-effect-app
$ npx create-effect-app --template basic --eslint my-effect-app

Go Forth and Build

With create-effect-app, starting new Effect projects is easier than ever. Get building and explore the power of Effect!

Help Us Improve

We're always looking for ways to improve the Effect-TS ecosystem. If you encounter any issues with create-effect-app or have feature requests, please don't hesitate to file an issue.

Happy Effecting!

The Effect Team