Thanks for your interest in contributing to Language Navigator! We welcome contributions from the community to help improve our dataset and website.
- File issues for bugs, data corrections, and ideas. Include repro steps, links to the affected language/locale, and screenshots when relevant.
- Improve data quality by editing TSVs in
public/data/(small fixes) or extending loaders insrc/features/data/load/(bigger changes). - Add or refine UI components, reports, and other widgets.
- Install recent Node.js + npm packages (the project is built with Vite and TypeScript).
- Clone the repo.
npm installnpm run devand open the printed localhost URL (defaults to5173).- Run checks while you are developing and before sending a PR:
npm run build(type-checks and builds)npm run lint:fix(auto-fixes any formatting issues)npm run test
- Branch from
mainand keep PRs focused; include a short summary of scope and motivation. - If you change UI behavior, add before/after screenshots or a brief clip.
- Update docs when changing behavior, data formats, or commands.
- TypeScript + React; prefer functional components and hooks.
- Linting/formatting: follow the repo Prettier rules (single quotes, trailing commas, 100 char width). It should auto-format on save in VSCode, otherwise run
npm run lintto fix issues. - When importing classes, prefer module aliases (
@entities/...,@features/..., etc.) and follow the feature-sliced layout described in /src/fileOrganization.md. - Components live with their domain: entities in
src/entities/, shared UI insrc/shared/ui/, widgets insrc/widgets/, pages insrc/pages/. - Keep functions small (<40 lines) and files manageable (<200 lines). Split complex logic into smaller helpers in the same folder.
- Name functions and variables descriptively; avoid abbreviations. For example
getLanguageDisplayNames()is better thangetLang().
There's a lot of data shown here but there always could be more. The main way to add or update data is to go to the Tab-separated files directly. They are all in the public/data directory.
If you want to add entries or update values, you can just edit the existing TSVs.
However, if you want to add a lot more data or add contested data it may be better to make new TSVs and then update the data loads in src/features/data/load/ and connectors/computations in src/features/data/connect/ and src/features/data/compute/.
Always cite your sources and avoid using proprietary data without permission.
A checklist is provided automatically when you create a pull request with PULL_REQUEST_TEMPLATE.md.