Una aplicación web moderna de To-Do list con frontend HTML/JavaScript y backend TypeScript + Redis.
Redis es una base de datos en memoria ultra rápida. En este proyecto se usa para:
- Almacenar tareas de forma rápida y confiable
- Cache: Los datos están en RAM (acceso instantáneo)
- Persistencia: Guarda automáticamente en disco para recuperar datos si se reinicia
| Aspecto | Redis | MySQL/PostgreSQL |
|---|---|---|
| Velocidad | ⚡ Muy rápida (en memoria) | Normal (en disco) |
| Persistencia | ✅ Sí (AOF) | ✅ Sí |
| Ideal para | Cache, sesiones, datos frecuentes | Datos complejos, ACID |
- Node.js 16+
- Docker y Docker Compose (para Redis)
- npm o yarn
npm installnpm run redis-upEste comando ejecuta:
docker-compose up -dVerificar que Redis está corriendo:
npm run redis-logsSi tu backend corre en la misma red de Docker que Redis, usa el nombre del contenedor:
REDIS_HOST=redis-to-do-list npm run devSi el backend corre en tu PC fuera de Docker, normalmente debes usar localhost en vez del nombre del contenedor.
Modo desarrollo (con auto-reload):
npm run devModo producción:
npm starthttp://localhost:3000
├── index.html # Frontend (UI con CSS bonito)
├── index.ts # Backend (Express + Redis)
├── package.json # Dependencias
├── docker-compose.yml # Configuración de Redis
├── tsconfig.json # Configuración de TypeScript
└── README.md # Este archivo
Obtiene todas las tareas
Respuesta:
[
{
"id": "uuid-xxx",
"text": "Hacer la tarea",
"completed": false,
"createdAt": "2024-01-01T10:00:00.000Z"
}
]Crea una nueva tarea
Request:
{
"text": "Nueva tarea"
}Actualiza una tarea (marcar como completada)
Request:
{
"completed": true
}Elimina una tarea
Verifica el estado de la API y Redis
| Comando | Descripción |
|---|---|
npm run dev |
Inicia servidor en modo desarrollo |
npm run redis-up |
Inicia Redis con Docker |
npm run redis-down |
Detiene Redis |
npm run redis-logs |
Ver logs de Redis |
npm run build |
Compila TypeScript a JavaScript |
- Interfaz HTML bonita con estilos CSS
- JavaScript hace peticiones HTTP al backend
- Mostrar, agregar, completar y eliminar tareas
- Express crea un servidor HTTP
- Redis almacena las tareas en
clave: 'tasks' - Las rutas API manejan CRUD (Create, Read, Update, Delete)
- Contenedor Docker corriendo en
localhost:6379 - Guarda datos en memoria + disco
- Se inicia automáticamente con
docker-compose.yml
Frontend (HTML)
↓
API (POST /api/tasks)
↓
Backend (index.ts)
↓
Redis (almacena)
↓
Respuesta al frontend
↓
UI se actualiza
# Verificar que Docker está corriendo
docker ps
# Reiniciar Redis
npm run redis-down
npm run redis-up# Limpiar e instalar nuevamente
rm -rf node_modules package-lock.json
npm install# En Windows
netstat -ano | findstr :3000
# Cambiar puerto en index.ts (línea: const PORT = 3000;)- ✅ Frontend: HTML/CSS/JavaScript moderno
- ✅ Backend: TypeScript con Express
- ✅ Base de datos: Redis (en memoria + persistencia)
- ✅ Containerización: Docker Compose
- ✅ API RESTful: CRUD completo
- ✅ CORS: Habilitado para peticiones cruzadas
- Autenticación de usuarios
- Categorías/Tags en tareas
- Sincronización en tiempo real (WebSockets)
- Exportar tareas (CSV/JSON)
- Deploy en la nube (Heroku, AWS, etc.)
¡Listo! Ahora puedes usar tu To-Do List. 🎉