Files
commonground-impact-shadcn/AGENTS.md

6.7 KiB
Raw Blame History

AGENTS.md

Common Ground — editorial impact/NKO шаблон: сохраняй newsroom-структуру, публичный ledger, кампании с бюджетом, истории людей, волонтерские смены и проверяемые документы.

Project Specifics

  • Кампании, метрики, ledger, истории, смены, документы, партнеры и бюджет описаны в src/entities/site-content.ts.
  • src/app — только route wrappers; композиция каждой страницы живёт в отдельном widget (src/widgets/<page>-page.tsx). См. File Map.
  • Mock-пожертвования держи в src/features/*/ui; не добавляй реальные платежи, CRM, donor accounts или API без запроса.
  • Не делай generic charity landing: каждая страница должна усиливать доверие через цель, прогресс, документы, ответственного, место или конкретную смену.
  • Избегай мягкой декоративной благотворительности; стиль должен ощущаться как редакция, полевой desk и публичная отчетность.
  • Проверка после правок: pnpm lint и pnpm build.

Design System

Источник токенов — src/app/globals.css (@theme + :root/.dark). Шрифт — Noto Serif (--font-commonground), один serif-гарнитур на sans и mono, с включёнными ss01/cv01/tnum (табличные цифры для ledger). Работай через семантические классы Tailwind (bg-card, text-foreground, text-primary, border-foreground), не хардкодь hex/oklch.

Личность: newsroom / полевой выпуск — тёплый газетный кремовый фон с лёгкой бумажной зернистостью, тёмно-коричневый «ink» как текст и границы, глубокий teal primary как «редакционный» сигнал, мягкий зелёный secondary (надежда/поле) и тёплый терракотовый accent. Это не charity-пастель: ощущение печатной редакции и публичной отчётности.

Роль Light Характер
background газетный кремовый (oklch 0.96 0.018 83) бумажный фон с зерном-сеткой
foreground тёмно-коричневый ink (oklch 0.17 0.025 65) текст + границы (border-2 border-foreground)
primary глубокий teal (oklch 0.43 0.095 218) акценты, цифры ledger, кнопки, иконки
secondary мягкий зелёный (oklch 0.83 0.09 145) бейджи региона/роли, hero-glow
muted / muted-foreground тёплый серо-бежевый вторичный текст
accent терракота (oklch 0.73 0.105 50) редкий тёплый сигнал
card почти белый кремовый карточки кампаний, ledger, документы

Узнаваемые приёмы (держи их, это и есть «лицо» проекта):

  • Серифная типографика: Noto Serif + font-black — газетные заголовки, очень плотный leading (leading-[0.88]/leading-[0.96]), крупные размеры (до text-8xl). Тело текста тоже serif.
  • Толстые границы: border-2 border-foreground, divide-y-2 divide-foreground — карточки, таблицы ledger и доски смен очерчены, а не растворены.
  • Hard offset shadow: shadow-[8px_8px_0_var(--foreground)] на ключевых aside-блоках (hero-выпуск, партнёрская проверка).
  • Double-rule плашки: утилита .impact-rule — двойная типографская линейка сверху/снизу для рубрик-капителей (text-sm font-black uppercase).
  • Газетная подложка: .newsprint — тонкая сетка-растр для hero/title-секций; глобальный фон body тоже несёт зелёный radial-glow + вертикальный растр.
  • Скромный radius: --radius = 0.18rem; элементы почти прямоугольные, но не абсолютно острые.
  • Ledger-first доверие: табличные цифры (tnum), прогресс-бары целей и процентов бюджета, проверяемые блоки документов.

Do / Don't:

  • Do: держи serif-заголовки, толстые границы, double-rule рубрики, публичный ledger и прогресс-бары; цифры — через text-primary.
  • Don't: sans-заголовки, мягкие тени, скруглённые «pill»-карточки, пастельные градиенты, generic-charity hero — это ломает newsroom-личность.

File Map

Route Widget
/ src/widgets/home-page.tsx (HomePage)
/campaigns src/widgets/campaigns-page.tsx (CampaignsPage)
/campaigns/clean-water src/widgets/campaign-detail-page.tsx (CampaignDetailPage)
/impact src/widgets/impact-page.tsx (ImpactPage)
/stories src/widgets/stories-page.tsx (StoriesPage)
/volunteer src/widgets/volunteer-page.tsx (VolunteerPage)
/transparency src/widgets/transparency-page.tsx (TransparencyPage)

Переиспользуемые блоки:

  • src/widgets/site-shell.tsxSiteShell (header + nav + footer, обёртка всех страниц).
  • src/widgets/campaign-card.tsxCampaignCard (Home featured + Campaigns grid).
  • src/widgets/ledger-table.tsxLedgerTable (Home + Impact).
  • src/shared/ui/editorial-title.tsxEditorialTitle (заголовочная секция внутренних страниц: Campaigns, Impact, Stories, Volunteer, Transparency).
  • src/shared/lib/campaign.tsformatRub, campaignProgress (CampaignCard + Campaign Detail).
  • src/features/donation-panel/ui/donation-panel.tsx — mock-панель пожертвования.

Одноразовые блоки колоцированы со своей страницей: MetricCard в impact-page.tsx, StoryCard в stories-page.tsx, DocumentCard в transparency-page.tsx.