Перейти до вмісту

Проєкти07 / 07 · видання · освіта · 2022–дотепер

RubyCoin 07

Безкоштовні уроки Rails українською на CMS, яку я написав — і полігон, де десять контриб’юторів навчилися здавати код через рев’ю. Ви зараз на ньому.

Техлід · архітектор · devops · rubyco.in
Одразу до інженерної частини
Простими словами

Жодної нової статті з лютого 2024-го — а трафік досі росте

Ви читаєте це на ньому. Гарних матеріалів з програмування українською майже не існувало — початківцям доводилося вчитися чужою мовою. RubyCoin — це безкоштовна двомовна платформа уроків Rails із власною системою публікації, пошуком і аналітикою, а це портфоліо — її розділ.

Цифра, якою я найбільше гордий, — не трафік, а його форма: жодної нової статті не публікувалося з лютого 2024-го, а візити досі зростають — 31 000 із січня до середини серпня 2026-го проти 24 800 за весь 2025-й, майже повністю органіка з Google. Це складний відсоток від якості контенту й технічної роботи, а не промо.

Проєкт як школа. Десять контриб’юторів — переважно інтернів — пройшли через цю кодову базу. Я ставив задачі, рев’ював pull request’и і відповідав за те, що дійшло до продакшну. Навичка, яку тут видно, — не «писав код», а «побудував процес, у якому код пишуть інші й це не розвалюється».

Для інженерів

AI-переклад, що не ламає розмітку, і аналітика без лічильника, який розсинхронізується

360+ комітів, гейт із трьох лінтерів перед прогоном тестів і AI-рев’ю з інлайн-коментарями в pull request.

AI-переклад, що зберігає розмітку

Довгі статті не влазять у контекст моделі, а наївне різання ламає HTML. Тому документ ріжеться по межах заголовків на частини під ліміт токенів, кожен перекладається у власному потоці, далі збирається за індексом — заголовки, списки й блоки коду цілі. Година ручної роботи стала однією кнопкою.

Двомовність на трьох рівнях одночасно

Локаль у скоупі URL, потокобезпечне перемикання локалі на кожен запит, переклади контенту на рівні БД — і історія слагів, тож перейменування запису ніколи не вбиває проіндексований URL. Саме через останнє на кривій органічного трафіку немає обриву.

Власна аналітика, рейтинг прямо з подій

Серверний трекінг із дедуплікацією переглядів за 24 години; «найкращі пости» джойняться з таблицею подій за JSONB-ключем під GIN-індексом — жодного денормалізованого лічильника, який роз’їдеться. Заголовки шукаються по таблиці перекладів, а тіла — по колонках на кожну мову, віддзеркалених з Action Text, тож український запит знаходить українську статтю й ніколи не чіпляється за назву HTML-тегу.

Пошук і статистика як об’єкти

Статистика виділена у шість незалежно протестованих query-об’єктів, авторизація дворівнева з окремим неймспейсом політик управління для адміна й модератора. Коли фічі пишуть інтерни, шви мусять бути очевидними.

Дві версії зображення на завантаження — було п’ять

1200×675 для героя і 520×293 для картки, JPEG на 80 із вичищеними метаданими, щоб жоден шаблон не тягнув файл, який усе одно зменшить. Раніше генерувалося ще три версії, і жодна з них нікому не була потрібна. Це більша частина причини, чому головна рендериться за 76 мс при 53 МБ resident.

Дисципліна апгрейдів

Проведений живим через Rails 7.0 → 8.1, Ruby 3.1 → 3.4, Sprockets → Propshaft + esbuild і зняття адмін-фреймворку на користь власної панелі. Turbo Drive свідомо вимкнений — фрейми й стріми застосовані там, де вони себе виправдовують, а не за замовчуванням.
360+
комітів
10
контриб’юторів на рев’ю
53 МБ
resident-пам’ять
4
невдалих відповідей на 13 000 запитів
Контекст — чесно: це контентний сайт, а не хайлоад — інженерна заявка тут про ремесло й процес, а не про масштаб. І попри назву: не криптовалюта й не токен.

Хто над цим працював · 4 учасники

Даниїл Шкоропад

техлід · архітектор · рев’ювер · 2022–2026
  • Ставив задачі й рев’ював pull request’и десяти контриб’юторів, переважно інтернів.
  • Провів апгрейди живими: Rails 7.0→8.1, Sprockets→Propshaft + esbuild.

Олександр Шемберко

фулстек · 2023–2024
  • Історія слагів на FriendlyId — перейменований пост і далі відповідає за старою адресою.
  • Фільтр за тегами на головній на Tom Select і таск after_party, що перегенерував усі формати фото.

Михаїл Юн

співзасновник · продукт · 2022–2026
  • Набрав контриб’юторів і вів відбір — шкільна частина проєкту на ньому.
  • Редакційний план і дистрибуція — ще коли статті публікувалися.

Claude

рев’ю pull request’ів · 2026
  • Інлайн-коментарі на запит — інтерн пише review у pull request і отримує рев’ю до того, як людина витратить час.
  • І на цій сторінці теж: розділ, який ви читаєте, проходив те саме рев’ю.

Дочитали до кінця й хочете обговорити?

rubyco.in