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.
- File location: [
package.json](https://github.com/ZuodaoTech/everyone-can-use-english/blob/main/package.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
| 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,eslintwith 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)
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:
-
Media-heavy desktop app — Binary dependencies on
ffmpeg-staticandffprobe-staticenable offline audio processing. Theechogardenpackage provides speech recognition without cloud dependencies. -
Local-first data — The
sequelize+sqlite3+umzugstack implements migration-capable local storage, avoiding server requirements for user data. -
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 unifiedyarn installworkflow - 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.jsonfor workspace definition,enjoy/package.jsonfor Electron app,1000-hours/package.jsonfor 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:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →