# Sauver Mon Entreprise — sauvermonentreprise.fr

Plateforme française de référence sur la **prévention des difficultés des entreprises**, les **procédures amiables** et les **procédures collectives** (Livre VI du Code de commerce).

> **Plateforme privée et indépendante.** Contenu d'information et de préparation : elle ne remplace ni un avocat, ni un administrateur ou mandataire judiciaire, ni le tribunal. Version MVP — données de démonstration.

---

## Stack

| Couche | Choix |
|---|---|
| Framework | Laravel 13 · PHP 8.3+ |
| Frontend | Blade + Livewire 3 + Tailwind CSS 4 (Vite) |
| BDD (dev) | SQLite (zéro dépendance) |
| BDD (prod) | PostgreSQL 16 + pgvector (`docker-compose.yml`) |
| Cache/files (prod) | Redis |
| Recherche | Laravel Scout — driver `database` au MVP, Meilisearch en prod |
| Adresse locale | **http://127.0.0.1:8031** (imposée pour ce projet) |

## Démarrage rapide (dev)

```bash
composer install
cp .env.example .env && php artisan key:generate
touch database/database.sqlite
php artisan migrate --seed
npm install && npm run build        # ou npm run dev
php artisan serve --host=127.0.0.1 --port=8031
```

→ http://127.0.0.1:8031

### Comptes de démonstration (éditorial)
- `redaction@sauvermonentreprise.test` / `password` (auteur)
- `relecture@sauvermonentreprise.test` / `password` (relecteur juridique)

## Architecture

Monolithe modulaire : la logique métier vit dans `app/Domains/<Domaine>/` (Models, Services…).

```
app/Domains/
├── LegalCorpus/     # Codes, divisions, articles, VERSIONS DATÉES (cœur)
├── Encyclopedia/    # Fiches à 3 niveaux (débutant/standard/expert)
├── Procedures/      # Référentiel des procédures + étapes
├── CaseLaw/         # Jurisprudence
├── Reference/       # Glossaire, topics, tags
├── Assessments/     # Module Urgence (moteur de règles versionné)
└── Editorial/       # Workflow éditorial, audit log
```

### Invariants (appliqués par le code)
1. **Aucun texte juridique sans date ni état** (`legal_article_versions` : `effective_from/to`, `status`, source, checksum).
2. **Publication impossible sans relecteur distinct de l'auteur** (`EncyclopediaVersion::canBePublished()`).
3. **Un texte non validé humainement s'affiche avec un bandeau explicite** (« en attente de validation juridique »).
4. **Le diagnostic Urgence est indicatif, daté et versionné** (`assessments.rules_version`) — jamais une qualification juridique.
5. **Trois niveaux de lecture sur la même URL** (`?niveau=` + cookie), jamais trois pages.

## Production (VPS)

Kit complet dans [`deploy/`](deploy/README.md) : script `deploy.sh` (maintenance → pull → composer → build → migrate → caches), config Nginx d'exemple, procédure de première installation et points de vigilance. Docker (`docker-compose.yml`) fournit PostgreSQL 16 + pgvector, Redis et Meilisearch. Ne **jamais** committer de secret.

## Décisions actées (19/07/2026)

- Frontend **Blade + Livewire** (SEO, simplicité de maintenance).
- **Souveraineté UE stricte** pour l'IA (Phase 3) — architecture agnostique du fournisseur.
- Corpus initial **saisi manuellement** ; API Légifrance/Judilibre en Phase 2.
- MVP **public sans compte** ; comptes/dossiers en Phase 2.
- Hébergement : **VPS** de l'auteur ; code sur **GitHub**.

## Feuille de route

| Phase | Contenu |
|---|---|
| **1 — MVP (en cours)** | Public : accueil, encyclopédie 3 niveaux, Livre VI, glossaire, recherche, module Urgence, back-office éditorial |
| 2 | Comptes, MFA, dossiers, documents, échéances, API Légifrance |
| 3 | Assistant RAG (souveraineté UE), espaces professionnels, collaboration |
| 4 | Formation (LMS, quiz, cohortes) |
| 5 | Synchronisation juridique, API publique, écosystème |

## Documents de référence

- Spécification complète : `prompt-global-sauvermonentreprise-laravel.md` (hors dépôt)
- Cadrage Phase 0 : https://claude.ai/code/artifact/82d6cbc5-97a5-4505-9c80-f6f859fa380f
