# Private STL Library V10

V10 convierte la biblioteca en un sitio privado con autenticación obligatoria.

## Seguridad de acceso

La biblioteca pública NO está realmente pública:
- `/api/catalog/search` requiere sesión.
- `/api/catalog/download/:id` requiere sesión.
- el frontend entra primero a Login/Registro.
- las sesiones web se almacenan con cookies HttpOnly.
- las contraseñas se almacenan mediante scrypt con salt aleatorio.
- el registro requiere `REGISTRATION_CODE`.
- si se deja `REGISTRATION_CODE` vacío, el registro queda deshabilitado.

## Primera cuenta

Configura:

```env
REGISTRATION_CODE=TU_CODIGO_PRIVADO
```

En la primera creación de cuenta, el primer usuario recibe rol `owner`.
Los siguientes usuarios quedan como `member`.

Para un uso estrictamente privado, comparte el `REGISTRATION_CODE` solo con las personas autorizadas.

## Interfaz

La nueva interfaz está enfocada en búsqueda de modelos STL/3D:
- buscador central;
- filtros visuales rápidos;
- tarjetas con formato, tamaño y miniatura;
- descarga protegida por sesión;
- diseño responsive.

## Hosting

La parte de Telegram sigue estando en backend y nunca se muestra al usuario.

La sincronización V9 se mantiene:
- primera indexación desde administración;
- sincronización incremental;
- `SYNC_INTERVAL_HOURS=24` por defecto;
- Cron Job recomendado en hosting.

## Variables importantes

```env
REGISTRATION_CODE=...
SESSION_TTL_HOURS=24
SYNC_INTERVAL_HOURS=24
SYNC_MESSAGES=500
SYNC_SECRET=...
```

## Instalación

```bash
npm install
npm run setup
npm start
```

En hosting, mantén `.env` fuera de Git y asegúrate de que `database/` y `thumbnails/` sean escribibles.
