Skip to content

Latest commit

 

History

History
74 lines (56 loc) · 2.89 KB

File metadata and controls

74 lines (56 loc) · 2.89 KB

Contributing to LinkForge

Thanks for your interest in improving LinkForge! Contributions of all kinds are welcome — bug fixes, features, docs, and translations.

Ground rules

  • By contributing, you agree your work is licensed under the project's MIT License.
  • Be respectful — this project follows a Code of Conduct.
  • For anything non-trivial, open an issue first to discuss the approach before you start.

Development setup

git clone https://github.com/sanmaxdev/linkforge.git
cd linkforge
composer install
npm install
cp .env.example .env
php artisan key:generate
# point DB_* in .env at a local MySQL/MariaDB database, then:
php artisan migrate --seed
npm run dev        # Vite dev server
php artisan serve

The test suite runs on an in-memory SQLite database, so you don't need MySQL just to run tests.

Before you open a pull request

Run the same checks CI runs — all must pass:

vendor/bin/pint          # auto-format to the project code style
php artisan test         # full test suite
npm run build            # assets must compile
  • Code style: we use Laravel Pint. Run vendor/bin/pint before committing (CI runs pint --test and will fail on un-formatted code).
  • Tests: add or update tests for any behavior change. Keep the suite green.
  • Commits: keep them focused; write clear messages. Reference the issue you're addressing.
  • Scope: one logical change per PR — it's easier to review and merge.

Pull request process

  1. Fork the repo and create a branch from main (e.g. fix/redirect-loop or feat/qr-templates).
  2. Make your change, with tests and formatting.
  3. Open a PR against main. Fill in the PR template.
  4. CI (tests + lint + assets build) must pass, and a maintainer must approve before merge. main is protected — changes land only through reviewed PRs.

Releasing (maintainers)

Releases are fully automated by .github/workflows/release.yml. To cut a release:

  1. Bump the version in config/linkforge.php and merge it through a PR.
  2. Tag the merge commit and push the tag:
    git tag v1.1.0
    git push origin v1.1.0
  3. The Release workflow builds two artifacts and publishes a GitHub Release with auto-generated notes:
    • linkforge-v<version>.zip — the full, self-hostable install package (extract into your web root).
    • linkforge-update-v<version>.zip — an incremental package (only files changed since the previous tag) for the in-app updater under Admin → Updates.

Reporting bugs / requesting features

Use the issue templates. For security vulnerabilities, do not open a public issue — see SECURITY.md.

Questions or ideas? Start a Discussion.