Платформа для изучения языков и управления лексиконом. Разработана на стекe Next.js (App Router), Prisma ORM (SQLite) и NextAuth.js.
Проект спроектирован с учетом поддержки ИИ-ассистентов (Cursor, GitHub Copilot) — основные архитектурные правила описаны в файле agents.md.
- Frontend: Next.js (React), Tailwind CSS, TypeScript
- State & Data: Prisma Client,
next-safe-action(для безопасных серверных действий) - Auth: NextAuth.js
- Database: SQLite (с поддержкой виртуальных таблиц FTS5 для быстрого полнотекстового поиска)
npm installСоздайте файл .env в корневом каталоге и добавьте необходимые переменные (базовый шаблон):
DATABASE_URL="file:./dev.db"
NEXTAUTH_SECRET="your-secret-key"
# Дополнительные ключи для OAuth-провайдеровПроект использует локальную базу данных SQLite. Запустите генерацию клиента и примените миграции:
# Генерация Prisma Client
npm run prisma:generate
# Применение миграций / пуш схемы в БД
npx prisma db pushnpm run devПриложение будет доступно по адресу http://localhost:3000.
npm run dev— Запуск локального сервера разработки.npm run build— Сборка оптимизированного Production-билда.npm run start— Запуск собранного Production-сервера.npm run lint— Проверка кода линтером Next.js.npm run prisma:generate— Пересборка типов Prisma Client после измененияschema.prisma.
Перед началом разработки обязательно ознакомьтесь с полным текстом agents.md. Ключевые моменты:
- Компоненты (Архитектура Next.js):
- Все страницы и базовые компоненты по умолчанию являются Server Components.
- Директива
"use client"используется строго в интерактивных элементах (кнопки, формы, хуки).
- База данных (Prisma + SQLite FTS5):
- Для поиска по тексту используются виртуальные таблицы SQLite FTS5. Они создаются через сырые SQL-миграции и помечаются в схеме директивой
@@ignore. - Изменение данных в них происходит через триггеры БД, а выборка — через
$queryRawс операторомMATCH.
- Для поиска по тексту используются виртуальные таблицы SQLite FTS5. Они создаются через сырые SQL-миграции и помечаются в схеме директивой
- Безопасность Mutation (Server Actions):
- Любые изменения данных (POST/PUT/DELETE) должны проходить через библиотеки валидации (например,
next-safe-action) с обязательной проверкой сессии пользователя.
- Любые изменения данных (POST/PUT/DELETE) должны проходить через библиотеки валидации (например,
- Убедитесь, что ваш код проходит проверку линтером:
npm run lint. - Если вы меняете структуру БД, обязательно обновляйте файлы миграций и не забывайте прописывать
@@ignoreдля теневых и виртуальных таблиц FTS5.