Repositorio: https://github.com/Diegoza04/Products-and-users-Svelte.git
Aplicacion fullstack con:
git clone https://github.com/Diegoza04/Products-and-users-Svelte.git
cd Products-and-users-Svelte.git
Entrar a server/ y crear archivo .env:
PORT=3000
MONGO_URI=mongodb://127.0.0.1:27017/practica1
JWT_SECRET=tu_clave_jwt
Instalar y ejecutar backend:
cd server
npm install
npm run dev
En otra terminal:
cd client
npm install
npm run dev
Frontend: http://localhost:5173
client/
src/
components/
pages/
services/
state/
server/
routes/
models/
middleware/
Se usa para estado reactivo local y global.
client/src/state/appState.svelte.js: token, usuario, ruta actual, productos, errores/mensajes globales.client/src/pages/LoginPage.svelte: formulario y estado de carga/error.client/src/pages/ProductsPage.svelte: filtros, modal, formulario de producto, carga.client/src/pages/AdminUsersPage.svelte: listado, formularios y estado de guardado/carga.client/src/components/ProductForm.svelte: campos del formulario.Se usa para valores derivados del estado.
client/src/App.svelte: displayName, isAuthed, isAdmin.client/src/pages/ProductsPage.svelte: filteredProducts, productCount, permisos por rol.client/src/pages/AdminUsersPage.svelte: contador de usuarios.client/src/components/ProductCard.svelte: texto de estado activo/no activo.client/src/pages/ProfilePage.svelte: rol y preview del token.Se usa para side effects y sincronizacion.
client/src/App.svelte:client/src/pages/ProductsPage.svelte: recargar productos cuando cambian rol/filtros clave.client/src/pages/AdminUsersPage.svelte: cargar usuarios cuando entra admin.client/src/components/ProductForm.svelte: sincronizar formulario al editar/crear.Se usa para props en componentes reutilizables.
client/src/components/NavBar.svelteclient/src/components/ProductCard.svelteclient/src/components/ProductForm.svelteclient/src/pages/LoginPage.svelteclient/src/pages/ProfilePage.sveltePOST /api/auth/login (publico)POST /api/auth/register (publico)GET /api/products (publico)POST /api/products (admin)PUT /api/products/:id (admin)DELETE /api/products/:id (admin)GET /api/admin/usersPOST /api/admin/usersPUT /api/admin/users/:id (cambio de rol)DELETE /api/admin/users/:idGET /api/admin/ordersGET /api/admin/orders/:statususer: acceso a login, perfil y vista de productos.admin: ademas de lo anterior, puede crear/editar/borrar productos y gestionar usuarios.client/package.json)npm run devnpm run buildnpm run lintserver/package.json)npm run devnpm startPara probar todo el flujo de la practica, el backend debe estar levantado junto con MongoDB. Si MongoDB no esta disponible, el frontend abre pero las llamadas API fallan.