Open-SEO Package.json Dependencies: Complete Runtime and DevDependency Guide

The open-seo package.json manages 43 runtime dependencies and 26 development dependencies across AI integration, Cloudflare Workers, React 19 frontend, and Drizzle ORM data layers.

This guide breaks down every dependency listed in the root package.json of the every-app/open-seo repository, explaining what each library does and how the project uses it. Whether you're auditing the tech stack, troubleshooting installs, or planning contributions, this reference covers the dependencies defined at lines 75–148.


Runtime Dependencies in Open-SEO

The dependencies object (lines 75–117) powers the application's production behavior. These packages ship with every deployment.

AI and Model Context Protocol

Package Version Purpose
ai ^6.0.199 Core AI utilities from Vercel
@ai-sdk/react ^3.0.211 React hooks for streaming AI responses
@openrouter/ai-sdk-provider ^2.9.0 OpenRouter integration for the AI SDK
@cloudflare/ai-chat ^0.8.4 Cloudflare Workers AI chat API wrapper
@cloudflare/think 0.12.1 Server-side Cloudflare utilities
@modelcontextprotocol/sdk 1.29.0 Model Context Protocol client implementation
agents 0.17.3 Agent framework for orchestrating AI workflows

The AI stack centers on the Vercel AI SDK with Cloudflare Workers as the runtime. The @cloudflare/think package provides server-side primitives, while agents enables multi-step AI workflows.

Cloudflare and Edge Infrastructure

Package Version Purpose
cloudflare ^5.2.0 Official Cloudflare API client
@cloudflare/workers-oauth-provider ^0.4.0 OAuth provider implementation for Workers
@every-app/sdk ^1.14 Core SDK for Every-App platform services

These dependencies lock the application to the Cloudflare ecosystem. The cloudflare package manages API calls, while @cloudflare/workers-oauth-provider handles authentication flows at the edge.

Data and ORM Layer

Package Version Purpose
drizzle-orm ^0.45.2 Type-safe ORM supporting SQLite and PostgreSQL
postgres ^3.4.9 Native PostgreSQL driver
dataforseo-client ^2.0.19 Official client for DataForSEO API
papaparse ^5.5.3 CSV parsing library
fast-xml-parser ^5.4.1 XML parsing for SEO data feeds
robots-parser ^3.0.1 Robots.txt parsing
tldts ^7.0.25 Top-level domain extraction

Drizzle ORM serves as the primary data access layer. The project uses the same schema definitions across SQLite (Cloudflare D1) and PostgreSQL adapters. SEO-specific parsing relies on robots-parser, tldts, and fast-xml-parser for technical SEO analysis.

React 19 Frontend Stack

Package Version Purpose
react / react-dom ^19.0.0 UI library (React 19)
@tanstack/react-query ^5.101.2 Server state management
@tanstack/react-router ^8.21.3 Type-safe routing
@tanstack/react-table ^8.21.3 Headless table components
@tanstack/react-start ^8.21.3 Full-stack React framework

The frontend runs React 19 with TanStack's complete ecosystem. react-start provides the framework layer, while react-query handles caching and synchronization.

UI Components and Styling

Package Version Purpose
tailwindcss ^4.1.16 Utility-first CSS framework
daisyui ^5.5.5 Component library built on Tailwind
lucide-react ^0.542.0 Icon library
recharts ^3.7.0 Data visualization
sonner ^2.0.7 Toast notifications
react-markdown ^10.1.0 Markdown rendering
remark-gfm ^4.0.1 GitHub-Flavored Markdown support

DaisyUI extends Tailwind with pre-built component classes. Markdown rendering supports AI-generated content and documentation.

Authentication and Security

Package Version Purpose
better-auth ^1.6.22 Authentication primitives
jose ^6.0.12 JWT signing and verification

Analytics and Utilities

Package Version Purpose
posthog-js / posthog-node ^1.395.0 / ^5.38.6 Product analytics
remeda ^2.33.6 Functional programming utilities
autumn-js ^1.2.33 Utility library
cheerio ^1.2.0 Server-side HTML parsing (jQuery-like)
zod ^4.1.12 Schema validation

Zod validates all external data at runtime, from API responses to user inputs.


Development Dependencies in Open-SEO

The devDependencies object (lines 118–148) contains tools for building, testing, and maintaining the codebase. These don't ship to production.

Build and Bundling Tools

Package Version Purpose
vite ^7.3.6 Build tool and dev server
@cloudflare/vite-plugin ^1.42.3 Cloudflare Workers integration for Vite
@tailwindcss/vite ^4.1.11 Tailwind CSS processing in Vite
@vitejs/plugin-react ^4.6.0 React Fast Refresh support
vite-tsconfig-paths ^5.1.4 TypeScript path alias resolution

Vite serves as the primary build tool. The @cloudflare/vite-plugin enables local Workers development with HMR.

TypeScript and Type Definitions

