# What Dependencies Are Managed by the package.json File in Open-SEO?

> Discover the 36 production and 29 development dependencies managed by Open-SEO's package.json file. Understand your project's essential build and runtime tools.

- Repository: [Every App/open-seo](https://github.com/every-app/open-seo)
- Tags: internals
- Published: 2026-08-08

---

**The [`package.json`](https://github.com/every-app/open-seo/blob/main/package.json) file in the every-app/open-seo repository manages 36 runtime dependencies for production functionality and 29 development dependencies for build tooling, testing, and local development.**

This Node.js project manifest serves as the single source of truth for the package manager (pnpm), defining every library required to run the Open-SEO platform—from AI integrations and Cloudflare Workers to React 19 frontend components. All versions are pinned with caret ranges or exact versions to ensure reproducible installs while allowing non-breaking upgrades.

---

## Runtime Dependencies in open-seo package.json

The **`dependencies`** section (lines 75–117 in [`package.json`](https://github.com/every-app/open-seo/blob/main/package.json)) powers the application's core functionality across three domains: server-side data processing, AI model orchestration, and frontend user interface.

### AI and Model Context Dependencies

Open-SEO integrates multiple AI providers through a unified abstraction layer:

- **`ai`** (^6.0.199) — Core AI utilities for streaming responses and structured outputs
- **`@ai-sdk/react`** (^3.0.211) — React hooks for AI model integrations
- **`@openrouter/ai-sdk-provider`** (^2.9.0) — OpenRouter AI provider adapter
- **`@modelcontextprotocol/sdk`** (1.29.0) — Model-context protocol client for MCP-compatible services
- **`@cloudflare/ai-chat`** (^0.8.4) — Cloudflare AI chat API wrapper
- **`@cloudflare/think`** (0.12.1) — Server-side utilities for Cloudflare Workers AI

The **`agents`** package (0.17.3) provides the agent framework that orchestrates multi-step AI workflows in the application.

### Data and API Integration Dependencies

Three categories of data handling libraries enable SEO research and storage:

**External API Clients:**
- **`dataforseo-client`** (^2.0.19) — Official client for DataForSEO API (SERP data, keyword research)
- **`cloudflare`** (^2.0.19) — Cloudflare API client for infrastructure management

**Data Parsing and Validation:**
- **`cheerio`** (^1.2.0) — Server-side HTML parsing for web scraping
- **`fast-xml-parser`** (^5.4.1) — XML parsing for sitemap processing
- **`papaparse`** (^5.5.3) — CSV parsing for data exports
- **`robots-parser`** (^3.0.1) — Robots.txt parsing for crawler rules
- **`tldts`** (^7.0.25) — Top-level domain parsing
- **`zod`** (^4.1.12) — Runtime schema validation with TypeScript inference

**Database and ORM:**
- **`drizzle-orm`** (^0.45.2) — Type-safe ORM supporting both SQLite (Cloudflare D1) and PostgreSQL
- **`postgres`** (^3.4.9) — Native PostgreSQL driver

### Frontend UI Dependencies

The React 19-based interface relies on this component stack:

- **`react`** / **`react-dom`** (^19.0.0) — UI library with concurrent features
- **`@tanstack/react-query`** (^5.101.2) — Server state management with caching
- **`@tanstack/react-router`** (^8.21.3) — Type-safe routing with preload support
- **`@tanstack/react-table`** (^8.21.2) — Headless table utilities for data grids
- **`tailwindcss`** (^4.1.16) — Utility-first CSS framework
- **`daisyui`** (^5.5.5) — Component library extending Tailwind with pre-built UI patterns
- **`lucide-react`** (^0.542.0) — Icon set
- **`recharts`** (^3.7.0) — Charting library for analytics visualizations
- **`react-markdown`** (^10.1.0) / **`remark-gfm`** (^4.0.1) — Markdown rendering with GitHub-flavored extensions
- **`sonner`** (^2.0.7) — Toast notification system

### Authentication and Analytics

- **`better-auth`** (^1.6.22) — Authentication framework with multiple provider support
- **`jose`** (^6.0.12) — JWT signing and verification
- **`@cloudflare/workers-oauth-provider`** (^0.4.0) — OAuth 2.0 provider implementation for Workers
- **`posthog-js`** (^1.395.0) / **`posthog-node`** (^5.38.6) — Product analytics and event tracking

### Platform SDK

- **`@every-app/sdk`** (^0.1.14) — Core SDK for Every-App platform services
- **`remeda`** (^2.33.6) — Functional utility library (Ramda alternative with better TypeScript)
- **`autumn-js`** (^1.2.33) — General utility functions

---

## Development Dependencies in open-seo package.json

The **`devDependencies`** section (lines 118–148) configures the build pipeline, testing infrastructure, and developer tooling.

### Build and Bundling Tools

- **`vite`** (^7.3.6) — Next-generation frontend build tool
- **`@cloudflare/vite-plugin`** (^1.42.3) — Vite plugin for Cloudflare Workers builds (replaces Wrangler bundler for dev)
- **`@vitejs/plugin-react`** (^4.6.0) — Fast React HMR and JSX transformation
- **`@tailwindcss/vite`** (^4.1.11) — Tailwind CSS integration for Vite
- **`vite-tsconfig-paths`** (^5.1.4) — TypeScript path alias resolution in Vite

### TypeScript and Execution

- **`typescript`** (^5.9.3) — TypeScript compiler
- **`tsx`** (^4.22.4) — TypeScript execution engine for scripts and CLI tools
- **`@types/*`** — Type definitions for Node.js, React, PapaParse

### Database and ORM Tooling

- **`drizzle-kit`** (^0.31.10) — Migration CLI and schema management for Drizzle ORM
- **`@libsql/client`** (^0.15.15) — SQLite client for local D1 emulation

### Testing Framework

- **`vitest`** (^3.2.6) — Unit testing framework with Vite integration
- **`@playwright/test`** (^1.59.1) — End-to-end browser testing

### Code Quality and Linting

- **`oxlint`** (^1.50.0) / **`oxlint-tsgolint`** (^0.15.0) — High-performance JavaScript/TypeScript linter (Rust-based)
- **`prettier`** (^3.6.2) — Code formatting
- **`knip`** (^5.88.1) — Unused dependency and code detection

### Deployment and Infrastructure

- **`wrangler`** (^4.105.0) — Cloudflare Workers CLI for deployment and secrets management
- **`alchemy`** (2.0.0-beta.61) — Infrastructure-as-code orchestration for Cloudflare
- **`@distilled.cloud/cloudflare`** (0.28.2) — Deployment helpers from Distilled Cloud

### Development Utilities

- **`@tanstack/react-query-devtools`** (^0.10.8) — Query inspection and debugging
- **`@tanstack/router-devtools`** (^0.6.1) — Route visualization for React Router
- **`portless`** (^0.5.2) — Process manager for Vite dev server
- **`chalk`** (^5.6.2) — Terminal string styling for CLI output

### Effect-TS Ecosystem

- **`effect`** (4.0.0-beta.93) — Functional effect system for TypeScript
- **`@effect/platform-node`** (4.0.0-beta.93) — Node.js platform modules for Effect

---

## How Key Dependencies Are Used in Open-SEO

### TanStack Query for Data Fetching

```typescript
import { useQuery } from '@tanstack/react-query';

function useProjects() {
  return useQuery({
    queryKey: ['projects'],
    queryFn: async () => {
      const res = await fetch('/api/projects');
      return res.json();
    },
  });
}

```

This pattern provides automatic caching, background refetching, and stale-while-revalidate behavior for all API data.

### DataForSEO Client Integration

```typescript
import { DataForSeoClient } from 'dataforseo-client';

const client = new DataForSeoClient({
  apiKey: process.env.DATAFORSEO_API_KEY!,
});

// Fetch SERP data for keyword research
await client.getSerp({ keyword: 'open source seo tools' });

```

The official client handles authentication, rate limiting, and response parsing for the DataForSEO API.

### Drizzle ORM Schema Definition

```typescript
import { pgTable, serial, text, timestamp } from 'drizzle-orm/pg-core';

export const projects = pgTable('projects', {
  id: serial('id').primaryKey(),
  name: text('name').notNull(),
  domain: text('domain').notNull(),
  createdAt: timestamp('created_at').defaultNow(),
});

```

The same schema works with both SQLite (Cloudflare D1) and PostgreSQL through Drizzle's database-agnostic design.

### DaisyUI Component Classes

```tsx
<button className="btn btn-primary gap-2">
  <PlusIcon className="w-4 h-4" />
  Create Project
</button>

```

DaisyUI extends Tailwind with semantic component classes like `btn`, `card`, `modal`, and `alert`.

---

## Dependency Version Strategy in package.json

Open-SEO uses a **mixed pinning strategy** visible throughout [`package.json`](https://github.com/every-app/open-seo/blob/main/package.json):

- **`^` caret ranges** — For stable dependencies where minor updates are trusted (most common)
- **Exact versions** — For packages where any change carries risk (`@cloudflare/think` 0.12.1, `agents` 0.17.3, `@modelcontextprotocol/sdk` 1.29.0)
- **Beta versions** — For cutting-edge dependencies in the Effect-TS ecosystem

This approach balances reproducibility with the ability to receive security patches and non-breaking features.

---

## Summary

- The **[`package.json`](https://github.com/every-app/open-seo/blob/main/package.json)** file in every-app/open-seo defines **65 total dependencies** across runtime and development categories
- **Runtime dependencies** (36) power AI integration, Cloudflare Workers, database access, and React 19 frontend
- **Development dependencies** (29) configure Vite, TypeScript, testing with Vitest/Playwright, and deployment via Wrangler
- **Key architectural pillars**: TanStack Query/Router for state and routing, Drizzle ORM for data, DataForSEO client for SEO research, and Cloudflare-native packages for edge deployment
- **Version pinning** uses caret ranges for flexibility with exact pins for critical or unstable packages

---

## Frequently Asked Questions

### What package manager does Open-SEO use?

Open-SEO uses **pnpm** as its package manager. While [`package.json`](https://github.com/every-app/open-seo/blob/main/package.json) is compatible with npm and Yarn, the repository's lock file and CI configuration are designed for pnpm's performance and disk space efficiency.

### Why are some dependencies pinned to exact versions instead of using caret ranges?

Exact versions (`0.12.1` instead of `^0.12.1`) are used for packages where **any version change carries integration risk**. In Open-SEO, this applies to Cloudflare-internal packages (`@cloudflare/think`), the Model Context Protocol SDK, and the `agents` framework—these move quickly and may introduce breaking changes in minor versions.

### How does Open-SEO handle database compatibility between local development and production?

The **`drizzle-orm`** dependency supports both SQLite and PostgreSQL dialects. Local development uses **`@libsql/client`** with SQLite files or Cloudflare D1, while production can target PostgreSQL via the **`postgres`** driver—all using the same schema definitions in `src/db/`.

### What testing tools are configured in the package.json devDependencies?

Open-SEO configures **Vitest** (^3.2.6) for unit and integration testing with Vite-native integration, and **Playwright** (^1.59.1) for end-to-end browser testing. This dual-layer approach covers component logic and full user workflows.