Розробка админ-панелі криптобіржи
Адміністративна панель біржи — це оперативний центр управління. Оператори моніторять торгівлю, команда поддержки обробляє тікети, compliance офіцер перевіряє підозрілі транзакції, фінансова команда управляє резервами. Один інструмент для всього означає правильну систему ролей та чітке розділення доступу.
Архітектура ролей та дозволів
RBAC (Role-Based Access Control)
type Permission string
const (
// Користувачі
ViewUsers Permission = "users:view"
EditUsers Permission = "users:edit"
FreezeUsers Permission = "users:freeze"
// KYC/AML
ViewKYC Permission = "kyc:view"
ApproveKYC Permission = "kyc:approve"
ViewAML Permission = "aml:view"
ManageAML Permission = "aml:manage"
// Торгівля
ViewOrders Permission = "orders:view"
CancelOrders Permission = "orders:cancel"
// Фінанси
ViewBalances Permission = "finance:view"
ViewWithdrawals Permission = "finance:withdrawals:view"
ApproveWithdrawals Permission = "finance:withdrawals:approve"
// Система
ViewSystemMetrics Permission = "system:metrics"
ManageConfig Permission = "system:config"
ManageTradingPairs Permission = "markets:manage"
)
type Role struct {
Name string
Permissions []Permission
}
var Roles = map[string]Role{
"super_admin": {
Name: "Super Admin",
Permissions: AllPermissions,
},
"compliance": {
Name: "Compliance Officer",
Permissions: []Permission{
ViewUsers, ViewKYC, ApproveKYC, ViewAML, ManageAML,
ViewOrders, ViewBalances, ViewWithdrawals,
},
},
"support": {
Name: "Support Agent",
Permissions: []Permission{
ViewUsers, ViewOrders, ViewKYC,
},
},
"finance": {
Name: "Finance",
Permissions: []Permission{
ViewBalances, ViewWithdrawals, ApproveWithdrawals,
},
},
"marketing": {
Name: "Marketing",
Permissions: []Permission{
ViewUsers, // read-only аналітика
},
},
}
Ключові модулі админ-панелі
Дашборд — головна сторінка
interface DashboardMetrics {
// Торгівля
volume24h: string;
trades24h: number;
activeUsers24h: number;
// Фінанси
totalDeposits24h: string;
totalWithdrawals24h: string;
pendingWithdrawals: number;
pendingWithdrawalsUSD: string;
// KYC
pendingKYCApprovals: number;
// Система
matchingEngineLatency: number; // мс
wsConnections: number;
apiRps: number;
// Алерти
activeAlerts: SystemAlert[];
}
function AdminDashboard() {
const { data } = useQuery('dashboard-metrics', fetchMetrics, {
refetchInterval: 30000, // оновлюємо кожні 30 сек
});
return (
<Grid>
<MetricCard title="24h Volume" value={data?.volume24h} trend={data?.volumeTrend} />
<MetricCard title="Pending Withdrawals" value={data?.pendingWithdrawalsUSD}
alert={data?.pendingWithdrawals > 50} />
<MetricCard title="KYC Queue" value={data?.pendingKYCApprovals} />
<ActiveAlerts alerts={data?.activeAlerts} />
<RecentTradesTable />
<SystemHealthIndicators />
</Grid>
);
}
Управління користувачами
function UserManagement() {
const [filters, setFilters] = useState({
search: '',
kycStatus: 'all',
frozen: false,
country: '',
});
return (
<div>
<UserFilters filters={filters} onChange={setFilters} />
<DataTable
columns={[
{ key: 'id', label: 'ID' },
{ key: 'email', label: 'Email' },
{ key: 'fullName', label: 'Name' },
{ key: 'kycTier', label: 'KYC Tier', render: (v) => <KYCBadge tier={v} /> },
{ key: 'registeredAt', label: 'Registered', render: (v) => formatDate(v) },
{ key: 'volume30d', label: '30d Volume' },
{ key: 'status', render: (_, row) => <UserStatusActions user={row} /> },
]}
fetchData={(params) => fetchUsers({ ...params, ...filters })}
onRowClick={(user) => openUserDetail(user.id)}
/>
</div>
);
}
Безпека админ-панелі
2FA обов'язковий для всіх операторів
function RequireRecentMFA({ children }: { children: React.ReactNode }) {
const { lastMFAAt } = useAdminSession();
const isRecent = lastMFAAt && Date.now() - lastMFAAt < 30 * 60 * 1000; // 30 хвилин
if (!isRecent) {
return <MFAChallengeModal onSuccess={refreshSession} />;
}
return <>{children}</>;
}
Журнал аудиту адміна
Кожне дія оператора логується.
IP обмеження
Админ-панель доступна лише з корпоративного VPN або фіксованих IP.
Технічний стек
| Компонент | Технологія |
|---|---|
| Frontend | React + TypeScript + TanStack Query |
| UI Kit | Shadcn/ui + Tailwind |
| Charts | Recharts / TradingView Lightweight |
| Realtime | WebSocket + Zustand |
| Backend | Go REST API |
| Auth | JWT + TOTP 2FA |
| RBAC | Custom middleware |
| Audit | PostgreSQL + immutable log |
Сроки розробки
| Модуль | Срок |
|---|---|
| Аутентифікація + RBAC | 2–3 тижні |
| Дашборд з метриками | 2–3 тижні |
| Управління користувачами | 3–4 тижні |
| KYC approval workflow | 2–3 тижні |
| Очередь виводів | 2–3 тижні |
| Управління ринками | 2–3 тижні |
| Системний моніторинг | 2–3 тижні |
| Журнал аудиту | 1–2 тижні |
Повна адміністративна панель: 3–4 місяці.







