mirror of
https://github.com/mauriceboe/TREK.git
synced 2026-10-19 05:26:47 +00:00
bb5c5dcfc1
Azerbaijani, Estonian, Slovak and Thai joined; the README and the wiki still counted 23.
3.4 KiB
3.4 KiB
Contributing
Thanks for your interest in contributing to TREK! Here are the guidelines for submitting pull requests.
Before You Start
- Ask in Discord first — Before writing any code, pitch your idea in the
#github-prchannel on our Discord server. We'll let you know if the PR is wanted and give direction. PRs without prior approval will be closed - Check existing issues — Look for open issues or discussions before starting work
- Target the
devbranch — All PRs must be opened againstdev, notmain. Exception: PRs that only modify files underwiki/may target any branch - One thing per PR — Keep PRs focused on a single change. Don't bundle unrelated fixes
Pull Request Guidelines
Code Quality
- Write clean, readable code that matches the existing style
- No unnecessary abstractions or over-engineering
- Don't add features beyond what was discussed in the issue
- Don't add comments unless the logic isn't self-evident
- Don't add error handling for scenarios that can't happen
What We Look For
- Does it solve the stated problem? — The PR should match the issue it addresses
- Is it minimal? — No extra refactoring, no "while I'm here" changes
- Does it break anything? — Breaking changes are not acceptable
- Is the code clean? — Consistent style, no debug logs, no dead code
Commit Messages
Use conventional commits:
fix(component): short description of what was fixed
feat(component): short description of new feature
PR Description
Follow the template provided by default (.github/PULL_REQUEST_TEMPLATE.md).
What Will Get Your PR Closed
- PRs that weren't discussed and approved in
#github-pron Discord first - PRs that add unnecessary complexity (e.g. a redo button when undo already exists)
- PRs with breaking changes
- PRs that change code style or formatting across unrelated files
- PRs that add dependencies without justification
Development Setup
See the Development Environment page for the full setup guide, including forking, remote configuration, branch conventions, and available scripts.
Tech Stack
| Layer | Technology |
|---|---|
| Frontend | React 19, TypeScript, Zustand 5, Leaflet, Tailwind CSS 3.4, Vite 8 (Rolldown) |
| Backend | NestJS 11 (Express 4 adapter), TypeScript, better-sqlite3, Zod (@trek/shared) |
| Real-time | WebSocket (ws) |
| Database | SQLite with WAL mode |
| Auth | JWT (HS256), bcrypt, TOTP MFA, OIDC |
| Maps | Leaflet + react-leaflet (default, OpenFreeMap vector basemap via maplibre-gl-leaflet), MapLibre GL, Mapbox GL, OSRM, Nominatim |
| i18n | 27 languages, EN canonical (locale directories live in shared/src/i18n/) |
Every translation key must exist in all 27 locales — the i18n Key Parity CI job fails on drift, so run npm run i18n:parity:strict --workspace=shared before pushing. Two directory names differ from the language they hold: Brazilian Portuguese is br, Greek is gr.