Для малых и средних по масштабу проектов, в первую очередь для пет-проектов, можно использовать PocketBase.
PocketBase — это готовый Backend сервер на основе SQLite.
В чём его преимущества?
1. Не нужен Backend для CRUD
Ключевая фишка PocketBase, это избавление от необходимости писать в коде CRUD-прослойку между клиентом и БД.
Да, фреймворки упрощают написание кода, но код есть код, лучше его не писать если можно не писать.
Суть разницы классического подхода и подхода с PocketBase:
Куда девается CRUD?
PocketBase берёт на себя часть обязанностей бэкенда вашего приложения.
В простых приложениях, например какой-нибудь трекер привычек, почти весь код будет является обычным редактированием записей в БД, то есть “CRUD кодом”, состоящим из инструкций Create, Read, Update, Delete. В более сложных приложениях CRUD код тоже будет занимать значительную часть. Всё что относится к CRUD берёт на себя PocketBase, поэтому вам не придётся писать этот код.
По сути, PocketBase предоставляет готовое API, по которому вы из JavaScript практически напрямую работаете с БД.
Как PocketBase справится с безопасностью?
Если мы практически напрямую общаемся с БД, встаёт два вопроса: безопасность и фильтрация. Нельзя позволить любым пользователям редактировать любые записи, а также нужно как-то скрыть записи, которые пользователь не должен видеть, например чужие заметки.
Безопасность обеспечивается через встроенные механизмы авторизации. В простейшем случае пользователь авторизовывается через логин и пароль, и далее авторизованная сессия используется для взаимодействия с БД.
PocketBase решает проблему доступа помощью настроек коллекций, называемых API Rules. Прописав фильтр в API Rules для коллекций, мы ограничим доступ как на редактирование, так и на просмотр. Пользователь всегда будет редактировать и видеть только те записи, которые мы ему разрешили.
2. Ну не пишем мы CRUD, и что с того?
-
Меньше кода. Чем меньше у вас кода, тем легче вам с ним работать. Проще в нём ориентироваться.
-
Быстрее разработка. Как первой версии приложения, так и в поддержке, цикл разработки ускоряется. Нужно написать новый экран с какими-то новыми данными? Пишете только Frontend. Backend писать не нужно.
-
Меньше багов. Чем меньше кода, тем меньше вы допустите досадных ошибок, отнимающих время.
-
Не нужно повторяться и копипастить похожие блоки кода. Забудьте про boilerplate код и “перекладывание JSON”. Каждая строка кода начнёт обретать смысл.
3. Не нужен сервер БД
SQLite встроен в исполняемый файл PocketBase. Это значит, что вам не требуется запускать или настраивать отдельный сервер БД.
Сервер PocketBase сам будет вызывать функции SQLite и обращаться через них к файлу БД.
Это упрощает настройку сервера. Всё, что вам необходимо, это скачать и запустить исполняемый файл PocketBase.
4. Встроенная админка
К сожалению, ни MySQL, ни PostgreSQL не имеют встроенных панелей для просмотра и редактирования. Для работы с ними вы можете использовать либо консольный SQL клиент, либо графический менеджер БД который устанавливаете на свой компьютер, как например DataGrip, либо устанавливаете админ-панель на собственный сервер, например PhpMyAdmin.
Это всё не так уж удобно для пользователя, особенно для тех кто не связан с разработкой.
В PocketBase, напротив, есть встроенная админка, которая работает из коробки. Благодаря простоте движка SQlite даже не придётся ничего дополнительно настраивать. Запустили сервер, и вот вам пожалуйста админка.
Это дополнительно упрощает разработку. Вы можете как просмотреть любые коллекции, так и создать новые вручную. Ну и конечно же админка упрощает управление фильтрами и настройками доступа.