Una aplicación web moderna para cifrar, subir y gestionar archivos de forma segura. Construida con Next.js 15, TypeScript, Tailwind CSS y una API backend para el cifrado AES-256-GCM.
- Autenticación segura con JWT
- Cifrado de archivos con AES-256-GCM
- Interfaz moderna con dark mode
- Gestión completa de archivos (subir, descargar, eliminar)
- Responsive design optimizado para móviles
- Efectos glassmorphism para una UI moderna
- Frontend: Next.js 15, React 19, TypeScript
- Estilos: Tailwind CSS 4
- Iconos: Lucide React
- HTTP Client: Axios
- Autenticación: JWT con localStorage
- Node.js 18+
- npm o yarn
- API Backend funcionando (puerto 8080 por defecto)
-
Clona el repositorio
git clone <tu-repositorio> cd proyecto_teoria_informacion
-
Instala las dependencias
npm install
-
Configura las variables de entorno
Crea un archivo
.env.localen la raíz del proyecto:NEXT_PUBLIC_API_URL=http://localhost:8080
-
Inicia el servidor de desarrollo
npm run dev
-
Abre tu navegador
La aplicación incluye usuarios de prueba:
- Administrador:
admin/admin123 - Usuario:
user/user123
También puedes registrar nuevos usuarios desde la interfaz.
- Subir archivos: Selecciona un archivo y proporciona una contraseña para cifrarlo
- Descargar archivos: Ingresa la contraseña correcta para descifrar y descargar
- Eliminar archivos: Elimina archivos que ya no necesites
- Cada archivo se cifra con una contraseña única
- Las contraseñas no se almacenan en el servidor
- Autenticación JWT con expiración de 24 horas
- Cifrado AES-256-GCM con IV y salt únicos
src/
├── app/ # App Router de Next.js
│ ├── globals.css # Estilos globales y variables CSS
│ ├── layout.tsx # Layout principal
│ └── page.tsx # Página principal
├── components/ # Componentes React
│ ├── ui/ # Componentes UI reutilizables
│ │ ├── Button.tsx # Componente Button
│ │ └── Input.tsx # Componente Input
│ ├── AuthForm.tsx # Formulario de autenticación
│ └── FileManager.tsx # Gestor de archivos
├── contexts/ # Contextos de React
│ └── AuthContext.tsx # Contexto de autenticación
├── services/ # Servicios y API
│ └── api.ts # Cliente API con Axios
└── types/ # Tipos TypeScript
└── api.ts # Tipos para la API
La aplicación utiliza un diseño moderno con:
- Dark mode por defecto
- Gradientes purple/pink para elementos destacados
- Glassmorphism para paneles y tarjetas
- Animaciones suaves y transiciones
- Iconos consistentes de Lucide React
La aplicación se conecta a los siguientes endpoints:
POST /auth/signup- Registro de usuarioPOST /auth/signin- Inicio de sesión
GET /files- Listar archivos del usuarioPOST /files/upload- Subir y cifrar archivoGET /files/download/{id}- Descargar y descifrar archivoDELETE /files/{id}- Eliminar archivo
npm run devnpm run build
npm startAsegúrate de configurar:
NEXT_PUBLIC_API_URL=https://tu-api-backend.com- Fork el proyecto
- Crea una rama para tu feature (
git checkout -b feature/AmazingFeature) - Commit tus cambios (
git commit -m 'Add some AmazingFeature') - Push a la rama (
git push origin feature/AmazingFeature) - Abre un Pull Request
Este proyecto está bajo la Licencia MIT. Ver el archivo LICENSE para más detalles.
- Los archivos tienen un límite de 10MB
- La aplicación requiere JavaScript habilitado
- Compatible con navegadores modernos (Chrome 90+, Firefox 88+, Safari 14+)
Si encuentras algún problema o tienes preguntas:
- Revisa la documentación de la API
- Verifica que el backend esté funcionando
- Comprueba la configuración de variables de entorno
- Abre un issue en el repositorio