Ways to contribute: report bugs, suggest features, improve documentation, write code, or test.
- Check GitHub Issues for duplicates
- Reproduce the bug consistently and note steps
- Open a new issue with:
- Clear description of what's wrong
- Steps to reproduce
- Expected vs actual behavior
- Environment info (server, FiveM version)
- Logs or screenshots if relevant
- Check if the feature already exists
- Review IMPROVEMENT_PLAN.md
- Open an issue or GitHub discussion with:
- What you want to add
- Why (use case)
- How it should work
- Estimated difficulty (low/medium/high)
- Fork the repository and clone your fork
- Create a feature branch:
git checkout -b feature/name - Make your changes and test
- Commit with clear messages:
git commit -m "[TYPE] description" - Push to your fork
- Create a pull request
Branch naming:
feature/for new featuresbugfix/for bug fixesdocs/for documentationrefactor/for code refactoring
Commit message format:
[FEATURE] Brief description
Optional detailed explanation.
Before submitting:
- Code follows style guide (see DEVELOPMENT.md)
- All changes tested in-game
- TypeScript builds without errors
- Web builds:
npm run build - Documentation updated
- No debug console.log() statements
- Commit messages are clear
- Functions should be focused and simple
- Use meaningful variable/function names
- Comments explain why, not what
- Avoid code duplication (DRY principle)
- Validate inputs for security
Good:
local function createBlip(blipData, playerId)
if not blipData or not blipData.coords then
return false, "Invalid blip data"
end
return true, blipData.id
endBad:
function createBlip(data)
blips[data.id] = data -- No validation
endGood:
interface BlipProps {
blipId: number;
onEdit: (blip: BlipData) => void;
}
const BlipRow: React.FC<BlipProps> = ({ blipId, onEdit }) => {
return <tr onClick={() => onEdit(blip)}>{/* ... */}</tr>;
};Bad:
const BlipRow = ({ blip, onClick }) => {
return <tr onClick={() => onClick(blip)} />; // No types
};Test your changes thoroughly before submitting:
- In-game with admin permissions
- Creating, editing, and deleting blips
- Group-based visibility
- Item-based visibility
- Database entries created correctly
- No console errors
Include a testing summary in your PR.
Comment code to explain why something is done, not just what it does. Update relevant docs:
README.mdfor user-facing featuresDEVELOPMENT.mdfor developer changes.ideas/for architectural decisions
Before starting work:
- Check IMPROVEMENT_PLAN.md for planned work
- Read DEVELOPMENT.md for setup and architecture
- Search issues for duplicates
By contributing, you agree your code will be licensed under GPL-3.0-or-later. You retain copyright; others can use and modify your work under the GPL.