How to contribute
Thank you for your interest in contributing. We welcome bug reports, code, translations, documentation fixes and accessibility testing.
Where to start
edtech4good has four main repositories. Each has its own CONTRIBUTING.md, CODE_OF_CONDUCT.md and SECURITY.md.
edtech-lms-api - Central NestJS API serving the admin UI and classroom devices
edtech-lms-rpi-api - Classroom NestJS API for offline sync and learner data collection
edtech-lms-ui - Angular admin UI and Playwright end-to-end test suites
edtech-expo - Expo React Native learner app for Android tablets
Ways to help
- Bug reports - Describe what you saw, what you expected and the steps to reproduce. Test on a real Android device or against a local stack.
- Khmer translation review - The product is taught in Khmer. If you are fluent, please review test data and learner-facing text.
- Accessibility testing - Test on real Android devices with TalkBack enabled. Tablet and large-screen devices are priority.
- Documentation fixes - Improvements to this site (submit PRs to edtech4good/docs).
- Code - See below for the workflow.
Before you open a pull request
Branch from main with a descriptive name.
Lint and format your code: run the following in each repository before opening a PR:
Repository Command edtech-lms-api npm run lint && npm run formatedtech-lms-rpi-api npm run lint && npm run formatedtech-lms-ui npm run lintedtech-expo yarn test:themesRun the relevant test suite. Each repository has end-to-end tests covering both UI and API behavior. See Testing and verification.
Include Khmer text in test data. The product is taught in Khmer. See Khmer text.
One PR per repository. If your change spans multiple repositories, use the same branch name across all of them and state the merge order in each PR description.
Read the git and PR workflow. There are a few gotchas with squash merges and stacked PRs. See Git and pull requests.
Reporting security issues
Use GitHub's private vulnerability reporting (Security tab on the repository). Do not open a public issue for a security problem. We aim to acknowledge reports within a week.
Licence
Contributions are accepted under AGPL-3.0-only for code and CC BY 4.0 for documentation. By submitting a contribution you agree it is licensed under these terms.
For code: sign your commits with git commit -s (Developer Certificate of Origin, https://developercertificate.org/).