Thank you for your interest in contributing to RouteForge! This document provides guidelines for contributing to the project.
-
Fork the repository and clone it locally
-
Set up your development environment:
# Install Java 17+ # Install Docker and Docker Compose # Copy environment configuration cp .env.example .env # Start infrastructure docker compose up -d # Build the project ./gradlew build
-
Create a feature branch:
git checkout -b feature/your-feature-name
- Follow Java standard conventions
- Use meaningful variable and method names
- Keep methods focused and concise (single responsibility)
- Add JavaDoc comments for public APIs
- Use Lombok annotations to reduce boilerplate
- Write unit tests for all business logic
- Use Testcontainers for integration tests
- Aim for >80% code coverage
- Run tests before committing:
./gradlew test
- Write clear, descriptive commit messages
- Use present tense ("Add feature" not "Added feature")
- Reference issue numbers when applicable
- Keep commits atomic and focused
- Ensure all tests pass
- Update documentation as needed
- Add a clear description of your changes
- Link to any related issues
- Request review from maintainers
routeforge/
├── routeforge-common/ # Shared DTOs and utilities
├── ingestion-service/ # GTFS-RT ingestion
├── processing-service/ # Event processing
├── api-gateway-service/ # REST and WebSocket APIs
├── infra/ # Infrastructure configs
└── scripts/ # Utility scripts
# Start all services
docker compose up
# Run individual service
./gradlew :ingestion-service:bootRun
# Run tests
./gradlew test
# Run integration tests
./gradlew integrationTest- Use the GitHub issue tracker
- Provide a clear description
- Include steps to reproduce
- Share relevant logs and error messages
- Specify your environment (OS, Java version, etc.)
Feel free to open an issue for questions or discussions!