Skip to content
BasnukaevPublic

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Remblo

Надёжные мультиканальные личные напоминания. Поставил напоминание — оно придёт всегда и вовремя: через Telegram, email (далее — SMS, push, WhatsApp, звонок). Главный принцип продукта: пользователь не должен пропустить важное из-за того, что у нас что-то пошло не так.

Имя «Remblo» — рабочее/брендовое (coined от remind). Финальная проверка домена/товарного знака — перед публичным запуском.

Стэк

  • Backend: Java 21, Spring Boot 3.5, Postgres 16, Liquibase, JdbcTemplate (durable-очередь на SELECT … FOR UPDATE SKIP LOCKED), Testcontainers. Modular monolith со швами под будущие сервисы.
  • Client: Flutter (один кодбейс на web + Android + iOS + desktop; в v1 собирается только web-таргет).
  • Инфра: Docker Compose (Postgres) локально.
  • Оркестрация работы с ИИ: плагин OMC (oh-my-claudecode).

Структура (монорепо)

remblo/
  backend/     - Java модуль (Spring Boot, modular monolith)
  client/      - Flutter клиент (web сейчас, мобилки/десктоп потом)
  docs/        - вся документация (см. docs/ ниже)

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

Точка входа для новой сессии — CLAUDE.md, затем runbook первого запуска docs/first-session.md. Карта документов:

  1. docs/vision.md — что и зачем строим, для кого, как монетизируем
  2. docs/roadmap.md — активные срезы и порядок работ
  3. docs/decisions.md — ADR (фундаментальные решения)
  4. docs/architecture.md — целевая архитектура
  5. docs/api-contract.md — источник истины REST-контракта
  6. docs/glossary.md — доменные термины
  7. docs/gotchas.md — ловушки и обходы
  8. docs/backlog.md — идеи без привязки к срезу
  9. docs/progress.md — журнал сессий
  10. docs/doc-hygiene.md — правила поддержания доков в порядке
  11. docs/specs/ — дизайн-спеки крупных работ
  12. docs/design-reference.md — дизайн-токены + лог бандлов claude.ai/design
  13. docs/first-session.md — runbook первого запуска в новой сессии
  14. docs/deploy.md — dev-стенд: процедуры (деплой, секреты, restore)
  15. docs/infra-guide.md — гид по инфраструктуре: как всё работает + диагностика «когда сломалось»
  16. docs/prompts/ — исторические промты сессий (помечены хедером «Исторический документ»)
  17. docs/archive/ — архив журнала сессий (progress.md до 2026-06-07)

Статус

Срез 1 (MVP-ядро): движок надёжной доставки + Telegram + Email + минимальный web + auth. Режим — догфудинг (первый пользователь — автор).

Прод-проперти (публичный стенд)

Единый список env-переменных для VPS-догфудинга. Все ключи имеют dev-дефолты в backend/src/main/resources/application.yml; на публичном стенде задать:

Env Ключ Зачем
REMBLO_DB_URL / _USER / _PASSWORD spring.datasource.* Postgres
REMBLO_TELEGRAM_BOT_TOKEN remblo.telegram.bot-token токен бота; пусто → TG-канал и поллер неактивны
REMBLO_TELEGRAM_BOT_USERNAME remblo.telegram.bot-username @username бота для deep-link t.me/<bot>?start=…
SPRING_MAIL_HOST / _PORT / _USERNAME / _PASSWORD spring.mail.* SMTP email-канала (+ mail.smtp.auth, starttls — см. props)
REMBLO_EMAIL_FROM remblo.email.from адрес отправителя писем
REMBLO_PUBLIC_BASE_URL remblo.public-base-url внешний URL деплоймента — хост email-ack-ссылок эскалации
REMBLO_ESCALATE_ACK_SECRET remblo.escalate.ack-secret HMAC-секрет ack-ссылок; пусто → random per boot, ссылки умирают на рестарте
REMBLO_CORS_ALLOWED_ORIGINS remblo.cors.allowed-origins origins web-клиента через запятую (dev-дефолт *)
REMBLO_AUTH_REGISTRATION_ENABLED remblo.auth.registration-enabled false = регистрация закрыта независимо от mode (старый гейт сильнее)
REMBLO_AUTH_REGISTRATION_MODE remblo.auth.registration-mode closed | invite | open (ADR-018); стенд для друзей = invite
REMBLO_AUTH_EMAIL_CONFIRMATION_REQUIRED remblo.auth.email-confirmation-required код из письма для активации (дефолт true; локальный dev без SMTP → false)
REMBLO_AUTH_CONFIRMATION_TTL remblo.auth.confirmation-ttl TTL неподтверждённой регистрации (48h)
REMBLO_AUTH_RATE_LIMIT_ENABLED / _LIMIT / _WINDOW remblo.auth.rate-limit.* per-IP лимит auth-эндпоинтов (20/мин)
REMBLO_AUTH_RATE_LIMIT_TRUST_FORWARDED remblo.auth.rate-limit.trust-forwarded true за Traefik: IP из последнего X-Forwarded-For
REMBLO_SCHEDULING_PAST_GRACE remblo.scheduling.past-grace grace-окно born-in-past one-time (120s)
REMBLO_BILLING_STARS_PRICE remblo.billing.stars-price цена подписки в Stars/мес (250, ADR-019)
REMBLO_BILLING_GRACE remblo.billing.grace grace после конца оплаченного периода (72h)
REMBLO_NL_API_KEY remblo.nl.api-key ключ LLM-провайдера NL-парсера (DeepSeek; пусто → 503, клиент на rule-based)
REMBLO_CANARY_ENABLED remblo.canary.enabled самомониторинг доставки (канарейка)
REMBLO_CANARY_ADMIN_CHAT_ID remblo.canary.admin-chat-id TG-чат для канарейки и алертов (пусто → log-only)

remblo.http.proxy.* на VPS не задавать — это локальный обход недоступности api.telegram.org (см. комментарий в application.yml).

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages