Comments 22
на гитхабе корректные:
Demo (is being reset to defaults every single hour!): demo.zoiajs.org, Admin panel: demo.zoiajs.org/admin (use admin/password to authorize).
Пара комментариев по коду:
1. Уберите в какую-нибудь абстракцию взаимодействие с респонсами, эти ваши JSON.stringify на каждый чих в АПИ выглядят не кашерно.
2. Тоже самое касается работы с базой.
3. В 2019 году продвигать проект без тестов, по-моему, мертвая затея…
В любом случае, опыт бесценен, удачи в вашем начинании.
return rep.code(200)
.send(JSON.stringify({
statusCode: 200,
config: req.zoiaConfig,
}));
Вы имеете ввиду, что вместо «req.send(JSON.stringify(...» имеет смысл сделать какой-то красивый метод-обёртку?
2. Я бы удовольствием сделал какую-то библиотеку для работы с различными БД через адаптеры. Хочется, чтобы была поддержка как SQL, так и не noSQL баз. Не подскажете, есть ли что-то такое? Возможно, я пропстуил.
3. Это не проект без тестов, это проект, где пока всё тестируется руками. Тесты, собственно говоря, будут, как только до них дойдут руки.
Ну и спасибо за пожелания.
2. см п.1. Если следовать принципу инверсии зависимостей (буква D в акрониме SOLID), обращение непосредственно к mongo должно быть через некоторую абстракцию.
У вас сейчас в методах АПИ:
this.mongo.db.collection('pages').findOne(.....)
Если вы захотите поменять mongodb на что-то другое, вам придется переписывать все ваше приложение.
Но если создать свой класс для работы с базой, и к монге обращаться только внутри этого класса, то для смены типа базы данных вам нужно будет переписать только этот класс. Вы даже сможете поддерживать оба типа СУБД — sql и nosql.
3. Посмотрите в сторону TDD. В проектах с АПИ разработка через тестирование здорово экономит время и упрощает жизнь вашим последователям.
А как у вас созданием кастомных полей для записей? Так же, просто висивиг редактор уже мало кого устроит. Контент стал давно главным на сайте, можно прикрутить редактор боков Gutenberg, что даст какую-то свободу менеджерам.
Есть очень много headless cms, которые можно использовать с gastby/next.js или еще чем в качестве head.
https://ghost.org/
https://strapi.io/
и тп по запросу headless cms
я не встречал ни одной реактивной CMS, полностью написанной на JS и использующей Mongo в качестве БД (напишите, пожалуйста, в комментариях, если такое есть, а я пропустил)
Вы видимо и не искали вовсе. Первый же результат в гугле 11 Best Node.js-based CMS as of 2019
Не понятна мотивация создания подобной cms.
При чем тут CMS на Node? Zoia — прежде всего реактивная CMS, под Node работает только API, веб-сервер и вспомогательные утилиты для сервера
При чем тут CMS на Node?
При том, что у вас CMS на ноде, таких много, в чем фишка именно вашей?
под Node работает только API, веб-сервер и вспомогательные утилиты для сервера
вы еще про сборку и раздачу фронта забыли))
Node здесь используется только для API, который взаимодействует с БД и является по сути поставщиком данных, и для веб-сервера, который как раз «раздает фронт». Львиная доля функционала связана с админкой, которая как бы SPA и к Node отношения не имеет.
xtremespb Вы проделали много хорошей работы, но увы я соглашусь с тем что надобности в подобной CMS пожалуй нет. Мотивация использования именно JS не до конца ясна из статьи, поэтому сложно рекомендовать что-то конкретное, но вот парочка написанных на React/Gatsby:
Или найдите идеальную CMSку для себя здесь: https://headlesscms.org/
Та же история с KeystoneJS.
Netlify CMS — это по сути надстройка над статическим генератором сайтов.
Но где же старая добрая CMS, на которой можно было бы быстро, просто и удобно развернуть, например, простой сайт-визитку — без колдунства и шаманства?
Netlify CMS — не требует навыков программирования, и подходит под ваши требования вне зависимости от того чем является.
Если опишите причины зачем нужна CMSка написанная на React и использующая MongoDB и вдобавок плюс/минус требования к ней, то можно подобрать что-нибудь всё на том же сайте.
Вы не подумайте, я не хейтер, мне просто интересно понять чем концептуально отличается ваш продукт от уже существующих на рынке?
Для меня задача стоиит следующим образом: сделать максимально гибкое решение, которое для конечного юзера будет не сложнее обычной PHPной CMSки, при этом будет использовать всё хорошее, что есть в зоопарке соверменного стека JS разработке. Чтобы развернуть простой сайт на Zoia, достаточно git clone && npm i && npm run configure && npm run build — всё, можно запускать готовый сайт, всё уже работает как надо. Допустим, надо сделать мобильное приложение для сайта — ОК, тоже не проблема, есть удобное API. То есть вот как-то так оно и задумывалось.
Здесь есть инструкция как в 5-6 кликов получить тоже самое
https://www.netlifycms.org/docs/start-with-a-template/
Во-вторых, где многоязычность? ;-) Я уже молчу о всяких приятных мелочах вроде типографа.
Что делать, если захочется расширить функционал CMS готовым модулем?
Ну и на выходе я получил что-то такое: hardcore-lamarr-44a5d0.netlify.com
Админка убогая, как старый ВАЗ моего дедушки. Непонятно, как сделать элементарные вещи, например, добавить в меню навигации страницу, которую я только что опубликовал. Что делать, если мне надо опубликовать страницу без cover image?
Короче, КМК, в случае с Zoia и Netlify речь идёт о достаточно разных вещах. Просто посмотрите, какие сайты можно сделать на Zoia, как пример: раз, два.
Посмотри в сторону Strapi, может тоже понравится :)
Сейчас вышел Keystone версии 6 - там много чего переделали с нуля (переписали на TypeScript и используют Prisma для работы с бд), он стал гораздо проще, моднее и гибче, так что рекомендую глянуть на него ещё раз!
Zoia: легкая реактивная CMS для быстрой разработки сайтов