База данных для экспериментов
У меня бродит множество идей для различных проектов. Сейчас идей более 300.
При этом не хочется особо вкладываться в разработку, просто хочу ту или иную штуку поковырять, попробовать сделать на уровне прототипа.
И иногда для таких мини проектов мне нужен очень простой бэкенд. Несколько табличек в базе.
Почему просто не поднять маленькую БД?
Конечно, я могу легко спроектировать таблички, поднять базу, развернуть сервер БД хоть нативно хоть в докер контейнере. Я это делал сотню раз.
Честно говоря, я так уже делал для некоторых личных проектов, но мне не понравилось.
Что не нравится в классической БД?
1. Возня
Несмотря на то что БД поднять несложно, всё равно это возня, на которую время тратить не хочется.
Хочется создавать базу и таблицу в пару кликов.
2. Стоимость облачных сервисов
Облачные сервисы где управление БД упрощено, неоправданно дороги.
Также бесит тарификация “по использованию”, когда ты даже не можешь предсказать свои расходы за месяц.
Ну и при заявленной простоте все облачные сервисы которые я видел, излишне переусложнены и перегружены абстракциями.
3. Нет удобного просмотра и редактирования
Ставить PhpStorm, DataGrip или какой-нибудь другой менеджер БД ради доступа к своей базе? Ну нафиг.
Я хочу в любой момент посмотреть базу, менять её, менять структуру, редактировать содержимое, даже с мобильника.
Может сделать таблицу Google Sheets?
Да, можно сделать табличку в Google Sheets. Но это не так уж удобно.
Хуже всего, что интеграция с Google Sheets будет непростой. Это знает каждый кто подключался к апи Google Sheets.
Возни и мороки будет много, начиная с создания сервисного аккаунта и заканчивая не самым простым и удобным API.
Что же нужно?
В общем я определился что мне нужна self-hosted песочница БД для любых моих проектов с возможностью просмотра, редактирования, наполнения, подключения к ней из скриптов и приложений, а также чтобы любые действия можно было выполнять с мобильника.
И как будем использовать?
Пример 1. Бэкенд для бота
Например для одного из своих ботов я написал парсер который выгружает расписание ТВ программ на текущий день.
Иногда появляются идеи по улучшению бота. Тогда хочется залезть в базу и посмотреть что там хранится и в каком виде, чтобы заранее прикинуть, насколько будет сложно сделать изменение. Но залезть в базу не могу, так как компьютера нет под рукой, а на мобильном это сделать невозможно.
Пример 2. Админка для управления пользователями
Для другого проекта у меня есть идеи по монетизации.
Но пока нет работающего толком продукта, полноценный модуль аутентификации и регистрации пилить не хочется.
А когда начну взимать плату, то вместо прикручивания платёжки можно ведь принимать оплаты в ручном режиме?
До 10 активных платных пользователей это несложно. Нужно только что-то что позволит выдавать и отключать доступ, а также учитывать кто когда заплатил и когда заканчивается оплаченный период.
Тут-то и пригодится наколеночная админка с произвольными полями. Будет быстрее, чем проектировать и реализовывать модуль подписки. Да и менять будет легче.
Готовые решения
Я искал готовые решения. И не нашёл.
Даже от безысходности хотел запилить что-то своё.
Но благодаря блогу Flavio Copes я узнал про такой проект как Pocketbase.io. Открытый исходный код, self-hosted, есть просмотр и редактирование, а также апи. То, что нужно!
Рассказав о своей находке друзьям, мне посоветовали ещё два похожих инструмента для self-hosted БД: Directus и Keystone.js.
Буду пробовать запускать их и использовать, посмотрим что выйдет. Надеюсь что хотя бы один из них полностью подойдёт для моих нужд.