Thank you for considering contributing to InvoicePlane! Your support is invaluable in improving and maintaining this project. Whether you're reporting bugs, suggesting features, writing code, or helping others, your contributions are welcome.
- How Can I Contribute?
- Development Guidelines
- Getting Started with Development
- Community and Support
- Code of Conduct
If you encounter a bug, please report it by opening an issue and include:
- Description: A clear and concise description of the bug.
- Steps to Reproduce: Detailed steps to reproduce the issue.
- Expected Behavior: What you expected to happen.
- Actual Behavior: What actually happened.
- Screenshots: If applicable, add screenshots to help explain the problem.
- Environment: Information about your environment (e.g., operating system, browser, InvoicePlane version).
To suggest a new feature, please open an issue and include:
- Feature Description: A clear and concise description of the feature.
- Use Case: Explain why this feature would be useful.
- Additional Context: Any other context or screenshots that might help.
If you'd like to contribute code:
- Fork the Repository: Click the "Fork" button at the top right of the repository page.
- Clone Your Fork:
git clone https://github.com/your-username/InvoicePlane.git
- Create a Branch:
git checkout -b feature/your-feature-name
- Make Your Changes: Implement your feature or fix.
- Commit Your Changes:
git commit -m "Brief description of your changes" - Push to Your Fork:
git push origin feature/your-feature-name
- Open a Pull Request: Go to the original repository and open a pull request from your fork.
Please ensure your code adheres to the Development Guidelines and includes appropriate tests.
Improving documentation is a valuable way to contribute. You can:
- Enhance Existing Documentation: Clarify or expand upon current documentation.
- Create New Guides: Write guides for new features or common tasks.
- Fix Typos or Errors: Correct any mistakes you find.
To contribute to the documentation:
- Fork the Repository: As described above.
- Make Your Changes: Edit the relevant
.mdfiles. - Open a Pull Request: As described above.
Help make InvoicePlane accessible to a global audience by contributing translations:
- Check Existing Translations: See if your language is already supported.
- Improve Translations: Enhance existing translations for clarity and accuracy.
- Add New Translations: If your language isn't supported, consider adding it.
Please refer to the TRANSLATIONS.md for detailed instructions.
Engage with the InvoicePlane community by:
-
Answering Questions: Assist others, Help answer questions and contribute to discussions in the Community Forums.
-
Discord Collaboration - Join the live chat for quick discussions and collaboration.
-
Participate in GitHub Issues - Participate in bug reports, feature requests, and discussions and feature planning.
-
Helping with Troubleshooting: Provide solutions and suggestions in support threads on the Community Forums and on Discord
Follow the three-phase development workflow outlined in INSTALLATION.md:
-
Clone the Repository
git clone https://github.com/InvoicePlane/InvoicePlane.git cd InvoicePlane -
Install Dependencies
composer install # PHP dependencies yarn install # JavaScript dependencies yarn build # Build frontend assets
-
Configure Application — only needed for
docker-compose.ymlbelow, and only if you want to set it up yourself (see Phase 2):cp ipconfig.php.example ipconfig.php
Edit
ipconfig.phpwith your database and URL settings.
Two Docker setups are available — see resources/docker/README.md for the full comparison; pick whichever matches what you're doing:
compose.yml— self-contained, one command, good for quickly spinning up InvoicePlane to test something.docker-compose.yml— separatedphp/nginx/db/phpmyadminservices that bind-mount your working tree, so PHP/frontend edits are reflected immediately without a rebuild. This is what you want for active development.
docker compose -f docker-compose.yml up -d --buildipconfig.php is generated automatically on first run if you skipped step 3 above.
Add 127.0.0.1 ivpl.local to your /etc/hosts file first — the bundled nginx config expects
that hostname (see resources/docker/README.md for why).
Access:
- InvoicePlane: http://ivpl.local
- phpMyAdmin: http://localhost:8081
- Make changes to PHP or frontend files
- Rebuild assets if needed:
yarn buildorgrunt watch - Test changes at http://ivpl.local
- Run linters:
composer check - Commit and push your changes
For detailed workflow instructions, see INSTALLATION.md - Development Workflow.
- PHP: PSR-12 Standard
- JavaScript: Standard JS Code Formatting
- Testing is very much appreciated, especially during Beta phases. Click through all functionalities of the application and check if you see weird behavior (for example: uploads not working anymore after a new Beta version of InvoicePlane), mention it in the community (Discord, community.invoiceplane.com forums) and see if an issue should be made.
-
developmentActive development -
bugfix/*For bug fixes. Please refer to an issue, if you have one. -
feature/*New features. Please refer to an issue, if you have one. -
masterStable releases. Every time a new version of InvoicePlane goes live, that same version is available in themasterbranch.
- Community Forums - Ask questions and share knowledge.
- GitHub Issues - Report bugs and request features.
We follow a Code of Conduct to ensure a friendly and inclusive environment. By contributing, you agree to abide by these principles.
For full details, see CODE_OF_CONDUCT.md.
Happy Coding!