Files
PdfEditor/backend/README.md
2026-08-17 19:08:20 +02:00

2.8 KiB

PdfEditor — Backend (Go)

API REST du projet PdfEditor. Implémente le contrat décrit dans ../docs/API.md.

Stack

  • Go 1.23, routeur chi
  • PostgreSQL via pgx (pgxpool)
  • JWT golang-jwt, bcrypt pour les mots de passe
  • Migrations embarquées appliquées au démarrage via goose
  • Stockage des PDF sur disque (un fichier par document, nom = UUID)

Variables d'environnement

Variable Obligatoire Défaut Description
DATABASE_URL oui DSN PostgreSQL (postgres://...)
JWT_SECRET oui Secret de signature des JWT
JWT_ACCESS_TTL non 15m Durée de vie des access tokens
JWT_REFRESH_TTL non 168h Durée de vie des refresh tokens
STORAGE_PATH non /data/documents Dossier d'écriture des PDF
PORT non 8080 Port d'écoute HTTP
CORS_ORIGIN non * Origine autorisée pour le CORS

Lancer en natif

Prérequis : Go 1.23+ et une base PostgreSQL accessible.

# Récupérer / verrouiller les dépendances
go mod tidy

# Variables d'environnement (exemple dev)
export DATABASE_URL="postgres://pdfeditor:changeme@localhost:5432/pdfeditor?sslmode=disable"
export JWT_SECRET="dev-secret-not-for-prod"
export STORAGE_PATH="./data/documents"
export PORT="8081"
export CORS_ORIGIN="http://localhost:4200"

# Démarrer (les migrations s'appliquent automatiquement)
go run ./cmd/server

Vérifications

go build ./...
go vet ./...

Docker

Le Dockerfile produit une image distroless avec un binaire statique. L'orchestration se fait via les fichiers docker-compose.yml (prod) et docker-compose.local.yml (dev) à la racine du dépôt.

# Depuis la racine du dépôt
docker compose -f docker-compose.local.yml up --build

Arborescence

backend/
├── cmd/server/main.go        # point d'entrée
├── internal/
│   ├── auth/                 # JWT, bcrypt, refresh tokens
│   ├── config/               # chargement de la config
│   ├── db/                   # pool pgx + migrations
│   ├── handlers/             # routeur + handlers HTTP
│   └── storage/              # stockage des PDF sur disque
├── migrations/               # SQL embarqué (goose)
├── Dockerfile
├── go.mod / go.sum
└── README.md