# Exemples

> Faites tourner colis sur votre machine : la page de livraison avec un MinIO local, la CLI qui lui envoie un fichier et suit la réponse, et le nœud n8n construit et testé. Plus les README et les guides.

Canonical: https://colis-site.vercel.app/examples · Markdown: https://colis-site.vercel.app/examples.md · English: https://colis-site.vercel.app/en/examples

Tout le dépôt tourne en local avec un conteneur MinIO : rien à créer comme compte, et le vrai chemin de code. Lancez la page de livraison, puis envoyez-lui un fichier depuis un terminal.

```sh
git clone https://github.com/mamadouwhile/colis.git && cd colis
bun install && bun run build
```

**un bucket sur votre portable**
```sh
docker run -p 9000:9000 -p 9001:9001 \
  -e MINIO_ROOT_USER=minioadmin -e MINIO_ROOT_PASSWORD=minioadmin \
  quay.io/minio/minio server /data --console-address ":9001"
```

## La page de livraison, en local (templates/drop)
Le modèle complet sur votre machine, contre un MinIO : déposer un fichier, l’ouvrir dans un autre navigateur, le valider, et voir l’accusé changer sur la page d’envoi.

- Le fichier mis en attente avant l’envoi : aperçu, durée, mot de passe, message
- La page de retrait : aperçu, mot de passe, puis Valider ou Demander des corrections
- Le suivi côté expéditeur, qui se met à jour tout seul
- L’envoi direct au bucket par morceaux au-dessus de DROP_MAX_SIZE_MB, avec reprise

Source sur GitHub: https://github.com/mamadouwhile/colis/tree/main/templates/drop

```sh
cp templates/drop/.env.example templates/drop/.env.local   # then uncomment its MinIO block
bun install
bun run --filter colis-drop dev                               # http://localhost:3400
```

## La CLI contre votre page (packages/cli)
Envoyer un fichier depuis un terminal vers la page de livraison qui tourne en local, puis suivre sa livraison avec colis statut pendant que vous répondez dans le navigateur.

- verifier contre un serveur : un vrai aller-retour, puis sortie non nulle en cas d’échec
- Le code seul sur stdout, tout le reste sur stderr
- statut : l’état sur la première ligne, puis chaque étape avec son heure

Source sur GitHub: https://github.com/mamadouwhile/colis/tree/main/packages/cli

```sh
bun run build
alias colis="node $PWD/packages/cli/dist/index.js"
colis --remote http://localhost:3400/api/transfers verifier
colis --remote http://localhost:3400/api/transfers envoyer ./maquette.pdf
colis --remote http://localhost:3400/api/transfers statut <code>
```

## Le nœud n8n (packages/n8n-nodes-colis)
Les deux nœuds, Colis Trigger et Colis, construits et testés sans n8n : la logique vit dans des fonctions simples que les nœuds ne font que brancher.

- La vérification de signature avec verifyWebhook, le même code que celui qui signe
- Un événement non sélectionné répondu 200 sans rien lancer, pour que le déploiement ne réessaie pas
- Send, Get, Get Status et Delete sur un colis

Source sur GitHub: https://github.com/mamadouwhile/colis/tree/main/packages/n8n-nodes-colis

```sh
bun run --filter n8n-nodes-colis build   # dist/, and the icons beside the nodes
bun run --filter n8n-nodes-colis test    # both nodes, against a fake n8n context
```

## Écrit noir sur blanc, de bout en bout.
Les README du dépôt et les pages de la documentation.

- [La page de livraison: Options, gros fichiers, webhooks, variables : tout le modèle.](https://github.com/mamadouwhile/colis/blob/main/templates/drop/README.md)
- [Le nœud n8n: Installation, identifiants, deux workflows.](https://github.com/mamadouwhile/colis/blob/main/packages/n8n-nodes-colis/README.md)
- [Mettre en place un serveur: Routes, autorisation, expiration, CORS.](https://colis-docs.vercel.app/docs/protocole#monter-les-routes)
- [Le protocole: Quatre routes, un format d’erreur.](https://colis-docs.vercel.app/docs/protocole)
- [La CLI: Chaque commande et chaque option.](https://colis-docs.vercel.app/docs/cli)
- [Tester: Un bucket en mémoire : ni identifiants, ni réseau.](https://colis-docs.vercel.app/docs/tests)

## De rien à un colis validé.
1. Lancez MinIO avec la commande ci-dessus, créez un bucket, et décommentez le bloc MinIO du .env.local de la page de livraison.
2. Lancez la page de livraison, et vérifiez qu’elle répond.
3. Envoyez un fichier, ouvrez son lien dans un autre navigateur, validez-le, et lisez l’accusé de réception.

```sh
alias colis="node $PWD/packages/cli/dist/index.js"
bun run --filter colis-drop dev
colis --remote http://localhost:3400/api/transfers verifier
colis --remote http://localhost:3400/api/transfers envoyer ./maquette.pdf
colis --remote http://localhost:3400/api/transfers statut K7QP2M4X
```
