About this project
# @overeng Effect Utils
A collection of production-ready Effect utilities and integrations.
## Packages
### Notion Integration
Full-featured Effect-native Notion API client with type-safe schema generation.
#### @overeng/notion-effect-client
Effect-native HTTP client for the Notion API with typed queries
- **Schema-aware queries** - Pass Effect schemas to get fully typed results with automatic decoding
- **Markdown conversion** - Convert pages/blocks to Markdown with customizable transformers
- **Streaming API** - Auto-pagination via Effect Streams for all list operations
#### @overeng/notion-effect-schema
Comprehensive Effect schemas for all Notion API types
- **Complete coverage** - Schemas for all 27 block types and 21+ property types
- **Property transforms** - `asString`, `asNumber`, `asOption` variants for ergonomic access
- **Write support** - Dedicated write schemas for creating/updating pages
#### @overeng/notion-effect-cli
CLI tool to generate type-safe schemas from your Notion databases
- **Schema generation** - Generate typed schemas from live Notion databases
- **Drift detection** - Track schema changes with `diff` command for CI/CD
- **API wrapper generation** - Generate typed CRUD operations with `--include-api`
### AI Integration
| Package | Description |
| --- | --- |
| @overeng/effect-ai-claude-cli | Claude CLI provider for Effect AI |
Use your **Claude Code subscription** instead of paying for API calls. Implements Effect AI's LanguageModel interface by delegating to the `claude` CLI.
- **Subscription-based** - Use your existing Claude Code subscription (much cheaper than API)
- **No API keys** - CLI handles authentication via your subscription
- **Full LanguageModel support** - Works with `@effect/ai` Chat, generateText, etc.
### Schema Forms
Headless form library for Effect Schemas with accessible React Aria implementation.
| Package | Description |
| --- | --- |
| @overeng/effect-schema-form | Headless form component with schema introspection |
| @overeng/effect-schema-form-aria | Styled React Aria components with Tailwind CSS (Storybook) |
- **Schema introspection** - Automatically generate form fields from Effect Schema structure
- **Headless architecture** - Bring your own components or use pre-built React Aria implementation
- **Tagged struct support** - Automatic handling of discriminated unions with labeled groups
- **Flexible rendering** - Provider pattern, render props, or hooks API for full control
- **Accessible by default** - React Aria Components with WCAG compliance
### React Integration
React hooks and utilities for building Effect-powered applications.
| Package | Description |
| --- | --- |
| @overeng/effect-react | React integration for Effect runtime with hooks and context providers |
| @overeng/react-inspector | DevTools-style inspectors with Effect Schema support (Storybook) |
- **EffectProvider** - Initialize Effect runtime from a Layer and provide to React tree
- **Hooks API** - `useEffectRunner`, `useEffectCallback`, `useEffectOnMount` for running effects in components
- **Automatic error handling** - Built-in error boundaries with custom error components
- **DevTools inspectors** - Browser-style object/table inspectors with Effect Schema awareness
- **Type-safe runtime access** - Direct access to Effect runtime for advanced use cases
### Playwright Integration
| Package | Description |
| --- | --- |
| @overeng/utils/node/playwright | Effect-native Playwright wrappers with OTEL integration |
- **Service tags** - `PwPage`, `PwBrowserContext` for dependency injection
- **Structured errors** - All operations wrapped with `PwOpError` for consistent error handling
- **OTEL spans** - Automatic tracing with cross-process trace propagation
- **Test helpers** - `withTestCtx` for automatic layer provision in Playwright tests
### Utilities
| Package | Description |
| --- | --- |
| @overeng/utils | Distributed locks, log bridging, and debug utilities |
Key features:
- SharedWorker→Tab log bridging via BroadcastChannel (`@overeng/utils/browser`)
- Scope/finalizer debugging and active handles monitoring
- File system-backed distributed locks with TTL expiration
- Workspace-aware command helpers with optional logging/retention
### Developer Tools
| Package | Description |
| --- | --- |
| @overeng/genie | TypeScript-based config file generator |
| @overeng/oxc-config | Shared oxlint and oxfmt configuration |
**Genie** generates `package.json`, `tsconfig.json`, and GitHub workflow files from TypeScript sources (`.genie.ts` files). Features include:
- **Type-safe config** - Define configs as TypeScript with full autocomplete
- **Consistent formatting** - Auto-formats via oxfmt
- **Read-only protection** - Generated files are read-only by default
- **CI integration** - `--check` mode verifies files are up to date
## Quick Start
### Enter the dev shell
This repo uses `devenv` to provide a consistent toolchain. Run commands inside the shell:
```bash
devenv shell
```
### Publish Dependency Views
```bash
devenv tasks run buck2:editor:publish
```
### Check All TypeScript Projects
```bash
devenv tasks run buck2:quick
```
Publish Buck-produced declarations to package `dist` directories when source-side tools or editors need them:
```bash
devenv tasks run buck2:typescript:materialize-dist
```
### Run Tests
```bash
# All tests
devenv tasks run test:run
# Single package (e.g., utils, genie)
devenv tasks run test:utils
devenv tasks run test:genie
# Integration tests (requires NOTION_API_TOKEN for Notion packages)
NOTION_API_TOKEN=secret_xxx devenv tasks run test:integration
# Watch mode
devenv tasks run test:watch
```
### Type Checking
Buck is the only repository-wide TypeScript check authority:
```bash
devenv tasks run buck2:quick
```
Audit cross-cell Buck provider identity separately:
```bash
devenv tasks run buck2:providers:check
```
### Nix Artifact Import Checks
Validate the generic and JavaScript Buck product import boundaries without realizing repository products:
```bash
devenv tasks run nix:buck2-artifact-import:check
devenv tasks run nix:javascript-product-import:check
```
`check:all` also evaluates every flake output for the host system without building anything:
```bash
devenv tasks run nix:flake:eval
```
### Linting
```bash
# Check formatting + lint
devenv tasks run lint:check
# Auto-fix formatting + lint issues
devenv tasks run lint:fix
```
## Package Structure
Each package follows modern ESM conventions:
- Source files in `src/` (TypeScript with `.ts` extension)
- Entry point at `src/mod.ts`
- Compiled output in `dist/` (gitignored)
- Development exports point to source files
- Published exports point to compiled JavaScript
## Contributing
This monorepo uses:
- **bun workspaces** for package management
- **TypeScript project references** for incremental builds
- **oxlint + oxfmt** for linting and formatting
- **Vitest** for testing
- **Effect** for core functionality
See individual package READMEs for package-specific documentation.
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.