Contribution guidelines
Thanks for taking a look at how to contribute to Stirling PDFs open-source codebase!
Development Setup
Prerequisites
- Java 25 (JDK 25)
- Node.js 18+
- Docker (for testing)
- Gradle (included in repository)
Getting Started
-
Clone the repository
git clone https://github.com/Stirling-Tools/Stirling-PDF.gitcd Stirling-PDF -
Install dependencies
The repository uses Task as a unified command runner. Install the
taskCLI, then from the repository root:task install -
Backend Development
# Build and run the Spring Boot backendtask backend:dev# Backend runs on localhost:8080 -
Frontend Development (V2.0+)
# Start the Vite dev server (run from the repository root)task frontend:dev# Frontend runs on localhost:5173, proxies API calls to backend (localhost:8080)To run the backend and frontend together, use
task devfrom the repository root.
Contributing to Code
Backend Contributions
- See our CONTRIBUTING guidelines
- Backend uses Spring Boot + Java
- Code formatting: Run
./gradlew spotlessApplybefore committing
Frontend Contributions (V2.0+)
- Frontend is a React + TypeScript application
- Uses Vite for build tooling
- UI components: Mantine UI + TailwindCSS
- Adding new tools: See ADDING_TOOLS.md
- Tool architecture: Uses
useToolOperationhook pattern
Translation Contributions
Translations (TOML)
Translation files are located at frontend/editor/public/locales/<lang>/translation.toml
- CRITICAL: Only edit
en-US/translation.toml.en-USis the source/primary locale and the i18n fallback (fallbackLng: "en-US"); other languages are managed separately. - Each locale is a single TOML file (
translation.toml), keyed by feature/tool. - For counts, use ICU-style plural suffixes on the key (
_one,_other, and_zerowhere needed), for exampleopCount_one/opCount_other.
Development Resources
- API Documentation: Access at
/swagger-ui/index.htmlon your local instance - Developer Guide: See
DeveloperGuide.mdin the repository - Claude Code Guide: See
CLAUDE.mdfor detailed architecture and patterns