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

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 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 serves purely as an orchestration layer. It defines the workspace boundaries but contains no runtime dependencies.

{
  "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

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

1000h-Portal Workspace

The 1000h-portal workspace maintains its own 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


# From repository root

yarn install

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

Run Workspace Commands


# 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


# 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 for workspace definition, enjoy/package.json for Electron app, 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 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 and manages the lockfile.

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 →