diff --git a/admin-panel/src/main.jsx b/admin-panel/src/main.jsx new file mode 100644 index 0000000..1ec4825 --- /dev/null +++ b/admin-panel/src/main.jsx @@ -0,0 +1,66 @@ +import React, { useEffect, useState } from 'react'; +import { createRoot } from 'react-dom/client'; +import { RefreshCw, Server, ShieldCheck, Wifi } from 'lucide-react'; +import './styles.css'; + +const API_URL = import.meta.env.VITE_API_URL || 'http://localhost:3000'; + +function App() { + const [health, setHealth] = useState(null); + const [loading, setLoading] = useState(false); + + async function checkHealth() { + setLoading(true); + try { + const response = await fetch(`${API_URL}/health`); + setHealth(await response.json()); + } catch (error) { + setHealth({ ok: false, error: error.message }); + } finally { + setLoading(false); + } + } + + useEffect(() => { + checkHealth(); + }, []); + + return ( +
+
+
+

Raspi Telegram Live Chat

+

Админка управления чатом

+

MVP-каркас: backend на Raspberry Pi, фронт на VPS/FastPanel, операторы в Telegram.

+
+ +
+ +
+
+ +

Backend

+

API: {API_URL}

+
{JSON.stringify(health, null, 2)}
+
+ +
+ +

FastPanel-safe deploy

+

Деплой будет обновлять только static-файлы admin/widget внутри разрешённых webroot-директорий.

+
+ +
+ +

SOCKS5 для Telegram

+

Настройки proxy заложены в backend config и будут вынесены в админку отдельным разделом.

+
+
+
+ ); +} + +createRoot(document.getElementById('root')).render();