Monorepo for Languages Learner — a language-learning web application built with React, Vite, and Supabase.
| Resource | URL |
|---|---|
| Live app | languages-learner.chernigin.tech |
| Storybook | Deployed Storybook |
| Source code | github.com/languages-learner/web-react |
Note: If you publish under a different GitHub owner or repository name, update links in this file, root
package.json(repository/bugs), and badges above.
This repository is shared as a reference implementation: it does not include database migrations or a turnkey path to reproduce production data. Use the links above for the running product and UI docs.
- Runtime / UI: React 19, React Router 7, Tailwind CSS 4, HeroUI
- Build / SSR: Vite 6, Express, TypeScript
- Data: Supabase, TanStack Query, Gravity UI DataSource
- i18n: react-intl, FormatJS
- Tooling: Nx, pnpm, ESLint, Prettier, Stylelint, Vitest, Playwright, Storybook 9
- Custom SSR with Express + Vite — In development, Vite runs in
middlewareModeand the server loads the SSR bundle viassrLoadModule. In production, separate client and server builds (vite build+vite build --ssr) feed a shared HTML shell; responses merge<!--app-head-->,<!--app-html-->, theme class on<html>, and awindow.CLIENTpayload from serverlocals. - Bundle size tracking in CI —
rollup-plugin-bundle-statscompares builds against a baseline (including Docker-based baseline workflows and helper scripts underapps/web/scripts/bundle-stats). - Dependency and graph hygiene — Circular imports in UI code are checked with Madge; unused files and dependencies are tracked with Knip (
knip.config.ts), including workspace-aware entries and asset-compiler stubs for static imports. - Data layer — Gravity UI DataSource (
DataManagerContext, shareddataManagerfrom@languages-learner/data-source) works alongside TanStack Query; @normy/react-query wraps the client withQueryNormalizerProviderfor normalized cache updates. - UI docs and component tests — A dedicated Storybook 9 app hosts shared UI; Playwright component testing targets
@languages-learner/uikit, with workspace orchestration for running/updating tests inside Docker (component-tests:*at the repo root). - Monorepo discipline — pnpm workspaces, Nx (including affected checks in PR workflows), and syncpack to keep dependency versions consistent across packages.
- Supporting tooling — Workspace script to sanitize HAR files for fixtures; Stylelint for CSS/SCSS; PRs enforce semantic / conventional titles (
check-pr-title.yml).
| Path | Purpose |
|---|---|
apps/web |
Main SSR web application |
apps/storybook |
Storybook instance for UI documentation |
apps/web-e2e |
End-to-end / integration test package |
packages/* |
Shared libraries (API client, UI kit, utilities, etc.) |
Each app and package includes its own README with package-specific scripts and context.
See CONTRIBUTING.md for maintainers and contributors working in this repo (workspace checks, PR conventions). That is separate from running a full production-like stack locally.
See SECURITY.md.
MIT.