# SEO Insight — Overview

Suite **SEO expert** (niche), orientée **MCP / AI Builder / Agents-Ready**.

## Stack
- **Maintenant** : Next.js **16** (App Router) · **shadcn** · **bun** · **biome** · **PostgreSQL + Drizzle** (DB réelle dev/test) · **Better Auth** (orgs/users/rôles) · **rust `import-core` → wasm** (parsers CSV + HTML on-page) · **Firecrawl** self-hosted (crawl on-page).
- **Cible (après)** : API **Hono** · **workers Rust** + file d'attente · **SurrealDB** · **MCP intégré** · **i18n**. Archi **micro-modules** distincts, légère.
  - **Livré** : `services/analytics/` — micro-module **Bun + Hono + DuckDB** pour l'**import lourd** (gros exports keyword Semrush/Mangools). Flux : l'app PUT le CSV sur **Cloudflare R2** (`@aws-sdk/client-s3`) sous une clé dérivée serveur → enqueue dans la queue Postgres `analytics_jobs` (Hono `POST /jobs`) → le worker lit `r2://…` via DuckDB, normalise/dédup, **upsert** les métriques curées dans Postgres (Drizzle), puis supprime l'objet R2. Postgres reste la source de vérité. Bouton **« Import lourd »** dans le réservoir keywords (gaté par `env.analyticsEnabled`). Vérifié end-to-end live contre R2 + DB dev. Voir `services/analytics/README.md`.

> **État d'avancement (fait / à faire) : `docs/project/roadmap.md`.**

## Sections (cahier des charges)
- **keywords** — reservoir · recherche · planning · export-import · overview
- **backlink** — reservoir (GLOBAL) · recherche · planning · export-import · overview
- **contenu** — planning · online · stats · import-export · overview
- **products** — planning · online · stats · import-export · overview
- **checklist** — base de connaissances (clone specification.website) + audit + MCP privé/public-limité *(amorcé = `flight-checker`)*

## Design
Tokens de `design.md` → **thème Tailwind**, appliqués à une **UI dashboard shadcn** (pas le look marketing d'origine).

## Principe
**Design-first** : on conçoit l'écran d'abord ; le design **révèle** le modèle de données, l'API et les modules. On ne fige **pas** la DB avant d'avoir designé.

> Specs détaillées (source de vérité, mémoire séparée, côté orchestrateur) : `~/Documents/seo insight/docs/specs`. Dans le repo, on travaille à partir des **build briefs** (`docs/project/pages/…`).
