// mesadecontrol — núcleoimport { Router } from './core/router.js';import { db } from './core/db.js'; const app = new Router({ base: '/api/v2' }); app.get('/clientes/:id', async (req, res) => { const cliente = await db.query( 'SELECT * FROM clientes WHERE id = ?', [req.params.id] ); if (!cliente) return res.status(404).json({ error: 'No encontrado' }); res.json(cliente);}); app.post('/proyectos', auth, async (req, res) => { const { nombre, entrega } = req.body; const id = await db.insert('proyectos', { nombre, entrega }); res.status(201).json({ id });}); /* despliegue */app.listen(8080, () => console.log('✓ servidor listo'));
<section class="panel"> <header class="panel__head"> <h2>Control de proyectos</h2> <button data-action="nuevo">+ Nuevo</button> </header> <table id="tabla-proyectos"></table></section> .panel { display: grid; gap: 24px; }.panel__head { border-bottom: 1px solid #e0262d; }
<?phpnamespace MesaDeControl\Sistemas; final class Respaldo{ public function ejecutar(array $carpetas): int { $ok = 0; foreach ($carpetas as $c) { if ($this->sincronizar($c)) $ok++; } return $ok; }}
</> { } => && ;
mesadecontrol@servidor:~$ git pull origin main Ya está actualizado. mesadecontrol@servidor:~$ npm run build ✓ compilado en 2.41 s mesadecontrol@servidor:~$ ▌