Project overview & design system reference. Marketing site for AI-driven analytics and prediction platform for iGaming. Next.js 16, React 19, Tailwind CSS 4.
Tokens and patterns from DESIGN-SHOWCASE.md and globals.css. Live reference: ipulsy.com
| Token | Value (dark) | Usage |
|---|---|---|
--color-rose-500 | #f43f5e | Brand, accent, chart-1, link-standalone |
--bg-primary | #0f0f12 | Page base |
--bg-secondary | #1d1d23 | Content sections |
--bg-mid | #18181d | Alternating sections, cards, gradients |
--bg-card | var(--bg-mid) | Cards (same as mid) |
--text-primary | #fafaf9 | Headings |
--text-secondary | #f4f4f5 | Body text |
--text-muted | #b8b8c2 | Labels, hints |
--text-hero | #FFEEDD | Hero title |
--border-color | color-mix(in srgb, var(--text-secondary) 20%, transparent) (zinc-100/20) | Borders |
--bg-card-alt | var(--bg-secondary) | Card alt, showcase striping (app uses Tailwind for table chrome) |
--color-yellow-500 … --color-blue-500 | McBile ramp (see DESIGN-SHOWCASE) | Accents, gradients, stats |
Fonts: Montserrat (body, headings), JetBrains Mono (stats, code), Audiowide (PULSY), Slackey (brand "i"). Typography: .page-title-hero 40/50/60px, section title text-3xl md:text-4xl font-extrabold, subtitle text-xl. Containers: max-w-3xl (hero, legal), max-w-4xl (content), max-w-7xl (showcase). Breakpoint sm: 40.6rem.
.gradient-pulse-red-br — CTA, showcase brand chip, chatbot strip: linear to bottom right (var(--color-pulse-500) → var(--color-red-500)).gradient-text — accent text.link-standalone — rose-400, no underline.tab-active — border-bottom rose-500.stat-1 / .stat-pink — rose-500.stat-2 / .stat-green — blue-500.stat-3 / .stat-orange — yellow-500Next.js marketing site — App Router, React 19, TypeScript 5, Tailwind CSS 4
| Layer | Technology | Version / purpose |
|---|---|---|
| Framework | Next.js | 16.2.1 — App Router, SSR, i18n [locale] |
| UI | React | 19.2.4 — Server & Client Components |
| Language | TypeScript | 5 — type safety |
| Styling | Tailwind CSS | 4.2.1 — design system, light/dark |
| Charts | Recharts | 3.7.0 — Showcase dashboards |
| UI primitives | Radix UI | 1.4.3 — accessible |
| Icons | Lucide React | 0.576+ |
| Utilities | clsx, tailwind-merge, cva | Class merging, variants |
| Resend | Contact Us, Book Demo | |
| Cache | Upstash Redis | Bounce alerts, digest |
| Analytics | Microsoft Clarity | Session recording, heatmaps (cookie consent) |
| Analytics | GA4 | Web analytics, events, traffic (MCP integration) |
| Deploy | Vercel | Hosting, edge functions |
| Tests | Vitest | 4.0.18 — unit/integration, 356 tests (69 test files under src/ and tests/) |
| Tests | Playwright | 1.58.2 — E2E (critical-paths, mission-carousel) |
| Build | PostCSS | 8.5.8 — Tailwind pipeline |
| Lint | ESLint | 9.36.0 — eslint-config-next |
| Media | FFmpeg, ImageMagick, Pillow, Gifski | Platform/media tools (icons in public/svg/tools/) |
Routes prefixed by locale: /en, /ru. Sitemap.xml: one URL per path per locale.
| Route | File | Description |
|---|---|---|
/[locale] | page.tsx | Home — hero carousel, features, metrics, CTA |
/mission | mission/page.tsx | Mission — principles, Who we are card |
/products | products/page.tsx | Products — iPULSY, McBile family |
/pipeline | pipeline/page.tsx | Pipeline |
/showcase | showcase/page.tsx | Showcase — 8 demo dashboards |
/kpi-report | kpi-report/page.tsx | KPI report — tabbed demo tables |
/datadive | datadive/page.tsx | Data Dive — metric areas |
/platform | platform/page.tsx | Platform — lifecycle, Data Flow, Chat, MCPs |
/tech-stack | tech-stack/page.tsx | Tech stack |
/sitemap | sitemap/page.tsx | User-facing sitemap (footer Resources) |
/privacy | privacy/page.tsx | Privacy policy |
/terms | terms/page.tsx | Terms of use |
/cookies | cookies/page.tsx | Cookie policy |
Layout, UI, Analytics — src/components/
header.tsx — Sticky header, nav, mobile menu, Book Demofooter.tsx — Footer, links, theme, Book Demotheme-switcher.tsx — Light/darklanguage-switcher.tsx — EN/RUbutton.tsx, card.tsx, card-grid.tsxlogo.tsx, ipulsy-icon.tsx, brand-name.tsxtable.tsx, tabs.tsxbook-demo-modal.tsx, contact-us-modal.tsxanalytics-provider.tsx — Cookie consent, Clarity toggleclarity.tsx — MS Clarity session recordingcookie-consent.tsx — Banner, Accept/RejectStatic site — dictionaries and API routes
Development, build, test, quality
| Script | Command | Purpose |
|---|---|---|
| dev | next dev | Development server |
| build | next build | Production build |
| start | next start | Production server |
| lint | eslint | Linter |
| test | vitest | Unit/integration (watch) |
| test:run | vitest run | Tests once |
| test:coverage | vitest run --coverage | Coverage report |
| test:e2e | playwright test | E2E tests |
| knip | knip | Dead code |
| depcheck | depcheck | Unused deps |
| ts-prune | ts-prune | Unused TypeScript symbols |
8 agents, 10 commands — .cursor/visionary/
/backlog, /project-audit, /commit/fe-orchestrate, /plan, /fe-code-review/build-fix, /fe-refactor-clean, /update-docs, /learnRules & skills
docs/ — DESIGN-SHOWCASE, Map, DEVELOPER, TECH-STACK, SITEMAP, DICT-CODE-VERIFICATION, etc.
Building marketing website with core pages and responsive design
BACKLOG.md section Deferred)vitest.config.ts (run npm run test:coverage)Key milestones (RELEASES.md)