PHPackages                             vnuswilliams/laravel-geo-checkin - 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. vnuswilliams/laravel-geo-checkin

ActiveLibrary

vnuswilliams/laravel-geo-checkin
================================

Pointage de presence par geolocalisation (check-in / check-out) pour Laravel, partage entre une application RH/admin et un portail employe.

1.0.0(yesterday)01↑2900%MITPHPPHP ^8.3

Since Aug 14Pushed yesterdayCompare

[ Source](https://github.com/vnuswilliams/laravel-geo-checkin)[ Packagist](https://packagist.org/packages/vnuswilliams/laravel-geo-checkin)[ RSS](/packages/vnuswilliams-laravel-geo-checkin/feed)WikiDiscussions main Synced today

READMEChangelog (1)Dependencies (8)Versions (2)Used By (0)

vnuswilliams/laravel-geo-checkin
================================

[](#vnuswilliamslaravel-geo-checkin)

Package Laravel de **pointage de présence par géolocalisation**, conçu pour être installé à la fois dans **Squarhe** (application admin RH/paie) et dans le **portail employé**, deux applications séparées qui partagent la même base de données.

**Principe central : sans localisation définie par l'entreprise, aucun pointage ne peut être validé.**

---

Fonctionnement
--------------

[](#fonctionnement)

1. L'entreprise (côté Squarhe) définit un ou plusieurs **sites de travail** : nom, coordonnées GPS (latitude/longitude) et rayon de tolérance en mètres.
2. L'employé, depuis le portail employé, clique sur « Pointer ». Le navigateur renvoie sa position GPS (latitude, longitude, précision).
3. Le package calcule la distance entre la position de l'employé et le site de référence via la **formule de Haversine**.
4. Si `distance distanceInMeters(4.0511, 9.7679, 3.8480, 11.5021); // ≈ 200 000 m
```

### `CheckinService` — point d'entrée unique

[](#checkinservice--point-dentrée-unique)

```
use VnusWilliams\GeoCheckin\Enums\AttendanceType;
use VnusWilliams\GeoCheckin\Services\CheckinService;

$attendance = app(CheckinService::class)->register(
    employee: $employee,
    latitude: $lat,
    longitude: $lng,
    accuracyMeters: $accuracy,
    type: AttendanceType::CheckIn,
);

$attendance->status; // AttendanceStatus::Valid | OutOfRange | NoLocationDefined | Pending
```

Règles de résolution du site de référence :

1. le site assigné à l'employé via sa relation `workLocation` (si active) ;
2. le premier site actif de son entreprise ;
3. le premier site actif globalement.

---

Composants Livewire 4 (single-file, natifs)
-------------------------------------------

[](#composants-livewire-4-single-file-natifs)

Les composants sont enregistrés sous le namespace `geo-checkin` dans le ServiceProvider du package et utilisables directement dans les deux applications.

### Côté employé (portail)

[](#côté-employé-portail)

```

```

Boutons « Pointer (arrivée) » et « Dépointer (départ) », récupération de la position GPS via l'API du navigateur (`navigator.geolocation`).

### Côté admin (Squarhe)

[](#côté-admin-squarhe)

```

```

- `admin-work-location-manager` : CRUD des sites avec carte cliquable (Leaflet.js + OpenStreetMap, sans clé API).
- `admin-attendance-report` : tableau de bord filtrable par employé, période et statut, avec export CSV. Les exports Excel (FastExcel) et PDF (DomPDF) peuvent être branchés par l'application en réutilisant ses propres patterns.

---

Sécurité et fiabilité
---------------------

[](#sécurité-et-fiabilité)

- **Pas de site = pas de validation** : statut `no_location_defined` explicite plutôt qu'une erreur.
- **Précision GPS** : au-delà du seuil configuré, statut `pending` (validation manuelle) plutôt qu'un rejet injuste.
- **Anti-triche** : l'IP de chaque pointage est journalisée à titre indicatif. La géolocalisation navigateur reste falsifiable ; une app mobile native serait nécessaire pour une fiabilité renforcée.
- **Multi-site** : les sites sont liés à `company_id` ; chaque synthèse journalière conserve le site utilisé.

---

Tests
-----

[](#tests)

```
composer install
vendor/bin/phpunit
vendor/bin/pint --test
```

27 tests (unitaires + fonctionnels) couvrent : le calcul de distance, la validation dans/à l'extérieur du rayon, l'absence de site, la faible précision GPS, la synthèse journalière unique, le calcul des minutes travaillées, la résolution multi-site, la journalisation IP, et les composants Livewire.

Évolutions possibles
--------------------

[](#évolutions-possibles)

- Calcul automatique des retards (horaires d'ouverture de l'entreprise).
- Détection des absences (aucun `AttendanceDay` un jour ouvré).
- Application mobile native pour une géolocalisation plus fiable.
- Connexion de `worked_minutes` au module paie de Squarhe.

###  Health Score

41

—

FairBetter than 87% of packages

Maintenance100

Actively maintained with recent releases

Popularity2

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity48

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% 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

Unknown

Total

1

Last Release

1d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/7802022?v=4)[AdaWu](/maintainers/Vnus)[@Vnus](https://github.com/Vnus)

---

Top Contributors

[![vnuswilliams](https://avatars.githubusercontent.com/u/106296680?v=4)](https://github.com/vnuswilliams "vnuswilliams (3 commits)")

---

Tags

laravelgeolocationgpspresenceattendancecheckincheck-inpointage

###  Code Quality

TestsPHPUnit

Code StyleLaravel Pint

### Embed Badge

![Health badge](/badges/vnuswilliams-laravel-geo-checkin/health.svg)

```
[![Health](https://phpackages.com/badges/vnuswilliams-laravel-geo-checkin/health.svg)](https://phpackages.com/packages/vnuswilliams-laravel-geo-checkin)
```

###  Alternatives

[psalm/plugin-laravel

Psalm plugin for Laravel

3345.4M354](/packages/psalm-plugin-laravel)[laravel/ai

The official AI SDK for Laravel.

1.1k4.6M307](/packages/laravel-ai)[laravel/pulse

Laravel Pulse is a real-time application performance monitoring tool and dashboard for your Laravel application.

1.7k16.3M153](/packages/laravel-pulse)[tallstackui/tallstackui

TallStackUI is a powerful suite of Blade components that elevate your workflow of Livewire applications.

731189.9k16](/packages/tallstackui-tallstackui)[api-platform/laravel

API Platform support for Laravel

58190.1k21](/packages/api-platform-laravel)[illuminate/queue

The Illuminate Queue package.

20433.0M1.8k](/packages/illuminate-queue)

PHPackages © 2026

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