# TrouveTonProfile

## Description
Trouve Ton Profile est une plateforme innovante qui permet à chacun de trouver facilement des professionnels qualifiés dans tous les domaines de la vie quotidienne. Que tu cherches un électricien, un plombier, un développeur, ou tout autre expert, la plateforme te permet de parcourir rapidement des profils, de découvrir leurs compétences, et de sélectionner la personne idéale pour répondre à tes besoins. Conçue pour faciliter l'accès à des talents locaux et spécialisés, Trouve Ton Profile est l'outil incontournable pour simplifier les tâches du quotidien en connectant les personnes à des solutions fiables et adaptées.

# Architecture du Projet

- domain : modèles métiers + interfaces de dépôt (ports) + (optionnel) erreurs/valeurs.
- usecase : cas d’usage (use cases) qui orchestrent le métier (pur TS).
- infrastructure : implémentations techniques (HTTP/PocketBase, mapping DTO ⇄ domaine).
- ui (Angular) : composants/containers/facade → appellent les use cases via DI.

```mathematica
┌───────────────────────────────────────────────────┐
│                    UI (Angular)                  │
│  Composants, Facades, Formulaires                │
│  ➜ Appelle les Use Cases                         │
└───────────────────────────────────────────────────┘
                        │
                        ▼
┌───────────────────────────────────────────────────┐
│             Application / Use Cases              │
│  Exemple : ListProfilesUseCase                   │
│  ➜ Appelle les interfaces du domaine             │
└───────────────────────────────────────────────────┘
                        │
                        ▼
┌───────────────────────────────────────────────────┐
│                   Domaine (Core)                 │
│  Interfaces (ProfileRepository), Entities        │
│  ➜ Ne dépend de rien                             │
└───────────────────────────────────────────────────┘
                        │
                        ▼
┌───────────────────────────────────────────────────┐
│            Infrastructure (Technique)            │
│  Implémentations : PbProfileRepository         │
│  API HTTP, PocketBase, LocalStorage              │
│  ➜ Implémente l’interface du domaine             │
└───────────────────────────────────────────────────┘

```
# Le présenteurs 
Un Presenter (ou ViewModel / Mapper) sert à :<br>

✔ Transformer les données métier (Domain Model) → en données prêtes pour l’affichage (UI Model)<br>
✔ Préparer les données : formatage de date, texte tronqué, fusion de champs…<br>
✔ Éviter que tes composants Angular fassent eux-mêmes du .toUpperCase(), .slice(), etc.<br>
✔ Laisser le domaine pur, sans logique de présentation<br>

```
UI (Component)
     ⬇
Facade (coordonne l’action)
     ⬇
UseCase (app logic)
     ⬇
ProfileRepository (interface domain)
     ⬇
Infrastructure (PocketBase / HTTP)
     ⬇
▶ DATA RAW (Profile from database)
     ⬆
Presenter (transforme en UI-friendly data)
     ⬆
UI displays ViewModel

```
