/ frontend / src / app / routes.js
routes.js
  1  import { lazy } from "react";
  2  import { Navigate } from "react-router-dom";
  3  
  4  import AuthGuard from "./auth/AuthGuard";
  5  import { authRoles } from "./auth/authRoles";
  6  
  7  import Loadable from "./components/Loadable";
  8  import MatxLayout from "./components/MatxLayout/MatxLayout";
  9  
 10  import sessionRoutes from "./views/sessions/session-routes";
 11  
 12  const Home = Loadable(lazy(() => import("app/views/dashboard/Home")));
 13  const LLMs = Loadable(lazy(() => import("app/views/llms/List")));
 14  const LLMsNewChooser = Loadable(lazy(() => import("app/views/llms/NewChooser")));
 15  const LLMsNew = Loadable(lazy(() => import("app/views/llms/NewInteractive")));
 16  const LLMsInfo = Loadable(lazy(() => import("app/views/llms/Info")));
 17  const LLMsEdit = Loadable(lazy(() => import("app/views/llms/Edit")));
 18  const Embeddings = Loadable(lazy(() => import("app/views/embeddings/List")));
 19  const ImageGenerators = Loadable(lazy(() => import("app/views/image_generators/List")));
 20  const SpeechToText = Loadable(lazy(() => import("app/views/speech_to_text/List")));
 21  const EmbeddingsNewChooser = Loadable(lazy(() => import("app/views/embeddings/NewChooser")));
 22  const EmbeddingsNew = Loadable(lazy(() => import("app/views/embeddings/NewInteractive")));
 23  const EmbeddingsInfo = Loadable(lazy(() => import("app/views/embeddings/Info")));
 24  const EmbeddingsEdit = Loadable(lazy(() => import("app/views/embeddings/Edit")));
 25  const Projects = Loadable(lazy(() => import("app/views/projects/List")));
 26  const Library = Loadable(lazy(() => import("app/views/projects/Library")));
 27  const Tools = Loadable(lazy(() => import("app/views/projects/Tools")));
 28  const ProjectsInfo = Loadable(lazy(() => import("app/views/projects/Info")));
 29  const ProjectsNew = Loadable(lazy(() => import("app/views/projects/New")));
 30  const ProjectsEdit = Loadable(lazy(() => import("app/views/projects/Edit")));
 31  const ProjectsLogs = Loadable(lazy(() => import("app/views/projects/Logs")));
 32  const ProjectsPlayground = Loadable(lazy(() => import("app/views/projects/Playground")));
 33  const ProjectsAPI = Loadable(lazy(() => import("app/views/projects/API")));
 34  const ProjectsIDE = Loadable(lazy(() => import("app/views/projects/IDE")));
 35  const ProjectsEvals = Loadable(lazy(() => import("app/views/projects/Evals")));
 36  const ProjectsGuards = Loadable(lazy(() => import("app/views/projects/Guards")));
 37  const Users = Loadable(lazy(() => import("app/views/users/List")));
 38  const UsersInfo = Loadable(lazy(() => import("app/views/users/Info")));
 39  const UsersNew = Loadable(lazy(() => import("app/views/users/New")));
 40  const Image = Loadable(lazy(() => import("app/views/projects/Image")));
 41  const Audio = Loadable(lazy(() => import("app/views/projects/Audio")));
 42  const Keys = Loadable(lazy(() => import("app/views/proxy/Keys")));
 43  
 44  // Team routes
 45  const Teams = Loadable(lazy(() => import("app/views/teams/Teams")));
 46  const TeamView = Loadable(lazy(() => import("app/views/teams/TeamView")));
 47  const TeamEdit = Loadable(lazy(() => import("app/views/teams/TeamEdit")));
 48  const DirectAccess = Loadable(lazy(() => import("app/views/direct/DirectAccess")));
 49  const ClassifierPlayground = Loadable(lazy(() => import("app/views/classifier/ClassifierPlayground")));
 50  const PermissionMatrix = Loadable(lazy(() => import("app/views/admin/PermissionMatrix")));
 51  const OllamaModels = Loadable(lazy(() => import("app/views/llms/ollama/OllamaModels")));
 52  const Settings = Loadable(lazy(() => import("app/views/settings/Settings")));
 53  const GpuInfo = Loadable(lazy(() => import("app/views/settings/GpuInfo")));
 54  const AuditLog = Loadable(lazy(() => import("app/views/audit/AuditLog")));
 55  const CronLogs = Loadable(lazy(() => import("app/views/admin/CronLogs")));
 56  const InvitationsPage = Loadable(lazy(() => import("app/views/invitations/Invitations")));
 57  
 58  const routes = [
 59    {
 60      path: "/",
 61      element: <Navigate to="home" />
 62    },
 63    {
 64      element: (
 65        <AuthGuard>
 66          <MatxLayout />
 67        </AuthGuard>
 68      ),
 69      children: [
 70        {
 71          path: "/home",
 72          element: <Home />,
 73          auth: authRoles.admin
 74        },
 75        {
 76          path: "/users",
 77          element: <Users />,
 78          auth: authRoles.admin
 79        },
 80        {
 81          path: "/user/:id",
 82          element: <UsersInfo />,
 83          auth: authRoles.admin
 84        },
 85        {
 86          path: "/users/new",
 87          element: <UsersNew />,
 88          auth: authRoles.admin
 89        },
 90        {
 91          path: "/llms",
 92          element: <LLMs />,
 93          auth: authRoles.user
 94        },
 95        {
 96          path: "/llms/new",
 97          element: <LLMsNewChooser />,
 98          auth: authRoles.admin
 99        },
100        {
101          path: "/llms/new/manual",
102          element: <LLMsNew />,
103          auth: authRoles.admin
104        },
105        {
106          path: "/llms/ollama",
107          element: <OllamaModels />,
108          auth: authRoles.admin
109        },
110        {
111          path: "/llm/:id",
112          element: <LLMsInfo />,
113          auth: authRoles.user
114        },
115        {
116          path: "/llm/:id/edit",
117          element: <LLMsEdit />,
118          auth: authRoles.admin
119        },
120        {
121          path: "/embeddings",
122          element: <Embeddings />,
123          auth: authRoles.user
124        },
125        {
126          path: "/embeddings/new",
127          element: <EmbeddingsNewChooser />,
128          auth: authRoles.admin
129        },
130        {
131          path: "/embeddings/new/manual",
132          element: <EmbeddingsNew />,
133          auth: authRoles.admin
134        },
135        {
136          path: "/embedding/:id",
137          element: <EmbeddingsInfo />,
138          auth: authRoles.user
139        },
140        {
141          path: "/embedding/:id/edit",
142          element: <EmbeddingsEdit />,
143          auth: authRoles.admin
144        },
145        {
146          path: "/generators/image",
147          element: <ImageGenerators />,
148          auth: authRoles.user
149        },
150        {
151          path: "/generators/speech2text",
152          element: <SpeechToText />,
153          auth: authRoles.user
154        },
155        {
156          path: "/projects",
157          element: <Projects />,
158          auth: authRoles.user
159        },
160        {
161          path: "/projects/library",
162          element: <Library />,
163          auth: authRoles.user
164        },
165        {
166          path: "/projects/tools",
167          element: <Tools />,
168          auth: authRoles.user
169        },
170        {
171          path: "/project/:id",
172          element: <ProjectsInfo />,
173          auth: authRoles.user
174        },
175        {
176          path: "/projects/new",
177          element: <ProjectsNew />,
178          auth: authRoles.user
179        },
180        {
181          path: "/project/:id/edit",
182          element: <ProjectsEdit />,
183          auth: authRoles.user
184        },
185        {
186          path: "/project/:id/logs",
187          element: <ProjectsLogs />,
188          auth: authRoles.user
189        },
190        {
191          path: "/project/:id/playground",
192          element: <ProjectsPlayground />,
193          auth: authRoles.user
194        },
195        {
196          path: "/project/:id/api",
197          element: <ProjectsAPI />,
198          auth: authRoles.user
199        },
200        {
201          path: "/project/:id/ide",
202          element: <ProjectsIDE />,
203          auth: authRoles.user
204        },
205        {
206          path: "/project/:id/evals",
207          element: <ProjectsEvals />,
208          auth: authRoles.user
209        },
210        {
211          path: "/project/:id/guards",
212          element: <ProjectsGuards />,
213          auth: authRoles.user
214        },
215        {
216          path: "/proxy/keys",
217          element: <Keys />,
218          auth: authRoles.admin
219        },
220        {
221          path: "/classifier",
222          element: <ClassifierPlayground />,
223          auth: authRoles.admin
224        },
225        {
226          path: "/image",
227          element: <Image />,
228          auth: authRoles.admin
229        },
230        {
231          path: "/audio",
232          element: <Audio />,
233          auth: authRoles.admin
234        },
235        {
236          path: "/teams",
237          element: <Teams />,
238          auth: authRoles.admin
239        },
240        {
241          path: "/teams/new",
242          element: <TeamEdit />,
243          auth: authRoles.admin
244        },
245        {
246          path: "/team/:id",
247          element: <TeamView />,
248          auth: authRoles.admin
249        },
250        {
251          path: "/team/:id/edit",
252          element: <TeamEdit />,
253          auth: authRoles.admin
254        },
255        {
256          path: "/direct",
257          element: <DirectAccess />,
258          auth: authRoles.admin
259        },
260        {
261          path: "/settings",
262          element: <Settings />,
263          auth: authRoles.admin
264        },
265        {
266          path: "/gpu",
267          element: <GpuInfo />,
268          auth: authRoles.admin
269        },
270        {
271          path: "/audit",
272          element: <AuditLog />,
273          auth: authRoles.admin
274        },
275        {
276          path: "/admin/cron-logs",
277          element: <CronLogs />,
278          auth: authRoles.admin
279        },
280        {
281          path: "/admin/permissions",
282          element: <PermissionMatrix />,
283          auth: authRoles.teamAdmin
284        },
285        {
286          path: "/invitations",
287          element: <InvitationsPage />,
288          auth: authRoles.user
289        }
290      ]
291    },
292  
293    ...sessionRoutes
294  ];
295  
296  export default routes;