# How to Install ZuodaoTech/everyone-can-use-english Locally: Complete Setup Guide

> Easily install ZuodaoTech/everyone-can-use-english locally with our step-by-step guide. Clone the repo, set up Node and Yarn, and start using your chosen component effortlessly.

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

---

**Clone the repository, install Node ≥ 20 and Yarn 4, run `yarn install` at the root, then start your desired component with `yarn enjoy:start`, `yarn docs:dev`, or `yarn portal:generate`.**

The *Everyone Can Use English* project by ZuodaoTech is a **Yarn 4 monorepo** containing three distinct workspaces: an Electron desktop app for AI-assisted English learning, a Markdown-driven documentation site, and a web portal. Installing it locally requires setting up modern JavaScript tooling and choosing which component to run. This guide walks through the complete installation process using commands and file references from the official source code.

## Prerequisites for Installing everyone-can-use-english

Before cloning the repository, verify your environment meets these requirements:

- **Node.js** version 20.0.0 or higher (check with `node -v`)
- **Yarn** version 4.6.0 or later (the repository uses Yarn 4 workspaces)

Install Yarn 4 globally if you haven't already:

```bash
npm install -g yarn@4

```

## Clone and Bootstrap the Repository

The repository uses **Yarn 4 workspaces** defined in [`package.json`](https://github.com/ZuodaoTech/everyone-can-use-english/blob/main/package.json) at the root, so a single installation command prepares all three workspaces simultaneously.

```bash

# Clone the repository

git clone https://github.com/ZuodaoTech/everyone-can-use-english.git
cd everyone-can-use-english

# Verify Node version

node -v   # Should output v20.x.x or higher

# Install dependencies for all workspaces

yarn install

```

This `yarn install` command reads the `workspaces` array in [`package.json`](https://github.com/ZuodaoTech/everyone-can-use-english/blob/main/package.json) and installs dependencies for `enjoy/`, `1000-hours/`, and `1000h-portal/` in one operation.

## Run the Desktop App (enjoy Workspace)

The **enjoy workspace** contains an Electron-based desktop application that provides AI-assisted English learning features.

```bash
yarn enjoy:start

```

This launches the Electron app, which opens a window pointing to `https://enjoy.bot` according to the implementation in [`enjoy/src/renderer/components/layouts/title-bar.tsx`](https://github.com/ZuodaoTech/everyone-can-use-english/blob/main/enjoy/src/renderer/components/layouts/title-bar.tsx). The app references the install URL `https://1000h.org/enjoy-app/install.html` for distribution.

For programmatic control from another Node script:

```javascript
const { execSync } = require('child_process');

// Run the Yarn script that starts the Enjoy Electron app
execSync('yarn enjoy:start', { stdio: 'inherit' });

```

## Run the Documentation Site (1000-hours Workspace)

The **1000-hours workspace** contains the "book" — Markdown-driven teaching materials rendered as a documentation site.

**Development server:**

```bash
yarn docs:dev

```

Serves the site locally, typically at `http://localhost:3000`.

**Production build:**

```bash
yarn docs:build

```

Generates static files for deployment.

Programmatic example using `child_process.spawn`:

```javascript
import { spawn } from 'child_process';

const dev = spawn('yarn', ['docs:dev'], { stdio: 'inherit' });
dev.on('close', (code) => console.log(`Docs dev server exited with code ${code}`));

```

## Generate the Web Portal (1000h-portal Workspace)

The **1000h-portal workspace** generates static assets for the 1000-hour project's web presence.

```bash
yarn portal:generate

```

Outputs built files to `1000h-portal/dist/` for static hosting.

**CI/CD integration example** ([`.github/workflows/build-portal.yml`](https://github.com/ZuodaoTech/everyone-can-use-english/blob/main/.github/workflows/build-portal.yml)):

```yaml
name: Build Portal
on: [push, pull_request]
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Set up Node
        uses: actions/setup-node@v4
        with:
          node-version: '>=20'
      - name: Install Yarn 4
        run: npm install -g yarn@4
      - name: Install dependencies
        run: yarn install
      - name: Generate portal
        run: yarn portal:generate

```

## Workspace Overview

| Workspace | Purpose | Start Command | Key File |
|-----------|---------|-------------|----------|
| `enjoy` | Electron desktop app | `yarn enjoy:start` | [`enjoy/README.md`](https://github.com/ZuodaoTech/everyone-can-use-english/blob/main/enjoy/README.md) |
| `1000-hours` | Documentation/book | `yarn docs:dev` / `yarn docs:build` | [`1000-hours/README.md`](https://github.com/ZuodaoTech/everyone-can-use-english/blob/main/1000-hours/README.md) |
| `1000h-portal` | Web portal generator | `yarn portal:generate` | [`1000h-portal/README.md`](https://github.com/ZuodaoTech/everyone-can-use-english/blob/main/1000h-portal/README.md) |

All workspace scripts are defined in the root [`package.json`](https://github.com/ZuodaoTech/everyone-can-use-english/blob/main/package.json) under the `"scripts"` section, as implemented in ZuodaoTech/everyone-can-use-english.

## Troubleshooting Common Installation Issues

**Yarn version conflicts:** If `yarn -v` shows a version below 4, run `npm install -g yarn@4` again and verify your PATH doesn't reference an older Yarn installation.

**Node version errors:** Use `nvm` or `fnm` to switch to Node 20+ if your system default is older.

**Workspace dependency issues:** The repository relies on Yarn 4's Plug'n'Zero or node_modules behavior. Delete `node_modules` and `.yarn/cache` only as a last resort, then re-run `yarn install`.

## Summary

- **Install Node ≥ 20 and Yarn 4** before beginning
- **Clone and run `yarn install`** once at the repository root to bootstrap all three workspaces
- **Choose your component:** `yarn enjoy:start` for the desktop app, `yarn docs:dev` for documentation development, or `yarn portal:generate` for the web portal
- **All scripts originate** from the root [`package.json`](https://github.com/ZuodaoTech/everyone-can-use-english/blob/main/package.json) and leverage Yarn 4's workspace features as defined in ZuodaoTech/everyone-can-use-english

## Frequently Asked Questions

### What is the minimum Node.js version for everyone-can-use-english?

Node.js 20.0.0 or higher is required. The CI workflows and [`package.json`](https://github.com/ZuodaoTech/everyone-can-use-english/blob/main/package.json) engines field both specify `>=20`, and some dependencies rely on Node 20 features for optimal performance.

### Can I install and run only one workspace?

Yes. While `yarn install` at the root installs dependencies for all workspaces, you can run only the workspace you need. Each workspace has its own directory with focused functionality, and the root [`package.json`](https://github.com/ZuodaoTech/everyone-can-use-english/blob/main/package.json) scripts provide convenient aliases like `yarn enjoy:start` that delegate to the appropriate workspace.

### Where does the Electron app load its content from?

The enjoy workspace loads `https://enjoy.bot` in its Electron window, as shown in [`enjoy/src/renderer/components/layouts/title-bar.tsx`](https://github.com/ZuodaoTech/everyone-can-use-english/blob/main/enjoy/src/renderer/components/layouts/title-bar.tsx). For offline use or development, you would need to modify the source or run a local instance of the web service.

### How do I update dependencies after pulling new changes?

Run `yarn install` again at the repository root. Yarn 4's workspace-aware resolution will update all locked dependencies across `enjoy/`, `1000-hours/`, and `1000h-portal/` based on the checked-in `yarn.lock` file.