Read Frog is a browser extension for AI-assisted language learning. It provides in-page translation, video subtitle translation, text-to-speech, and a selection toolbar with custom AI actions. The extension supports over 30 language model and translation providers, configurable via a unified provider interface, with features like automatic page translation, hover translation, and AI-powered note suggestions. The architecture is built on the WXT framework (MV3) for cross-browser compatibility, with a background service worker orchestrating translation queues, caching, and state management. The frontend uses React 19, Jotai for state, TanStack Query for data fetching, and a custom Base UI component library. The codebase is highly modular with extensive test coverage, a versioned configuration migration system (100+ schema versions), and sophisticated DOM manipulation for in-place translation.
Typed Japanese is a TypeScript type-level library that models Japanese grammar as composable generic types, enabling the construction of grammatically valid Japanese sentences entirely within the type system. The core library defines interfaces for verbs (godan, ichidan, irregular), adjectives (i-adjectives, na-adjectives), copulas, particles, and sentence patterns, using template literal types and conditional types to encode conjugation rules. This allows developers to write Japanese sentences as type aliases that resolve to the exact Japanese string, with the TypeScript compiler acting as a grammar validator. The repository also includes an interactive playground web application (React + Vite + Monaco Editor) where users can explore the type system, write and analyze sentences, and follow a bilingual (English/Chinese) tutorial course spanning 47 chapters from elementary to advanced levels. A macOS app (TypedTranslate) provides a native interface for grammar annotation and chat, using a Bun bridge to integrate with the type system and LLMs (Codex/Claude). The project is hybrid in nature: while primarily an application/library, it includes a substantial data/research component in the form of curated evaluation datasets, an LLM annotation pipeline, and a rigorous iterative eval loop that measures conformance, reliability, and capability across grammar categories. The eval system produces quantifiable scoreboards and drives systematic improvements to the library's type definitions, prompt templates, and tutorial content.
This repository is the source code for 'Enjoy App', a cross-platform desktop application built with Electron, React, and TypeScript. Its primary function is English language learning, specifically focusing on pronunciation training, shadowing practice, and AI-assisted conversation. The application integrates local speech-to-text (Whisper/Echogarden) and text-to-speech engines alongside cloud-based LLMs (OpenAI, Azure) for chat and translation features. It employs a local-first architecture using SQLite (Sequelize ORM) for data persistence, with synchronization capabilities to a remote backend for backup and community features. The architecture follows a standard Electron pattern with a Main process handling native features, database operations, and media processing (FFmpeg, Echogarden), and a Renderer process serving the React UI. State management is handled via a combination of React Context Providers and custom Redux-like reducers. The codebase includes extensive AI command handlers for tasks like translation, summarization, and pronunciation assessment. While the application is feature-rich and well-structured, it carries significant coupling in media state management and relies heavily on external API contracts for core functionality.
AI Vocabulary Builder is a full-stack web application (FastAPI backend, Vue.js frontend) that uses LLM APIs (OpenAI, Gemini, Anthropic, DeepSeek) to help users build and learn English vocabulary. The backend exposes REST APIs for translating text, extracting rare words, managing a vocabulary store (TinyDB), generating stories and quizzes from learned words, and exporting to Anki/CSV. The frontend provides an intuitive single-page interface with build, learn (words list, quiz, story) and settings views. The architecture follows a modular monolith with clear separation of concerns: `builder` for vocabulary extraction, `learn` for quiz/story features, `system` for settings and model configuration, and `infras` for persistence and AI model abstraction. The codebase is well-structured with comprehensive unit tests, CI/CD via GitHub Actions, and rigorous linting/formatting (ruff, mypy).
TypeWords is a browser-based English vocabulary and article memorization application built with Nuxt 3 / Vue 3. It operates on a local-first architecture, storing user progress in IndexedDB, with an optional (now obsolete) Supabase cloud sync. The application is a monolith SPA but is well-modularized into a custom UI kit (app/base/), core business logic (app/core/), and page components (app/pages/). The core learning mechanic is typing-based practice, supporting multiple modes (follow-write, dictation, self-test, spelling) for both individual words and full articles. It integrates the FSRS (Free Spaced Repetition System) algorithm for intelligent review scheduling. Static dictionary data (CET-4, GRE, NCE articles) is loaded from bundled JSON files. The practice flow is managed by a sophisticated, serializable state machine (practice-flow-types/runtime), demonstrating strong architectural patterns. The codebase exhibits high craftsmanship in several isolated components, such as the global dialog stack, event bus, and versioned cache. These are genuinely reusable patterns. However, the project suffers from significant technical drift: it relies on experimental Vue Macros ($ref/$computed), has zero automated tests, contains dead code (obsolete Supabase sync), and bundles third-party libraries statically. The TypeScript configuration is lax (strict: false), increasing refactoring risk. TypeWords is a feature-rich, community-driven project (10k+ stars) that effectively solves a specific learning problem. Its architecture is a valuable study for developers building local-first, content-rich Vue applications. However, its lack of tests and reliance on experimental features make it a risky candidate for direct production reuse without significant hardening. It is best suited for educational analysis or as a foundation for a new project willing to address the technical debt.
EasySubs is a browser extension for language learning that enhances video watching on platforms like YouTube, Netflix, Coursera, and KinoPub. It provides interactive subtitles with translation capabilities, vocabulary export to learning services (Anki, LinguaLeo, Puzzle English), and UI customization features. The extension uses a content script to modify web pages, a background service worker for cross-tab communication, and a React-based popup for configuration. Built with React/TypeScript, Vite, and Effector for state management, it employs abstraction layers for video platforms, translation services, and learning integrations to handle the complexity of supporting multiple services with frequently changing UIs. The repository also includes a Next.js-based documentation site in the docs/ directory for marketing and user support.
This repository is a curated collection of Chinese vocabulary lists for standardized tests (HSK 3.0, BCT, YCT), enriched with pinyin, zhuyin, part-of-speech tags, frequency data, and English definitions. It includes Python and JavaScript scripts for data cleaning, format conversion (TXT/TSV/XLSX), POS tag correction using SUBTLEX frequency corpus, and pinyin tone conversion. The data is organized by test level and version (2021 and 2025 HSK standards), with multiple output formats suitable for flashcard apps (Anki, Pleco) and language learning tools. The repository is primarily a data asset with supporting ETL scripts, not a production application. It demonstrates solid data engineering practices for language resource curation, though it suffers from some file duplication and hardcoded paths.
This repository is a Japanese language learning application consisting of two interconnected parts: a Jekyll-based static website and an Ionic/Angular hybrid mobile app. Both platforms share core educational content (lessons, vocabulary, grammar) stored in JSON/YAML/CSV files and provide features like furigana rendering, verb conjugation, spaced repetition flashcards, audio pronunciation, and multi-language support. The web version uses Gulp for asset processing and TypeScript for interactive components, while the mobile app leverages Ionic Framework v2 for native-like functionality. The application focuses on delivering structured lessons from the 'ζ°ηδΈζ₯δΊ€ζ΅ζ εζ₯ζ¬θ―' textbook with JLPT N2 preparation goals.