Agentero
에이전트를 연결해 로컬 Vault에 연구 컨텍스트를 보관·Zotero에서 무결점 이동·읽고 이해·재활용
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Trabajo final colaborativo — Programación distribuida.
Aplicación web para gestionar tareas personales: registro e inicio de sesión de usuarios, creación, edición, marcado como completadas y eliminación de tareas, organización por categorías y fecha de vencimiento opcional.
App publicada: https://gestor-tareas-omega-bice.vercel.app · Base de datos: MongoDB Atlas
| Documento | Contenido |
|---|---|
| 1. Planificación y diseño | Requisitos, arquitectura, diagramas de flujo y de secuencia, diseño de la base de datos, estructura de carpetas, decisiones de diseño y rendimiento |
| 2. Pruebas | 34 pruebas automatizadas, pruebas manuales de la interfaz, pruebas de despliegue, integración continua y problemas resueltos |
| 3. División de tareas | Responsables por área (3 integrantes), plan por etapas, flujo de trabajo con Git y comunicación |
| 4. Sustentación, ética y privacidad | Guion de la presentación, demostración en vivo, preguntas probables y medidas de privacidad |
El código está documentado con comentarios JSDoc (@param, @returns, @example) en el backend (src/) y en el frontend (public/js/).
| Capa | Tecnología |
|---|---|
| Entorno de ejecución | Node.js (≥ 18) |
| Framework web | Express.js |
| Base de datos | MongoDB |
| Modelado (ODM) | Mongoose |
| Seguridad | bcryptjs (hash de contraseñas), JSON Web Tokens (sesiones) |
| Interfaz | HTML, CSS y JavaScript (sin frameworks) |
gestor-tareas/
├── src/
│ ├── app.js # Aplicación Express: rutas, conexión a la BD, manejo de errores
│ ├── server.js # Arranque local (npm start)
│ ├── config/db.js # Conexión a MongoDB
│ ├── models/
│ │ ├── User.js # Usuario (hash de contraseña con bcrypt)
│ │ └── Task.js # Tarea (pertenece a un usuario)
│ ├── middleware/auth.js # Verificación del token JWT
│ └── routes/
│ ├── auth.js # Registro, login, usuario actual
│ └── tasks.js # CRUD de tareas y categorías
├── public/ # Frontend servido por Express
│ ├── index.html
│ ├── css/styles.css
│ └── js/
│ ├── api.js # Cliente de la API (fetch)
│ └── app.js # Lógica de la interfaz
├── scripts/
│ └── probar-conexion.js # npm run probar-db: verifica la conexión a MongoDB
├── test/ # Pruebas automatizadas (npm test)
├── docs/ # Documentación del proyecto
├── .github/workflows/ # Integración continua (GitHub Actions)
├── api/index.js # Entrada para Vercel (función serverless)
├── vercel.json # Configuración de rutas en Vercel
├── .env.example
└── package.json
npm install
.env.example como .env y cambiar JWT_SECRET por una cadena larga y aleatoria. Si usas Atlas, reemplaza MONGODB_URI por tu cadena de conexión.npm start
o, en desarrollo (se reinicia al guardar cambios):
npm run dev
gestor_tareas_test):
npm test
0.0.0.0/0 (cualquier IP), pero no lo dejes así en producción.mongodb+srv://.....env, reemplaza MONGODB_URI por esa cadena y pon tu contraseña donde dice <db_password>. Si la contraseña tiene caracteres como @ : / # %, codifícalos (por ejemplo @ → %40).npm run probar-db
Si algo falla, el script muestra una sugerencia (IP no autorizada, contraseña incorrecta, URI mal copiada…).
En algunos Windows, Node no logra resolver las direcciones mongodb+srv:// con el DNS del sistema (querySrv ECONNREFUSED); la app lo detecta y reintenta automáticamente con DNS públicos (8.8.8.8 y 1.1.1.1).npm start. Las colecciones users y tasks se crean solas en la base gestor_tareas (configurable con DB_NAME) al registrar el primer usuario.La app ya está preparada para Vercel:
api/index.js expone la aplicación Express como función serverless; vercel.json envía todas las rutas /api/* a esa función.public/ (HTML, CSS, JS) se sirven como sitio estático.src/config/db.js)..vercelignore evita subir el .env y node_modules.Pasos:
0.0.0.0/0). Vercel no tiene una IP fija, así que Atlas debe aceptar conexiones desde cualquier IP (la contraseña de la base sigue protegiéndola).gestor-tareas, inicia sesión en Vercel (se abre el navegador):
npx vercel login
npx vercel
MONGODB_URI, JWT_SECRET, DB_NAME y JWT_EXPIRES_IN. Puedes copiar el contenido de tu .env y pegarlo en el campo Key: Vercel separa las variables automáticamente.npx vercel --prod
Vercel muestra la URL pública (algo como https://gestor-tareas-xxxx.vercel.app).
El proyecto de Vercel está conectado al repositorio https://github.com/Luis1052948713/gestor-tareas:
git push a la rama main publica automáticamente una nueva versión en producción.npm test); si fallan, el commit aparece con ❌ en GitHub.N nueva tarea, / buscar, Esc cerrar o salir del campo.Todas las rutas de /api/tareas requieren el encabezado Authorization: Bearer <token>, que se obtiene al registrarse o iniciar sesión.
| Método | Ruta | Descripción |
|---|---|---|
| POST | /api/auth/registro | Crea un usuario. Cuerpo: { nombre, email, password } |
| POST | /api/auth/login | Inicia sesión. Cuerpo: { email, password } |
| GET | /api/auth/yo | Devuelve el usuario de la sesión actual |
Ambas respuestas de registro/login devuelven { token, usuario }.
| Método | Ruta | Descripción |
|---|---|---|
| GET | /api/tareas | Lista las tareas del usuario. Filtros opcionales: ?categoria=X&estado=pendientes|completadas |
| GET | /api/tareas/categorias | Categorías del usuario con total y pendientes |
| POST | /api/tareas | Crea una tarea. Cuerpo: { titulo, descripcion?, categoria?, fechaVencimiento? } |
| PUT | /api/tareas/:id | Edita título, descripción, categoría, fecha o estado |
| PATCH | /api/tareas/:id/completar | Marca como completada/pendiente. Cuerpo: { completada: true|false } |
| DELETE | /api/tareas/:id | Elimina la tarea |
User: nombre, email (único), password (hash bcrypt, nunca se devuelve en consultas), createdAt, updatedAt.
Task: titulo, descripcion, categoria (por defecto "General"), fechaVencimiento (opcional), completada, usuario (referencia a User), createdAt, updatedAt.
textContent/createElement, de modo que el texto ingresado por usuarios no se ejecuta como código (protección contra XSS).express-rate-limit).httpOnly en lugar de localStorage.