Я построил полноценную образовательную платформу для изучения иврита — с интерактивными тренажерами, умным словарем на 4000+ слов и системой подписок. В статье рассказываю о нетривиальных технических решениях, архитектурных выборах и ошибках, которые пришлось исправлять по ходу.
Я начал учить иврит и быстро столкнулся с проблемой: хороших онлайн-ресурсов на русском языке почти нет.
Что есть:
Duolingo — поверхностный, не объясняет грамматику
Pealim — отличный сайт для спряжений, но только для спряжений
Ульпаны — дорого ($300-500/месяц) и нужно ездить
Чего не хватало:
Интерактивных упражнений с мгновенной обратной связью
Нормального объяснения системы биньянов (это как виды глаголов, но сложнее)
Словаря с примерами использования в контексте
Всего этого на русском языке без необходимости учить через английский
Я подумал: "А что если сделать самому?" И понеслось...
Прежде чем рассказывать про код, нужно понять специфику языка. Иврит — это не английский. Там все устроено по-другому, и это создает интересные технические челленджи.
Корневая система
В иврите слова строятся из корней (обычно 3 буквы). Представьте, что у вас есть конструктор LEGO, где 3 базовых кубика порождают сотни вариантов.
Корень כ-ת-ב (к-т-б) = "писание"
От него образуются:
כָּתַב (katav) — "писал"
כּוֹתֵב (kotev) — "пишет"
מִכְתָּב (michtav) — "письмо" (объект)
כְּתוֹבֶת (ktovet) — "адрес"
כְּתִיבָה (ktiva) — "письмо" (процесс)
Видите паттерн? К-Т-Б везде, но слова разные. Для программиста это звучит как "идеальная задача для шаблонизации".
Система биньянов
Это породы глаголов — всего их 7 штук. Как спряжения в русском, но намного строже и системнее.
Один и тот же корень в разных биньянах дает разные значения:
Задача для программиста: Как это всё структурировать и генерировать автоматически? Именно здесь начинается самое интересное.
💡 Идея и MVP
Что должно было быть в продукте
Минимум (MVP):
✅ Словарь с поиском по русскому/ивриту
✅ Тренажёр для спряжений
✅ Объяснение биньянов с примерами
Хорошо бы добавить: 4. ✅ Уроки для начинающих (от алфавита) 5. ✅ Статистика прогресса 6. ✅ Блог с полезными статьями (для SEO) 7. ✅ Монетизация (чтобы окупить )
Выбор технологий
Тут я исходил из простого принципа: "Используй то, что знаешь, но не бойся учить новое".
Next.js 15 — потому что:
Server-side rendering для SEO (важно для образовательного контента)
API routes (не нужен отдельный бэкенд)
App Router с Server Components (новая фишка, хотел попробовать в деле)
Большое комьюнити и быстрые решения проблем
TypeScript — потому что:
Иврит имеет жесткую грамматическую структуру
Типобезопасность = меньше багов в морфологии
Автодополнение = быстрее писать сложный код
Рефакторинг становится безопасным
PostgreSQL + SQLite — об этом подробнее ниже, это самое интересное архитектурное решение
Stripe — для подписок:
Простая интеграция
Надежный
Автоматическое управление подписками
🏗️ Архитектура: необычное решение с двумя базами
Проблема
У меня было два типа данных с совершенно разными характеристиками:
1. Пользовательские данные (меняются часто):
Учетные записи
Статистика прогресса
История ответов
Подписки
~100 записей на пользователя
2. Словарь иврита (статичные, read-only):
4000+ слов
Все формы спряжений (~200 форм на глагол)
Переводы на русский и английский
Примеры использования
Размер: 44 МБ
Проблема: Держать 44 МБ статичных данных в облачной PostgreSQL — это:
Некоторые буквы ведут себя странно (гортанные буквы א, ה, ח, ע):
// Если первая буква корня — א (алеф),
// она "проглатывает" некоторые гласные
if (r1 === 'א' && binyan === 'PAAL') {
// Специальная обработка для слабых корней
template = adjustForWeakRoot(template, 'first')
}
// Если последняя буква — ה (хей),
// она меняется в некоторых формах
if (r3 === 'ה') {
template = adjustForWeakRoot(template, 'last')
}
Результат:
Теперь из одного корня можно сгенерировать все 200+ форм автоматически!
Понял, что просто приложение без контента никто не найдет в поиске. Нужен органический трафик.
Что сделал
Написал 22 статьи на темы, которые люди ищут:
"10 причин начать учить иврит"
"Как выучить иврит с нуля онлайн"
"100 разговорных фраз на каждый день"
"Ошибки начинающих при изучении иврита"
"Как читать на иврите за неделю"
И т.д.
Технология: MDX
MDX = Markdown + React компоненты. Можно вставлять интерактивные элементы прямо в текст статьи.
---
title: "Ошибки начинающих при изучении иврита"
date: "2025-10-28"
description: "10 типичных ошибок и как их избежать"
keywords: ["ошибки иврит", "как учить иврит"]
---
## Ошибка 1: Игнорировать биньяны
**Не делайте так!** Биньяны — это основа всей системы.
**Попробуйте сами прямо сейчас:**
SEO оптимизация
Что сделал для поисковиков:
✅ Semantic HTML (<article>, <header>, <section>)
✅ Meta tags (title, description, keywords)
✅ OpenGraph изображения (автогенерация через DeepAI API)
# 1. Push в репозиторий
git add .
git commit -m "Add new feature"
git push origin main
# 2. Платформа автоматически:
# → Скачивает код
# → Устанавливает зависимости
# → Запускает миграции БД
# → Собирает проект
# → Деплоит новую версию
# → Делает zero-downtime restart
# Время деплоя: ~4-5 минут
Что сделал: Потратил месяц на полную поддержку английского с первого дня Реальность: 70% пользователей русскоязычные, английской версией никто не пользовался первые 3 месяца Урок: Делай локализацию по требованию, а не "на будущее". Принцип YAGNI (You Aren't Gonna Need It) работает.
Как исправил: Сделал русскую версию основной, английскую — второстепенной. Сэкономил бы месяц работы.
2. Игнорировал мобильную версию в начале
Что сделал: Сначала десктоп во всей красе, потом "адаптируем" Правильно: Mobile-first подход с самого начала Почему: 60% пользователей с телефонов, они видели плохой UX
Как исправил: Переделал весь UI с фокусом на мобильные экраны. Заняло еще 2 недели.
3. Не валидировал цену подписки
Что сделал: Установил $10/мес "на глаз", потому что "так у всех" Правильно: Опросить потенциальных пользователей ДО запуска Результат: Первые пользователи сказали "дорого для РФ", пришлось делать региональные цены
Как исправил: Добавил опрос, сделал $9 для всего мира.
4. Написал весь код сам (включая морфологию)
Что сделал: Всё с нуля, включая правила спряжений Правильно: Использовать существующие API или библиотеки (например, Pealim API) Почему: "Изобретение колеса" заняло 3 недели
Но: Зато теперь у меня 100% контроль, никакой зависимости от внешних сервисов, и работает офлайн. Спорное решение.
5. Недооценил важность контента
Что сделал: Сделал крутую техническую платформу, написал 3 статьи для блога Правильно: Content is king. Писать статьи параллельно с разработкой Результат: Первые 2 месяца — 0 органического трафика
Как исправил: Нанял копирайтера, написали 20 статей за месяц. Трафик вырос в 10 раз.
💡 Что я узнал (главные инсайты)
Технические инсайты
1. SQLite в продакшене — это нормально
Для read-only данных — идеальное решение
Быстрее PostgreSQL для статичного контента (нет network latency)
Проще деплоить (файл в репе)
Меньше точек отказа
2. Next.js App Router готов к продакшену
Server Components реально ускоряют (меньше JS в браузере)
Но документация местами сырая (много trial & error)
Community большое, ответы находятся быстро
3. TypeScript окупается на сложной логике
Морфология без типов = ад и боль
Рефакторинг с типами = безопасно и легко
Обучение команды занимает +2 недели, но оно того стоит
4. Монорепозиторий удобен для малых проектов
Всё в одном месте
Нет проблем с версионированием между фронтом и бэком
Но становится медленным на >50k LOC
5. Prepared statements в SQLite — must have
Защита от SQL injection
В разы быстрее обычных запросов
Кэширование плана выполнения
Бизнес-инсайты
1. SEO > платная реклама (для образовательных проектов)
Одна хорошая статья = 100+ визитов в месяц
Контент живет годами
Google Ads для ниши "иврит" стоит $3+ за клик
2. Freemium работает, если бесплатная часть реально полезна
Дай попробовать продукт
Покажи ценность
5-10% конвертируются в платящих
3. Community > маркетинг
Сообщества в соцсетях дали больше пользователей, чем реклама
Форумы и тематические площадки — бесплатный охват
Главное — не спамить, а помогать
4. Качество > количество
Лучше 12 крутых уроков, чем 50 средненьких
Пользователи ценят глубину
Retention выше у качественного контента
🎯 Что дальше: планы на будущее
Ближайшие месяцы (Q1 2025)
[ ] Мобильное приложение (React Native + Expo)
[ ] AI помощник для составления предложений (OpenAI API)
[ ] Голосовой тренажер (Web Speech API)
[ ] Flashcards система (Spaced Repetition Algorithm)
✅ Гибридная схема БД (PostgreSQL + SQLite) — быстро и дешево
✅ Морфологический движок с шаблонами — генерация форм в runtime
✅ SEO через блог — основной источник трафика
✅ Freemium модель — люди пробуют, потом платят
✅ TypeScript для сложной логики — меньше багов, проще рефакторинг
Что не сработало или было ошибкой:
❌ Слишком ранняя интернационализация — потратил месяц впустую
❌ Desktop-first подход — большинство с мобильных
❌ Игнорирование маркетинга на старте — долго не было пользователей
❌ Изобретение колеса везде — где-то можно было использовать готовые решения
Главный урок для других разработчиков:
> "Делай, ошибайся, учись, итерируй. Идеальный код в вакууме никому не нужен — важен работающий продукт в руках реальных пользователей. Ship early, ship often."
Второй важный урок:
> "Сложная техническая часть (морфология) — это круто и интересно, но без контента, маркетинга и понимания аудитории это просто хобби-проект. Нужен баланс между технологиями и бизнесом."