Skip to content

Latest commit

 

History

12 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Device Intelligence Bundle

CI Packagist Version Packagist Downloads License PHP Symfony GitHub stars Coverage

Found this useful? Install from Packagist · Give it a star on GitHub so more developers can find it.

Device Intelligence Bundle — probabilistic device matching, risk scoring, a collect endpoint, Doctrine persistence, Security integration, and first-party browser collectors for Symfony. A Device ID is not a credential.

📋 Compatible with Symfony 7.4+ and 8.0–8.1+ — PHP 8.3+ (Symfony 8.x requires PHP 8.4+).

FrankenPHP Friendly Worker Mode

This bundle is FrankenPHP worker mode friendly.

Features

  • Weighted matching (no sha256(all_signals) identity hash)
  • Named config profiles (default_profile + profiles)
  • Risk engine with explainable rules
  • POST /_device/collect with origin checks, nonce replay protection, and rate limits
  • Doctrine tables with a configurable prefix
  • Controller attributes for risk, rate limits, and trusted devices
  • Web Profiler panel nowo_device_intelligence
  • Browser collectors: pnpm + Vite (IIFE for any host; Pentatrion Vite in the Symfony demo)

Installation

composer require nowo-tech/device-intelligence-bundle

With Symfony Flex, the recipe registers the bundle, config, and collect route. Without Flex, see docs/INSTALLATION.md.

// config/bundles.php
return [
    Nowo\DeviceIntelligenceBundle\NowoDeviceIntelligenceBundle::class => ['all' => true],
];
<script src="{{ asset('js/device-intelligence.min.js', 'nowo_device_intelligence') }}"></script>
<script>
  const device = new DeviceIntelligence({ endpoint: '/_device/collect' });
  device.collect();
</script>

Requirements

  • PHP >=8.3 <8.6
  • Symfony 7.4, 8.0, and 8.1+
  • Optional: Doctrine ORM (default persistence), Messenger, Twig / Web Profiler

Documentation

Additional documentation

Tests and coverage

PHP line coverage target: 99.75% of includable src/ and lib/ (gate ≥ 99%). TypeScript line coverage: 95.60% (gate ≥ 90%).

make test
make test-coverage
make test-ts
make qa
Language Latest reported
PHP 99.75% lines (Clover coverage.xml, CI)
TypeScript 95.60% lines (pnpm run test:coverage)

License

MIT © 2026 Héctor Franco Aceituno / Nowo.tech

About

Symfony Device Intelligence: probabilistic matching, risk scoring, collect endpoint. Device IDs are not credentials.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages