aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/client
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2025-12-06 17:38:08 +0900
committernsfisis <nsfisis@gmail.com>2025-12-06 17:38:08 +0900
commit92b595581e5988cd57ebeb982a70c85bfef498c3 (patch)
tree5b95c2b0a277ff7670206cdb16638e2ac5143c92 /src/client
parent811458427593a4172a2cd535cc768db375350dca (diff)
downloadkioku-92b595581e5988cd57ebeb982a70c85bfef498c3.tar.gz
kioku-92b595581e5988cd57ebeb982a70c85bfef498c3.tar.zst
kioku-92b595581e5988cd57ebeb982a70c85bfef498c3.zip
feat(client): initialize React + Vite frontend foundation
Set up the client-side React application with Vite bundler: - Add React 19 and Vite 7 with the React plugin - Create index.html entry point and App component - Configure Vite with API proxy to backend server - Add client build scripts to package.json - Update tsconfig for React JSX and DOM types - Fix TypeScript errors in auth code (JWT_SECRET type narrowing) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
Diffstat (limited to 'src/client')
-rw-r--r--src/client/App.tsx8
-rw-r--r--src/client/index.tsx2
-rw-r--r--src/client/main.tsx14
3 files changed, 23 insertions, 1 deletions
diff --git a/src/client/App.tsx b/src/client/App.tsx
new file mode 100644
index 0000000..fa42302
--- /dev/null
+++ b/src/client/App.tsx
@@ -0,0 +1,8 @@
+export function App() {
+ return (
+ <div>
+ <h1>Kioku</h1>
+ <p>Spaced repetition learning app</p>
+ </div>
+ );
+}
diff --git a/src/client/index.tsx b/src/client/index.tsx
index cb0ff5c..713869c 100644
--- a/src/client/index.tsx
+++ b/src/client/index.tsx
@@ -1 +1 @@
-export {};
+export { App } from "./App";
diff --git a/src/client/main.tsx b/src/client/main.tsx
new file mode 100644
index 0000000..1e185be
--- /dev/null
+++ b/src/client/main.tsx
@@ -0,0 +1,14 @@
+import { StrictMode } from "react";
+import { createRoot } from "react-dom/client";
+import { App } from "./App";
+
+const rootElement = document.getElementById("root");
+if (!rootElement) {
+ throw new Error("Root element not found");
+}
+
+createRoot(rootElement).render(
+ <StrictMode>
+ <App />
+ </StrictMode>,
+);