Для малых и средних по масштабу проектов, в первую очередь для пет-проектов, можно использовать PocketBase.

PocketBase — это готовый Backend сервер на основе SQLite.

В чём его преимущества?

1. Не нужен Backend для CRUD

Ключевая фишка PocketBase, это избавление от необходимости писать в коде CRUD-прослойку между клиентом и БД.

Да, фреймворки упрощают написание кода, но код есть код, лучше его не писать если можно не писать.

Суть разницы классического подхода и подхода с PocketBase:

Классическое веб-приложение

Веб-приложение с PocketBase

Куда девается CRUD?

PocketBase берёт на себя часть обязанностей бэкенда вашего приложения.

В простых приложениях, например какой-нибудь трекер привычек, почти весь код будет является обычным редактированием записей в БД, то есть “CRUD кодом”, состоящим из инструкций Create, Read, Update, Delete. В более сложных приложениях CRUD код тоже будет занимать значительную часть. Всё что относится к CRUD берёт на себя PocketBase, поэтому вам не придётся писать этот код.

По сути, PocketBase предоставляет готовое API, по которому вы из JavaScript практически напрямую работаете с БД.

Как PocketBase справится с безопасностью?

Если мы практически напрямую общаемся с БД, встаёт два вопроса: безопасность и фильтрация. Нельзя позволить любым пользователям редактировать любые записи, а также нужно как-то скрыть записи, которые пользователь не должен видеть, например чужие заметки.

Безопасность обеспечивается через встроенные механизмы авторизации. В простейшем случае пользователь авторизовывается через логин и пароль, и далее авторизованная сессия используется для взаимодействия с БД.

PocketBase решает проблему доступа помощью настроек коллекций, называемых API Rules. Прописав фильтр в API Rules для коллекций, мы ограничим доступ как на редактирование, так и на просмотр. Пользователь всегда будет редактировать и видеть только те записи, которые мы ему разрешили.

2. Ну не пишем мы CRUD, и что с того?

  1. Меньше кода. Чем меньше у вас кода, тем легче вам с ним работать. Проще в нём ориентироваться.

  2. Быстрее разработка. Как первой версии приложения, так и в поддержке, цикл разработки ускоряется. Нужно написать новый экран с какими-то новыми данными? Пишете только Frontend. Backend писать не нужно.

  3. Меньше багов. Чем меньше кода, тем меньше вы допустите досадных ошибок, отнимающих время.

  4. Не нужно повторяться и копипастить похожие блоки кода. Забудьте про boilerplate код и “перекладывание JSON”. Каждая строка кода начнёт обретать смысл.

3. Не нужен сервер БД

SQLite встроен в исполняемый файл PocketBase. Это значит, что вам не требуется запускать или настраивать отдельный сервер БД.

Сервер PocketBase сам будет вызывать функции SQLite и обращаться через них к файлу БД.

Это упрощает настройку сервера. Всё, что вам необходимо, это скачать и запустить исполняемый файл PocketBase.

4. Встроенная админка

К сожалению, ни MySQL, ни PostgreSQL не имеют встроенных панелей для просмотра и редактирования. Для работы с ними вы можете использовать либо консольный SQL клиент, либо графический менеджер БД который устанавливаете на свой компьютер, как например DataGrip, либо устанавливаете админ-панель на собственный сервер, например PhpMyAdmin.

Это всё не так уж удобно для пользователя, особенно для тех кто не связан с разработкой.

В PocketBase, напротив, есть встроенная админка, которая работает из коробки. Благодаря простоте движка SQlite даже не придётся ничего дополнительно настраивать. Запустили сервер, и вот вам пожалуйста админка.

Это дополнительно упрощает разработку. Вы можете как просмотреть любые коллекции, так и создать новые вручную. Ну и конечно же админка упрощает управление фильтрами и настройками доступа.

Встроенная админ-панель PocketBase