Files
Encelado/TradingBot/docs/PROJECT_STRUCTURE.md
Alberto Balbo cc34d2b57f Riorganizzazione deployment, doc e publish automatico
- Spostata tutta la configurazione di deployment in /deployment (docker-compose, unraid-template, guide)
- Aggiunte e aggiornate guide dettagliate: publishing su Gitea, installazione Unraid, struttura progetto
- Migliorato target MSBuild: publish automatico su Gitea Registry da Visual Studio, log dettagliati, condizioni più robuste
- Aggiornato e ampliato .gitignore per escludere build, dati e file locali
- Rimossi file obsoleti dalla root (ora tutto in /deployment)
- Struttura più chiara, zero script esterni, documentazione completa e workflow di deploy semplificato
2025-12-17 23:15:46 +01:00

7.8 KiB

??? Project Structure - TradingBot

Struttura organizzata del progetto TradingBot con separazione chiara tra codice, configurazione e deployment.


?? Root Directory

TradingBot/
??? ?? Components/              # Blazor Components
?   ??? ?? Layout/              # Layout components
?   ??? ?? Pages/               # Page components
?   ??? ?? Shared/              # Shared components
??? ?? deployment/              # ?? Deployment resources
?   ??? docker-compose.yml      # Docker Compose configuration
?   ??? unraid-template.xml     # Unraid template
?   ??? PUBLISHING_GUIDE.md     # Publishing guide
?   ??? UNRAID_INSTALL.md       # Unraid installation guide
?   ??? README.md               # Deployment index
??? ?? Models/                  # Data models
??? ?? Properties/              # Project properties
?   ??? ?? PublishProfiles/     # Visual Studio publish profiles
?   ?   ??? Docker.pubxml       # Docker publish profile
?   ?   ??? FolderProfile.pubxml # Folder publish profile
?   ??? launchSettings.json     # Launch configurations
??? ?? Services/                # Business logic services
??? ?? wwwroot/                 # Static web assets
?   ??? ?? css/                 # Stylesheets
?   ??? ?? lib/                 # Client libraries
??? .dockerignore               # Docker ignore patterns
??? .gitignore                  # Git ignore patterns
??? appsettings.json            # Application settings
??? appsettings.Development.json # Development settings
??? Dockerfile                  # Docker multi-stage build
??? Program.cs                  # Application entry point
??? README.md                   # Project documentation
??? TradingBot.csproj           # Project file with MSBuild targets

?? Key Directories

/Components

Blazor Server components organizzati per funzionalità:

  • Layout: MainLayout.razor, NavMenu.razor, ReconnectModal.razor
  • Pages: Dashboard.razor, Market.razor, Portfolio.razor, Settings.razor, Strategies.razor
  • Shared: Componenti riutilizzabili

/Services

Business logic e servizi core:

  • TradingBotService.cs - Core trading service
  • SimulatedMarketDataService.cs - Market data provider
  • SimpleMovingAverageStrategy.cs - Trading strategy
  • SettingsService.cs - Settings persistence
  • TechnicalAnalysis.cs - Technical indicators
  • Interface definitions

/Models

Data models e DTOs:

  • Trade.cs - Trade execution model
  • MarketPrice.cs - Market data snapshot
  • TradingSignal.cs - Strategy signal
  • PortfolioStatistics.cs - Portfolio metrics
  • AssetConfiguration.cs - Asset settings
  • Enums (SignalType, TradeType, etc.)

/deployment ??

Nuova cartella organizzata con tutti i file di deployment:

Guide

  • PUBLISHING_GUIDE.md - Come pubblicare da Visual Studio
  • UNRAID_INSTALL.md - Installazione su Unraid
  • README.md - Indice deployment

Configuration

  • docker-compose.yml - Docker Compose setup
  • unraid-template.xml - Unraid 1-click install template

/Properties

Visual Studio configuration:

PublishProfiles/

  • Docker.pubxml - Docker container publish profile
  • FolderProfile.pubxml - Folder-based publish profile

Other

  • launchSettings.json - Debug/run configurations (HTTP, HTTPS, Docker)

/wwwroot

Static web assets:

  • /css - Custom stylesheets
  • /lib - Client libraries (Bootstrap, etc.)
  • Static files (favicon, etc.)

