Skip to content

novoslovnica/interlex

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

75 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Interlex 🌐

Платформа для изучения языков и управления лексиконом. Разработана на стек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 для быстрого полнотекстового поиска)

🚀 Быстрый старт

1. Установка зависимостей

npm install

2. Настройка окружения

Создайте файл .env в корневом каталоге и добавьте необходимые переменные (базовый шаблон):

DATABASE_URL="file:./dev.db"
NEXTAUTH_SECRET="your-secret-key"
# Дополнительные ключи для OAuth-провайдеров

3. Подготовка базы данных (Prisma)

Проект использует локальную базу данных SQLite. Запустите генерацию клиента и примените миграции:

# Генерация Prisma Client
npm run prisma:generate

# Применение миграций / пуш схемы в БД
npx prisma db push

4. Запуск в режиме разработки

npm run dev

Приложение будет доступно по адресу http://localhost:3000.


📦 Доступные скрипты (package.json)

  • 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. Ключевые моменты:

  1. Компоненты (Архитектура Next.js):
    • Все страницы и базовые компоненты по умолчанию являются Server Components.
    • Директива "use client" используется строго в интерактивных элементах (кнопки, формы, хуки).
  2. База данных (Prisma + SQLite FTS5):
    • Для поиска по тексту используются виртуальные таблицы SQLite FTS5. Они создаются через сырые SQL-миграции и помечаются в схеме директивой @@ignore.
    • Изменение данных в них происходит через триггеры БД, а выборка — через $queryRaw с оператором MATCH.
  3. Безопасность Mutation (Server Actions):
    • Любые изменения данных (POST/PUT/DELETE) должны проходить через библиотеки валидации (например, next-safe-action) с обязательной проверкой сессии пользователя.

🤝 Вклад в разработку (Contribution)

  1. Убедитесь, что ваш код проходит проверку линтером: npm run lint.
  2. Если вы меняете структуру БД, обязательно обновляйте файлы миграций и не забывайте прописывать @@ignore для теневых и виртуальных таблиц FTS5.

Releases

No releases published

Packages

 
 
 

Contributors

Languages