Context and rules for working on the RekHarbor landing page at /opt/market-telegram-bot/landing/
/opt/market-telegram-bot/landing/
{
"compilerOptions": {
"target": "ES2022",
"lib": ["ES2022", "DOM", "DOM.Iterable"],
"types": ["node"],
"moduleResolution": "bundler",
"module": "ESNext",
"strict": true,
"noEmit": true
}
}
Note: baseUrl is deprecated in TS 6 — do not use it.
Source of truth: DESIGN.md in /opt/market-telegram-bot/landing/ Key tokens:
@import "tailwindcss";
@theme {
--font-ui: "DM Sans", "Helvetica Neue", sans-serif;
--font-display: "Outfit", "Helvetica Neue", sans-serif;
--font-mid: "Poppins", sans-serif;
--font-data: "Roboto", "Helvetica Neue", sans-serif;
--color-brand-blue: #1456f0;
--color-brand-blue-hover: #2563eb;
--color-brand-blue-light: #3b82f6;
--color-brand-pink: #ea5ec1;
--color-text-primary: #222222;
--color-text-secondary: #45515e;
--color-text-muted: #8e8e93;
--color-surface-dark: #181e25;
--color-surface-footer: #181e25;
--color-border: #e5e7eb;
--color-border-subtle: #f2f3f5;
--color-bg-glass: hsla(0, 0%, 100%, 0.4);
--shadow-card: rgba(0, 0, 0, 0.08) 0px 4px 6px;
--shadow-ambient: rgba(0, 0, 0, 0.08) 0px 0px 22.576px;
--shadow-brand: rgba(44, 30, 116, 0.16) 0px 0px 15px;
--shadow-elevated: rgba(36, 36, 36, 0.08) 0px 12px 16px -4px;
--radius-btn: 8px;
--radius-card-sm: 13px;
--radius-card-md: 20px;
--radius-card-lg: 24px;
--radius-pill: 9999px;
--spacing-section: 80px;
--spacing-section-mobile: 40px;
}
No unsafe-inline, no unsafe-eval. Vite production build does NOT inline scripts — no workarounds needed. If Tailwind adds inline styles → use sha256 hash of that exact block, not broad unsafe-inline.
Must include:
Landing has ZERO runtime dependency on FastAPI. All tariffs/prices come from src/lib/constants.ts. Never add fetch() calls to /api/* endpoints.
npx eslint . --fix npx tsc --noEmit npm run build # includes prebuild → sitemap.xml npx lhci autorun