Packages phpnitro/*
Tous publiés sur Packagist, résolus dans vendor/ comme n'importe quelle dépendance Composer — rien n'est copié dans ton projet par phpx new. Seul phpnitro/ui (le moteur de rendu natif) est dans le composer.json généré par défaut — un projet vierge n'a ni base de données, ni projet Firebase, ni besoin de sélecteur de pays. Tous les autres, y compris database/firebase/countries/preferences/format ci-dessous (voir Référence), s'ajoutent avec un composer require phpnitro/<nom> classique dès que ton app en a besoin.
Moteur de rendu
| Package | Namespace | Rôle |
|---|---|---|
phpnitro/ui | Engine\Native\* | Le moteur de rendu natif — Widget (contrat layout/paint), ~50 nœuds natifs, Canvas, Tokens, MediaQuery. Voir le catalogue des widgets. |
Données & stockage
| Package | Namespace | Rôle |
|---|---|---|
phpnitro/database | Engine\Database\* | Connexion Doctrine DBAL — SQLite par défaut, MySQL/PostgreSQL via DATABASE_URL. |
phpnitro/preferences | Engine\Preferences\* | Stockage clé-valeur persistant entre redémarrages, adossé à database. |
phpnitro/state | Engine\State\* | API typée et namespacée par-dessus $_SESSION, pour de l'état partagé entre écrans. |
phpnitro/offline | Engine\Offline\* | File de mutations faites hors-ligne, persistée, rejouée à la reconnexion — adossé à database. |
Intégrations réseau (REST direct, sans SDK)
| Package | Namespace | Rôle |
|---|---|---|
phpnitro/firebase | Engine\Firebase\* | Client REST Firebase Auth — aucune dépendance SDK Firebase. |
phpnitro/supabase | Engine\Supabase\* | Client REST pour PostgREST/GoTrue — aucune dépendance SDK. |
phpnitro/cloudinary | Engine\Cloudinary\* | Upload/transformation/suppression d'image via REST — aucune dépendance SDK. |
phpnitro/geocoding | Engine\Geocoding\* | Géocodage direct/inverse via OpenStreetMap Nominatim — aucune clé API. |
phpnitro/socialauth | Engine\SocialAuth\* | Connexion OAuth2 — GitHub, Facebook, Microsoft, Apple. |
phpnitro/payments | Engine\Payments\* | Intégrations de moyens de paiement — Stripe, FedaPay, PayPal, Razorpay, PayDunya, Feexpay (REST server-to-server, statut vérifié après paiement, jamais fait confiance au seul signal client) ; Kkiapay/iZiChangePay/TresorPay pas encore reconstruits. |
phpnitro/analytics | Engine\Analytics\* | Suivi d'événements léger, adossé à database. |
Utilitaires
| Package | Namespace | Rôle |
|---|---|---|
phpnitro/countries | Engine\Countries\* | Données pays/villes hors-ligne (194 États membres/indépendants de l'ONU). |
phpnitro/format | Engine\Format\* | Formatage nombre/devise/date, sans dépendre de ext-intl. |
phpnitro/date | Engine\Date\* | Arithmétique de dates et temps relatif lisible ("il y a 3 heures"). |
phpnitro/math | Engine\Math\* | Aides numériques et statistiques descriptives. |
phpnitro/i18n | Engine\I18n\* | Traduction/locale, piloté par la locale système de l'appareil. |
phpnitro/validation | Engine\Validation\* | Validation de données par règles. |
phpnitro/uuid | Engine\Uuid\* | Génération d'UUID v4/v7 (RFC 4122) — aucune dépendance. |
phpnitro/crypto | Engine\Crypto\* | Aides hash/HMAC/jeton aléatoire par-dessus hash()/random_bytes() de PHP. |
phpnitro/jwt | Engine\Jwt\* | JwtDecoder (décodage d'en-tête/payload) ; JwtEncoder (signature/vérification HS256 via hash_hmac, comparaison hash_equals) ; JwtRefresher (renouvellement via un endpoint refresh_token distant). Le secret de signature ne doit jamais venir du .env embarqué dans l'app — extractible de tout APK décompilé — seulement d'un serveur distant que tu contrôles. |
phpnitro/mime | Engine\Mime\* | Détection de type MIME depuis un vrai fichier ou une extension. |
phpnitro/retry | Engine\Retry\* | Réessaie un callback avec backoff exponentiel. |
TIP
Chaque package a son propre dépôt GitHub (github.com/phpnitro/<nom>) et ses propres tests — pas de monolithe. Un bug ou une contribution sur phpnitro/geocoding n'a rien à voir avec le moteur de rendu phpnitro/ui.