Об этом проекте

Aetherfield — это B2B-платформа для отслеживания, моделирования, отчётности и действий на основе данных о выбросах. Она устраняет разрыв между разрозненными ручными ESG-данными и операционной аналитикой, превращая устойчивое развитие из ежегодного отчётного упражнения в непрерывную практику. Репозиторий содержит как предварительно отрендеренный маркетинговый сайт, так и аутентифицированную платформу в одном приложении Next.js App Router без отдельного backend-сервиса. Ключевые возможности: - **Маркетинговый сайт**: семь публичных маршрутов (главная страница, журнал, статьи, карьера, вакансии, о компании, дизайн-система) с контентом в виде типизированных констант. Публичные пути записи для запросов демо, подписки на рассылку с двойным подтверждением и заявок на вакансии с приватной загрузкой резюме — всё с ограничением скорости и защитой от ботов. - **Платформа**: мультитенантные организации с членством и приглашениями, импорт активности из CSV с промежуточными строками, опубликованные и предоставленные клиентами наборы коэффициентов выбросов (предзаполненные DEFRA 2025/2026), выбор коэффициентов с учётом даты, движок расчёта Scope 1/2/3 (Scope 2 на основе местоположения и на основе рынка), отслеживание целей с прогнозами, сгенерированные ESG-отчёты и три ночных cron-задачи для пересчёта, пороговых оповещений и очистки по срокам хранения. - **Интеграция ИИ**: один модуль создаёт черновики повествовательного текста для ESG-отчётов через Vercel AI Gateway. LLM никогда не создаёт числа; вся арифметика детерминирована в чистых функциях. Сгенерированные повествования проверяются токен за токеном по закрытому списку допустимых вычисленных показателей, и черновики, не прошедшие проверку, отбрасываются. Провайдеру отправляются только отрендеренные, округлённые разделы отчёта. **Технологический стек**: Next.js 16.2.12 (App Router, Turbopack), React 19.2.4, TypeScript 5, Tailwind CSS 4 (без конфигурации), Neon Postgres с node-postgres, Drizzle ORM, Better Auth (self-hosted), Resend + React Email, ограничение скорости через Upstash Redis, Vercel Blob (приватный), защита от ботов BotID, валидация Zod, GSAP и Motion для анимаций, AI SDK, Vitest и Playwright для тестирования. **Архитектура**: многослойная — UI, Server Actions (единственный путь мутации), Route Handlers (только для внешних вызовов), слой данных (lib/db) и доменный слой (чистые функции). UI никогда не мутирует через Route Handlers; каждая мутация авторизуется и валидируется на стороне сервера. Публичные формы следуют единому пути: клиентская валидация, проверка BotID, ограничение скорости, серверная валидация Zod, авторизация, запись в базу данных и email-уведомление (сбой никогда не приводит к сбою записи). **Начало работы**: требуется Node.js 20+, база данных Neon Postgres (pooled и direct строки подключения) и опционально Vercel CLI. Настройка включает копирование .env.example, запуск миграций и заполнение коэффициентов конверсии. Локального режима базы данных нет. **Тестирование**: Vitest ограничен lib/domain (только чистые функции). Playwright покрывает Chromium, Firefox и WebKit против production-сборки, причём WebKit — в rootless-контейнере Podman для воспроизводимости. **Обработка персональных данных**: резюме хранятся в приватном blob-хранилище с подписанными URL, рассылка с двойным подтверждением, отсутствие логирования тел запросов/email/резюме, конечные сроки хранения с ночной очисткой и реальное удаление организаций. **Развёртывание**: Vercel Fluid Compute со средой выполнения Node.js. Три ночных cron-задачи объявлены в vercel.json. Ожидаются холодные старты Neon scale-to-zero. **Документация**: AGENTS.md — контракт для контрибьюторов; docs/ содержит записи сборки по каждой поверхности; prompts/ хранит нумерованные промпты реализации, с помощью которых был построен репозиторий.