A comprehensive SWIFT message processing system built with .NET Core 9.0 and React TypeScript.
SwiftMessageProcessor/
├── src/
│ ├── SwiftMessageProcessor.Core/ # Domain models and interfaces
│ ├── SwiftMessageProcessor.Infrastructure/ # Data access and external services
│ ├── SwiftMessageProcessor.Application/ # Business logic and services
│ ├── SwiftMessageProcessor.Api/ # Web API project
│ └── SwiftMessageProcessor.Console/ # Console application for message processing
├── frontend/ # React TypeScript frontend
├── docker/ # Docker configuration files
├── tests/ # Test projects (to be created)
└── docs/ # SWIFT documentation and examples
The system follows a clean architecture pattern with clear separation of concerns:
- Core: Contains domain models, interfaces, and business rules
- Infrastructure: Implements external concerns (database, queues, external APIs)
- Application: Contains business logic and orchestrates the domain
- API: Web API for frontend communication and system management
- Console: Background service for message processing
- Frontend: React TypeScript application for monitoring and management
- MT103 SWIFT message processing (extensible to other message types)
- Queue-based message processing architecture
- Real-time updates via SignalR
- Docker containerization support
- Environment-specific configuration
- Health checks and monitoring
- Test message generation for development
- .NET 9.0 SDK
- Node.js 18+
- Docker (optional)
-
Backend Setup:
dotnet restore dotnet build
-
Frontend Setup:
cd frontend npm install npm run build -
Run Applications:
# Start API dotnet run --project src/SwiftMessageProcessor.Api # Start Console Application dotnet run --project src/SwiftMessageProcessor.Console # Start Frontend (development) cd frontend npm run dev
cd docker
docker-compose up -dAccess services:
- Frontend: http://localhost:3000
- API: http://localhost:5000
- API Health: http://localhost:5000/health
cd docker
docker-compose -f docker-compose.full.yml up -dAdditional services:
- Prometheus: http://localhost:9090
- Grafana: http://localhost:3001 (admin/admin)
cd docker
cp .env.example .env
# Edit .env with production values
docker-compose -f docker-compose.prod.yml up -dFor detailed deployment instructions, see docker/DEPLOYMENT.md
The system supports environment-specific configuration:
- Development: Uses SQLite database and in-memory queues
- Production: Configurable for SQL Server and AWS SQS
Configuration files:
src/SwiftMessageProcessor.Api/appsettings.Development.jsonsrc/SwiftMessageProcessor.Console/appsettings.Development.jsonfrontend/.env.development
GET /api/messages- Retrieve processed messagesGET /api/system/status- Get system statusPOST /api/system/restart- Restart message processorGET /health- Health check endpoint
This project follows SOLID principles and clean architecture patterns. Key interfaces:
ISwiftMessageParser<T>- Message parsingIQueueService- Queue operationsIMessageRepository- Data persistenceIMessageProcessingService- Message processing orchestration
The system supports multiple deployment scenarios:
- SQLite database
- In-memory queues
- File-based inter-process communication
- Test mode enabled
- SQL Server database
- AWS SQS queues
- Scalable architecture
- Monitoring and logging
See docker/DEPLOYMENT.md for comprehensive deployment guide.
# Apply migrations
./scripts/migrate-database.sh update
# Create new migration
./scripts/migrate-database.sh add MigrationName
# Rollback migration
./scripts/migrate-database.sh rollback MigrationName# Backup SQLite database
./scripts/backup-database.sh sqlite /app/data/messages.db
# Restore database
./scripts/backup-database.sh restore-sqlite backup.tar.gz /app/data/messages.db
# List backups
./scripts/backup-database.sh listSee scripts/README.md for detailed script documentation.
# Run health check script
./docker/healthcheck.sh
# Check individual services
curl http://localhost:5000/health
docker ps --filter "name=swift-"- Prometheus metrics: http://localhost:9090
- Grafana dashboards: http://localhost:3001
- Centralized logging with Loki
# Run all tests
dotnet test
# Run specific test project
dotnet test tests/SwiftMessageProcessor.Core.Tests
# Frontend tests
cd frontend
npm testFollow the established patterns and ensure all new code includes appropriate tests and documentation.