Este documento es vuestra hoja de ruta. Tenéis que construir una aplicación web funcional. Recordad: la próxima semana, otros compañeros intentarán encontrar fallos de seguridad en vuestro código. ¡Construid con cuidado!
Enviar un enlace de tu repositorio público a daniel@secur0.com.
Estas ideas están diseñadas para ser completadas en el tiempo previsto usando un stack sencillo (HTML/JS/Node o Python/Flask o PHP).
| Proyecto | Descripción Core |
|---|---|
| Gestor de Notas Privadas | Un usuario se registra, inicia sesión y escribe notas que solo él puede ver. |
| Foro de Mensajes | Un usuario se registra, inicia sesión y puede publicar mensajes en un muro público donde cualquiera puede verlos. |
| Mini-Tienda | Un usuario se registra, inicia sesión y puede visualizar, comprar y vender productos. |
| Sistema de Subida de CVs | Un usuario se registra, inicia sesión y puede subir un archivo .pdf con su currículum que se almacenará en el servidor. |
Tenéis los requisitos detallados en el archivo requisitos.md.
2. Requisitos de Despliegue (Mínimos)
Para que vuestra app sea evaluable, debe cumplir esta estructura básica:
- Base de Datos: Podéis usar SQLite o JSON (un archivo local, lo más rápido).
- Usuarios: Debe haber al menos una tabla de usuarios con contraseñas (¡pensad si las guardáis en texto plano o con hash!).
Debéis desplegar vuestra aplicación en un contenedor Docker. También podéis elegir desplegarla en un PaaS como Railway.app o Render.com (conectando vuestro repo de GitHub).
3. Ejemplo de Arquitectura Sugerida
Si no sabéis por dónde empezar, usad este esquema estándar:
Frontend: HTML5 + CSS (Framework como Pico.css o Bootstrap para no perder tiempo en diseño).
Backend: Express.js (Node) o Flask (Python).
Persistencia: Archivo JSON o SQLite.
4. Checklist de "Supervivencia"
Antes de entregar, aseguraos de que vuestra app no cae ante lo más básico:
- Validación: ¿Qué pasa si envío un formulario vacío?
- Autenticación: ¿Puedo acceder a una ruta simplemente escribiendo la URL sin loguearme?
- Reducción: ¿Mando únicamente la información necesaria o toda la disponible?
- Control de Errores: Si algo falla, ¿la app muestra el error feo del servidor con rutas de carpetas o un mensaje amigable?
5. Herramientas Útiles
- Para el desarrollo: Visual Studio Code + Extensiones de lenguaje.
- Para bases de datos: DBeaver para visualizar vuestras tablas fácilmente.