Una aplicación moderna de gestión de tareas desarrollada con React y Fastify. Sistema completo para organizar tareas, proyectos, etiquetas y más, con soporte multiidioma y avatares personalizados.
- ✅ Crear, editar, completar y eliminar tareas
- 📅 Fechas de vencimiento con indicadores visuales (rojo para fechas pasadas)
- 🎯 Sistema de prioridades (Baja, Media, Alta, Urgente)
- 🏷️ Etiquetas personalizadas con colores
- 📝 Descripciones y notas
- 🔄 Input rápido para crear tareas rápidamente
- Today: Tareas del día actual
- Inbox: Todas las tareas sin proyecto
- Upcoming: Vista de calendario con próximas tareas (3 días)
- Proyectos: Vista de lista o board (Kanban) por proyecto
- 📑 Secciones dentro de proyectos para mejor organización
- 👤 Información personal editable
- 🎨 Selección de avatar entre 20 opciones pregeneradas
- 🌍 Configuración de idioma (se guarda y restaura automáticamente)
- 🏷️ Gestión completa de etiquetas
- 📁 Gestión de proyectos y secciones
- 📱 Diseño completamente responsive
- 🎨 Paleta de colores consistente
- 🌍 Soporte para 10 idiomas
- 🔔 Sistema de notificaciones (toasts)
- 🎭 Modales con temas claro/oscuro según contexto
- React 19 con TypeScript
- Vite como bundler
- Zustand para gestión de estado
- Wouter para enrutamiento
- Tailwind CSS + HeroUI para estilos
- i18next para internacionalización
- Axios para peticiones HTTP
- Fastify como framework web
- TypeORM para ORM
- PostgreSQL como base de datos
- JWT para autenticación
- bcrypt para hash de contraseñas
- DiceBear para generación de avatares
tilded/
├── frontend/ # Aplicación React
│ ├── src/
│ │ ├── components/ # Componentes reutilizables
│ │ │ ├── avatar/ # Sistema de avatares
│ │ │ ├── calendar/ # Vistas de calendario
│ │ │ ├── projects/ # Componentes de proyectos
│ │ │ ├── sidebar/ # Barra lateral
│ │ │ ├── tasks/ # Componentes de tareas
│ │ │ └── ui/ # Componentes UI base
│ │ ├── pages/ # Páginas principales
│ │ ├── store/ # Estado global (Zustand)
│ │ ├── services/ # Cliente API
│ │ ├── hooks/ # Custom hooks
│ │ ├── contexts/ # React Contexts
│ │ ├── i18n/ # Internacionalización
│ │ └── utils/ # Utilidades
│ └── package.json
├── backend/ # API REST
│ ├── src/
│ │ ├── config/ # Configuración
│ │ ├── entities/ # Entidades TypeORM
│ │ ├── controllers/ # Controladores de rutas
│ │ ├── services/ # Lógica de negocio
│ │ ├── routes/ # Definición de rutas
│ │ ├── plugins/ # Plugins Fastify
│ │ └── utils/ # Utilidades (avatares)
│ ├── docker-compose.yml # PostgreSQL
│ └── package.json
└── README.md
- Node.js 18+ o Bun 1.0+
- PostgreSQL 15+ (o Docker para usar docker-compose)
- Git
Este proyecto usa un único repositorio Git en la raíz. Si necesitas inicializar el repositorio:
# En la raíz del proyecto
git init
git add .
git commit -m "Initial commit"- Clonar el repositorio
git clone <repository-url>
cd to-do-app- Configurar Backend
cd backend
bun installCrea un archivo .env con las siguientes variables:
PORT=8080
DB_HOST=localhost
DB_PORT=5433
DB_USERNAME=postgres
DB_PASSWORD=tu_contraseña
DB_DATABASE=todo_app
JWT_SECRET=tu_secreto_jwt_muy_seguro- Configurar Frontend
cd ../frontend
bun installOpcional: Crea un archivo .env si necesitas cambiar la URL del API:
VITE_API_URL=http://localhost:8080- Iniciar Base de Datos (con Docker)
cd backend
docker-compose up -d- Iniciar Backend
cd backend
bun run dev- Iniciar Frontend
cd frontend
bun run devLa aplicación estará disponible en:
- Frontend: http://localhost:5173
- Backend: http://localhost:8080
bun run dev- Inicia el servidor en modo desarrollo con hot-reloadbun run build- Compila TypeScript a JavaScriptbun run start- Inicia el servidor en modo producción
bun run dev- Inicia el servidor de desarrollo (Vite)bun run build- Compila para producciónbun run preview- Previsualiza el build de producciónbun run lint- Ejecuta ESLint
La aplicación usa una paleta de colores consistente:
- Jet Black:
#2d3142- Color oscuro principal - Blue Slate:
#4f5d75- Color secundario - Coral Glow:
#ef8354- Color primario - Silver:
#bfc0c0- Color neutro - Primary Light:
#f5a882- Variante clara del primario
- 🇪🇸 Español
- 🇬🇧 English
- 🇫🇷 Français
- 🇩🇪 Deutsch
- 🇵🇹 Português
- 🇨🇳 中文
- 🇮🇳 हिन्दी
- 🇸🇦 العربية
- 🇯🇵 日本語
- 🇷🇺 Русский
POST /api/auth/register- Registrar nuevo usuarioPOST /api/auth/login- Iniciar sesión
GET /api/users/me- Obtener usuario actualPATCH /api/users/me- Actualizar usuario (name, avatar, language)
GET /api/tasks- Listar tareas (con filtros opcionales)POST /api/tasks- Crear tareaPATCH /api/tasks/:id- Actualizar tareaDELETE /api/tasks/:id- Eliminar tarea
GET /api/projects- Listar proyectosPOST /api/projects- Crear proyectoPATCH /api/projects/:id- Actualizar proyectoDELETE /api/projects/:id- Eliminar proyecto
Ver Backend README para documentación completa de la API.
- Backend README - Documentación detallada del backend, endpoints y configuración
- Frontend README - Documentación detallada del frontend, componentes y características
Las contribuciones son bienvenidas. Por favor:
- 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 ISC.
Desarrollado por krushodev.
