Skip to content

Latest commit

 

History

1,732 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Runit

On Push

Описание

Runit — это среда для написания и выполнения кода, которая активно используется на платформах © ООО «Хекслет Рус». Ближайший аналог — сервис repl.it.

Возможности (текущие и будущие):

  • Редактирование кода онлайн
  • Шаринг кода по ссылке
  • Встраивание сниппетов на страницы
  • Совместное редактирование

Документация

Здесь — что это за проект и как его запустить. Всё остальное вынесено рядом, чтобы нужное не приходилось искать в длинном файле.

Документ О чём
docs/auth.md Как устроен вход: cookie, JWT, CSRF, политика паролей
docs/runner.md Серверное исполнение кода: изоляция песочницы, настройки, замечания для деплоя
docs/deployment.md Развёртывание (контейнеры, свой стенд, PaaS), переменные окружения, выпуск версии
docs/legal.md 152-ФЗ: документы, согласие, что обязательно сделать до запуска
CONTRIBUTING.md Порядок работы: ветки, мерж, ограничения main

Технологии

  • Язык: TypeScript
  • Фронтенд: React, Mantine, TanStack Query, Vite
  • Бэкенд: Fastify, tRPC, Drizzle ORM, Node.js

Системные требования

  • node >= 24
  • npm >= 9
  • PostgreSQL >= 13 — и локально, и в проде

Одна и та же СУБД везде намеренно: держать в Drizzle два диалекта можно только двумя копиями схемы, а они неизбежно разойдутся. Расхождение диалектов — источник ошибок, которые видны только в проде: при переезде со SQLite молча перестало работать распознавание конфликта уникальности, потому что опиралось на текст ошибки SQLite.

Версия 13 и выше нужна тестам: они создают и удаляют свою базу через drop database … with (force).

Установка зависимостей для бэкенда и его запуск

Нужна запущенная PostgreSQL. Проще всего поднять её из compose:

docker compose up -d db

Или указать свою в DATABASE_URL.

npm install
cp .env.example .env
npm run dev

http://localhost:3001

Установка зависимостей для фронтенда и его запуск

cd frontend
npm install
npm run start

http://localhost:3000

Миграции базы данных

Миграции лежат в drizzle/ и версионируются вместе с кодом. Приложение применяет их само при старте, отдельного шага в деплое не нужно.

После правки схемы в src/db/schema/schema.ts:

npm run db:generate   # создаст файл миграции в drizzle/

Полученный файл нужно закоммитить. Генерировать миграции в сборке или в CI нельзя: тогда в образ попадает свежая «нулевая» миграция, журнал в боевой базе считает её уже применённой, и изменения схемы молча не доезжают — на первом деплое всё работает, а на втором данные расходятся со схемой.

Применить миграции к своей базе вручную:

npm run db:migrate

Типы для фронтенда

Бэкенд генерирует TypeScript-типы для фронтенда через tRPC. При изменении схем или роутеров на бэкенде нужно перегенерировать типы:

npm run generate:types

Типы сохраняются в папку types/ и используются фронтендом для автодополнения и проверки типов.

Линтер (Biome)

На бэкенде используется Biome — линтер и форматтер в одном инструменте. Конфиг находится в biome.json, покрывает папку src/.

Запуск линтера:

# Проверка только бэкенда
npm run lint

# Автоисправление только бэкенда
npm run lint:fix

Или через Makefile:

make lint-backend       # проверка
make lint-fix-backend   # автоисправление

В VSCode Biome работает автоматически при сохранении файла — нужно установить расширение Biome.

Старая API документация

Структура API старого проекта находится здесь.

Полезные ссылки


© ООО «Хекслет Рус» logo

Этот репозиторий создаётся и поддерживается командой и сообществом © ООО «Хекслет Рус», образовательный проект. Подробнее о Хекслете.

About

Online Editor Form Embedding

Topics

Resources

Contributing

Stars

49 stars

Watchers

10 watching

Forks

Releases

Packages

Used by

Contributors

Languages