Stack moderno, abierto y orientado a la productividad del equipo.
HTML semántico + CSS custom properties + JavaScript vanilla. Sin frameworks para mantener el bundle por debajo de 50 KB.
API REST con Express.js, autenticación JWT y middleware de logging. Desplegado en Railway con auto-deploy desde main.
// Endpoint: obtener tareas de un proyecto router.get('/projects/:id/tasks', verifyToken, async (req, res) => { try { const tasks = await db.query( `SELECT t.*, u.name AS assignee FROM tasks t LEFT JOIN users u ON t.assignee_id = u.id WHERE t.project_id = ? ORDER BY t.priority DESC`, [req.params.id] ); res.json({ ok: true, data: tasks }); } catch (err) { res.status(500).json({ ok: false, msg: err.message }); } });