Página web corporativa para Andecorp, empresa chilena del sector de equipos de construcción. Este proyecto consta de un frontend estático multipágina y un backend en Node.js/Express para manejar funcionalidades dinámicas, como el formulario de contacto y la entrega segura de documentos (certificaciones).
Dominio en vivo: https://www.andecorp.cl
- Estructura: HTML5 Semántico
- Estilos: Vanilla CSS + Bootstrap 5 (Sistema de grillas y utilidades)
- Lógica: Vanilla JavaScript (ES6+)
- Recursos: Google Fonts, Bootstrap Icons
- Entorno: Node.js
- Framework: Express 5
- Autenticación: JWT (
jsonwebtoken) +bcryptjs - Seguridad:
express-rate-limit,express-validator, reCAPTCHA v3 (axios) - Emails:
nodemailer
- Abre una terminal y navega a la carpeta del servidor:
cd server - Instala las dependencias (esto lee el
package.jsone instala todo ennode_modules):npm install
- Crea un archivo
.enven la carpetaserver/basándote en las variables de entorno necesarias (consulta a tu equipo o revisa la configuración en cPanel para los valores correctos). - Inicia el servidor de desarrollo:
El servidor se ejecutará en
node index.js
http://localhost:3000.
- Abre la raíz del proyecto en tu editor de código preferido (ej. VS Code).
- Utiliza una extensión como Live Server para levantar los archivos HTML estáticos.
- El frontend enviará sus peticiones al backend local (CORS está configurado en el servidor para permitir orígenes como
http://127.0.0.1:5500).
index.html,projects.html, etc.: Páginas estáticas principales de navegación.css/: Estilos divididos modularmente (globales y por sección).js/: Lógica del cliente (validaciones de form, carga de proyectos, mapas interactivos).server/: Backend Node.js.index.js: Punto de entrada del servidor API.private-docs/: Directorio protegido. Aquí se almacenan los PDFs de certificación. No son accesibles públicamente por URL directa.
La sección de descarga de certificaciones está protegida de accesos públicos directos. Los archivos PDF residen en el backend (server/private-docs/) y solo se transmiten al cliente a través de endpoints de la API (/api/docs/:filename) tras una validación exitosa de contraseña que otorga un token temporal JWT de 10 minutos.