explaingit

cuixueshe/earthworm

10,846TypeScriptAudience · generalComplexity · 3/5Setup · moderate

TLDR

Earthworm is an open-source English learning app where you practice by actively building sentences using conjunctions, helping you absorb grammar patterns rather than just memorizing vocabulary.

Mindmap

mindmap
  root((Earthworm))
    What it does
      Sentence construction
      Conjunction practice
      English learning
    Tech
      TypeScript
      PostgreSQL
      Redis
      Docker
    Testing
      Vitest unit tests
      Cypress end-to-end
      Jest backend
    Setup
      Docker services
      Logto auth
      Monorepo pnpm
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Run the app locally to practice building English sentences through conjunction-based exercises.

USE CASE 2

Contribute new course content or correct existing sentences by updating the database seed data.

USE CASE 3

Study English grammar patterns interactively instead of using passive flashcard memorization.

Tech stack

TypeScriptPostgreSQLRedisDockerVitestCypressJest

Getting it running

Difficulty · moderate Time to first run · 1h+

Requires Node.js 20+, pnpm 8+, PostgreSQL 14, Redis 5, and Docker, Windows users may hit C++ build tool errors during pnpm install.

In plain English

Earthworm is an English language learning application that teaches through sentence construction. The core idea is that you practice English by building sentences using conjunctions, which helps you internalize grammar patterns rather than just memorizing vocabulary. The project is open source and built with TypeScript on both the frontend and backend. Running Earthworm locally requires a few pieces of infrastructure: Node.js 20 or newer, pnpm 8 or newer, PostgreSQL 14, Redis 5, and Docker. Docker is used to run the database and cache services with a single command, which simplifies local setup. After starting those services, you initialize the database schema, upload the course data, then start the backend and frontend servers separately. The project uses Logto for user authentication, and the README includes initial credentials for the local admin panel. Course content is stored in the database and can be updated with a dedicated command when corrections are needed. The codebase is structured as a monorepo. The frontend uses Vitest for unit tests and Cypress for end-to-end tests. The backend uses Jest for both unit and integration testing. The README asks contributors to run all tests before committing. A FAQ section covers common setup problems: database connection failures (usually a missing or misconfigured .env file), pnpm installation errors on Windows related to missing C++ build tools, and Docker permission errors in WSL2 environments on Windows, with step-by-step fixes for each. There is also a brief frontend development guideline discouraging destructuring of Pinia stores and advising against placing UI logic inside composable functions.

Copy-paste prompts

Prompt 1
I want to run Earthworm locally. Walk me through starting PostgreSQL and Redis with Docker, initializing the database schema, uploading course data, and launching both the backend and frontend.
Prompt 2
What .env variables does Earthworm need, and which ones cause the most common database connection failures during local setup?
Prompt 3
How is the Earthworm monorepo structured, and which pnpm workspaces contain the frontend versus the backend?
Prompt 4
I'm getting a pnpm install error on Windows related to missing C++ build tools. What does the Earthworm FAQ say to do?
Prompt 5
How do I run the Cypress end-to-end tests for Earthworm's frontend, and what does the project require before committing?
Open on GitHub → Explain another repo

← cuixueshe on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.