# Workflow: Markdown → Gitea → HTTP + PDF
Aquest document explica com automatitzar la publicació d'informes d'orientació professional en un site estàtic, utilitzant **Markdown**, **Gitea**, **hooks** i **generació de PDF**.
## 1️⃣ Escriu el contingut en Markdown
Crea els teus informes **IPOP** en `.md` i puja'ls a un repositori de **Gitea**.
### Exemple de `informe.md`
```md
# Informe Personal d’Orientació Professional
## Joan Garcia
- **Àrees professionals:** Enginyeria, Disseny Gràfic
- **Competències destacades:** Anàlisi, Creativitat, Resolució de Problemes
```
---
## 2️⃣ Puja els fitxers a Gitea
Executa:
```sh
git add informe.md
git commit -m "Afegit informe Joan Garcia"
git push origin main
```
---
## 3️⃣ Automatització amb Gitea Webhooks
Quan es detecta un canvi en el repo, un **hook automàtic** executa el generador de site estàtic.
### Exemple de Hook (`gitea-hooks.sh`)
```sh
#!/bin/bash
cd /var/www/informes
git pull origin main
hugo -D # O jekyll build
systemctl restart nginx # Si cal refrescar el servidor
```
Configura el webhook a **Gitea** per executar aquest script.
---
## 4️⃣ Site estàtic accessible via HTTP
Ara el teu site està **publicat automàticament** en:
- `http://empresa.com/informes/joan-garcia`
- `http://intranet/informes/`
**Frameworks recomanats:**
- **Hugo** → Lleuger i ràpid
- **Jekyll** → Suporta directament Markdown
- **Eleventy** → Molt flexible
---
## 5️⃣ Generació de PDFs sota demanda
Opcions per a la generació de PDF:
### ✅ Opció 1: Client-side (JavaScript - jsPDF)
```html
```
✔️ No requereix backend, tot passa al navegador.
### ✅ Opció 2: Server-side (Puppeteer o Pandoc)
Generació amb Puppeteer (Node.js):
```js
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('http://empresa.com/informes/joan-garcia', {waitUntil: 'networkidle2'});
await page.pdf({path: 'informe.pdf', format: 'A4'});
await browser.close();
})();
```
✔️ Millor formatació, però requereix configuració de servidor.
---
## 🔁 Flux del Workflow
```
Markdown (Gitea Repo) --> Webhook --> Site Estàtic (Hugo/Jekyll) --> Web HTML
\
--> API PDF (Puppeteer o jsPDF)
```
## 📌 Conclusió
✅ **Automatitzat**: `git push` i la web s'actualitza sola.
✅ **Offline-ready**: HTML navegable + PDFs generats sota demanda.
✅ **Eficient i segur**: Sense bases de dades, tot en fitxers.