2025-09-10 15:21:29 -03:00
2025-09-10 15:21:29 -03:00
2025-07-24 14:53:02 -03:00
2025-09-10 14:41:37 -03:00
2025-09-10 14:41:37 -03:00
2025-07-24 11:02:28 -03:00
2025-07-24 11:02:28 -03:00
2025-07-24 10:17:33 -03:00
2025-07-24 13:35:26 +00:00

# 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 9 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 9 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(En Proceso) (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:

    git clone [URL_DEL_REPOSITORIO_GITEA]
    cd [NOMBRE_DE_LA_CARPETA_DONDE_SE_CLONÓ]
    
  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:

    # 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:

    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.

    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:

    dotnet run --project src/Mercados.Api
    

    La API estará disponible (por defecto) en http://localhost:5045.

  2. Iniciar el Worker Service:

    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):

    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:
    # Desde la raíz
    dotnet build
    
  2. Generar la documentación TypeScript:
    # Desde la carpeta /frontend
    npm run doc:ts
    
  3. Construir el sitio DocFX:
    # Desde la raíz, usando el archivo de configuración en /docs
    docfx docs/docfx.json
    
  4. Visualizar la documentación:
    # Desde la raíz
    docfx serve docs/_site
    
    Abre tu navegador en http://localhost:8080.

Para ver la Librería de Componentes Visuales (Storybook):

# 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:
    # 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.
    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.

Description
API y Worker para la recolección y exposición de datos de mercados financieros.
Readme 635 KiB
Languages
TypeScript 49.4%
C# 47.6%
Dockerfile 1.6%
HTML 1.1%
JavaScript 0.3%