Actualizar README.md

This commit is contained in:
2025-07-17 18:35:41 +00:00
parent aadd0b218b
commit 681809387e

150
README.md
View File

@@ -1,3 +1,149 @@
# Mercados-Web
---
API y Worker para la recolección y exposición de datos de mercados financieros.
# Proyecto de Widgets de Mercados Financieros
Este repositorio contiene la solución completa para la recolección, almacenamiento y visualización de datos de mercados financieros. La arquitectura está diseñada para ser robusta, escalable y fácil de mantener, separando las responsabilidades en un backend de .NET, un worker de fondo, y un frontend de React basado en widgets.
---
## 🚀 Arquitectura General
El sistema se compone de los siguientes elementos principales:
1. **Backend (`Mercados.Api`):** Una API web de .NET 8 que expone los datos almacenados en la base de datos a través de endpoints RESTful.
2. **Worker Service (`Mercados.Worker`):** Un servicio de fondo de .NET 8 responsable de obtener los datos de fuentes externas (`Finnhub`, `Bolsa de Comercio de Rosario`, `Yahoo Finance` y scraping) de forma programada, procesarlos y guardarlos en la base de datos.
3. **Frontend (`frontend/`):** Una aplicación de React (construida con Vite + TypeScript) que proporciona un conjunto de "widgets" modulares y portátiles para visualizar los datos.
4. **Base de Datos (`Mercados.Database`):** Utiliza SQL Server para la persistencia de los datos. El esquema es gestionado a través de migraciones con **FluentMigrator**.
5. **Documentación (`docs/`):** Un portal de documentación unificado generado con **DocFX**, **TypeDoc** y **Storybook**.
---
## 🛠️ Configuración del Entorno de Desarrollo
Para ejecutar este proyecto en un entorno local, necesitarás tener instalado:
- **.NET 9 SDK**
- **Node.js** (v20 o superior) y npm
- **SQL Server** (Developer o Express Edition)
- **Docker y Docker Compose** (Opcional, para simular el entorno de producción)
- **DocFX Command Line Tool** (Instalar con: `dotnet tool install -g docfx`)
### Pasos de Configuración Inicial:
1. **Clonar el Repositorio:**
```bash
git clone [URL_DE_TU_REPOSITORIO_GITEA]
cd [NOMBRE_DE_LA_CARPETA]
```
2. **Configurar Secretos del Backend:**
Este proyecto utiliza "User Secrets" para manejar información sensible en desarrollo. Configúralos desde la raíz del repositorio:
```bash
# Habilitar secretos para la API y el Worker
dotnet user-secrets init --project src/Mercados.Api
dotnet user-secrets init --project src/Mercados.Worker
# Establecer los valores (reemplaza con tus datos)
dotnet user-secrets set "ConnectionStrings:DefaultConnection" "Server=...;Database=..." --project src/Mercados.Api
dotnet user-secrets set "ApiKeys:Finnhub" "tu_api_key" --project src/Mercados.Api
# ...añadir el resto de las claves para ApiKeys y SmtpSettings
# Repite el proceso para el Worker
dotnet user-secrets set "ConnectionStrings:DefaultConnection" "..." --project src/Mercados.Worker
# ...
```
3. **Instalar Dependencias del Frontend:**
```bash
cd frontend
npm install
cd ..
```
4. **Crear y Migrar la Base de Datos:**
Simplemente ejecuta la API una vez. La primera vez que se inicie, FluentMigrator creará la base de datos `MercadosDb` y aplicará todas las migraciones necesarias.
```bash
dotnet run --project src/Mercados.Api
```
Puedes detenerla con `Ctrl+C` una vez que veas el mensaje "Application started".
---
## 🏃 Cómo Ejecutar el Proyecto
Para trabajar en el proyecto, necesitarás ejecutar los 3 servicios principales en terminales separadas.
1. **Iniciar el Backend API:**
```bash
dotnet run --project src/Mercados.Api
```
*La API estará disponible (por defecto) en `http://localhost:5045`.*
2. **Iniciar el Worker Service:**
```bash
dotnet run --project src/Mercados.Worker
```
*El worker comenzará a obtener datos según los horarios definidos en `appsettings.json`.*
3. **Iniciar el Frontend (Servidor de Desarrollo):**
```bash
cd frontend
npm run dev
```
*La aplicación de React estará disponible en `http://localhost:5173`.*
---
## 📚 Documentación
Este proyecto incluye un portal de documentación unificado que cubre tanto el backend como el frontend.
### Para Generar la Documentación:
1. **Compilar el Backend:**
```bash
# Desde la raíz
dotnet build
```
2. **Generar la documentación TypeScript:**
```bash
# Desde la carpeta /frontend
npm run doc:ts
```
3. **Construir el sitio DocFX:**
```bash
# Desde la raíz, usando el archivo de configuración en /docs
docfx docs/docfx.json
```
4. **Visualizar la documentación:**
```bash
# Desde la raíz
docfx serve docs/_site
```
*Abre tu navegador en `http://localhost:8080`.*
### Para ver la Librería de Componentes Visuales (Storybook):
```bash
# Desde la carpeta /frontend
npm run storybook
```
*Abre tu navegador en `http://localhost:6006`.*
---
## 🐳 Despliegue en Producción (Docker)
El despliegue está diseñado para ser realizado con Docker y Docker Compose.
1. **Construir las imágenes de Docker:**
```bash
# Desde la raíz del proyecto
docker compose build
```
2. **Lanzar el stack de servicios:**
Asegúrate de tener el archivo `.env` configurado en el servidor de producción antes de ejecutar.
```bash
docker compose up -d
```
El `docker-compose.yml` está configurado para conectarse a una red externa `shared-net` para la base de datos y para ser gestionado por un proxy inverso externo como Nginx Proxy Manager.