Привіт! Сьогодні нарешті дали більш-меньш стабільне світло. Тож вдалося засісти на декілька годин розгрібати бекенд.
Нарешті можу сказати що я закінчив тестити KeystoneJS та можу зробити висновок що цей інструмент, навіть в 6-тій версії має сирий вигляд і ось чому: кодова база настільки часто міняється, що 6-та версія зараз ризикує перетворитися на 7-му. Внутрішні API часто змінюються, тож компонент авторизації через соціальні мережі для 6.0.0-ої версії вже не працює на 6.1.X. Виглядає це вкрай дивно. Спробував інтегрувати PassportJS і зрозумів що не дуже сильно хочу писати нові компоненти под KeystoneJS, тому що мої компоненти ризикують відвалитися у новій версії (я навіть знаю місця де вони зломаються). То я закрив книжку під назвою KeystoneJS.
Але немає худа без добра - завдяки Keystone я дещо знайшов. Сам KeystoneJS побудований на Prisma. Я вже давно бачив цей ORM, але в останній час я став частіше бачити різноманітні системи в яких ця ОРМ займає ключову позицію.
Я почав тестити PrismaJS і зрозумів, що воно, з моєї точки зору, дуже сильно підходить в якості основи для роботи з БД. Так як я фронтендєр і розробляю сайт один то мені важливо щоб інструмент вже мав у собі наработані практики з бекенду. Так вийде система з середньою швидкістю роботи, але надійніша ніж якщоб всі прямітивні речі я робив власноруч (наприклад сам би писав щось накшталт ОРМ).
PrismaJS має наступні речі які спрощують розробку:
- Автоматична генерація структури бази даних по схемі, описаній в форматі GraphQL Schema. Я описую структури таблиць та відношення, PrismaJS генерує SQL-міграції для оновленя структури БД;
- Автоматична генерація TypeScript типів, тобто якщо щось змінюється в структурі БД то одразу видно які місця треба виправити в фронтенді. Це сильно підвищує стабільність;
- Зручний інтерфейс для роботи з даними Prisma Studio.
Поточний стек:
- Docker - автоматизація розгортання інфраструктури;
- MySQL - база даних (додатково: Adminer - менеджер БД);
- PrismaJS - ORM для того щоб спростити роботу з базою даних;
- AstroJS (в режимі SSR) - фронтенд фреймворк у режимі сервера, відповідпальний за роутинг та рендеринг сторінок на сервері;
- TurboJS - надстройка над SSR (Server Side Render) сайтом для перетворення його в SPA (Single Page Application);
- StimulusJS - компаньйон до TurboJS, додає JS-контролери;
- TilewindCSS - CSS фреймворк.
Планую протестувати наступну річ:
- PassportJS для ExpressJS - компонент для авторизації, в тому числі і через соціальні мережі.
Як і планував, продовжую займатися Стрічкою постів. Перевів весь сайт на PrismaJS. Пофіксив усі типи даних які залишилися від Pocketbase.
Тим, хто може пропустив, то зараз я працюю над оновленим сайтом, дизайн зараз виглядає так:
Буду робити стрім, маю надію що на деякий час світло стабілізувалося.
Доречі я зараз ще зайнятий тим що збираю свій анти-апокаліптичний сетап (або EcoFlow для бідних): це автомобільний акумулятор, зарядка до нього, понижувач до 5 вольт, і розводка лампочок по всіх кімнатах. Може ще куплю інвертор 12 В у 220 В. І все це до 10к гривень проти 32к за саму дешеву станцію EcoFlow.
Коротше кажучи, сусіди нам не дають розслабитися, а ми не даємо розслабитися їм. Всім гарного настрою!
6 коментарів