Tracker de vie auto-hébergé : suivi poids/calories/sport avec planning de pesées, sevrage tabac (vape) avec modèle de coût DIY et économies, et finances personnelles avec import de relevés bancaires. Architecture : FastAPI + SQLAlchemy 2.0 + PostgreSQL 16, React 18 + TS + Vite + Tailwind + ECharts, déploiement Docker Compose. Modules auto-découverts des deux côtés (pkgutil / import.meta.glob) et framework de connecteurs à deux voies (importeurs de fichiers + ingestion JSON) pour brancher de nouvelles sources sans toucher au noyau. Validé : 292 tests pytest, tsc + vite build, contrat API/web vérifié contre le schéma OpenAPI, et déploiement Docker réel sur PostgreSQL 16 (28 tables, SPA servie par nginx, wizard de premier démarrage). Documentation : README.md, docs/GUIDE.md, CONVENTIONS.md, et les documents de conception et de recherche dans docs/. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
50 lines
1.4 KiB
TypeScript
50 lines
1.4 KiB
TypeScript
import type { Config } from "tailwindcss";
|
|
|
|
// Dark-theme tokens from docs/design/ux-pages.md §4.1 (normative — do not change hex values).
|
|
export default {
|
|
content: ["./index.html", "./src/**/*.{ts,tsx}"],
|
|
darkMode: "class",
|
|
theme: {
|
|
extend: {
|
|
colors: {
|
|
base: "#0D0D0D", // page background
|
|
surface: "#1A1A19", // card / chart background
|
|
"surface-2": "#242423", // hover, nested elements, inputs
|
|
border: "rgba(255,255,255,0.10)", // hairline border
|
|
ink: {
|
|
DEFAULT: "#FFFFFF", // text-primary
|
|
secondary: "#C3C2B7",
|
|
muted: "#898781", // axis labels, placeholders
|
|
},
|
|
grid: "#2C2C2A", // chart grid lines
|
|
axis: "#383835", // baseline / axis
|
|
accent: "#3987E5",
|
|
semantic: {
|
|
positive: "#0CA30C",
|
|
negative: "#D03B3B",
|
|
warning: "#FAB219",
|
|
serious: "#EC835A",
|
|
},
|
|
chart: {
|
|
1: "#3987E5",
|
|
2: "#D95926",
|
|
3: "#199E70",
|
|
4: "#C98500",
|
|
5: "#D55181",
|
|
6: "#008300",
|
|
7: "#9085E9",
|
|
8: "#E66767",
|
|
},
|
|
},
|
|
borderColor: {
|
|
DEFAULT: "rgba(255,255,255,0.10)",
|
|
},
|
|
borderRadius: { card: "12px" },
|
|
fontFamily: {
|
|
sans: ["system-ui", "-apple-system", '"Segoe UI"', "sans-serif"],
|
|
},
|
|
},
|
|
},
|
|
plugins: [],
|
|
} satisfies Config;
|