Comments 21
Наверное, хабра-эффект, админка не открывается.
Пара комментариев по коду:
1. Уберите в какую-нибудь абстракцию взаимодействие с респонсами, эти ваши JSON.stringify на каждый чих в АПИ выглядят не кашерно.
2. Тоже самое касается работы с базой.
3. В 2019 году продвигать проект без тестов, по-моему, мертвая затея…
В любом случае, опыт бесценен, удачи в вашем начинании.
1. Я хочу, чтобы API возвращало JSON в виде текста. Почему здесь плох JSON.stringify?

return rep.code(200)
                .send(JSON.stringify({
                    statusCode: 200,
                    config: req.zoiaConfig,
                }));

Вы имеете ввиду, что вместо «req.send(JSON.stringify(...» имеет смысл сделать какой-то красивый метод-обёртку?
2. Я бы удовольствием сделал какую-то библиотеку для работы с различными БД через адаптеры. Хочется, чтобы была поддержка как SQL, так и не noSQL баз. Не подскажете, есть ли что-то такое? Возможно, я пропстуил.
3. Это не проект без тестов, это проект, где пока всё тестируется руками. Тесты, собственно говоря, будут, как только до них дойдут руки.

Ну и спасибо за пожелания.
1. Я ничего не имею против конкретно JSON.stringify. Почитайте про основные принципы solid. Вот тут подробно расписано: medium.com/webbdev/solid-4ffc018077da Следование, хотя бы в общих чертах, этим принципам сэкономит вам кучу времени в будущем.
2. см п.1. Если следовать принципу инверсии зависимостей (буква D в акрониме SOLID), обращение непосредственно к mongo должно быть через некоторую абстракцию.

У вас сейчас в методах АПИ:
this.mongo.db.collection('pages').findOne(.....)

Если вы захотите поменять mongodb на что-то другое, вам придется переписывать все ваше приложение.

Но если создать свой класс для работы с базой, и к монге обращаться только внутри этого класса, то для смены типа базы данных вам нужно будет переписать только этот класс. Вы даже сможете поддерживать оба типа СУБД — sql и nosql.

3. Посмотрите в сторону TDD. В проектах с АПИ разработка через тестирование здорово экономит время и упрощает жизнь вашим последователям.

А как у вас созданием кастомных полей для записей? Так же, просто висивиг редактор уже мало кого устроит. Контент стал давно главным на сайте, можно прикрутить редактор боков Gutenberg, что даст какую-то свободу менеджерам.

Можно клонировать Pages и добавить туда любые кастомные поля, это достаточно просто делается.
Gutenberg — прикольная штука, спасибо. Возьму на вооружение.
я не встречал ни одной реактивной CMS, полностью написанной на JS и использующей Mongo в качестве БД (напишите, пожалуйста, в комментариях, если такое есть, а я пропустил)

Вы видимо и не искали вовсе. Первый же результат в гугле 11 Best Node.js-based CMS as of 2019


Не понятна мотивация создания подобной cms.

При чем тут CMS на Node? Zoia — прежде всего реактивная CMS, под Node работает только API, веб-сервер и вспомогательные утилиты для сервера

При чем тут CMS на Node?

При том, что у вас CMS на ноде, таких много, в чем фишка именно вашей?


под Node работает только API, веб-сервер и вспомогательные утилиты для сервера

вы еще про сборку и раздачу фронта забыли))

Вы, видимо, не до конца поняли архитектуру Zoia.
Node здесь используется только для API, который взаимодействует с БД и является по сути поставщиком данных, и для веб-сервера, который как раз «раздает фронт». Львиная доля функционала связана с админкой, которая как бы SPA и к Node отношения не имеет.

xtremespb Вы проделали много хорошей работы, но увы я соглашусь с тем что надобности в подобной CMS пожалуй нет. Мотивация использования именно JS не до конца ясна из статьи, поэтому сложно рекомендовать что-то конкретное, но вот парочка написанных на React/Gatsby:



Или найдите идеальную CMSку для себя здесь: https://headlesscms.org/

tinacms.org требует навыки программирования для того, чтобы развернуть CMS.
Та же история с KeystoneJS.
Netlify CMS — это по сути надстройка над статическим генератором сайтов.

Но где же старая добрая CMS, на которой можно было бы быстро, просто и удобно развернуть, например, простой сайт-визитку — без колдунства и шаманства?

Netlify CMS — не требует навыков программирования, и подходит под ваши требования вне зависимости от того чем является.


Если опишите причины зачем нужна CMSка написанная на React и использующая MongoDB и вдобавок плюс/минус требования к ней, то можно подобрать что-нибудь всё на том же сайте.


Вы не подумайте, я не хейтер, мне просто интересно понять чем концептуально отличается ваш продукт от уже существующих на рынке?

Да, спасибо за Netfly. Я посмотрел вот этот tutorial, и всё равно не понял, как мне без сложных танцев с бубном import, collections и т.д. быстро и просто развернуть элементарную «визитку».
Для меня задача стоиит следующим образом: сделать максимально гибкое решение, которое для конечного юзера будет не сложнее обычной PHPной CMSки, при этом будет использовать всё хорошее, что есть в зоопарке соверменного стека JS разработке. Чтобы развернуть простой сайт на Zoia, достаточно git clone && npm i && npm run configure && npm run build — всё, можно запускать готовый сайт, всё уже работает как надо. Допустим, надо сделать мобильное приложение для сайта — ОК, тоже не проблема, есть удобное API. То есть вот как-то так оно и задумывалось.
Во-первых, в туториале с «5 кликами» речь идёт о том, чтобы задеплоить сайт на сторонний облачный сервис. Что делать, если деплоить хочется на свой собственный сервер?
Во-вторых, где многоязычность? ;-) Я уже молчу о всяких приятных мелочах вроде типографа.
Что делать, если захочется расширить функционал CMS готовым модулем?
Ну и на выходе я получил что-то такое: hardcore-lamarr-44a5d0.netlify.com
Админка убогая, как старый ВАЗ моего дедушки. Непонятно, как сделать элементарные вещи, например, добавить в меню навигации страницу, которую я только что опубликовал. Что делать, если мне надо опубликовать страницу без cover image?
Короче, КМК, в случае с Zoia и Netlify речь идёт о достаточно разных вещах. Просто посмотрите, какие сайты можно сделать на Zoia, как пример: раз, два.
Only those users with full accounts are able to leave comments. Log in, please.