Last Updated: 3/7/2026
Contributing to LinkAce
Thank you for your interest in contributing to LinkAce! This guide will help you get started with contributing to the project.
Ways to Contribute
There are many ways to contribute to LinkAce:
- Report bugs: Help us identify and fix issues
- Suggest features: Share your ideas for new functionality
- Write code: Submit bug fixes or new features
- Improve documentation: Help make our docs clearer and more comprehensive
- Translate: Help make LinkAce available in more languages
- Support users: Answer questions in discussions and forums
Getting Started
Prerequisites
To contribute code to LinkAce, you’ll need:
- PHP 8.1+: LinkAce is built with PHP
- Composer: For PHP dependency management
- Node.js v16+: For frontend asset compilation
- Docker (recommended): For running the development environment
- Git: For version control
Technology Stack
LinkAce is built with:
- Backend: Laravel (PHP framework)
- Frontend: Blade templates, Bootstrap, JavaScript
- Database: MySQL/MariaDB or PostgreSQL
- Cache/Queue: Redis (optional)
Development Setup
1. Fork and Clone
- Fork the LinkAce repository on GitHub
- Clone your fork locally:
git clone https://github.com/YOUR_USERNAME/LinkAce.git cd LinkAce
2. Set Up Development Environment
Using Docker (Recommended)
-
Copy the development environment file:
cp .env.dev .env -
Start the development containers:
docker-compose up -d -
Install PHP dependencies:
docker-compose exec app composer install -
Install Node dependencies:
npm install -
Generate application key:
docker-compose exec app php artisan key:generate -
Run database migrations:
docker-compose exec app php artisan migrate -
Compile frontend assets:
npm run dev
Without Docker
See the Setup without Docker guide for manual installation instructions.
3. Access Your Development Instance
Your local LinkAce instance should now be available at http://localhost
Making Changes
Branch Naming
Create a descriptive branch for your changes:
feature/add-bookmark-import- For new featuresfix/broken-link-check- For bug fixesdocs/improve-api-guide- For documentation changes
Code Style
LinkAce follows coding standards to maintain consistency:
PHP
- Follow PSR-12 coding standards
- Run PHP CodeSniffer to check your code:
composer run phpcs - Fix code style issues automatically:
composer run phpcbf
JavaScript
- Use consistent formatting and modern ES6+ syntax
- Follow existing code patterns in the project
Testing
Before submitting your changes:
-
Run the test suite:
docker-compose exec app php artisan test -
Add tests for new features: All new functionality should include appropriate tests
-
Ensure existing tests pass: Don’t break existing functionality
Commit Messages
Write clear, descriptive commit messages:
Add bookmark import from Pocket
- Implement Pocket API integration
- Add import UI in settings
- Include progress tracking
- Add tests for import functionalitySubmitting Changes
Pull Request Process
-
Push your changes to your fork:
git push origin feature/your-feature-name -
Create a Pull Request on GitHub:
- Go to the LinkAce repository
- Click “New Pull Request”
- Select your fork and branch
- Fill out the PR template with details about your changes
-
PR Requirements:
- Clear description of what changed and why
- Reference any related issues (e.g., “Fixes #123”)
- All tests passing
- Code style checks passing
- Screenshots for UI changes
-
Review Process:
- Maintainers will review your PR
- Address any feedback or requested changes
- Once approved, your PR will be merged
Translation
LinkAce uses Crowdin for translations:
- Visit the LinkAce Crowdin project
- Select your language (or request a new one)
- Start translating!
Translations are automatically synced to the repository.
See: LinkAce Translations
Reporting Issues
Bug Reports
When reporting bugs, please include:
- LinkAce version: Check in System Settings or footer
- Installation method: Docker, manual, cloud deployment
- Environment: PHP version, database type, web server
- Steps to reproduce: Clear, step-by-step instructions
- Expected behavior: What should happen
- Actual behavior: What actually happens
- Screenshots: If applicable
- Error messages: Any error logs or messages
Feature Requests
For feature requests, describe:
- Use case: What problem does this solve?
- Proposed solution: How should it work?
- Alternatives: What other approaches did you consider?
- Additional context: Screenshots, examples, mockups
Code of Conduct
Be respectful, inclusive, and professional:
- Be welcoming to newcomers
- Be respectful of differing viewpoints
- Accept constructive criticism gracefully
- Focus on what’s best for the community
- Show empathy towards other community members
Getting Help
Need help contributing?
- Community Discussions: GitHub Discussions
- Documentation: Check the troubleshooting guide
- Chat: Join the community on Mastodon
Support the Project
If you can’t contribute code but want to support LinkAce:
- Financial support: Open Collective | Patreon | GitHub Sponsors
- Spread the word: Share LinkAce with others
- Write about it: Blog posts, tutorials, reviews
- Star the repo: Show your support on GitHub
Project Structure
LinkAce/
├── app/ # Application code
│ ├── Http/ # Controllers, middleware
│ ├── Models/ # Database models
│ └── Services/ # Business logic
├── config/ # Configuration files
├── database/ # Migrations, seeders
├── lang/ # Translation files
├── public/ # Public web root
├── resources/ # Views, assets
│ ├── views/ # Blade templates
│ └── assets/ # CSS, JS source
├── routes/ # Route definitions
├── storage/ # Application storage
└── tests/ # Test suiteLicense
By contributing to LinkAce, you agree that your contributions will be licensed under the GPL-3.0 License.
Recognition
All contributors are recognized in:
- The GitHub Contributors page
- The project README
- Release notes for significant contributions
Thank you for contributing to LinkAce! Your efforts help make this project better for everyone. 🎉