PHPackages                             velt/preview - 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. velt/preview

ActiveLibrary

velt/preview
============

Module Preview pour VeltPHP - Prévisualisation mobile via QR code

v0.1.0(2d ago)04↑2900%3[5 issues](https://github.com/Velt-PHP/velt-preview/issues)[1 PRs](https://github.com/Velt-PHP/velt-preview/pulls)PHPPHP &gt;=8.1

Since Jun 17Pushed yesterdayCompare

[ Source](https://github.com/Velt-PHP/velt-preview)[ Packagist](https://packagist.org/packages/velt/preview)[ RSS](/packages/velt-preview/feed)WikiDiscussions main Synced today

READMEChangelogDependencies (2)Versions (2)Used By (0)

Sous-module 06 - Preview API
============================

[](#sous-module-06---preview-api)

Gestion des dépendances
-----------------------

[](#gestion-des-dépendances)

Les dépendances sont **centralisées** au niveau du dossier `velt-preview` :

```
cd velt-preview
composer install
```

Un seul `composer.json` gère toutes les dépendances des 7 sous-modules.

Mission
-------

[](#mission)

Ce sous-module connecte le monde Web et le monde mobile preview. Il gere les sessions de preview, expose les endpoints JSON et fournit les donnees necessaires au QR code.

Le but du Module 1 n'est pas de faire un Expo Go complet, mais de prouver que Velt peut rendre une meme page en Web et en JSON mobile.

Preview est un module d'integration. Il doit donc etre plus strict sur ses contrats : format JSON stable, erreurs propres, session preview testable et aucune dependance cachee a une implementation UI ou HTTP non documentee.

Perimetre
---------

[](#perimetre)

Inclus :

- session de preview ;
- mapping session vers page Velt ;
- endpoint `GET /api/preview/{id}` ;
- endpoint `GET /api/session/{id}` ;
- payload QR code ;
- stockage fichier simple pour le MVP ;
- schema JSON preview versionne ;
- erreurs 404/410/500 normalisees ;
- **parser Velt pour fichiers .velt** ;
- **structure AST pour les composants** ;
- **VeltView avec fromSession() et toJson()** ;
- **génération d'image QR code (SVG)**.

Exclus :

- WebSocket ;
- hot reload ;
- rendu natif complet ;
- app mobile officielle complete.

Comment tester sans client mobile officiel
------------------------------------------

[](#comment-tester-sans-client-mobile-officiel)

Le Module 1 n'a pas besoin d'une vraie app mobile pour valider Preview.

- Creer une page Velt fake ou une implementation `JsonableInterface` fake.
- Creer une session preview dans un store fichier temporaire.
- Appeler le controller ou handler preview avec une request fake.
- Verifier que le JSON contient `screen`, `schemaVersion`, `components` et `meta`.
- Verifier les cas d'erreur : session inconnue, page introuvable, JSON invalide.
- Verifier que le payload QR-ready contient une URL HTTP exploitable et l'identifiant de session.

Le test bout-en-bout avec le vrai UI et le vrai HTTP appartient au sous-module 07. Les tests unitaires de Preview doivent rester rapides et isolables.

Architecture des nouveaux modules
---------------------------------

[](#architecture-des-nouveaux-modules)

### velt-ast

[](#velt-ast)

Structure de l'AST (Abstract Syntax Tree) pour les composants Velt :

- `NodeInterface` - Interface de base pour tous les nœuds
- `VStack`, `HStack` - Conteneurs vertical/horizontal
- `Text`, `Button`, `Input` - Composants de base
- `Container` - Conteneur générique
- `AST` - Racine de l'arbre avec méthode `toArray()`

### velt-parser

[](#velt-parser)

Parser pour les fichiers `.velt` :

- `VeltParser` - Transforme le contenu d'un fichier .velt en AST
- Supporte l'indentation pour la structure hiérarchique
- Parse les props au format `key="value"`

### velt-view

[](#velt-view)

Couche de chargement et rendu des vues :

- `VeltView` - Classe principale avec `fromSession()` et `toJson()`
- `VeltPageRepository` - Repository implémentant `PageRepositoryInterface`
- Charge les fichiers `.velt` depuis le système de fichiers

### Format des fichiers .velt

[](#format-des-fichiers-velt)

```
VStack class="flex-1 p-4"
  Text value="Se connecter" class="text-2xl font-bold mb-4"
  Input name="email" label="Email" type="email" class="mb-4"
  Input name="password" label="Mot de passe" type="password" class="mb-4"
  Button text="Connexion" class="bg-blue-500 text-white"

```

### Flux complet

[](#flux-complet)

```
fichier .velt → VeltParser → AST → VeltView::toJson() → JSON → API Preview

```

### Génération QR code

[](#génération-qr-code)

Le module Preview utilise la librairie `bacon/bacon-qr-code` pour générer des images QR code au format SVG :

- **CLI** : `php bin/velt preview auth.login` génère un fichier SVG
- **Service** : `preview.qr_generator` disponible dans le container
- **Formats** : SVG par défaut (extension PNG disponible si GD/Imagick installé)
- **Stockage** : `storage/qrcodes/{session_id}.svg`

Issues
------

[](#issues)

- [Issue 01 - Creer PreviewSession Store](issues/01-creer-preview-session-store.md)
- [Issue 02 - Ajouter endpoints preview](issues/02-ajouter-endpoints-preview.md)
- [Issue 03 - Integrer payload QR code CLI](issues/03-integrer-payload-qr-code-cli.md)
- [Issue 04 - Valider le flux preview de bout en bout](issues/04-valider-flux-preview-bout-en-bout.md)
- [Issue 05 - Stabiliser contrat JSON preview et erreurs](issues/05-stabiliser-contrat-json-preview-erreurs.md)

###  Health Score

38

—

LowBetter than 83% of packages

Maintenance100

Actively maintained with recent releases

Popularity7

Limited adoption so far

Community11

Small or concentrated contributor base

Maturity32

Early-stage or recently created project

 Bus Factor1

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

2d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/233258904?v=4)[Kaluba sierra](/maintainers/skylore300-hash)[@skylore300-hash](https://github.com/skylore300-hash)

---

Top Contributors

[![Tomy-legoat](https://avatars.githubusercontent.com/u/217511567?v=4)](https://github.com/Tomy-legoat "Tomy-legoat (11 commits)")[![KeranTyrinthe](https://avatars.githubusercontent.com/u/177726053?v=4)](https://github.com/KeranTyrinthe "KeranTyrinthe (3 commits)")[![skylore300-hash](https://avatars.githubusercontent.com/u/233258904?v=4)](https://github.com/skylore300-hash "skylore300-hash (1 commits)")

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/velt-preview/health.svg)

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

###  Alternatives

[craftcms/cms

Craft CMS

3.6k3.6M2.9k](/packages/craftcms-cms)[statamic/cms

The Statamic CMS Core Package

4.8k3.5M914](/packages/statamic-cms)[laravel/fortify

Backend controllers and scaffolding for Laravel authentication.

1.7k47.7M346](/packages/laravel-fortify)[grumpydictator/firefly-iii

Firefly III: a personal finances manager.

23.6k69.4k](/packages/grumpydictator-firefly-iii)[danog/madelineproto

Async PHP client API for the telegram MTProto protocol.

3.4k885.1k22](/packages/danog-madelineproto)[typo3/cms

TYPO3 CMS is a free open source Content Management Framework initially created by Kasper Skaarhoj and licensed under GNU/GPL.

1.2k1.9M122](/packages/typo3-cms)

PHPackages © 2026

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