Написал веб приложение для внутреннего пользования. Есть сущности за которыми нужен учёт: добавлять, удалять, изменять, переносить и прочее. На данный момент работа идёт через Google табличку, что надоедает и хочется более удобный интерфейс. Да и вообще как учебный проект для себя сделал. Учусь...)
Писал на Vue. Весь BackEnd отдал supabase (аналог firebase, только без санкций). С данными работаю через Vuex, туда загружаю инфу с БД, а через Vuex Actions отправляю обратно (не знаю правильно ли так делать, но решил вынести всю работу с БД из компонентов и прорефакторил всё во Vuex).
Залил dist на GitHub Pages (приложением пользуются 3-4 человека, так что мне достаточно такого фри хостинга). Сделал также PWA приложение (просто через vite-plugin-pwa). Короче приложение работает с инетом отлично. Но без инета связь с supabase прерывается понятное дело...
1. Есть ли какие-то уже надстройки, фреймворки, библиотеки чтобы автоматизировать "офлайн запись" запросов, чтобы при выходе из офлайна была синхронизация с БД? В какую сторону смотреть? Или придется что-то лепить самому?
2. Если лепить самому, правильно ли я думаю, что нужно будет каждый раз при подключении делать копию в localStorage/IndexedDB части данных, а дальше уже работать с ней? Вдобавок все операции CRUD записывать в localStorage во время офлайна, чтобы при онлайн подключении делать массовую выгрузку в supabase?
1. Спасибо большое за Pinia. Учусь где-то 2-й месяц. Для себя недавно открыл преимущества Vite на vue-cli, перешел на него. Теперь буду отходить от Vuex, потому что то что я глянул про Pinia мне нравится)) Действительно всё проще, но пока не понял недостатки Pinia (разве что надо теперь разобраться в теме Options API и Composition API, так как во многом в гайдах Pinia пишут по парадигме Composition, а я как понимаю, учился по Options). Единственное что не понял, теперь не нужно постоянно забирать данные через pinia getters, как во vuex, а можно напрямую с state, а getters только если нужна "мутация" данных? Я читал, что vuex нельзя (нежелательно) обращаться к state напрямую, лучше через getters (вроде как я понял из-за отсутствия реактивности в таких обращениях).
Ну, проект не такой большой, попытаюсь переписать его на Pinia тоже для собственной практики.
2. Спасибо за подсказку про couch/pouch db. Я думаю, что в данном проекте мне это не подойдёт, так как Back придется где-то на сервак кидать. Supabase в этом плане удобнее, что я за авторизацию не парюсь (тоже еще для меня муть с этими токенами, сессиями и прочим), вдобавок за Back вообще не парюсь, просто сервер тот работает на фри пакете. Буду видимо придумывать логику через localStorage (еще чот почитаю про LocalForage). Проект небольшой, сойдёт) А в дальнейших проектах, когда с Frontom разберусь получше и буду щупать Back активнее, обязательно займусь couch/pouch db)