This Project welcomes contributions, suggestions, and feedback. All contributions, suggestions, and feedback you submitted are accepted under the Project's license. You represent that if you do not own copyright in the code that you have the authority to submit it under the Project's license. All feedback, suggestions, or contributions are not confidential.
The Project is licensed under the MIT License, an Open Source Initiative (OSI) approved open source license.
Participation in this Project is governed by the Code of Conduct. Decision making and the appeal process are described in GOVERNANCE.md.
The Project is a Spring Boot backend (Java 17) and a React/TypeScript frontend built with Vite.
Backend:
cd backend && ./mvnw spring-boot:run -Dspring-boot.run.profiles=simpleFrontend:
cd frontend && npm install && npm run devBoth together, or the full build:
invoke up # start backend and frontend
invoke build # build both (also: python tasks.py build)With Docker:
docker compose up --buildRun these before opening a pull request:
cd backend && ./mvnw test # backend test suite
cd backend && ./mvnw test -Dtest=ClassName#methodName # a single test
cd frontend && npm run lint # ESLint
cd frontend && npm run build # type-check (tsc -b) and production buildThe frontend has no automated test suite yet; npm run build runs the TypeScript compiler and is the type-safety gate. Contributions that add frontend tests are welcome.
- Open an issue first for anything larger than a bug fix, so the approach can be discussed before you invest time.
- Fork the repository and create a topic branch off
main. - Keep commits focused and write descriptive commit messages explaining why the change is needed.
- Make sure the checks above pass.
- Open a pull request describing the change, the motivation, and how you verified it. Link the related issue.
- Address review feedback by pushing additional commits to the same branch.
Contributions are accepted by consensus of the Maintainers as described in GOVERNANCE.md.
- Java — standard Java conventions and Spring Boot best practices, targeting Java 17. Follow the existing module structure under
de.greenstones.gsmr.msc.*. - Error handling — raise backend errors as
ApplicationException. - Schema definitions — follow the builder pattern shown in
ConfigTypeBuilder. - TypeScript/React — functional components with hooks, TypeScript interfaces for types, React Bootstrap for styling.
- Match the conventions of the surrounding code rather than introducing new ones.
Maintainers are added with the approval of the existing Maintainers, as described in GOVERNANCE.md. A Contributor may be nominated, or may self-nominate by opening an issue, once they have:
- A sustained track record of merged contributions. As a guideline, several non-trivial pull requests merged over at least three months, rather than a single large contribution.
- Demonstrated breadth. Familiarity with more than one area of the Project — for example both the backend configuration model and the frontend, or the AI agent integration and its supporting services.
- Shown good review judgment. Constructive participation in reviewing others' pull requests and in issue discussions.
- Committed to the Project's policies. Willingness to abide by the Code of Conduct and the governance documents, and to help with the ongoing maintenance work — triage, releases, and security fixes — not only feature development.
Existing Maintainers decide on the nomination by consensus. Accepted Maintainers add themselves to MAINTAINERS.md. Maintainers who are no longer active may be removed by the same process, and are welcome to return.
Based on GitHub's Minimum Viable Governance (MVG). Licensed under the CC-BY 4.0 License.