Web y panel de Ardit Derjaj, fotógrafo de bodas, eventos, producto e interiores en Padua: galerías en italiano y en inglés, presupuestos que el cliente firma en línea, entregas de fotos con un enlace privado y el ZIP, y un panel cómodo desde el móvil, que se instala como una app.
Ardit Derjaj es fotógrafo en Padua: bodas, eventos, producto, interiores e industria. Ya tenía una web: la reuní en un solo repositorio y luego la rehice pieza por pieza, y el panel desde cero, para que Ardit lo usara de verdad, también desde el móvil.
**Qué hace**
- **Las galerías**: seis, con 133 fotos publicadas, en italiano y en inglés. A cada foto subida se le quitan los datos ocultos (la ubicación GPS, el número de serie de la cámara) sin volver a comprimirla, y el servidor prepara sus versiones ligeras en WebP. - **Los presupuestos**: Ardit los compone a partir de sus tarifas; el cliente los abre desde un enlace, los firma en la pantalla y descarga el PDF, con la señal y el IBAN si hacen falta. - **Las entregas**: un enlace privado con PIN, las favoritas elegidas por el cliente y «Descargar todas en ZIP». - **Las solicitudes** del formulario de contacto, las reseñas y las colaboraciones. - **Las estadísticas de visitas**, con el mapa del mundo y las direcciones IP guardadas solo como huella. - **Los avisos por correo**: el certificado HTTPS que caduca, el disco que se llena, la base de datos parada.
**El panel** está reescrito desde cero y se instala en el móvil como una app: cinco apartados, una búsqueda en los ajustes que tolera las erratas y resalta el campo encontrado, y descripciones de las fotos propuestas por Claude, que Ardit revisa antes de guardarlas, con un tope de gasto al mes.
**La parte difícil** es el ZIP de las entregas: cientos de fotos en alta resolución, enviadas mientras el archivo se escribe, sin un fichero temporal en el servidor. El servidor calcula antes su peso exacto, para que el navegador muestre cuánto falta, y por encima de 4 GB pasa al formato ZIP64: lo probé con un archivo real de 5 GB.
Vue 3, Tailwind CSS y Express con MongoDB; cada cambio pasa 150 pruebas automáticas y se publica solo con una GitHub Action, una versión por carpeta, y si el control después de la publicación falla, el servidor vuelve a la versión anterior.
Diseño, desarrollo full-stack y publicación · Ardit Derjaj · 2026
Vue.js, Express, MongoDB, Tailwind CSS, Claude