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 (rendu) + pdf-lib (é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.
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.
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/etfrontend/(lancement natifgo 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
./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
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.