Первоначальная версия VidConf

This commit is contained in:
2026-07-23 01:04:01 +03:00
commit 896455381a
335 changed files with 61527 additions and 0 deletions

79
frontend/src/App.tsx Normal file
View File

@@ -0,0 +1,79 @@
import { Navigate, Route, Routes } from 'react-router-dom'
import { LoginPage } from '@/pages/LoginPage'
import { RegisterPage } from '@/pages/RegisterPage'
import { VerifyEmailPage } from '@/pages/VerifyEmailPage'
import { LobbyPage } from '@/pages/LobbyPage'
import { JoinPage } from '@/pages/JoinPage'
import { RoomPage } from '@/pages/RoomPage'
import { CalendarPage } from '@/pages/CalendarPage'
import { MyConferencesPage } from '@/pages/MyConferencesPage'
import { ProfilePage } from '@/pages/ProfilePage'
import { AdminPage } from '@/pages/AdminPage'
import { RequireAuth } from '@/auth/RequireAuth'
import { RequireAdmin } from '@/auth/RequireAdmin'
function App() {
return (
<Routes>
<Route path="/" element={<Navigate to="/lobby" replace />} />
<Route path="/login" element={<LoginPage />} />
<Route path="/register" element={<RegisterPage />} />
<Route path="/verify-email" element={<VerifyEmailPage />} />
<Route
path="/lobby"
element={
<RequireAuth>
<LobbyPage />
</RequireAuth>
}
/>
{/* Подключение по ссылке/номеру — публичное: доступно и гостю без аккаунта. */}
<Route path="/join" element={<JoinPage />} />
<Route path="/j/:slug" element={<JoinPage />} />
{/*
* Комната конференции — тоже публичная: гость подключается по токену,
* переданному через navigation state из JoinPage (без JWT-сессии
* приложения). Авторизация внутри самой страницы не требуется — см.
* комментарий в RoomPage.tsx.
*/}
<Route path="/room/:slug" element={<RoomPage />} />
<Route
path="/calendar"
element={
<RequireAuth>
<CalendarPage />
</RequireAuth>
}
/>
<Route
path="/my-conferences"
element={
<RequireAuth>
<MyConferencesPage />
</RequireAuth>
}
/>
<Route
path="/profile"
element={
<RequireAuth>
<ProfilePage />
</RequireAuth>
}
/>
<Route
path="/admin"
element={
<RequireAuth>
<RequireAdmin>
<AdminPage />
</RequireAdmin>
</RequireAuth>
}
/>
<Route path="*" element={<Navigate to="/lobby" replace />} />
</Routes>
)
}
export default App