Головна » Blog » Контент-платформа для мережі Android-застосунків
CRM Мобільні застосунки / Власний продукт

Контент-платформа для мережі Android-застосунків

Seganiko
Клієнт Seganiko
Галузь Мобільні застосунки / Власний продукт
Тип CRM
Використані технології Laravel, адмінка на Filament, REST API тільки на читання, ключі й обмеження частоти, мітки версій, конвертація у WebP, зведення з магазину й рекламної мережі
Контекст

Завдання

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

Що ми зробили

Застосунок тільки читає: забирає маніфест і набір матеріалів своєю мовою, а пише лише знеособлені події. Мітка версії на відповіді позбавляє повторного завантаження незміненого — довелося приймати всі три її форми, бо проксі, що стискає, її переписує. Зображення переводяться у WebP при завантаженні, а показники магазину й рекламної мережі зводяться поруч із контентом.
Деталі проєкту

Один бекенд на цілу мережу застосунків

Коли застосунків два, контент можна тримати у файлах усередині кожного. Коли їх двадцять чотири, кожна правка в тексті перетворюється на новий реліз у Google Play і тиждень очікування.

Ми зробили платформу, у якій вміст живе окремо від застосунків: редактор править його в адмінці, а телефони забирають оновлений набір самі — без оновлення самого застосунку.

Інфопанель платформи застосунків: кількість матеріалів і версія контенту по кожному

Кожна плитка — застосунок: скільки в ньому матеріалів і яка версія контенту зараз опублікована.

Що це

  • Продукт: власна розробка Seganiko
  • Призначення: контент-платформа для мережі Android-застосунків
  • Масштаб: 24 застосунки, сотні тисяч матеріалів
  • Оточення: звичайний хостинг, без root і контейнерів

Завдання

  • Правити вміст без релізу застосунку.
  • Додати новий застосунок за кілька хвилин, а не за тиждень.
  • Не платити трафіком за те, що не змінилося.
  • Збирати статистику, не збираючи персональних даних.

Що всередині

  • Адмінка з типами матеріалів під кожен формат.
  • API тільки на читання, з ключем і обмеженням частоти.
  • Конвеєр медіа: оригінал і мініатюра у WebP.
  • Зведення показників із Google Play і рекламної мережі.

Застосунок тільки читає

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

Завдяки цьому новий застосунок заводиться майже без коду: у адмінці створюється запис, генерується ключ, заповнюються рубрики й матеріали, натискається «Опублікувати» — і версія контенту зростає на одиницю. Ключ і адреса вписуються в застосунок, далі він працює сам.

Стадії застосунку видно в списку: ідея, концепція готова, у розробці, опубліковано. Платформа тримає не тільки те, що вже в магазині, а й те, що поки в бэклозі — разом із рубриками й матеріалами, які до нього готуються.

Двадцять чотири застосунки в одній таблиці

У кожного свій ключ доступу, свій набір мов, своя версія контенту й свій стан. Видно, що опубліковано, що в роботі, а що лежить ідеєю. Це не вітрина — це робочий список, з якого ведеться вся мережа.

Список застосунків зі стадіями, категоріями, API-ключами й версіями контенту

Матеріали різних форм

Рецепт, інструкція, питання вікторини, картка для гри, код помилки, загадка, факт — у кожного формату своя форма редагування, а не одне поле «текст». Додати сотню матеріалів можна імпортом: вставляється масив, обирається тип і мова, і система показує звіт по рядках — що прийнялося, що ні й чому.

Розділ матеріалів: рецепти, вікторини, картки й довідники по застосунках

Не платити за те, що не змінилося

Набір матеріалів для одного застосунку — це сотні кілобайтів. Качати їх щоразу при запуску безглуздо, тому відповідь підписана міткою версії: якщо на телефоні вже свіжий набір, сервер відповідає «змін немає» й не передає нічого.

Тут була та сама пастка, через яку економія не працювала: проксі, що стискає відповіді, переписує мітку у «слабку» форму, і суворе порівняння перестає збігатися. Телефон щоразу качав усе заново. Порівняння довелося навчити приймати всі три форми мітки — суворy, слабку й перелічену через кому.

Медіа, яке не роздуває застосунок

Кожне зображення при завантаженні переводиться у WebP і зберігається у двох розмірах: повний до 1200 пікселів і мініатюра до 400. Роздає їх сервер із довгим кешем, а застосунок отримує готові адреси — жодних перетворень на телефоні.

Медіатека платформи з конвертацією у WebP і мініатюрами

Статистика без персональних даних

Застосунки шлють знеособлені події — відкриття, перехід, дію. Жодних ідентифікаторів людини, жодних контактів. За раз приймається не більше пʼятдесяти подій, некоректні рядки просто відкидаються, а не валять весь запит.

Поруч у платформі зводяться показники з магазину застосунків і рекламної мережі — щоб дивитися встановлення й дохід там само, де лежить контент, а не в трьох різних кабінетах.

Як це робилося

1
Етап 1
Модель вмісту
Застосунок, рубрика, матеріал, мова. Типи матеріалів під кожен формат зі своєю формою редагування.
2
Етап 2
API
Тільки читання, ключ на застосунок, обмеження частоти, мітка версії відповіді й публікація, що піднімає версію контенту.
3
Етап 3
Медіа й імпорт
Конвертація у WebP із мініатюрами, довгий кеш, імпорт масивом зі звітом по рядках.
4
Етап 4
Показники
Знеособлені події від застосунків і зведення встановлень та доходу з магазину й рекламної мережі.

Що під капотом

Платформа

Laravel з адмінкою на Filament. Живе на звичайному хостингу: без root, без контейнерів, черги й кеш у базі, зображення конвертуються одразу при завантаженні.

API

Чотири адреси на читання, ключ у заголовку, обмеження за ключем і за адресою, мітка версії з відповіддю «змін немає». Помилки — звичайний JSON із кодом.

Сховище

Окреме місце для збірок і матеріалів магазину: іконки, знімки екрана, описи. Плюс перехресні посилання між застосунками мережі.

Що вийшло

Мережа з двадцяти чотирьох застосунків, у якій правка тексту доходить до користувача за хвилини, а не за тиждень. Новий застосунок заводиться в адмінці за кілька хвилин: створити, заповнити, опублікувати, вписати ключ.

І все це працює на звичайному хостингу — без окремого сервера, черг у пам’яті й контейнерів, які там просто ніде запустити.


Схожий проєкт?

Обговорімо ваші цілі й подивімося, чим ми можемо допомогти.

Замовити безкоштовний кошторис →
Є питання?

Поговорімо про
ваш проєкт.

Перша розмова безкоштовна, без зобов’язань.