PHPackages                             davido/pgchecker - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. davido/pgchecker

ActiveProject[Utility &amp; Helpers](/categories/utility)

davido/pgchecker
================

A package for integrating copyleaks plagiarism checker easily in your laravel application

v1.0.3(2y ago)0275[1 issues](https://github.com/femz12/laravel-plagiarism-checker/issues)MITPHPPHP ^8.0.2

Since Jun 25Pushed 2y ago1 watchersCompare

[ Source](https://github.com/femz12/laravel-plagiarism-checker)[ Packagist](https://packagist.org/packages/davido/pgchecker)[ RSS](/packages/davido-pgchecker/feed)WikiDiscussions main Synced yesterday

READMEChangelog (3)Dependencies (2)Versions (5)Used By (0)

Copyleaks V3 API integration with laraval 8+
============================================

[](#copyleaks-v3-api-integration-with-laraval-8)

A package for integrating Copyleaks plagiarism checker easily in your Laravel app

Requirements
------------

[](#requirements)

- PHP 7.4 or above.
- Laravel 8 or above.

Installation
------------

[](#installation)

You can install the package using composer.

```
composer require davido/pgchecker
```

You can also add the follow line to you composer.json file and save.

```
...
"davido/pgchecker": "dev-master"
...

```

Then run this command to update composer.

```
composer update

```

You need to also publish the config files

```
php artisan vendor:publish --provider="DavidO\PGChecker\PGCheckerServiceProvider" --tag="config"

```

Setup
-----

[](#setup)

1. Sign up on the [Copyleaks website](https://auth.copyleaks.com/account/login).
2. Visit [Copyleaks API Dashboard](https://api.copyleaks.com/dashboard) to generate your api keys.
3. If you previously publish the config file, you must have noticed a new file (config/copyleaks.php) you can edit the config file, or add the following to your .env file.

    `COPYLEAKS_EMAIL=your_copyleaks_email`

    `COPYLEAKS_KEY=your_copyleaks_api_key`

    `COPYLEAKS_SANDBOX=false`

    `COPYLEAKS_WEBHOOK_BASE=ngrok_url_for_localhost_testing`

Usage
-----

[](#usage)

You can use the following code to scan text or a file and you get a json data as a response

```
PGChecker::scanText("A long text to scan for plagiarism");

```

```
PGChecker::scanFile("File binary data", 'pdf');

```

You can use also submit text or a file for scan only without getting the result immediately.

```
$canId = PGChecker::submitText("A long text to scan for plagiarism");

```

```
$canId = PGChecker::submitFile("File binary data", 'pdf');

```

this will return a unique scan id that can be used to retrieve the result later using the following code.

```
PGChecker::retrieveResult($scanId)

```

How it works
------------

[](#how-it-works)

Under the hood the package authenticate the user with copyleaks and then submits the file or text for scanning, the scanned results are receive via a webhook and the result is saved in the cache using the cache settings defined in the laravel package.

The scan results can be retrieved immediately or later with the unique scan id provided.

Local Setup and Testing
-----------------------

[](#local-setup-and-testing)

Since copyleaks uses webhook to return result, on local we will need a ngrok to retrieve the API result.

On mac use,

```
brew install ngrok

```

to install ngrok.

Then start ngrok server using,

```
ngrok http 8002

```

also start a local server on the same port using,

```
php artisan serve --port=8002

```

also update the url gotten from ngrok as the in the .env file

`COPYLEAKS_WEBHOOK_BASE=https://example.com`

we only need this for testing purpose and never forget to remove the variable in staging or production environment.

###  Health Score

26

—

LowBetter than 41% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity12

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity52

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 75% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~33 days

Total

4

Last Release

1007d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/42dada44df1854d2e2221d28cda677f8ac5d709f804e7e753b080600fd085b66?d=identicon)[femz12](/maintainers/femz12)

---

Top Contributors

[![olufemiayodele](https://avatars.githubusercontent.com/u/225837290?v=4)](https://github.com/olufemiayodele "olufemiayodele (9 commits)")[![femz12](https://avatars.githubusercontent.com/u/16762390?v=4)](https://github.com/femz12 "femz12 (3 commits)")

### Embed Badge

![Health badge](/badges/davido-pgchecker/health.svg)

```
[![Health](https://phpackages.com/badges/davido-pgchecker/health.svg)](https://phpackages.com/packages/davido-pgchecker)
```

###  Alternatives

[binaryk/laravel-restify

Laravel REST API helpers

677415.0k](/packages/binaryk-laravel-restify)[markwalet/nova-modal-response

A Laravel Nova asset for Modal responses on an action.

17878.9k](/packages/markwalet-nova-modal-response)[crumbls/layup

A visual page builder plugin for Filament 5 — Divi-style grid layouts with extensible widgets.

592.7k2](/packages/crumbls-layup)[tomshaw/electricgrid

A feature-rich Livewire package designed for projects that require dynamic, interactive data tables.

119.4k](/packages/tomshaw-electricgrid)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
