# Personal Admin 2026 Dashboard personal para seguimiento de cotizaciones (USD/BNA, USD/Blue, USDC/ARS-Belo) con actualizaciones en tiempo real. ## Stack | Capa | Tecnología | |------|-----------| | **Runtime** | [Bun](https://bun.sh) | | **Backend** | [Hono](https://hono.dev/) + TypeScript | | **Frontend** | [React 19](https://react.dev/) + [Vite](https://vitejs.dev/) | | **Routing** | [TanStack Router](https://tanstack.com/router) (file-based) | | **Data Fetching** | [TanStack Query](https://tanstack.com/query) | | **Estilos** | [Tailwind CSS v4](https://tailwindcss.com/) + [shadcn/ui](https://ui.shadcn.com/) | | **Base de datos** | PostgreSQL + [Prisma ORM](https://www.prisma.io/) | | **Tiempo real** | Server-Sent Events (SSE) | | **Contenedor** | Docker (multi-stage build) | ## Estructura ``` ├── apps/ │ ├── backend/ # API server (Hono) + cron jobs │ │ └── src/modules/quotes/ # Módulo de cotizaciones │ │ ├── bna.service.ts # USD oficial (dolarito.ar) │ │ ├── blue.service.ts # USD blue (dolarito.ar) │ │ └── belo.service.ts # USDC/ARS Belo (criptoya.com) │ └── frontend/ # SPA React con TanStack Router │ └── src/ │ ├── routes/ # Páginas (file-based routing) │ ├── features/ # Componentes de cada feature │ ├── components/ui/ # shadcn/ui components │ └── lib/ # Hooks, API client, utils ├── packages/ │ └── common/ # Tipos y utilidades compartidas └── Dockerfile # Multi-stage build ``` ## Requisitos - [Bun](https://bun.sh) >= 1.x - PostgreSQL (local o remota) ## Setup local ```bash # Instalar dependencias bun install # Configurar base de datos cp apps/backend/.env apps/backend/.env.local # Editar DATABASE_URL en .env.local # Generar Prisma client bun run --cwd apps/backend prisma:generate # Correr migraciones bun run --cwd apps/backend prisma:migrate # Iniciar dev (backend + frontend simultáneamente) bun run dev ``` El backend corre en `http://localhost:3000` y el frontend en `http://localhost:5173` (con proxy a `/api` → `:3000`). ## Scripts ### Root | Comando | Descripción | |---------|-------------| | `bun run dev` | Inicia backend y frontend en paralelo | | `bun run build` | Build de frontend | ### Backend (`apps/backend`) | Comando | Descripción | |---------|-------------| | `bun run dev` | Dev con watch | | `bun run prisma:generate` | Generar Prisma client | | `bun run prisma:migrate` | Migraciones de desarrollo | | `bun run prisma:migrate:deploy` | Migraciones en producción | | `bun run prisma:studio` | Prisma Studio (GUI DB) | ### Frontend (`apps/frontend`) | Comando | Descripción | |---------|-------------| | `bun run dev` | Vite dev server con HMR | | `bun run build` | Build a `../backend/web/` | | `bun run typecheck` | TypeScript type check | ## API Todas las rutas bajo `/api/quotes`: | Ruta | Descripción | |------|-------------| | `GET /api/quotes` | Cotizaciones actuales | | `GET /api/quotes/events` | SSE — actualizaciones en vivo | | `GET /api/quotes/fetch` | Forzar actualización manual | | `GET /api/quotes/:type/history` | Historial paginado | | `GET /api/quotes/:type/daily` | Agregados diarios | | `GET /api/quotes/:type/min-max` | Mínimo y máximo diario | Tipos: `belo`, `blue`, `bna` ## Docker ```bash docker build -t personal-admin-2026 . docker run -p 3000:3000 \ -e DATABASE_URL=postgres://user:pass@host:5432/personal-admin-2026 \ personal-admin-2026 ``` El entrypoint corre las migraciones automáticamente (con reintentos) antes de iniciar el server. ## Tasks periódicas Un cron job ejecuta cada 10 minutos la consulta de las 3 cotizaciones desde fuentes externas y las persiste en la DB. Las actualizaciones se notifican a los clientes conectados via SSE.