Initial LinkedSign platform

This commit is contained in:
2026-04-06 20:33:59 -05:00
commit 1074c7c9d2
159 changed files with 19072 additions and 0 deletions
+145
View File
@@ -0,0 +1,145 @@
# LinkedSign Backend - Resumen Actual
Resumen corto del estado actual del backend que usan la web y la app Android.
## Módulos activos
- `auth`
- `users`
- `documents`
- `certificates`
- `signatures`
- `mail`
- `audit`
- `health`
## Seguridad aplicada
- `helmet`
- `cors` restringido
- rate limit en login
- JWT access + refresh
- contraseñas con `bcrypt`
- validación fuerte de contraseña
- validación de PDF
- control de acceso por usuario autenticado
- auditoría de login, documentos, certificados y firmas
## Autenticación
- registro con correo + contraseña
- validación del correo por enlace
- reenvío automático del correo si el usuario intenta entrar sin validar
- `GET /auth/me`
- logout y refresh token
- cambio de contraseña con confirmación por correo
## Documentos
- subida de PDF original
- listado
- descarga
- eliminación
- cálculo de hash SHA-256 del documento
Ruta de almacenamiento:
```text
/storage/documentos/YYYY/MM/
```
## Certificados
- subida de `.p12` / `.pfx`
- lectura de sujeto, emisor y vigencia
- detección de cantidad de certificados embebidos
- indicador de cadena embebida
- listado y eliminación
Ruta de almacenamiento:
```text
/backend/storage/certificates/users/{userId}
```
## Firmas
- firmado de PDF con certificado del usuario
- estilos visuales:
- `classic`
- `qr`
- `professional`
- `image`
- QR configurable:
- izquierda / derecha
- borde / sin borde
- fondo suave / transparente
- nombre del firmado:
- `nombreOriginal_yyyymmddhhmm.pdf`
- listado de documentos firmados
- descarga del firmado
- verificación pública por QR
## Verificación QR
Cada firma puede generar:
- `verificationCode`
- `verificationUrl`
El QR apunta a la verificación pública de LinkedSign y muestra:
- estado de validez interna
- firmante
- emisor del certificado
- documento
- fecha de firma
- razón y ubicación
- hash de integridad
## Preferencias visuales
Se guardan por usuario:
- `signatureStyle`
- `qrPosition`
- `qrBackground`
- `qrBorder`
- `signatureImageBase64`
Persistencia actual:
```text
backend/storage/preferences/signature-styles.json
```
## Auditoría
Eventos almacenados en:
```text
backend/logs/audit.log
```
Se registran, entre otros:
- `USER_REGISTERED`
- `LOGIN_SUCCESS`
- `LOGIN_FAILED`
- `VERIFICATION_EMAIL_RESENT`
- `PASSWORD_CHANGE_REQUESTED`
- `PASSWORD_CHANGED`
- `DOCUMENT_UPLOAD`
- `DOCUMENT_DELETE`
- `CERTIFICATE_UPLOAD`
- `CERTIFICATE_DELETE`
- `DOCUMENT_SIGNED`
## Integración con Android
La app móvil en [android/README.md](/home/mgonzalez/desarrollo/react/linkedsign/android/README.md):
- usa esta misma API
- comparte autenticación con la web
- guarda sesión en el dispositivo
- sincroniza documentos, certificados y firmados bajo petición del usuario