Installation

Package Installation

Schema Engine is a monorepo with multiple packages. Install only what you need:

# Core packages
bun add @schema-engine/forms @schema-engine/forms-react zod
 
# Optional: standalone actions package
bun add @schema-engine/actions

Package Overview

PackageDescription
@schema-engine/formsCore form engine (framework-agnostic)
@schema-engine/forms-reactReact components and hooks
@schema-engine/actionsDomain-agnostic action system
@schema-engine/registryBase registry (internal dependency)

Development Setup

To contribute or explore the source code:

Prerequisites

  • Bun - This project uses Bun as the JavaScript runtime
  • Node.js 18+ (for compatibility)
  • Git for cloning the repository

Clone and Setup

# Clone the repository
git clone https://github.com/andeeplus/schema-engine.git
cd schema-engine
 
# Install dependencies
bun install
 
# Start documentation site
bun dev:www

The development server will start at http://localhost:3000.

Development Scripts

# Start documentation site
bun dev:www
 
# Build all packages
bun run build
 
# Run tests
bun test
 
# Type check
bun run typecheck

Verification

To verify that the installation was successful, check the version of the installed packages:

bun list | grep schema-engine

You should see @schema-engine/forms and @schema-engine/forms-react listed with their versions.

Project Structure

schema-engine/
├── packages/
│   ├── forms/           # @schema-engine/forms
│   ├── forms-react/     # @schema-engine/forms-react
│   ├── actions/         # @schema-engine/actions
│   └── registry/        # @schema-engine/registry
├── apps/
│   └── www/             # Documentation site
└── package.json

TypeScript Configuration

Schema Engine is built with TypeScript. Recommended tsconfig.json:

{
	"compilerOptions": {
		"strict": true,
		"esModuleInterop": true,
		"skipLibCheck": true,
		"moduleResolution": "bundler",
		"jsx": "react-jsx"
	}
}

Peer Dependencies

The packages require the following peer dependencies:

  • zod >= 3.23
  • react >= 18 (for forms-react)
  • react-hook-form >= 7 (for forms-react)

What's Next?