This commit is contained in:
2026-08-17 19:08:20 +02:00
parent 312890f6e7
commit 8a8f748784
239 changed files with 369374 additions and 0 deletions

View File

@ -0,0 +1,84 @@
# PdfEditor
Éditeur de PDF en ligne, auto-hébergé. L'utilisateur dépose un PDF (glisser-déposer),
l'édite directement dans le navigateur — **ajout de texte, d'images, de signatures,
de formes basiques et de liens** — puis le télécharge ou le sauvegarde sur son compte.
## Architecture
| Couche | Techno | Rôle |
|--------|--------|------|
| **Frontend** | Angular + [PDF.js](https://mozilla.github.io/pdf.js/) (rendu) + [pdf-lib](https://pdf-lib.js.org/) (édition/export) | Toute l'édition se fait **côté client**, dans le navigateur. |
| **Backend** | Go (`net/http` + `chi`) | Authentification (JWT) et persistance des PDF/projets de l'utilisateur. |
| **Base de données** | PostgreSQL | Comptes utilisateurs et métadonnées des documents. |
| **Stockage fichiers** | Volume disque | Les PDF sauvegardés sont écrits sur un volume monté. |
Le PDF n'est envoyé au serveur **que** si l'utilisateur choisit de le sauvegarder.
L'édition elle-même ne quitte jamais le navigateur.
Le contrat d'API partagé est décrit dans [`docs/API.md`](docs/API.md).
```
PdfEditor/
├── docker-compose.yml # Production : tire les images du registre Gitea
├── docker-compose.local.yml # Dev/debug : build à partir des sources locales
├── .env.example # Variables d'environnement (copier en .env)
├── scripts/push-images.sh # Build + push des images vers Gitea (gitignoré)
├── docs/API.md # Contrat d'API REST
├── backend/ # Service Go
└── frontend/ # Application Angular (servie par nginx)
```
## Développement local
Prérequis : Docker + Docker Compose.
```bash
cp .env.example .env # adapter si besoin
docker compose -f docker-compose.local.yml up --build
```
Services exposés :
- Frontend : http://localhost:8080
- Backend (debug) : http://localhost:8081
- PostgreSQL : localhost:5432
> Pour un cycle de dev plus rapide sur une seule couche, voir les README de
> `backend/` et `frontend/` (lancement natif `go run` / `ng serve`).
## Déploiement (production)
Les deux images (`pdfeditor-backend`, `pdfeditor-frontend`) sont publiées sur le
registre OCI intégré de Gitea, puis tirées par `docker-compose.yml`.
### 1. Publier les images
```bash
./scripts/push-images.sh # tag = git short SHA + latest
# ou
IMAGE_TAG=v1.0.0 ./scripts/push-images.sh
```
Le script construit `backend/` et `frontend/`, les tague
(`<short-sha>` + `latest`) et les pousse vers
`gitea.anthonybouteiller.ovh/blomios/pdfeditor-{backend,frontend}`.
### 2. Lancer sur le serveur
```bash
cp .env.example .env # renseigner les secrets (JWT_SECRET, mots de passe…)
docker compose pull
docker compose up -d
```
Le frontend est exposé sur le port défini par `HTTP_PORT` (défaut `8080`) ; il
proxifie les appels `/api` vers le backend.
## Images Docker
| Image | Description |
|-------|-------------|
| `…/pdfeditor-backend` | Binaire Go (build multi-stage). |
| `…/pdfeditor-frontend`| Build Angular servi par nginx, proxy `/api` → backend. |
Tags : `latest` (dernier build) et le **git short SHA** de chaque build.