diff --git a/driver-pwa/frontend/src/App.tsx b/driver-pwa/frontend/src/App.tsx
new file mode 100644
index 0000000..1bdfc74
--- /dev/null
+++ b/driver-pwa/frontend/src/App.tsx
@@ -0,0 +1,3 @@
+export default function App() {
+ return
Премиум Водитель
;
+}
diff --git a/driver-pwa/frontend/src/index.css b/driver-pwa/frontend/src/index.css
new file mode 100644
index 0000000..b72f7a6
--- /dev/null
+++ b/driver-pwa/frontend/src/index.css
@@ -0,0 +1,13 @@
+@tailwind base;
+@tailwind components;
+@tailwind utilities;
+
+html, body, #root { height: 100%; }
+body { @apply bg-cream text-ink font-sans antialiased; margin: 0; }
+button { font-family: inherit; }
+
+@layer components {
+ .btn-primary { @apply bg-ink text-cream rounded-xl2 py-3.5 px-4 text-sm font-bold text-center w-full active:opacity-90 disabled:opacity-50; }
+ .btn-ghost { @apply border border-ink text-ink rounded-xl2 py-3 px-4 text-sm font-semibold text-center w-full; }
+ .card { @apply bg-surface border border-line rounded-2xl; }
+}
diff --git a/driver-pwa/frontend/src/main.tsx b/driver-pwa/frontend/src/main.tsx
new file mode 100644
index 0000000..62916f4
--- /dev/null
+++ b/driver-pwa/frontend/src/main.tsx
@@ -0,0 +1,22 @@
+import React from "react";
+import ReactDOM from "react-dom/client";
+import { BrowserRouter } from "react-router-dom";
+import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
+import { Toaster } from "sonner";
+import App from "./App";
+import "./index.css";
+
+const queryClient = new QueryClient({
+ defaultOptions: { queries: { retry: 1, staleTime: 15_000 } },
+});
+
+ReactDOM.createRoot(document.getElementById("root")!).render(
+
+
+
+
+
+
+
+
+);
diff --git a/driver-pwa/frontend/src/test/setup.ts b/driver-pwa/frontend/src/test/setup.ts
new file mode 100644
index 0000000..f149f27
--- /dev/null
+++ b/driver-pwa/frontend/src/test/setup.ts
@@ -0,0 +1 @@
+import "@testing-library/jest-dom/vitest";