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

The 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) 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

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

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

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

<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:

  • ^ 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 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 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.

Have a question about this repo?

These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:

Share the following with your agent to get started:
curl -s "https://instagit.com/install.md"

Works with
Claude Codex Cursor VS Code OpenClaw Any MCP Client

Maintain an open-source project? Get it listed too →