Backend: - Gemeinsame Bewegungsschicht flows(), auf der alle Berichte aufbauen; Plan und Ist bleiben dabei getrennt - Forecast, Kategorien mit Drilldown, Abo-Übersicht, Jahresvergleich, Cashflow-Kalender, Budget-Ampel, Sparziel-Fortschritt, gebündeltes Dashboard - Budgetübertrag über Monatsgrenzen, Budgets auf Oberkategorien schließen Unterkategorien ein - Export als CSV (BOM, Semikolon, deutsches Dezimaltrennzeichen) und XLSX mit typisierten Beträgen Frontend: - Dashboard, Cashflow-Kalender mit Bestätigen direkt am Tag, Budget-, Sparziel- und Auswertungsseite - Diagrammpalette gegen beide Flächen auf Kontrast und Farbfehlsichtigkeit geprüft; Grün/Rot als Serienpaar verworfen - Einnahmen/Ausgaben und kumulierter Saldo in getrennten Diagrammen statt auf zwei Größenachsen - Recharts in einen eigenen Chunk ausgelagert 27 neue Backend-Tests (235 gesamt), 16 neue Frontend-Tests (65 gesamt) Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014e7t8UpmoVNMtWivY5LiSH
43 lines
1.1 KiB
TypeScript
43 lines
1.1 KiB
TypeScript
import path from "node:path";
|
||
|
||
import react from "@vitejs/plugin-react";
|
||
// `vitest/config` erweitert Vites defineConfig um den Testabschnitt.
|
||
import { defineConfig } from "vitest/config";
|
||
|
||
export default defineConfig({
|
||
plugins: [react()],
|
||
resolve: {
|
||
alias: { "@": path.resolve(__dirname, "./src") },
|
||
},
|
||
server: {
|
||
port: 5173,
|
||
// Im Entwicklungsbetrieb übernimmt Vite die Rolle, die in Produktion nginx hat.
|
||
proxy: {
|
||
"/api": {
|
||
target: process.env.VITE_API_PROXY ?? "http://localhost:8000",
|
||
changeOrigin: true,
|
||
},
|
||
},
|
||
},
|
||
build: {
|
||
outDir: "dist",
|
||
sourcemap: false,
|
||
rollupOptions: {
|
||
output: {
|
||
// Recharts wiegt mehr als der Rest der Anwendung und ändert sich selten –
|
||
// als eigener Chunk bleibt er über Releases hinweg im Browser-Cache.
|
||
manualChunks: {
|
||
charts: ["recharts"],
|
||
vendor: ["react", "react-dom", "react-router-dom", "@tanstack/react-query"],
|
||
},
|
||
},
|
||
},
|
||
},
|
||
test: {
|
||
globals: true,
|
||
environment: "jsdom",
|
||
setupFiles: ["./src/test/setup.ts"],
|
||
css: false,
|
||
},
|
||
});
|