README: reemplaza boilerplate Astro con doc real del proyecto

This commit is contained in:
2026-08-23 11:27:13 -07:00
parent b2bc5f8d1b
commit 1ce1343882
+87 -31
View File
@@ -1,46 +1,102 @@
# Astro Starter Kit: Basics # LabRe — Sistema de Préstamos LSC UABC
Aplicación web para gestionar préstamos de material del Laboratorio de Sistemas Computacionales (Facultad de Ingeniería, UABC). Modela el vale físico multi-ítem: un trámite agrupa varios materiales, cada renglón con cantidad y descripción.
**Producción**: https://prestamos.buglabs.dev · **Login**: exclusivo Google con correo `@uabc.edu.mx`
## Roles
- **Alumno**: navega el catálogo con búsqueda por texto y filtro por categoría, arma un vale multi-ítem, consulta el estado de sus préstamos.
- **Admin**: aprueba/rechaza/marca devoluciones, gestiona inventario (grid con fotos), rastrea equipos por unidad individual (laptops, proyectores), reasigna unidades entre préstamos, consulta estadísticas con gráficas y exporta reportes CSV.
## Stack
- **Frontend**: Astro 7 (SSR, `output: 'server'`) + React 19 islands + Tailwind v4 (tokens en `src/styles/global.css`)
- **Backend**: Supabase self-hosted (Postgres 15, GoTrue, PostgREST, Storage, Realtime)
- **Aislamiento**: schema Postgres propio `prestamos` (coexiste con otras apps en la misma instancia)
- **Auth**: Google OAuth restringido a `@uabc.edu.mx` (verificación a nivel aplicación en middleware)
- **Gráficas**: recharts
- **Hosting**: Docker + adaptador `@astrojs/node` detrás de Cloudflare Tunnel
- **CI/deploy**: git + `docker compose up -d --build` en el homelab
## Requisitos
- Node 22.12+
- Acceso a una instancia de Supabase con el schema `prestamos` (ver migraciones)
- Cuenta Google `@uabc.edu.mx` para probar el flujo
## Setup local
```sh ```sh
npm create astro@latest -- --template basics cp .env.example .env # llenar PUBLIC_SUPABASE_URL, PUBLIC_SUPABASE_ANON_KEY, SUPABASE_SERVICE_ROLE_KEY, PUBLIC_APP_URL
npm install
npm run dev # http://localhost:4321
``` ```
> 🧑‍🚀 **Seasoned astronaut?** Delete this file. Have fun! Antes del primer login, aplica las migraciones y promuévete a admin manualmente:
## 🚀 Project Structure ```sql
update prestamos.profiles set rol = 'admin' where email = 'tu-correo@uabc.edu.mx';
```
Inside of your Astro project, you'll see the following folders and files: ## Base de datos
Migraciones en `supabase/migrations/`, aplican con `psql -f <archivo>` contra la instancia. Cada migración es idempotente (usa `if not exists`, `drop policy if exists`, etc.) y trae su propio `BEGIN`/`COMMIT`.
- `0001_init.sql` — schema, tablas base, RLS, triggers, seed.
- `0002_solicitudes_multi_item.sql` — rediseño a "1 vale = N renglones", RPC `crear_solicitud`.
- `0003_grid_unidades_realtime.sql` — imagen del material, unidades individuales, RPC `reasignar_unidad`, publication realtime, bucket público `materiales-fotos`.
## Estructura
```text ```text
/ src/
├── public/ ├── layouts/
│ └── favicon.svg │ └── AppLayout.astro # sidebar desktop + dock móvil + toaster + badge realtime
├── src ├── lib/
   ├── assets ├── supabase.ts # server/browser clients (schema 'prestamos')
   │   └── astro.svg ├── date.ts # todayMX() con Intl + DST correcto
   ├── components └── materialImg.ts # URL pública del bucket
│   │   └── Welcome.astro ├── middleware.ts # auth + dominio + verificación de rol
│   ├── layouts ├── pages/
   │   └── Layout.astro ├── login.astro
   └── pages ├── alumno/
   ── index.astro ── catalogo.astro # grid + filtro categorías + buscador
└── package.json │ │ └── mis-prestamos.astro
│ ├── admin/
│ │ ├── index.astro # panel con KPIs
│ │ ├── solicitudes/ # bandeja, activos, historial
│ │ ├── inventario/ # grid CRUD + categorías
│ │ ├── estadisticas.astro # 6 KPIs + 3 gráficas recharts
│ │ └── reportes.astro # filtros + export CSV
│ └── api/ # endpoints REST (guardados por middleware)
├── components/
│ ├── alumno/ # SolicitudCart, AgregarMaterial, FiltroCategorias, BuscadorCatalogo
│ ├── admin/ # solicitudes, inventario (MaterialForm, UnidadesManager), estadisticas (Chart), BadgeSolicitudes
│ └── Toaster.tsx # notificaciones globales estilo Sileo
└── styles/global.css # tokens paleta UABC + sistema neobrutalista
``` ```
To learn more about the folder structure of an Astro project, refer to [our guide on project structure](https://docs.astro.build/en/basics/project-structure/). ## Deploy
## 🧞 Commands Ver `deploy/README.md` para el detalle. Flujo resumido:
All commands are run from the root of the project, from a terminal: ```sh
git push
ssh buglabs 'cd ~/labre-web && git pull && docker compose up -d --build'
```
| Command | Action | ## Comandos
| :------------------------ | :----------------------------------------------- |
| `npm install` | Installs dependencies |
| `npm run dev` | Starts local dev server at `localhost:4321` |
| `npm run build` | Build your production site to `./dist/` |
| `npm run preview` | Preview your build locally, before deploying |
| `npm run astro ...` | Run CLI commands like `astro add`, `astro check` |
| `npm run astro -- --help` | Get help using the Astro CLI |
## 👀 Want to learn more? | Comando | Acción |
| :---------------- | :-------------------------------------------- |
| `npm install` | Instala dependencias |
| `npm run dev` | Dev server en `localhost:4321` |
| `npm run build` | Compila a `./dist/` (SSR bundle) |
| `npm run preview` | Preview del build |
Feel free to check [our documentation](https://docs.astro.build) or jump into our [Discord server](https://astro.build/chat). ## Documentación interna
- `AGENTS.md` — decisiones de arquitectura, bitácora de sesiones, backlog. Fuente única de verdad del progreso.
- `DESIGN.md` — sistema de diseño (paleta UABC, tipografía, sombra dura, Text-on-Fill Rule).
- `PRODUCT.md` — visión de producto y brand commitments.