Skip to content

Repository files navigation

ReadHelper

Telegram Mini App + бот, которые дробят книгу/статью на небольшие порции и присылают их по расписанию — читать понемногу, не теряя фокус.

Стек

  • Фронтенд — Vue 3 + Vite.
  • Бэкенд — Vercel serverless-функции (Node.js).
  • БД — Postgres (Neon), клиент @neondatabase/serverless.
  • Бот — Telegram Bot API напрямую (без библиотек, через fetch).
  • ИИ-дробление текста — Google Gemini (бесплатный тариф, не истекает).
  • Извлечение статей по ссылкеjsdom + @mozilla/readability.
  • Планировщик доставки — внешний cron-job.org (встроенный Vercel Cron на бесплатном тарифе ограничен раз в сутки, этого недостаточно).

Структура

  • api/ — Vercel serverless-функции (роуты): тонкие обработчики, вся логика — в server/.
  • server/ — бэкенд: репозитории (БД), дробление текста (Gemini), Telegram, извлечение статей по ссылке.
  • src/ — фронтенд (Vue 3 + Vite), сама мини-аппа.
  • tests/ — тесты серверной логики (node:test, без внешних зависимостей).
  • scripts/ — разовые операционные скрипты (миграция БД, регистрация вебхука/команд бота).
  • public/ — статика Vite.

Разработка

npm install
npm run dev        # фронтенд локально (api/ бьёт в прод через прокси в vite.config.js)
npm test           # тесты серверной логики
npm run migrate    # прогнать server/db/schema.sql на базу из .env.local
npm run set-webhook    # зарегистрировать вебхук бота в Telegram
npm run set-commands   # зарегистрировать /start, /help в меню бота

Секреты — в .env.local (не в git). Список нужных переменных — в DEVLOG.local.md.

Для монетизации через Telegram Stars дополнительно нужен TELEGRAM_STARS_PRO_PRICE (целое число звёзд, по умолчанию 250).

Режим разработчика и админы

OWNER_TELEGRAM_ID/VITE_OWNER_TELEGRAM_ID — единственный "владелец" проекта, заданный переменными окружения (подстраховка от блокировки самого себя). Владелец может назначать дополнительных админов по username через настройки приложения (нужно, чтобы назначаемый уже хоть раз открывал приложение) — у них появляется доступ к режиму разработчика (кнопка "Отправить порцию сейчас"), но не к управлению другими админами.

Деплой

Пуш в master на GitHub → автодеплой на Vercel. Рассылка порций идёт по внешнему крону (cron-job.org), который дёргает /api/cron/deliver каждые 15 минут — встроенный Vercel Cron на бесплатном тарифе ограничен раз в сутки.

About

telegram link @ReadingHelp_bot

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages