# DBIS Portal **Status**: 🚧 **Placeholder - Under Planning** **Monorepo Structure**: This project will be integrated as a submodule in the `dbis_monorepo` monorepository (when implemented) under `apps/dbis-portal`. **Note**: `dbis_monorepo` is currently a placeholder. Integration will occur when the monorepo is implemented. --- ## Overview DBIS Portal is a comprehensive web-based portal application that provides user interfaces for DBIS services, member bank operations, administrative functions, and public-facing information. It serves as the primary interface for users interacting with the DBIS ecosystem. --- ## Purpose The DBIS Portal provides: - **Member Bank Portal**: Banking operations interface for member institutions - **Administrative Portal**: System administration and management interfaces - **Public Portal**: Public-facing information and documentation - **Service Management**: Service provisioning and management UI - **Integration Hub**: Unified interface for all DBIS services --- ## Target Users ### Member Banks (Sovereign Central Banks) - Account management - Payment initiation and tracking - FX trading interface - CBDC wallet management - Transaction history and reporting - Compliance reporting ### System Administrators - User and role management - System configuration - Monitoring dashboards - Compliance monitoring - Risk management interfaces - Audit log access ### Public Users - Service information - Documentation access - API documentation - System status pages - Registration and onboarding --- ## Architecture (Planned) ### Frontend Architecture ``` ┌─────────────────────────────────────────────────────┐ │ DBIS Portal Application │ ├─────────────────────────────────────────────────────┤ │ │ │ ┌──────────────┐ ┌──────────────┐ ┌───────────┐ │ │ │ Public │ │ Member │ │ Admin │ │ │ │ Portal │ │ Portal │ │ Portal │ │ │ └──────┬───────┘ └──────┬───────┘ └─────┬─────┘ │ │ │ │ │ │ │ └─────────────────┼─────────────────┘ │ │ │ │ │ ┌────────────▼────────────┐ │ │ │ Shared Components │ │ │ │ - Layout │ │ │ │ - Navigation │ │ │ │ - Auth │ │ │ │ - API Clients │ │ │ └────────────┬────────────┘ │ │ │ │ │ ┌────────────▼────────────┐ │ │ │ API Integration Layer │ │ │ │ - dbis_core API │ │ │ │ - Blockchain API │ │ │ │ - Documentation API │ │ │ └─────────────────────────┘ │ │ │ └─────────────────────────────────────────────────────┘ ``` --- ## Technology Stack (Planned) ### Frontend Framework - **Next.js 14+** (React + TypeScript) - **App Router**: Next.js App Router for modern routing - **Server Components**: For optimal performance - **Server Actions**: For form handling and mutations ### UI Framework - **TailwindCSS**: Utility-first CSS framework - **shadcn/ui**: High-quality React components - **Radix UI**: Accessible component primitives - **Framer Motion**: Animations and transitions ### State Management - **TanStack Query (React Query)**: Server state management - **Zustand**: Client state management (if needed) - **React Context**: Theme and global state ### Data Fetching - **GraphQL**: For dbis_core GraphQL API - **REST API**: For other services - **WebSockets**: For real-time updates - **Server Actions**: For mutations ### Authentication & Authorization - **NextAuth.js**: Authentication framework - **JWT**: Token-based authentication - **RBAC**: Role-based access control - **Integration**: With dbis_core auth system ### Form Handling - **React Hook Form**: Form state management - **Zod**: Schema validation - **Server Actions**: Form submissions --- ## Project Structure (Planned) ``` dbis_portal/ ├── src/ │ ├── app/ # Next.js App Router │ │ ├── (public)/ # Public routes │ │ │ ├── page.tsx # Landing page │ │ │ ├── docs/ # Documentation │ │ │ ├── api-docs/ # API documentation │ │ │ └── status/ # Status page │ │ ├── (member)/ # Member bank portal │ │ │ ├── dashboard/ # Member dashboard │ │ │ ├── accounts/ # Account management │ │ │ ├── payments/ # Payment operations │ │ │ ├── fx/ # FX trading │ │ │ ├── cbdc/ # CBDC wallet │ │ │ └── reports/ # Reports and analytics │ │ ├── (admin)/ # Administrative portal │ │ │ ├── dashboard/ # Admin dashboard │ │ │ ├── users/ # User management │ │ │ ├── monitoring/ # System monitoring │ │ │ ├── compliance/ # Compliance monitoring │ │ │ └── settings/ # System settings │ │ ├── api/ # API routes │ │ │ ├── auth/ # Authentication routes │ │ │ └── webhook/ # Webhook handlers │ │ ├── layout.tsx # Root layout │ │ └── page.tsx # Home page │ ├── components/ # React components │ │ ├── ui/ # UI components (shadcn/ui) │ │ ├── layout/ # Layout components │ │ ├── member/ # Member portal components │ │ ├── admin/ # Admin portal components │ │ ├── public/ # Public portal components │ │ └── shared/ # Shared components │ ├── lib/ # Utilities and helpers │ │ ├── api/ # API client functions │ │ ├── auth/ # Authentication utilities │ │ ├── utils/ # Utility functions │ │ └── validations/ # Validation schemas (Zod) │ ├── hooks/ # Custom React hooks │ ├── types/ # TypeScript types │ ├── styles/ # Global styles │ └── config/ # Configuration ├── public/ # Static assets │ ├── images/ │ ├── icons/ │ └── fonts/ ├── docs/ # Documentation │ ├── architecture/ # Architecture docs │ ├── development/ # Development guides │ └── deployment/ # Deployment guides ├── tests/ # Tests │ ├── unit/ # Unit tests │ ├── integration/ # Integration tests │ └── e2e/ # E2E tests (Playwright) ├── .env.example # Environment variables template ├── next.config.js # Next.js configuration ├── tailwind.config.js # TailwindCSS configuration ├── tsconfig.json # TypeScript configuration └── package.json # Dependencies ``` --- ## Features (Planned) ### Public Portal Features - ✅ Landing page with service information - ✅ Documentation browser - ✅ API documentation (interactive) - ✅ System status dashboard - ✅ Registration and onboarding flow - ✅ Contact and support information ### Member Bank Portal Features - ✅ **Dashboard**: Overview of accounts, recent transactions, alerts - ✅ **Account Management**: - Multi-asset account views - Account balances and history - Account configuration - ✅ **Payment Operations**: - Payment initiation - Payment tracking - Payment history - Bulk payment processing - ✅ **FX Trading**: - Real-time FX rates - FX trade execution - Trade history - Position management - ✅ **CBDC Wallet**: - CBDC balance management - Transfer operations - Transaction history - Wallet configuration - ✅ **Reports & Analytics**: - Transaction reports - Compliance reports - Financial statements - Custom report builder ### Administrative Portal Features - ✅ **User Management**: - User creation and management - Role assignment - Permission management - Audit trail - ✅ **System Monitoring**: - System health dashboards - Performance metrics - Error tracking - Service status - ✅ **Compliance Monitoring**: - Compliance dashboard - Alert management - Regulatory reporting - Audit logs - ✅ **Risk Management**: - Risk dashboard - Risk metrics - Alert configuration - Risk reports - ✅ **Configuration**: - System settings - Feature flags - Integration configuration - Notification settings --- ## API Integration ### dbis_core Integration ```typescript // API client for dbis_core import { DBISCoreClient } from '@dbis/api-client/core'; const client = new DBISCoreClient({ baseUrl: process.env.NEXT_PUBLIC_DBIS_CORE_API_URL, authToken: await getAuthToken() }); // Fetch accounts const accounts = await client.accounts.list(); // Initiate payment const payment = await client.payments.create({ from: 'account-123', to: 'account-456', amount: 1000, currency: 'USD' }); ``` ### Blockchain Integration ```typescript // API client for blockchain (smom-dbis-138) import { BlockchainClient } from '@dbis/api-client/blockchain'; const blockchain = new BlockchainClient({ rpcUrl: process.env.NEXT_PUBLIC_BLOCKCHAIN_RPC_URL, chainId: 138 }); // Get transaction status const tx = await blockchain.getTransaction(txHash); // Get account balance const balance = await blockchain.getBalance(address); ``` ### Real-Time Updates ```typescript // WebSocket connection for real-time updates import { useDBISWebSocket } from '@/hooks/use-dbis-websocket'; function PaymentTracker({ paymentId }) { const { payment, status } = useDBISWebSocket(`payments/${paymentId}`); return
Status: {status}
; } ``` --- ## Authentication & Authorization ### Authentication Flow 1. **Login**: User authenticates via NextAuth.js 2. **Token Management**: JWT tokens stored securely 3. **Session Management**: Server-side session handling 4. **Multi-Factor Authentication**: Support for MFA ### Authorization - **Role-Based Access Control (RBAC)**: - Public users - Member bank users - System administrators - Super administrators - **Permission-Based Access**: - Fine-grained permissions - Feature-level access control - API-level permissions ### Integration ```typescript // Authentication middleware import { withAuth } from '@/lib/auth/middleware'; export const middleware = withAuth({ publicRoutes: ['/', '/docs', '/status'], memberRoutes: ['/member'], adminRoutes: ['/admin'] }); ``` --- ## Deployment (Planned) ### Infrastructure - **Hosting**: Next.js can deploy to: - Vercel (recommended for Next.js) - Azure Static Web Apps - Kubernetes (AKS) - Docker containers ### Environment Variables ```env # API Endpoints NEXT_PUBLIC_DBIS_CORE_API_URL=https://api.dbis.local NEXT_PUBLIC_BLOCKCHAIN_RPC_URL=https://rpc.dbis.local NEXT_PUBLIC_DOCS_API_URL=https://docs.dbis.local # Authentication NEXTAUTH_URL=https://portal.dbis.local NEXTAUTH_SECRET=your-secret-key NEXT_PUBLIC_AUTH_PROVIDER=dbis-core # Feature Flags NEXT_PUBLIC_ENABLE_FX_TRADING=true NEXT_PUBLIC_ENABLE_CBDC_WALLET=true # Analytics (optional) NEXT_PUBLIC_ANALYTICS_ID=your-analytics-id ``` ### Deployment Methods **Option 1: Vercel (Recommended)** ```bash vercel deploy ``` **Option 2: Docker** ```bash docker build -t dbis-portal . docker run -p 3000:3000 dbis-portal ``` **Option 3: Kubernetes** ```bash kubectl apply -f k8s/ ``` --- ## Development (Planned) ### Prerequisites - Node.js >= 18.0.0 - pnpm >= 8.0.0 (recommended) or npm/yarn - Access to dbis_core API (for development) ### Setup ```bash # Clone repository (or as submodule) git clone cd dbis_portal # Or as submodule in dbis_monorepo cd dbis_monorepo/apps/dbis-portal # Install dependencies pnpm install # Set up environment variables cp .env.example .env.local # Edit .env.local with your configuration # Run development server pnpm dev # Build for production pnpm build # Start production server pnpm start ``` ### Development Commands ```bash # Development server pnpm dev # Build pnpm build # Type checking pnpm type-check # Linting pnpm lint # Formatting pnpm format # Testing pnpm test # Unit tests pnpm test:e2e # E2E tests pnpm test:coverage # Coverage report ``` --- ## Testing Strategy (Planned) ### Unit Tests - Component tests (React Testing Library) - Utility function tests (Jest/Vitest) - Hook tests ### Integration Tests - API integration tests - Authentication flow tests - Payment flow tests ### E2E Tests - User workflows (Playwright) - Critical user journeys - Cross-browser testing ### Test Structure ``` tests/ ├── unit/ │ ├── components/ │ ├── lib/ │ └── hooks/ ├── integration/ │ ├── api/ │ └── flows/ └── e2e/ ├── member-portal.spec.ts ├── admin-portal.spec.ts └── public-portal.spec.ts ``` --- ## Performance Optimization (Planned) ### Next.js Optimizations - Server Components for reduced client bundle - Image optimization - Code splitting - Route prefetching - Static generation where possible ### API Optimizations - Request caching (TanStack Query) - Optimistic updates - Batch requests - Debounced search ### Asset Optimization - Image optimization - Font optimization - CSS optimization - Bundle analysis --- ## Security (Planned) ### Frontend Security - XSS protection (React default) - CSRF protection - Content Security Policy (CSP) - Secure token storage - Input sanitization ### API Security - Secure API communication (HTTPS) - Token-based authentication - Rate limiting - Request validation ### Data Privacy - GDPR compliance - Data encryption - Secure session management - Privacy policy integration --- ## Monorepo Integration ### As Submodule in dbis_monorepo This project will be integrated as a git submodule: ```bash # In dbis_monorepo root git submodule add apps/dbis-portal cd apps/dbis-portal git submodule update --init --recursive ``` ### Shared Packages When part of the monorepo, this project will use: - **@dbis/shared**: Shared utilities and types - **@dbis/api-client**: API client libraries - **@dbis/schemas**: Shared schemas and validation - **@dbis/auth**: Authentication utilities ### Example Usage ```typescript // Using shared packages import { DBISConfig } from '@dbis/shared'; import { DBISCoreClient } from '@dbis/api-client/core'; import { TransactionSchema } from '@dbis/schemas'; import { authenticate } from '@dbis/auth'; ``` --- ## Roadmap ### Phase 1: Foundation (Weeks 1-4) - [ ] Next.js project setup - [ ] UI component library setup (shadcn/ui) - [ ] Authentication integration - [ ] Basic layout and navigation - [ ] API client setup ### Phase 2: Public Portal (Weeks 5-8) - [ ] Landing page - [ ] Documentation browser - [ ] API documentation - [ ] Status page - [ ] Public-facing features ### Phase 3: Member Portal (Weeks 9-14) - [ ] Dashboard - [ ] Account management - [ ] Payment operations - [ ] FX trading interface - [ ] CBDC wallet - [ ] Reports and analytics ### Phase 4: Admin Portal (Weeks 15-18) - [ ] User management - [ ] System monitoring - [ ] Compliance monitoring - [ ] Risk management - [ ] System configuration ### Phase 5: Integration & Polish (Weeks 19-20) - [ ] Integration testing - [ ] Performance optimization - [ ] Security hardening - [ ] Documentation - [ ] Production deployment --- ## Related Projects - **[dbis_core](../dbis_core/)** - Core banking API (primary integration) - **[smom-dbis-138](../smom-dbis-138/)** - Blockchain API (for blockchain features) - **[dbis_docs](../dbis_docs/)** - Documentation API (for docs browser) - **[dbis_monorepo](../dbis_monorepo/)** - Monorepo parent (this project as submodule) - **[dbis_dc_tools](../dbis_dc_tools/)** - Infrastructure tools (for deployment) --- ## Contributing When contributing: 1. Follow Next.js best practices 2. Use shared components from @dbis/shared 3. Write tests for new features 4. Update documentation 5. Ensure accessibility (WCAG 2.1 AA) --- ## License [To be determined - will align with DBIS licensing] --- ## Status **Current Status**: 🚧 Placeholder **Next Steps**: - Finalize requirements and user stories - Set up Next.js project structure - Design UI/UX mockups - Begin Phase 1 development - Integrate into dbis_monorepo --- **Last Updated**: 2025-01-27 **Monorepo Integration**: Pending - Will be submodule in `dbis_monorepo/apps/dbis-portal`