Files
brazil-swift-ops/create_web_files.sh

109 lines
3.0 KiB
Bash
Raw Normal View History

#!/bin/bash
# Create essential web app files
cd apps/web
# Create stores
cat > src/stores/transactionStore.ts << 'EOFTXNSTORE'
import { create } from 'zustand';
import type { Transaction, BrazilRegulatoryResult, BatchTransaction } from '@brazil-swift-ops/types';
import { evaluateTransaction, evaluateBatch } from '@brazil-swift-ops/rules-engine';
import { calculateTransactionEOUplift, calculateBatchEOUplift } from '@brazil-swift-ops/utils';
import { getDefaultConverter } from '@brazil-swift-ops/utils';
interface TransactionStore {
transactions: Transaction[];
results: Map<string, BrazilRegulatoryResult>;
batches: BatchTransaction[];
addTransaction: (txn: Transaction) => void;
evaluateTransaction: (txn: Transaction) => BrazilRegulatoryResult;
addBatch: (batch: BatchTransaction) => void;
evaluateBatch: (txns: Transaction[]) => BrazilRegulatoryResult[];
}
export const useTransactionStore = create<TransactionStore>((set, get) => ({
transactions: [],
results: new Map(),
batches: [],
addTransaction: (txn) => {
const result = evaluateTransaction(txn);
set((state) => ({
transactions: [...state.transactions, txn],
results: new Map(state.results).set(txn.id, result),
}));
},
evaluateTransaction: (txn) => {
const result = evaluateTransaction(txn);
set((state) => ({
results: new Map(state.results).set(txn.id, result),
}));
return result;
},
addBatch: (batch) => {
set((state) => ({
batches: [...state.batches, batch],
}));
},
evaluateBatch: (txns) => {
return evaluateBatch(txns);
},
}));
EOFTXNSTORE
# Create a simple page component
cat > src/pages/DashboardPage.tsx << 'EOFDASH'
import React from 'react';
export default function DashboardPage() {
return (
<div className="px-4 py-6 sm:px-0">
<div className="border-4 border-dashed border-gray-200 rounded-lg h-96 p-8">
<h1 className="text-2xl font-bold mb-4">Dashboard</h1>
<p className="text-gray-600">Brazil SWIFT Operations Platform</p>
</div>
</div>
);
}
EOFDASH
cat > src/pages/TransactionsPage.tsx << 'EOFTXNPAGE'
import React from 'react';
export default function TransactionsPage() {
return (
<div className="px-4 py-6 sm:px-0">
<h1 className="text-2xl font-bold mb-4">Transactions</h1>
<p className="text-gray-600">Transaction processing interface</p>
</div>
);
}
EOFTXNPAGE
cat > src/pages/TreasuryPage.tsx << 'EOFTREAS'
import React from 'react';
export default function TreasuryPage() {
return (
<div className="px-4 py-6 sm:px-0">
<h1 className="text-2xl font-bold mb-4">Treasury Management</h1>
<p className="text-gray-600">Treasury and subledger management</p>
</div>
);
}
EOFTREAS
cat > src/pages/ReportsPage.tsx << 'EOFREP'
import React from 'react';
export default function ReportsPage() {
return (
<div className="px-4 py-6 sm:px-0">
<h1 className="text-2xl font-bold mb-4">Reports</h1>
<p className="text-gray-600">Compliance and regulatory reports</p>
</div>
);
}
EOFREP
chmod +x create_web_files.sh