?? Configuration Files

Root Level

File Purpose
TradingBot.csproj Project file with MSBuild post-build targets
Dockerfile Multi-stage Docker build configuration
Program.cs Application startup and service registration
appsettings.json Production configuration
appsettings.Development.json Development overrides
.dockerignore Files excluded from Docker build
.gitignore Files excluded from Git
README.md Main project documentation

?? Deployment Flow

Source Code (/) ? Build ? Docker Image ? Gitea Registry ? Unraid
                                      ?
                          Post-Build MSBuild Target
                                (TradingBot.csproj)

Files Involved

  1. TradingBot.csproj

    • Contains PushToGiteaRegistry MSBuild target
    • Hooks into AfterTargets="DockerBuildImage"
    • Automatically tags and pushes to Gitea
  2. Properties/PublishProfiles/Docker.pubxml

    • Visual Studio publish profile
    • Triggers Docker build
    • Integrated with MSBuild post-build
  3. Dockerfile

    • Multi-stage build (build ? publish ? final)
    • Optimized for .NET 10 and Blazor Server
    • Creates minimal production image
  4. deployment/docker-compose.yml

    • Production deployment configuration
    • Uses image from Gitea Registry
    • Health checks and resource limits
  5. deployment/unraid-template.xml

    • Unraid Docker Manager template
    • 1-click installation
    • Pre-configured settings

?? Documentation Structure

/
??? README.md                          # Main project docs
??? deployment/
    ??? README.md                      # Deployment index
    ??? PUBLISHING_GUIDE.md            # Publishing workflow
    ??? UNRAID_INSTALL.md              # Unraid installation

Reading Order

  1. /README.md - Start here for project overview
  2. /deployment/PUBLISHING_GUIDE.md - Learn how to publish
  3. /deployment/UNRAID_INSTALL.md - Deploy to Unraid

?? Development Workflow

Local Development

1. Open solution in Visual Studio
2. F5 to run (uses launchSettings.json ? "TradingBot" profile)
3. Edit code with Hot Reload enabled
4. Test changes at http://localhost:5243

Docker Local Testing

1. Switch to "Docker" profile in toolbar dropdown
2. F5 to run in container
3. Test changes at http://localhost:8080
4. Debug with breakpoints (works in container!)

Publishing

1. Build ? Configuration Manager ? Release
2. Build ? Publish TradingBot
3. Select "Docker" profile
4. Click "Publish"
5. MSBuild post-build automatically pushes to Gitea

?? Sensitive Files (Not in Git)

These files are in .gitignore:

  • obj/ - Build intermediate files
  • bin/ - Build output
  • *.user - User-specific VS settings
  • data/ - Runtime data (settings, trades)
  • .vs/ - Visual Studio cache

? Organization Benefits

Before

TradingBot/
??? build-push-dockerhub.sh          ? Script esterno
??? push-to-gitea.ps1                ? Script esterno
??? publish-all.ps1                  ? Script esterno
??? full-workflow.bat                ? Script esterno
??? docker-compose.yml               ? Disordinato in root
??? unraid-template.xml              ? Disordinato in root
??? ... (altri file misti)

After ?

TradingBot/
??? deployment/                      ? Tutto organizzato
?   ??? docker-compose.yml          ? Deployment configs
?   ??? unraid-template.xml         ? Templates
?   ??? PUBLISHING_GUIDE.md         ? Documentation
?   ??? UNRAID_INSTALL.md          ? Documentation
?   ??? README.md                   ? Index
??? TradingBot.csproj               ? Post-build integrato
??? (codice sorgente organizzato)   ? Struttura chiara

Vantaggi:

  • ? Zero script esterni - Tutto in MSBuild
  • ? Organizzazione chiara - Deployment separato
  • ? Facile navigazione - Struttura logica
  • ? Manutenibilità - File raggruppati per scopo
  • ? Visual Studio friendly - Tutto integrato nell'IDE

?? Summary

Struttura pulita e professionale con:

  • ?? Codice organizzato per funzionalità
  • ?? Deployment resources in cartella dedicata
  • ?? Documentazione completa e accessibile
  • ?? MSBuild integration per publishing automatico
  • ? Zero dipendenze da script esterni

Tutto gestibile da Visual Studio! ??