# ISO-20022 Combo Flow A visual workflow builder for composing multi-step financial transactions that combine ISO-20022 banking messages with DLT (Distributed Ledger Technology) operations. Think of it as combining Venmo, your bank, and a crypto exchange into one easy-to-use interface. ## ๐ŸŽฏ Overview This system enables users to build complex financial workflows by: - Dragging and dropping financial steps (borrow, swap, repay, pay) - Combining DeFi protocols with traditional banking rails - Executing multi-step transactions atomically using 2PC (Two-Phase Commit) - Ensuring compliance with LEI/DID/KYC/AML requirements - Providing real-time execution monitoring and audit trails ## ๐Ÿš€ Deployment Models The system supports three deployment models: - **Web App (Hosted)**: For approved parties (enterprise clients, financial institutions) - Azure AD authentication, RBAC, IP whitelisting - Full compliance features and audit logs - **PWA (Mobile)**: Progressive Web App for mobile users - Offline support, push notifications, installable - Same backend with mobile-optimized UI - **DApp (Public)**: Decentralized app for general public - Wallet-based authentication (MetaMask, WalletConnect) - Open access, public plan templates See [Deployment Architecture](./docs/DEPLOYMENT_ARCHITECTURE.md) for details. ## ๐Ÿ—๏ธ Architecture ``` CurrenciCombo/ โ”œโ”€โ”€ webapp/ # Next.js 14 frontend application โ”œโ”€โ”€ orchestrator/ # Backend orchestrator service (TypeScript/Express) โ”œโ”€โ”€ contracts/ # Smart contracts (Solidity) โ””โ”€โ”€ docs/ # Documentation and specifications ``` ## โœจ Features ### Frontend - ๐ŸŽจ Drag-and-drop workflow builder - ๐Ÿ”„ Real-time execution monitoring via SSE - โœ… Compliance status dashboard (LEI/DID/KYC/AML) - ๐Ÿงช Optional simulation panel for advanced users - ๐Ÿ” Multi-wallet Web3 integration - ๐Ÿ“Š Step dependency visualization ### Backend - ๐Ÿ”„ 2PC (Two-Phase Commit) execution coordination - ๐Ÿ“ ISO-20022 message generation (pacs.008, camt.052/053, camt.056) - ๐Ÿฆ Multi-bank connector support (SWIFT, SEPA, FedNow) - ๐Ÿ”’ Compliance engine integration - ๐Ÿ“‹ Notary service for immutable audit trails - ๐ŸŽซ Receipt generation and aggregation ### Smart Contracts - โšก Atomic execution handler - ๐Ÿ“œ Adapter registry with whitelist/blacklist - ๐Ÿ” Notary registry for codehash tracking - ๐Ÿ”Œ Example adapters (Uniswap, Aave, ISO-20022 Pay) ## ๐Ÿš€ Quick Start ### Prerequisites - Node.js 18+ - npm or yarn - Git - Docker (optional, for local PostgreSQL) ### Installation 1. **Clone the repository** ```bash git clone https://github.com/your-org/CurrenciCombo.git cd CurrenciCombo ``` 2. **Install dependencies** ```bash # Frontend cd webapp npm install # Backend cd ../orchestrator npm install # Smart Contracts cd ../contracts npm install ``` 3. **Set up environment variables** ```bash # Frontend - Create webapp/.env.local NEXT_PUBLIC_ORCH_URL=http://localhost:8080 NEXTAUTH_SECRET=dev-secret-change-in-production-min-32-chars # Backend - Create orchestrator/.env PORT=8080 NODE_ENV=development SESSION_SECRET=dev-session-secret-minimum-32-characters-long ``` 4. **Set up database (optional for development)** ```bash # Using Docker (recommended) docker run --name combo-postgres ` -e POSTGRES_PASSWORD=postgres ` -e POSTGRES_DB=comboflow ` -p 5432:5432 ` -d postgres:15 # Update orchestrator/.env DATABASE_URL=postgresql://postgres:postgres@localhost:5432/comboflow RUN_MIGRATIONS=true # Run migrations cd orchestrator npm run migrate ``` ### Development **Quick Start (First Time Setup)** ```bash # Complete setup (installs dependencies, creates env files, sets up database) ./scripts/setup-complete.sh # Verify everything (runs all verification tests) ./scripts/verify-all.sh # Start all services ./scripts/start-all.sh ``` **Start all services (WSL/Ubuntu)** ```bash ./scripts/start-all.sh ``` **Or start individually:** **Frontend (Next.js)** ```bash cd webapp npm run dev # Open http://localhost:3000 # Wait 10-30 seconds for Next.js to compile ``` **Orchestrator Service** ```bash cd orchestrator npm run dev # Runs on http://localhost:8080 # Health check: http://localhost:8080/health ``` **Smart Contracts** ```bash cd contracts npm run compile npm run test ``` ### Troubleshooting **Frontend not loading?** ```bash ./scripts/fix-frontend.sh ``` **Check service status:** ```bash ./scripts/check-status.sh ``` **Run functionality tests:** ```bash ./scripts/test-curl.sh ``` **Note**: This project uses WSL/Ubuntu for development. See [WSL Setup Guide](./docs/WSL_SETUP.md) for setup instructions. See [Frontend Troubleshooting](./docs/FRONTEND_TROUBLESHOOTING.md) for more help. ## ๐Ÿ“š Documentation ### Getting Started - [Developer Onboarding](./docs/DEVELOPER_ONBOARDING.md) - [Development Setup](./docs/DEV_SETUP.md) - [Frontend Troubleshooting](./docs/FRONTEND_TROUBLESHOOTING.md) - [Database Options](./docs/DATABASE_OPTIONS.md) - Local vs Azure ### Architecture & Design - [Deployment Architecture](./docs/DEPLOYMENT_ARCHITECTURE.md) - Web App, PWA, DApp - [Engineering Ticket Breakdown](./docs/Engineering_Ticket_Breakdown.md) - [UI/UX Specification](./docs/UI_UX_Specification_Builder_V2.md) - [Smart Contract Interfaces](./docs/Smart_Contract_Interfaces.md) - [Adapter Architecture](./docs/Adapter_Architecture_Spec.md) - [Compliance Integration](./docs/Compliance_Integration_Spec.md) - [Architecture Decision Records](./docs/ADRs/ADR-001-Architecture-Decisions.md) ### Operations - [Deployment Runbook](./docs/DEPLOYMENT_RUNBOOK.md) - [Troubleshooting Guide](./docs/TROUBLESHOOTING.md) - [Production Checklist](./docs/PRODUCTION_CHECKLIST.md) - [API Deprecation Policy](./docs/API_DEPRECATION_POLICY.md) ### Testing & Status - [CURL Test Summary](./docs/CURL_TEST_SUMMARY.md) - [Full Status Check](./docs/FULL_STATUS_CHECK.md) - [Services Status](./docs/SERVICES_RUNNING.md) ### Specifications - [OpenAPI Specification](./docs/Orchestrator_OpenAPI_Spec.yaml) - [ISO Message Samples](./docs/ISO_Message_Samples.md) - [Error Handling & Rollback](./docs/Error_Handling_Rollback_Spec.md) - [Simulation Engine](./docs/Simulation_Engine_Spec.md) ### User Guides - [User Guide](./docs/USER_GUIDE.md) - [Postman Collection](./docs/POSTMAN_COLLECTION.md) ### Project Status - [Final Implementation Summary](./docs/FINAL_IMPLEMENTATION_SUMMARY.md) - [Completion Report](./docs/COMPLETION_REPORT.md) - [Answers Summary](./docs/ANSWERS_SUMMARY.md) ## ๐Ÿงช Testing ### E2E Tests (Playwright) ```bash cd webapp npm run test:e2e ``` ### Smart Contract Tests (Hardhat) ```bash cd contracts npm run test ``` ## ๐Ÿ”ง Configuration ### Environment Variables **Frontend** (`webapp/.env.local`): ```env # Required NEXT_PUBLIC_ORCH_URL=http://localhost:8080 NEXTAUTH_SECRET=dev-secret-change-in-production-min-32-chars # Optional (for Azure AD authentication) NEXTAUTH_URL=http://localhost:3000 AZURE_AD_CLIENT_ID=your-azure-ad-client-id AZURE_AD_CLIENT_SECRET=your-azure-ad-client-secret AZURE_AD_TENANT_ID=common ``` **Orchestrator** (`orchestrator/.env`): ```env # Required PORT=8080 NODE_ENV=development SESSION_SECRET=dev-session-secret-minimum-32-characters-long JWT_SECRET=dev-jwt-secret-minimum-32-characters-long # Optional (for database) DATABASE_URL=postgresql://postgres:postgres@localhost:5432/comboflow RUN_MIGRATIONS=false # Optional (for Redis caching) REDIS_URL=redis://localhost:6379 # Optional (for API authentication) API_KEYS=dev-key-123 ALLOWED_IPS=127.0.0.1,::1 ``` See [Database Options](./docs/DATABASE_OPTIONS.md) for database setup. ## ๐Ÿ“ฆ Project Structure ``` . โ”œโ”€โ”€ webapp/ # Next.js frontend โ”‚ โ”œโ”€โ”€ src/ โ”‚ โ”‚ โ”œโ”€โ”€ app/ # App router pages โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ (webapp)/ # Web App routes (approved parties) โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ (pwa)/ # PWA routes (mobile) โ”‚ โ”‚ โ”‚ โ””โ”€โ”€ (dapp)/ # DApp routes (public) โ”‚ โ”‚ โ”œโ”€โ”€ components/ # React components โ”‚ โ”‚ โ”œโ”€โ”€ lib/ # Utilities โ”‚ โ”‚ โ””โ”€โ”€ store/ # Zustand state โ”‚ โ””โ”€โ”€ tests/e2e/ # Playwright tests โ”‚ โ”œโ”€โ”€ orchestrator/ # Backend service โ”‚ โ”œโ”€โ”€ src/ โ”‚ โ”‚ โ”œโ”€โ”€ api/ # Express routes โ”‚ โ”‚ โ”œโ”€โ”€ services/ # Business logic โ”‚ โ”‚ โ”œโ”€โ”€ integrations/ # External integrations โ”‚ โ”‚ โ”œโ”€โ”€ middleware/ # Security, auth, validation โ”‚ โ”‚ โ”œโ”€โ”€ db/ # Database layer โ”‚ โ”‚ โ””โ”€โ”€ config/ # Configuration โ”‚ โ””โ”€โ”€ .env # Environment variables โ”‚ โ”œโ”€โ”€ contracts/ # Smart contracts โ”‚ โ”œโ”€โ”€ ComboHandler.sol # Main handler โ”‚ โ”œโ”€โ”€ NotaryRegistry.sol # Notary registry โ”‚ โ”œโ”€โ”€ AdapterRegistry.sol # Adapter registry โ”‚ โ””โ”€โ”€ adapters/ # Protocol adapters โ”‚ โ”œโ”€โ”€ scripts/ # Utility scripts (WSL/Ubuntu) โ”‚ โ”œโ”€โ”€ start-all.sh # Start all services โ”‚ โ”œโ”€โ”€ check-status.sh # Check service status โ”‚ โ”œโ”€โ”€ test-curl.sh # Functionality tests โ”‚ โ””โ”€โ”€ fix-frontend.sh # Frontend troubleshooting โ”‚ โ””โ”€โ”€ docs/ # Documentation โ”œโ”€โ”€ DEPLOYMENT_ARCHITECTURE.md โ”œโ”€โ”€ DATABASE_OPTIONS.md โ”œโ”€โ”€ FRONTEND_TROUBLESHOOTING.md โ””โ”€โ”€ ... (see Documentation section) ``` ## ๐Ÿงช Testing ### E2E Tests (Playwright) ```bash cd webapp npm run test:e2e ``` ### Smart Contract Tests (Hardhat) ```bash cd contracts npm run test ``` ### Functionality Tests ```bash # Test all endpoints with curl ./scripts/test-curl.sh # Check service status ./scripts/check-status.sh ``` ## ๐Ÿ—„๏ธ Database Setup ### Local Development (Recommended) ```bash # Using Docker docker run --name combo-postgres \ -e POSTGRES_PASSWORD=postgres \ -e POSTGRES_DB=comboflow \ -p 5432:5432 \ -d postgres:15 ``` ### Azure Production See [Database Options](./docs/DATABASE_OPTIONS.md) for Azure setup. ## ๐Ÿšข Deployment ### Web App (Azure App Service) - Deploy to Azure App Service - Configure Azure AD authentication - Set up IP whitelisting ### PWA (Mobile) - Add PWA configuration - Deploy to same backend - Enable offline support ### DApp (Public) - Deploy to IPFS or public hosting - Enable wallet authentication - Public API endpoints See [Deployment Architecture](./docs/DEPLOYMENT_ARCHITECTURE.md) for details. ## ๐Ÿค Contributing See [CONTRIBUTING.md](.github/CONTRIBUTING.md) for guidelines. ## ๐Ÿ“„ License MIT License - see [LICENSE](LICENSE) file for details. ## ๐Ÿ”— Links - [Documentation](./docs/) - [Issue Tracker](https://github.com/your-org/CurrenciCombo/issues) - [Discussions](https://github.com/your-org/CurrenciCombo/discussions) ## ๐Ÿ‘ฅ Authors - Your Organization --- ## ๐Ÿ“Š Current Status **โœ… Production Ready**: All core features implemented - โœ… Frontend: Next.js app with drag-and-drop builder - โœ… Backend: Orchestrator service with 2PC execution - โœ… Smart Contracts: Handler, registry, and adapters - โœ… Testing: E2E tests, contract tests, functionality tests - โœ… Documentation: Comprehensive guides and specifications **๐Ÿš€ Deployment Options**: - โœ… Web App (Approved parties) - โœ… PWA (Mobile version) - โœ… DApp (Public version) **๐Ÿ“ˆ Next Steps**: 1. Set up local database for development 2. Configure Azure AD for authentication 3. Deploy to Azure for production 4. Enable PWA and DApp features --- **Last Updated**: 2025-01-15