# Everyone Can Use English Dependencies: Complete Breakdown of the Yarn Workspace Monorepo

> Explore the Yarn workspace monorepo for everyone-can-use-english. Understand runtime and development dependencies for enjoy, 1000-hours, and 1000h-portal workspaces.

- Repository: [Zuodao/everyone-can-use-english](https://github.com/ZuodaoTech/everyone-can-use-english)
- Tags: dependency-analysis
- Published: 2026-08-14

---

**The `everyone-can-use-english` repository uses a Yarn-managed monorepo with three workspaces—`enjoy`, `1000-hours`, and `1000h-portal`—each declaring separate runtime and development dependencies in their respective [`package.json`](https://github.com/ZuodaoTech/everyone-can-use-english/blob/main/package.json) files.**

This open-source project by ZuodaoTech is structured as a multi-package repository designed for English language learning. Understanding the `everyone-can-use-english` dependencies helps contributors and developers navigate the codebase, troubleshoot build issues, and extend functionality across its desktop application and documentation components.

## Root Workspace Structure

The root [`package.json`](https://github.com/ZuodaoTech/everyone-can-use-english/blob/main/package.json) serves purely as an orchestration layer. It defines the workspace boundaries but contains **no runtime dependencies**.

- **File location:** [[`package.json`](https://github.com/ZuodaoTech/everyone-can-use-english/blob/main/package.json)](https://github.com/ZuodaoTech/everyone-can-use-english/blob/main/package.json)

```json
{
  "workspaces": [
    "enjoy",
    "1000-hours",
    "1000h-portal"
  ]
}

```

This pattern follows standard Yarn workspace conventions, enabling unified dependency management while keeping each sub-project isolated.

## Enjoy Workspace Dependencies (Desktop Application)

The `enjoy` workspace powers the Electron-based desktop application. Its `everyone-can-use-english` dependencies split between media processing binaries, database ORM tools, and a comprehensive React/TypeScript dev stack.

### Runtime Dependencies in [`enjoy/package.json`](https://github.com/ZuodaoTech/everyone-can-use-english/blob/main/enjoy/package.json)

| Package | Version | Purpose |
|---------|---------|---------|
| `@andrkrn/ffprobe-static` | ^5.2.0 | Static ffprobe binary for media analysis |
| `@bugsnag/electron` | ^8.2.0 | Error monitoring for Electron |
| `@bugsnag/plugin-react` | ^8.2.0 | React integration for Bugsnag |
| `echogarden` | ^2.3.5 | Audio processing and speech recognition |
| `electron-settings` | ^4.0.4 | Persistent settings storage |
| `ffmpeg-static` | ^5.2.0 | Static FFmpeg binary for media conversion |
| `file-type` | ^19.6.0 | File type detection |
| `fluent-ffmpeg` | ^2.1.3 | Node.js FFmpeg wrapper |
| `fs-extra` | ^11.3.0 | Extended filesystem utilities |
| `reflect-metadata` | ^0.2.2 | Metadata reflection for decorators |
| `sequelize` | ^6.37.6 | SQL ORM for database operations |
| `sequelize-typescript` | ^2.1.6 | TypeScript decorators for Sequelize |
| `sqlite3` | ^5.1.7 | SQLite database driver |
| `umzug` | ^3.8.2 | Database migration framework |
| `unzipper` | ^0.12.3 | ZIP archive extraction |

These dependencies reveal the application's core architecture: local SQLite storage with Sequelize ORM, FFmpeg-based media pipeline for audio/video processing, and Bugsnag for production error tracking.

### Key Development Dependency Groups

The `enjoy` workspace's `devDependencies` span several functional areas:

- **Electron toolchain** — `@electron-forge/cli`, `@electron-forge/maker-deb`, `@electron-forge/maker-dmg`, `@electron-forge/maker-squirrel`, `@electron-forge/maker-zip`, `@electron-forge/plugin-auto-unpack-natives`, `@electron-forge/plugin-fuses`, `electron`, `electron-context-menu`, `electron-devtools-installer`

- **UI and styling** — `react` (^18.3.1), `react-dom`, `@radix-ui/*` primitives, `lucide-react`, `tailwindcss`, `framer-motion`, `sonner`, `@viewport-units`

- **Build and bundling** — `vite`, `@vitejs/plugin-react`, `vite-plugin-static-copy`, `electron-vite`, `tsc-alias`

- **AI and language processing** — `@langchain/community`, `@langchain/openai`, `openai`, `@mozilla/readability`, `@rails/actioncable`

- **Testing and quality** — `@playwright/test`, `eslint` with plugins, `typescript`, `zx`

## 1000-Hours Workspace Dependencies (Documentation Site)

The `1000-hours` workspace builds a **VitePress-powered documentation site** with enhanced Markdown rendering and diagram support.

### Runtime Dependencies

| Package | Version |
|---------|---------|
| `cheerio` | ^1.0.0 |
| `swiper` | ^11.2.5 |

### Development Dependencies

| Package | Version | Purpose |
|---------|---------|---------|
| `@cloudflare/kv-asset-handler` | ^0.3.4 | Cloudflare Workers asset handling |
| `markdown-it-footnote` | ^4.0.0 | Footnote syntax support |
| `markdown-it-ins` | ^4.0.0 | Insertion markup |
| `markdown-it-mark` | ^4.0.0 | Highlight/mark syntax |
| `markdown-it-mathjax3` | ^4.3.2 | MathJax v3 rendering |
| `markdown-it-sub` | ^2.0.0 | Subscript support |
| `markdown-it-sup` | ^2.0.0 | Superscript support |
| `mermaid` | ^11.5.0 | Diagram generation |
| `sass` | ^1.85.1 | CSS preprocessing |
| `vitepress` | ^1.6.3 | Static site generator |
| `vitepress-plugin-mermaid` | ^2.0.17 | Mermaid integration for VitePress |
| `vue` | ^3.5.13 | VitePress underlying framework |

- **Source file:** [[`1000-hours/package.json`](https://github.com/ZuodaoTech/everyone-can-use-english/blob/main/1000-hours/package.json)](https://github.com/ZuodaoTech/everyone-can-use-english/blob/main/1000-hours/package.json)

## 1000h-Portal Workspace

The `1000h-portal` workspace maintains its own [`package.json`](https://github.com/ZuodaoTech/everyone-can-use-english/blob/main/package.json) with project-specific dependencies. These support auxiliary portal functionality and are not required for the core English learning features.

## Installing and Managing Dependencies

### Install All Workspaces

```bash

# From repository root

yarn install

```

Yarn hoists common dependencies to the root `node_modules` while keeping workspace-specific packages isolated.

### Run Workspace Commands

```bash

# Start Electron app in development

yarn workspace enjoy dev

# Build desktop application

yarn workspace enjoy make

# Launch documentation site locally

yarn workspace 1000-hours dev

# Build static documentation

yarn workspace 1000-hours build

```

### Add Dependencies to Specific Workspaces

```bash

# Add runtime dependency to enjoy

yarn workspace enjoy add axios

# Add dev dependency to 1000-hours

yarn workspace 1000-hours add -D @types/node

# Add package to all workspaces (rarely needed)

yarn add -W some-tool

```

## Dependency Architecture Insights

The `everyone-can-use-english` dependencies reveal three distinct technical domains:

1. **Media-heavy desktop app** — Binary dependencies on `ffmpeg-static` and `ffprobe-static` enable offline audio processing. The `echogarden` package provides speech recognition without cloud dependencies.

2. **Local-first data** — The `sequelize` + `sqlite3` + `umzug` stack implements migration-capable local storage, avoiding server requirements for user data.

3. **Static documentation** — VitePress with custom Markdown-it plugins creates a deployable knowledge base with mathematical notation and diagrams.

## Summary

- **Monorepo structure:** Three Yarn workspaces (`enjoy`, `1000-hours`, `1000h-portal`) with unified `yarn install` workflow
- **Desktop application:** 14 runtime dependencies including FFmpeg, SQLite ORM, and audio processing tools; extensive Electron/React dev stack
- **Documentation site:** VitePress-based with Markdown extensions for math, diagrams, and interactive components
- **Key files:** Root [`package.json`](https://github.com/ZuodaoTech/everyone-can-use-english/blob/main/package.json) for workspace definition, [`enjoy/package.json`](https://github.com/ZuodaoTech/everyone-can-use-english/blob/main/enjoy/package.json) for Electron app, [`1000-hours/package.json`](https://github.com/ZuodaoTech/everyone-can-use-english/blob/main/1000-hours/package.json) for docs
- **Management:** Standard Yarn workspace commands with `yarn workspace <name>` prefix for targeted operations

## Frequently Asked Questions

### What package manager does everyone-can-use-english use?

The repository uses **Yarn** with workspaces enabled. The root [`package.json`](https://github.com/ZuodaoTech/everyone-can-use-english/blob/main/package.json) defines three workspaces, and all dependencies are installed via `yarn install` from the repository root. This enables deduplication of shared packages across the desktop app and documentation site.

### Why does the enjoy workspace need FFmpeg and ffprobe?

The `enjoy` workspace processes audio and video files for language learning exercises. `ffmpeg-static` and `@andrkrn/ffprobe-static` provide cross-platform media conversion and metadata extraction capabilities. The `echogarden` dependency builds on this foundation to offer speech recognition and alignment features without external API calls.

### How do I add a new dependency to only one workspace?

Use the `yarn workspace <workspace-name> add <package>` syntax. For example, `yarn workspace enjoy add lodash` adds `lodash` to the `enjoy` workspace's `dependencies`. Add the `-D` flag for development dependencies. Yarn automatically updates the corresponding [`package.json`](https://github.com/ZuodaoTech/everyone-can-use-english/blob/main/package.json) and manages the lockfile.