Grundgerüst für Certain Finance: - Backend: FastAPI + SQLAlchemy + SQLite, Alembic-Migrationen (Batch-Mode), argon2-Passwort-Hashing, server-seitige Sitzungen im Cookie, Erst-Admin, Benutzerverwaltung mit Temporär-Passwort, Einstellungen je Benutzer. - Ein Prozess, ein Port: uvicorn liefert API (/api) und gebautes SPA aus, inkl. SPA-Deeplink-Fallback. - Frontend: React 18 + Vite + JSX, Design-Tokens (Light/Dark), i18n DE/EN, Inline-SVG-Icons (keine Emojis), Login, Passwort-ändern, Dashboard-Platzhalter, Benutzer- und Einstellungsseiten. - Deploy: nativer LXC-Installer + Update-Skript (systemd), env-Vorlage, Doku. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
31 lines
881 B
React
31 lines
881 B
React
import React from "react";
|
|
import ReactDOM from "react-dom/client";
|
|
import { BrowserRouter } from "react-router-dom";
|
|
import "./i18n";
|
|
import App from "./App";
|
|
import { AuthProvider } from "./auth";
|
|
import { SettingsProvider } from "./settings";
|
|
import { ConfirmProvider } from "./confirm";
|
|
import { ToastProvider } from "./toast";
|
|
import ErrorBoundary from "./components/ErrorBoundary";
|
|
import "./styles.css";
|
|
import "./finance.css";
|
|
|
|
ReactDOM.createRoot(document.getElementById("root")).render(
|
|
<React.StrictMode>
|
|
<ErrorBoundary>
|
|
<BrowserRouter>
|
|
<AuthProvider>
|
|
<SettingsProvider>
|
|
<ConfirmProvider>
|
|
<ToastProvider>
|
|
<App />
|
|
</ToastProvider>
|
|
</ConfirmProvider>
|
|
</SettingsProvider>
|
|
</AuthProvider>
|
|
</BrowserRouter>
|
|
</ErrorBoundary>
|
|
</React.StrictMode>
|
|
);
|