# 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 (`` + `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.