¡Bienvenido a Datodo!
Una plataforma interactiva y gamificada para aprender estructuras de datos desde cero, con simulaciones visuales, cuestionarios y seguimiento de progreso.
- Descripción
- Características
- Capturas de Pantalla
- Arquitectura
- Tecnologías
- Instalación y Configuración
- Uso
- Estructura del Proyecto
- Contribuir
- Licencia
Datodo es una plataforma educativa que combina teoría, práctica y gamificación para que estudiantes y desarrolladores dominen las estructuras de datos de manera divertida y efectiva. Incluye simuladores visuales, cuestionarios, seguimiento de progreso y un sistema de logros.
- Autenticación segura: Registro, login, refresh y roles (estudiante, profesor, admin) usando JWT.
- Visualización interactiva: Simuladores visuales para estructuras de datos (listas, árboles, grafos, etc).
- Gamificación: Sistema de logros, niveles, XP y seguimiento de progreso.
- Cuestionarios y desafíos: Preguntas interactivas y desafíos prácticos.
- Panel de administración: Gestión de contenidos, estructuras y cuestionarios para profesores y admins.
- UI moderna y responsiva: Basada en Tailwind CSS y componentes reutilizables.
- Notificaciones y feedback: Sistema de notificaciones y toasts para mejorar la experiencia de usuario.
El proyecto está dividido en dos partes principales:
- Backend: API REST construida con NestJS y Prisma ORM, conectada a una base de datos MySQL.
- Frontend: Aplicación web construida con Next.js y React, usando Tailwind CSS para estilos.
La comunicación entre frontend y backend se realiza mediante HTTP (REST API) y autenticación JWT.
datodo/
│
├── backend/ # API, lógica de negocio, base de datos
└── frontend/ # Aplicación web, UI, lógica de cliente
- Frontend: Next.js, React, TypeScript, Tailwind CSS, shadcn/ui
- Backend: NestJS, Prisma ORM, MySQL
- Autenticación: JWT (Access y Refresh tokens)
- DevOps: Docker, Vercel/Netlify (deploy)
- Calidad: ESLint, Prettier
- Node.js >= 18.x
- npm o pnpm
- MySQL >= 8.x
- Docker (opcional, para desarrollo local)
- Git
-
Clona el repositorio y entra a la carpeta
backend:git clone https://github.com/tuusuario/datodo.git cd datodo/backend -
Instala dependencias:
npm install
-
Copia el archivo de entorno y configura tus variables:
cp .env.example .env # Edita .env con tus credenciales de MySQL y JWT_SECRET -
Ejecuta las migraciones y siembra la base de datos:
npx prisma migrate dev npx prisma db seed
-
Inicia el servidor de desarrollo:
npm run start:dev
El backend estará disponible en http://localhost:3001 (o el puerto configurado).
-
En una terminal separada, entra a la carpeta
frontend:cd ../frontend -
Instala dependencias:
npm install
-
Copia el archivo de entorno y configura la URL del backend:
cp .env.example .env.local # Edita .env.local y pon la URL del backend, por ejemplo: # NEXT_PUBLIC_API_URL=http://localhost:3001
-
Inicia el servidor de desarrollo:
npm run dev
La app estará disponible en http://localhost:3000.
- Regístrate como estudiante, profesor o admin.
- Explora las estructuras de datos, visualiza simulaciones y completa cuestionarios.
- Gana XP, desbloquea logros y sigue tu progreso en el perfil.
- Los profesores pueden crear y editar contenido y cuestionarios desde el panel de administración.
datodo/
│
├── backend/
│ ├── src/
│ │ ├── auth/ # Módulo de autenticación y roles
│ │ ├── data-structures # Lógica de estructuras de datos y simuladores
│ │ ├── users/ # Gestión de usuarios
│ │ └── prisma/ # Servicio de acceso a base de datos
│ └── prisma/ # Esquema y migraciones de base de datos
│
└── frontend/
├── app/ # Rutas y páginas Next.js
├── components/ # Componentes reutilizables de UI
├── contexts/ # Contextos globales (auth, notificaciones)
├── hooks/ # Custom hooks
├── lib/ # Utilidades y lógica compartida
└── public/ # Imágenes y recursos estáticos
¡Las contribuciones son bienvenidas!
- Haz fork del repositorio.
- Crea una rama de características (
feature/nueva-funcionalidad). - Realiza tus cambios y pruebas.
- Envía un pull request describiendo tus cambios.
Por favor, sigue las buenas prácticas de código y asegúrate de que los tests pasen antes de enviar tu PR.
Este proyecto es parte de la Plataforma de Aprendizaje de Estructuras de Datos.
Licencia: MIT
¿Dudas o sugerencias? ¡Abre un issue o contáctanos!