# RURussian RURussian is a Next.js-based Russian learning product with a public dictionary/search experience, sentence translation, a logged-in RUSVIBE workspace, blog publishing, subscription management, and OpenClaw/MCP integration. The frontend uses local Next.js `/api/` routes, and those routes call Python modules in this repository for language-processing tasks. ## Public Pages - https://rurussian.com/ - Public landing page for Russian word and phrase lookup plus sentence translation. The home page supports search suggestions, morphology-style dictionary output, aspect-pair comparison, synonym/antonym displays, a daily Russian quote card, sentence save flows into RUSVIBE, and links to blogs, pricing, login, and member tools. - https://rurussian.com/about - Public company and product page with the founder story, the RURussian/RUSVIBE learning philosophy, the technical outline, privacy/terms text, and company contact/address details. - https://rurussian.com/blogs - Public blog index that aggregates all currently resolved blog entries. - https://rurussian.com/blogs/[slug] - Public blog detail route for each configured post. Slugs are generated dynamically from local markdown content when present and from configured Medium/Substack sources. - https://rurussian.com/docs/api - Public developer documentation page describing the documented REST-style API concepts and example endpoints. - https://rurussian.com/openclaw-integration - Public OpenClaw integration guide covering `rurussian-mcp`, Bot API Key setup, OpenClaw config, MCP tool usage, and troubleshooting. - https://rurussian.com/pricing - Public subscription pricing page for RURussian plans. - https://rurussian.com/login - Public Google sign-in/sign-up page. It states that new users receive 24 hours of full access after sign-up, while saved lists/history remain available later and AI-generation features require an active subscription. ## Member Areas - https://rurussian.com/rusvibe - Logged-in learner workspace for saved words, saved sentences, audio playback, editable translations, manual sentence notes, GPT-5 auto-analysis, word detail jumps, and Zakuska generation. Unauthenticated users are redirected away. - https://rurussian.com/profile - Logged-in profile page for subscription status, access windows, pricing actions, and Bot API Key management including load/copy/rotate/revoke plus an OpenClaw config snippet. This route is disallowed in `robots.txt`. ## Blog Sources The code supports local markdown blog content under `frontend/public/blogs` when present, plus external feeds declared in repo-level source files. Current external inputs come from: - `medium_blogs.txt` with 2 Medium URLs - `substack_blogs.txt` with 2 Substack URLs Blog index and blog detail pages are generated from those configured sources rather than from a hardcoded slug list. ## Product Capabilities - Russian dictionary and morphology-oriented lookup, including definitions, aspect pairs, synonyms, antonyms, and related lexical detail when available. - Automatic sentence-vs-word handling on the home page: dictionary lookup for words/phrases and translation flows for full sentences. - Search suggestions, compare-word flows, daily quote save actions, and signed-in save flows into RUSVIBE. - RUSVIBE word collection views, sentence collection management, editable translations, manual analysis, GPT-5 auto-analysis, and playback tools. - Zakuska study generation inside RUSVIBE, including the product messaging around Random Mode, Custom Mode, and Paste Mode. - OpenClaw and MCP support through the public integration guide plus Bot API Key management in the member profile area. ## Repo Status Note The app does not rely on a separate standalone backend web service in normal operation. The frontend is a Next.js app, and its local API routes call Python code in this repository. ## API Note The Next.js app exposes `/api/` routes for frontend interactions, authentication, learner actions, profile/subscription flows, and MCP-related operations. These endpoints mainly support the application itself rather than acting as a fully open anonymous public API.