This is an opinionated library for full-stack Effect-TS. (See repositories for more info and discord link, articles, youtube videos, etc).
WIP docs
See https://github.com/effect-ts-app/boilerplate for a sample app use.
effect-app: service contracts and runtime-agnostic base logic.@effect-app/infra: backend / Node adapters.@effect-app/vue: Vue / browser adapters.
Migration targets introduced in this repo include:
@effect-app/infra/Emailer/service->effect-app/Emailer@effect-app/infra/QueueMaker/service->effect-app/QueueMaker@effect-app/infra/Store/service->effect-app/Store@effect-app/infra/Model/*->effect-app/Model/*@effect-app/vue/runtime->effect-app/runtime@effect-app/vue/toast->effect-app/toast@effect-app/vue/withToast->effect-app/withToast
repos/effect is a git subtree of https://github.com/Effect-TS/effect-smol.git.
Recommended (uses the currently pinned effect / @effect/* version from package.json):
pnpm subtree:effectOr directly via the CLI:
effa sync-effectUse a different repository URL:
effa sync-effect --url https://github.com/Effect-TS/effect-smol.gitManual update to a specific ref:
git subtree pull --prefix=repos/effect https://github.com/Effect-TS/effect-smol.git <ref> --squashExample:
git subtree pull --prefix=repos/effect https://github.com/Effect-TS/effect-smol.git @effect/ai-anthropic@4.0.0-beta.47 --squashApps that vendor this repository as repos/libs can sync it to the pinned
effect-app / @effect-app/* version in their package.json:
effa sync-effect-appThe command first tries Changesets package tags such as
effect-app@4.0.0-beta.271 or @effect-app/infra@4.0.0-beta.271. If no
matching tag exists, it fetches https://github.com/effect-app/libs.git into a
local git cache and selects the latest commit on the default branch whose
package manifest still has the pinned version.
Escape hatch for manual refs:
effa sync-effect-app --ref main
effa sync-effect-app --ref latest # latest mainBoth sync-effect and sync-effect-app fetch selected commits with
--no-tags, so syncing subtrees does not import upstream package tags into the
app repository.
The clean release convention is to publish git tags for package versions
(effect-app@<version>, @effect-app/infra@<version>, etc.) from the release
workflow. The history scan exists because this repo still has older v* tags
but not current package-version tags.
Uses Changesets
- make changes
- generate and include changeset
pnpm changeset - wait for build which creates a PR
- inspect the PR, merge when alright
- await new build and new package deployments
- All contributors
- Michael Arnaldi, Max Brown and the Effect-TS contributors for Effect
- ZIO Contributors for the excellent ZIO
- Anyone else we're forgetting..
On Mac:
Shift + Command + P- Select
Run Task - Select
Run Storybook OmegaForm - Will automatically open browser to http://localhost:6006/ Enjoy!
On Windows:
- Select "Run Task"
cd packages/vue-components- run storybook
pnpm storybook- Will automatically open browser to http://localhost:6006/ Enjoy!