Saltar a contenido

🛠️ Estructura del Proyecto

Comprender la estructura de directorios y archivos del proyecto P2P Dashboard es fundamental para navegar por el código, identificar dónde se encuentran las diferentes funcionalidades y contribuir de manera efectiva. Este documento describe la organización del repositorio.

P2P-Dashboard/
├───.dockerignore
├───.env.template
├───.gitignore
├───.python-version
├───alembic.ini
├───Dockerfile
├───pyproject.toml
├───README.md
├───requirements-dev.txt
├───requirements.txt
├───alembic/
│   ├───env.py
│   ├───README
│   ├───script.py.mako
│   └───versions/ # Contiene las migraciones de la base de datos
├───docs/ # Documentación del proyecto (no la que estamos generando ahora)
│   └───...
├───logs/
│   └───p2p_api.log # Archivo de logs de la aplicación
├───p2p_api/
│   ├───__init__.py
│   ├───auth.py # Lógica de autenticación y autorización
│   ├───binance_scraper.py # Lógica para scraping de Binance (puede ser movido a Workers externos)
│   ├───bybit_scraper.py # Lógica para scraping de Bybit (puede ser movido a Workers externos)
│   ├───config.py # Configuración de la aplicación
│   ├───crud.py # Operaciones CRUD para la base de datos
│   ├───database.py # Configuración de la conexión a la base de datos
│   ├───dependencies.py # Dependencias de FastAPI (ej. inyección de dependencias)
│   ├───exceptions.py # Excepciones personalizadas
│   ├───logging_config.py # Configuración del sistema de logging
│   ├───main.py # Punto de entrada principal de la aplicación FastAPI
│   ├───schemas.py # Modelos de datos Pydantic para validación y serialización
│   ├───services.py # Lógica de negocio y servicios
│   └───routers/ # Módulos de rutas de FastAPI
│       ├───__init__.py
│       ├───admin.py # Rutas administrativas
│       └───...
├───tests/
│   ├───conftest.py
│   ├───test_main.py # Pruebas unitarias y de integración
│   └───...
└───mkdocs_production/ # Directorio de la documentación generada (este proyecto)
    ├───docs/ # Archivos Markdown de la documentación
    ├───mkdocs.yml # Configuración de MkDocs
    └───site/ # Sitio web estático generado por MkDocs

Descripción de Directorios y Archivos Clave

  • / (Raíz del Proyecto):

    • .env.template: Plantilla para las variables de entorno. Debe copiarse a .env y configurarse.
    • .gitignore: Define los archivos y directorios que Git debe ignorar.
    • alembic.ini: Archivo de configuración para Alembic, la herramienta de migraciones de base de datos.
    • Dockerfile: Define la imagen de Docker para la aplicación.
    • pyproject.toml: Archivo de configuración para herramientas de construcción y gestión de proyectos Python (ej. poetry, flit).
    • README.md: Descripción general del proyecto y guía de inicio rápido.
    • requirements.txt: Dependencias de producción del proyecto.
    • requirements-dev.txt: Dependencias de desarrollo del proyecto.
  • alembic/:

    • Contiene los scripts de migración de la base de datos generados por Alembic. Cada archivo en versions/ representa una migración específica que modifica el esquema de la base de datos.
  • logs/:

    • Almacena los archivos de log generados por la aplicación, como p2p_api.log.
  • p2p_api/:

    • El directorio principal de la aplicación FastAPI.
    • main.py: El punto de entrada de la aplicación FastAPI, donde se inicializa la aplicación y se incluyen las rutas.
    • auth.py: Contiene la lógica para la autenticación de usuarios y la generación/validación de tokens (JWT).
    • config.py: Define las configuraciones de la aplicación, a menudo cargadas desde variables de entorno.
    • crud.py: Implementa las operaciones de Crear, Leer, Actualizar y Eliminar (CRUD) para interactuar con la base de datos a través de SQLAlchemy.
    • database.py: Configura la conexión a la base de datos y la sesión de SQLAlchemy.
    • dependencies.py: Define funciones de inyección de dependencias para FastAPI, como la obtención de la sesión de base de datos o la validación de API Keys.
    • exceptions.py: Define excepciones personalizadas para manejar errores específicos de la aplicación.
    • logging_config.py: Configura el sistema de logging de la aplicación.
    • schemas.py: Contiene los modelos Pydantic que definen la estructura de los datos de entrada y salida de la API, utilizados para validación y serialización/deserialización.
    • services.py: Contiene la lógica de negocio compleja que orquesta las operaciones CRUD y otras interacciones.
    • routers/: Subdirectorio que organiza las rutas de la API en módulos lógicos (ej. admin.py para rutas de administración).
    • binance_scraper.py / bybit_scraper.py: Módulos que contienen la lógica de scraping para Binance y Bybit. Nota: En la arquitectura final, esta lógica debería residir en los Workers externos (Capa 1.A) y no directamente en la API de Ingesta, que solo debería recibir datos.
  • tests/:

    • Contiene las pruebas unitarias y de integración para la aplicación. Es crucial para asegurar la calidad y el correcto funcionamiento del código.
  • mkdocs_production/:

    • Este es el directorio donde se genera y configura la documentación técnica que estás leyendo. Contiene:
      • docs/: Todos los archivos Markdown que componen el contenido de la documentación.
      • mkdocs.yml: El archivo de configuración principal de MkDocs, que define la estructura de navegación, el tema, las extensiones, etc.
      • site/: El directorio donde MkDocs genera el sitio web estático final (HTML, CSS, JS) listo para ser desplegado.

Esta estructura facilita la organización del código, la colaboración entre desarrolladores y la escalabilidad del proyecto.