Package Version Purpose
typescript ^5.9.3 TypeScript compiler
tsx ^4.22.4 TypeScript execution without compilation
@types/node / @types/react / @types/react-dom / @types/papaparse ^22–^19 Type definitions

Database and Deployment

Package Version Purpose
drizzle-kit ^0.31.10 Database migrations and schema management
@libsql/client ^0.15.15 SQLite client for Cloudflare D1 development
wrangler ^4.105.0 Cloudflare Workers CLI
alchemy 2.0.0-beta.61 Infrastructure-as-code deployment
@distilled.cloud/cloudflare 0.28.2 Cloudflare deployment helpers

Drizzle Kit generates and runs migrations. Wrangler manages local Workers simulation and production deployment.

Testing Framework

Package Version Purpose
vitest ^3.2.6 Unit testing framework
@playwright/test ^1.59.1 End-to-end browser testing

The project uses Vitest for fast unit tests and Playwright for full browser automation.

Code Quality and Linting

Package Version Purpose
oxlint / oxlint-tsgolint ^1.50.0 / ^0.15.0 High-performance JavaScript/TypeScript linter
knip ^5.88.1 Detect unused code and dependencies
prettier ^3.6.2 Code formatting

Oxlint replaces ESLint for faster linting. Knip identifies dead code before it ships.

TanStack Development Tools

Package Version Purpose
@tanstack/react-query-devtools ^0.10.8 Query inspection and debugging
@tanstack/devtools-vite ^6.1 Vite plugin for TanStack devtools

Effect-TS Ecosystem

Package Version Purpose
effect 4.0.0-beta.93 Functional effect system
@effect/platform-node 4.0.0-beta.93 Node.js platform layer for Effect

Effect-TS provides typed error handling and concurrency primitives for complex server-side operations.

Utilities

Package Version Purpose
chalk ^5.6.2 Terminal string styling
portless ^5.2 Process manager for Vite dev server

Working with Key Open-SEO Dependencies

Query Data with TanStack React Query

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

function useSeoProjects() {
  return useQuery({
    queryKey: ['projects'],
    queryFn: async () => {
      const res = await fetch('/api/projects');
      if (!res.ok) throw new Error('Failed to fetch');
      return res.json();
    },
  });
}

This pattern appears throughout src/client/tanstack-db/, providing cached server state with automatic background updates.

Call DataForSEO API

import { DataForSeoClient } from 'dataforseo-client';

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

const serpResults = await client.serpTask.postTask({
  data: [{ keyword: 'open source seo tools', location_code: 2840 }],
});

The dataforseo-client dependency wraps the DataForSEO REST API with typed methods.

Define Database Schema with Drizzle ORM

// src/db/schema.ts
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(),
});

Drizzle Kit (drizzle-kit generate) produces migration files from these schema definitions.

Render Markdown with React

import ReactMarkdown from 'react-markdown';
import remarkGfm from 'remark-gfm';

function AiResponse({ content }: { content: string }) {
  return (
    <ReactMarkdown remarkPlugins={[remarkGfm]}>
      {content}
    </ReactMarkdown>
  );
}

react-markdown with remark-gfm renders AI-generated content with tables and strikethrough support.


Summary

  • 43 runtime dependencies power production: React 19, TanStack suite, Drizzle ORM, Cloudflare Workers SDK, and AI SDK integration
  • 26 devDependencies handle building, testing, and code quality: Vite, Vitest, Playwright, Oxlint, and Drizzle Kit
  • AI stack combines Vercel's AI SDK with Cloudflare's edge infrastructure via @cloudflare/ai-chat and agents
  • Data layer uses Drizzle ORM with dual SQLite/PostgreSQL support, accessed through drizzle-orm and postgres
  • SEO-specific tools include dataforseo-client, robots-parser, tldts, fast-xml-parser, and cheerio
  • All versions pinned with caret (^) or exact specs for reproducible installs

Frequently Asked Questions

What package manager does open-seo use?

The project uses pnpm as its package manager. While the package.json itself doesn't specify the runner, the repository structure and lockfile behavior indicate pnpm usage. Install dependencies with pnpm install after cloning.

Can I use npm or yarn instead of pnpm?

Technically possible, but not recommended. The pinned versions in package.json work across package managers, but you may encounter resolution differences with peer dependencies—particularly around React 19 and the TanStack ecosystem. Stick with pnpm for consistent behavior.

Why are some dependencies pinned to exact versions while others use caret ranges?

Exact versions (like @cloudflare/think@0.12.1) indicate packages where even minor updates caused issues or where the API is unstable. Caret ranges (^) allow patch and minor updates that follow semantic versioning. The mix reflects practical stability requirements versus maintenance ease.

How do I update dependencies safely in open-seo?

Run pnpm outdated to identify available updates. For Drizzle ORM and Cloudflare packages, review their changelogs carefully—these touch critical infrastructure. Use knip (already in devDependencies) to detect unused packages before removing anything. Always run pnpm test and pnpm build before committing updates.

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 →