{"id":41629964,"url":"https://github.com/overengineeringstudio/effect-utils","last_synced_at":"2026-01-24T14:31:13.045Z","repository":{"id":307968798,"uuid":"1031222748","full_name":"overengineeringstudio/effect-utils","owner":"overengineeringstudio","description":"A collection of production-ready Effect utilities and integrations.","archived":false,"fork":false,"pushed_at":"2026-01-16T15:17:11.000Z","size":1954,"stargazers_count":53,"open_issues_count":9,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-17T02:45:01.077Z","etag":null,"topics":["effect","overengineered","typescript"],"latest_commit_sha":null,"homepage":"https://overeng-effect-utils-schema-form-ar.vercel.app","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/overengineeringstudio.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2025-08-03T09:31:08.000Z","updated_at":"2026-01-16T15:17:15.000Z","dependencies_parsed_at":"2025-08-03T11:45:05.103Z","dependency_job_id":null,"html_url":"https://github.com/overengineeringstudio/effect-utils","commit_stats":null,"previous_names":["schickling/effect-notion"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/overengineeringstudio/effect-utils","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/overengineeringstudio%2Feffect-utils","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/overengineeringstudio%2Feffect-utils/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/overengineeringstudio%2Feffect-utils/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/overengineeringstudio%2Feffect-utils/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/overengineeringstudio","download_url":"https://codeload.github.com/overengineeringstudio/effect-utils/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/overengineeringstudio%2Feffect-utils/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28729686,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-24T10:24:43.181Z","status":"ssl_error","status_checked_at":"2026-01-24T10:24:36.112Z","response_time":89,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["effect","overengineered","typescript"],"created_at":"2026-01-24T14:31:12.130Z","updated_at":"2026-01-24T14:31:12.994Z","avatar_url":"https://github.com/overengineeringstudio.png","language":"TypeScript","readme":"# @overeng Effect Utils\n\nA collection of production-ready [Effect](https://effect.website) utilities and integrations.\n\n## Packages\n\n### Notion Integration\n\nFull-featured Effect-native Notion API client with type-safe schema generation.\n\n#### [@overeng/notion-effect-client](./packages/@overeng/notion-effect-client)\n\nEffect-native HTTP client for the Notion API with typed queries\n\n- **Schema-aware queries** - Pass Effect schemas to get fully typed results with automatic decoding\n- **Markdown conversion** - Convert pages/blocks to Markdown with customizable transformers\n- **Streaming API** - Auto-pagination via Effect Streams for all list operations\n\n#### [@overeng/notion-effect-schema](./packages/@overeng/notion-effect-schema)\n\nComprehensive Effect schemas for all Notion API types\n\n- **Complete coverage** - Schemas for all 27 block types and 21+ property types\n- **Property transforms** - `asString`, `asNumber`, `asOption` variants for ergonomic access\n- **Write support** - Dedicated write schemas for creating/updating pages\n\n#### [@overeng/notion-effect-cli](./packages/@overeng/notion-effect-cli)\n\nCLI tool to generate type-safe schemas from your Notion databases\n\n- **Schema generation** - Generate typed schemas from live Notion databases\n- **Drift detection** - Track schema changes with `diff` command for CI/CD\n- **API wrapper generation** - Generate typed CRUD operations with `--include-api`\n\n### AI Integration\n\n| Package                                                                   | Description                       |\n| ------------------------------------------------------------------------- | --------------------------------- |\n| [@overeng/effect-ai-claude-cli](./packages/@overeng/effect-ai-claude-cli) | Claude CLI provider for Effect AI |\n\nUse your **Claude Code subscription** instead of paying for API calls. Implements Effect AI's LanguageModel interface by delegating to the `claude` CLI.\n\n- **Subscription-based** - Use your existing Claude Code subscription (much cheaper than API)\n- **No API keys** - CLI handles authentication via your subscription\n- **Full LanguageModel support** - Works with `@effect/ai` Chat, generateText, etc.\n\n### Schema Forms\n\nHeadless form library for Effect Schemas with accessible React Aria implementation.\n\n| Package                                                                         | Description                                                                                                          |\n| ------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- |\n| [@overeng/effect-schema-form](./packages/@overeng/effect-schema-form)           | Headless form component with schema introspection                                                                    |\n| [@overeng/effect-schema-form-aria](./packages/@overeng/effect-schema-form-aria) | Styled React Aria components with Tailwind CSS ([Storybook](https://overeng-effect-utils-schema-form-ar.vercel.app)) |\n\n- **Schema introspection** - Automatically generate form fields from Effect Schema structure\n- **Headless architecture** - Bring your own components or use pre-built React Aria implementation\n- **Tagged struct support** - Automatic handling of discriminated unions with labeled groups\n- **Flexible rendering** - Provider pattern, render props, or hooks API for full control\n- **Accessible by default** - React Aria Components with WCAG compliance\n\n### React Integration\n\nReact hooks and utilities for building Effect-powered applications.\n\n| Package                                                         | Description                                                                                                                |\n| --------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- |\n| [@overeng/effect-react](./packages/@overeng/effect-react)       | React integration for Effect runtime with hooks and context providers                                                      |\n| [@overeng/react-inspector](./packages/@overeng/react-inspector) | DevTools-style inspectors with Effect Schema support ([Storybook](https://overeng-effect-utils-react-inspecto.vercel.app)) |\n\n- **EffectProvider** - Initialize Effect runtime from a Layer and provide to React tree\n- **Hooks API** - `useEffectRunner`, `useEffectCallback`, `useEffectOnMount` for running effects in components\n- **Automatic error handling** - Built-in error boundaries with custom error components\n- **DevTools inspectors** - Browser-style object/table inspectors with Effect Schema awareness\n- **Type-safe runtime access** - Direct access to Effect runtime for advanced use cases\n\n### Playwright Integration\n\n| Package                                                     | Description                                             |\n| ----------------------------------------------------------- | ------------------------------------------------------- |\n| [@overeng/utils/node/playwright](./packages/@overeng/utils) | Effect-native Playwright wrappers with OTEL integration |\n\n- **Service tags** - `PwPage`, `PwBrowserContext` for dependency injection\n- **Structured errors** - All operations wrapped with `PwOpError` for consistent error handling\n- **OTEL spans** - Automatic tracing with cross-process trace propagation\n- **Test helpers** - `withTestCtx` for automatic layer provision in Playwright tests\n\n### Utilities\n\n| Package                                     | Description                                          |\n| ------------------------------------------- | ---------------------------------------------------- |\n| [@overeng/utils](./packages/@overeng/utils) | Distributed locks, log bridging, and debug utilities |\n\nKey features:\n\n- SharedWorker→Tab log bridging via BroadcastChannel (`@overeng/utils/browser`)\n- Scope/finalizer debugging and active handles monitoring\n- File system-backed distributed locks with TTL expiration\n- Workspace-aware command helpers with optional logging/retention\n\n### Developer Tools\n\n| Package                                               | Description                            |\n| ----------------------------------------------------- | -------------------------------------- |\n| [@overeng/genie](./packages/@overeng/genie)           | TypeScript-based config file generator |\n| [@overeng/oxc-config](./packages/@overeng/oxc-config) | Shared oxlint and oxfmt configuration  |\n\n**Genie** generates `package.json`, `tsconfig.json`, and GitHub workflow files from TypeScript sources (`.genie.ts` files). Features include:\n\n- **Type-safe config** - Define configs as TypeScript with full autocomplete\n- **Consistent formatting** - Auto-formats via oxfmt\n- **Read-only protection** - Generated files are read-only by default\n- **CI integration** - `--check` mode verifies files are up to date\n\n### Rebuild and reload binaries\n\n```bash\nmono nix build --package genie\nmono nix build --package mono\nmono nix reload\nmono nix status\nmono nix status --scope flake\n```\n\nAfter `bun.lock` changes:\n\n```bash\nmono nix hash --package genie\nmono nix hash --package mono\n```\n\n## Quick Start\n\n### Enter the dev shell\n\nThis repo uses `devenv` to provide a consistent toolchain. Run commands inside the shell so `mono` can find the required tools:\n\n```bash\ndevenv shell\n```\n\n### Install Dependencies\n\n```bash\ndt bun:install\n```\n\n### Build All Packages\n\n```bash\ndt ts:build\n```\n\n### Run Tests\n\n```bash\n# All tests\ndt test:run\n\n# Single package (e.g., utils, genie, mono)\ndt test:utils\ndt test:genie\n\n# Integration tests (requires NOTION_TOKEN for Notion packages)\nNOTION_TOKEN=secret_xxx dt test:integration\n\n# Watch mode\ndt test:watch\n```\n\n### Type Checking\n\nContinuous type checking across the entire monorepo (project references):\n\n```bash\ndt ts:watch\n```\n\nOr one-off type check:\n\n```bash\ndt ts:check\n```\n\n### Linting\n\n```bash\n# Check formatting + lint\ndt lint:check\n\n# Auto-fix formatting + lint issues\ndt lint:fix\n```\n\n## Package Structure\n\nEach package follows modern ESM conventions:\n\n- Source files in `src/` (TypeScript with `.ts` extension)\n- Entry point at `src/mod.ts`\n- Compiled output in `dist/` (gitignored)\n- Development exports point to source files\n- Published exports point to compiled JavaScript\n\n## Contributing\n\nThis monorepo uses:\n\n- **bun workspaces** for package management\n- **TypeScript project references** for incremental builds\n- **oxlint + oxfmt** for linting and formatting\n- **Vitest** for testing\n- **Effect** for core functionality\n\nSee individual package READMEs for package-specific documentation.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foverengineeringstudio%2Feffect-utils","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Foverengineeringstudio%2Feffect-utils","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foverengineeringstudio%2Feffect-utils/lists"}