Рождение одного проекта или как написать свою CMS

Приветствую вас, уважаемые Хабравчане. Я очень долго шел к тому чтобы написать статью здесь о себе и своем проекте. В этой статье я хотел бы рассказать Вам мою историю зарождения идеи проекта. А также написать свою историю развития взглядов на разработку ПО в целом. Возможно даже, мне удастся передать часть знаний основанных на моем многолетнем опыте работы программистом. Поехали!

Oбо мне


Расскажу немного о себе. Меня зовут Александр, я работаю программистом более 10 лет. Мне приходилось решать задачи в разных областях бизнеса, таких как банковское дело, электронная коммерция, проекты структурирования данных, парсеры и прочие задачи «энтерпрайз» сектора.

Цель данной статьи показать одну из граней мира разработки ПО и возможно открыть новую дверь возможностей для других программистов. Что я имею ввиду под этим заявлением?

Этапы развития программиста


Наверняка ранее Вы уже читали статьи про этапы развития программистов. По моим убеждениям каждый программист проходит этапы развития в своей профессиональной карьере.

Я определил этот путь развития программиста в 5 этапов:

  • Первый этап это когда ты студент или ты еще новичок в программировании. Тебе нравится просто видеть результат того что ты запрограммировал, будь это окно с кнопочкой «Hello» или парсер данных который анализирует и структурирует.
  • Второй этап это когда ты уже пишешь сложные интеграции и используешь продвинутые фреймворки. И ты получаешь удовольствие от того что освоил очередной инструмент.
  • Третий этап это когда ты начинаешь разбираться как лучше структурно спроектировать приложение. И просто сходишь с ума от того что ты разделил правильно логику на компоненты.
  • Четвертый этап это этап бога разработки ПО. Ты понимаешь все предыдущие этапы и тебе нравится построить систему сборки и доставки всех модулей приложения в единый удобный автоматизированный установщик.
  • Пятый этап это самый грустный этап. Ты понимаешь что твоё любимое дело уже не приносит той былой эйфории и просто делаешь всё на автомате. Вот тогда наступает тот момент когда тебя распирает просто сделать свой продукт и вывести его на рынок тем самым решив чью-то проблему или просто улучшив какой-то рабочий процесс.

Рождение и смерть идеи


Как вы уже наверняка поняли, что эти этапы основаны на моем личном опыте. Поэтому возможно у кого-то будет совсем другой опыт развития. И я не заявляю что так и никак по другому. Дальше речь пойдет о том самом 5-ом этапе развития и что с этим делать дальше.

Однажды в мою голову упала одна очень интересная идея. Перед этим конечно я ходил неделю и думал какой бы сервис «запилить». Причем серьезно и обдуманно я решил делать что-то грандиозное.

Идея была такова, создать некую платформу, по сути веб-сайт, который позволит каждому желающему рассказать другим о своих умениях в чем-то где он преуспел относительно других. Например, заядлый рыбак, хочет поделится своим опытом как ловить правильно окуня или карпа. Он создает некое событие на этой платформе с датой проведения семинара и размещает промо-ролик или просто описание своего семинара. Остальные пользователи голосуют интересно или не интересно, при сборе какого-то количества голосов, событие утверждается платформой или отклоняется из-за недостатка голосов в поддержку. Причем человек разместивший это событие имеет возможность установить сумму за посещение данного семинара. От владельца этой платформы требовалась полная организация этого мероприятия. Соответственно взяв небольшую комиссию с продажи билетов. Вот уже готовая монетизация.

Я уже слышу в Ваших мыслях, — «да это уже есть, зачем делать снова велосипед». А вот есть смысл, я еще вернусь к этому утверждению. Конечно в итоге идея резко трансформировалась кардинально в другую, но без основной задачи я бы не увидел эту проблему.

Всего лишь CMS


Дальше встал вопрос на какой технологии это всё делать. Я недолго думая, начал смотреть существующие CMS и прочие платформы для быстрой сборки такого рода проекта. Решение было такое, что я возьму какой-то движок для работы с данными и просто буду делать веб-морду доставая эти данные по REST. Я не собирался закопаться в полноценную разработку. В итоге всё же пришлось.

Мой взгляд на разработку ПО


Для каждой задачи, свой инструмент. Я всегда стараюсь придерживаться этого правила в разработке ПО. Еще один из важных факторов это разделение логики на технологические области ответственности. Для меня важны четкие границы интеграции между разными технологиями. Другими словами мне нравится когда «фронтэнд» отделен от «бекэнда» например. То есть от слова «совсем». Или существуют выделенные структурно модули, интеграции, и все это работает независимо. Сейчас это называется микро-сервисы.

Я считаю что так легче организовать работу над проектом, разделив разработчиков на команды по их компетенции.

Все! Решаю сделать космолет


Исходя из опыта я думал что нужен такой инструмент который поможет из готовых блоков формировать дизайн страниц и связывать его с данными и сервисами этой платформы прямо из браузера. Основной критерий был это никакого узко-специализированного программирования под каждую задачу. Всё должно быть абстрактно и как конструктор.

Потратив 2 недели на поиск чего-то подобного и испытав при этом две бесплатных CMS — Drupal и Wordpress (я попытался использовать их в качестве движка управления данными и интеграцией по REST API). Но ни одна из них не удовлетворила мои требования. Поэтому мною было решено написать свою CMS с «блекджеком и шлюхами».

Технологии


Следующий вопрос который предстояло решить это выбор стека технологий для реализации. Особо долго не раздумывая, я конечно же предпочел сделать все на Java. Нужно было только решить какие фреймворки взять. Критерий в выборе фреймворков был таким — не брать лишнего и использовать только нужные части инструмента (в дальнейшем немного пожалел о выборе). Для построения интерфейса администраторской панели, мною был выбран один малоизвестный AJAX-фреймворк из Тайваня — ZK Framework. Мне в нем нравится подход MVVM, и его AJAX-составляющая (сейчас я уже считаю это минусом). Так как не нужно писать тонны JS чтобы следить за актуальностью состояния интерфейса пользователя на странице (на данный момент я нашел лучшую альтернативу).

Что же за стек технологий я по итогу получил:

  • ZK Framework (MVVM)
  • Java (EJB)
  • JAX-RS
  • MongoDB
  • WildFly

Ну что, вперед!


И я ушел с головой в этот проект, параллельно работая на проектах за зарплату. Время на свой проект было в основном по вечерам и выходным, иногда где-то удавалось урвать время на основной работе, работал и там. В процессе работы над проектом менялся принцип реализации несколько раз. Модель данных также претерпела множество модификаций. Параллельно я рассказывал друзьям программистам над чем работаю, предлагал влиться в проект и начать совместную работу. Но к сожалению я продолжал делать этот проект в одиночку. В итоге я потратил 3 года чтобы получить рабочую версию того функционала что был задуман.

Один в поле не воин, или...


Дальше мне хотелось всё же создать команду. Я начал регистрацию своего продукта в качестве стартапа в одном из бизнес-акселераторов. Но так и не закончив свою заявку, остановившись на этапе «Ваша команда».

Я много и часто рассказывал своим друзьям кто работал в близкой к сфере IT (информационных технологий) или в сфере IT.

В конце концов мне удалось найти такого же сумасшедшего потенциального клиента на мой продукт. Он также как и я, решил делать свой продукт, но он не программист. И ему нужна была платформа для его продукта. Я решил, вот оно! Мне даже не пришлось предлагать самому использовать мою CMS, мне было предложено на ней сделать сайт. Бесплатно конечно. Это был мой шанс испытать на реальной разработке мою CMS. И знаете что, я был приятно удивлен, но моя CMS справилась с этой задачей на все 100%. Да, конечно я много чего в процессе сборки дорабатывал, улучшал, и просто «фиксил» баги. Но в итоге я смог гибко натягивать любые дизайны и шаблоны на страницы, подключать и интегрировать данные и сервисы из сторонних источников.

И швец, и жнец, и на дуде игрец


С этого момента я понял что нужно развивать свои знания в области маркетинга, и читать книги о построении своего бизнеса. В процессе я участвовал с этим продуктом в хакатоне от MongoDB, получил частично реакцию аудитории на этот продукт. В соц. сетях откликнулись и даже поделились моим сообщением о том что я сделал CMS. По результатам хакатона, я конечно не получил ни единой награды, но я остался доволен тем что я участвовал.

Пока я ждал результаты хакатона я еще сделал две попытки «запитчить» мой продукт на мероприятиях по привлечению инвестиций. После чего уже увидел живую реакцию слушателей. Что принесло мне огромный опыт.

Результат


Что на данный момент я имею:

  1. Некий MVP(Minimal Viable Product) покрывающий функционал:
    • гибкой шаблонизации
    • файлового хранилища
    • модификации модели данных налету
    • интеграцию с REST сервисами
    • управление ролями и пользователями в MongoDB

  2. Опыт презентации IT-продукта и реакцию зала.
  3. Партнеров в работе над IT-продуктами, мотивированных решать задачи лишь за идею.
  4. И большой «роадмап» дальнейшего развития продукта. На данный момент по стеку технологий я задумал колоссальную переработку, и почти полную смену этого стека технологий. Плюс расширения функционала.
  5. Идеологию в реализации оставляю такую же.

Заключение


А теперь я вернусь с чего начинал. Смысл делать свой продукт есть всегда, даже если все вокруг говорят «да это уже есть, это всё сделали до тебя». Я называю таких людей английским словом Naysayer, однажды я услышал это слово от Арнольда Шварценеггера в одной из его мотивационных речей.

Несколько возможных путей развития продукта:

  • Отдать его в open source
  • Объединиться с похожими продуктами
  • Собрать сообщество таких же сумасшедших как я, кто создает свои продукты и пытается их продвинуть на рынок

Вот официальный промо-ролик:


Вот официальный демо-сайт CMS:

MastermindCMS

P.S.: Я хотел бы извиниться за частые использования «американизмов» в тексте. Сленг разработчика очень наполнен ими. Если бы я все перефразировал на русские синонимы, я бы потерял стиль повествования понятный и атмосферный для коллег по цеху.

Я надеюсь, мой рассказ вам понравился, и кому-то он будет полезен. Всем хорошего продуктивного дня!
Поделиться публикацией

Комментарии 39

    0
    А как залогинется в системе?
    я что-то нажала и все сломалось

      0
      Да, это известная проблема. Периодически возникает. Если очень интересно, могу скинуть логин в личку.
        0
        По этим ссылкам доступны примеры собранных страниц:
        Demo 1
        Demo 2
          0
          Demo 1 — я так понял там всего две страницы рабочии
          Demo 2 — выдает: Hello World! This is text defined in widget meta information.
            0
            Да, я больше не собирал там примеров.
      0
      Очень не хватает demo доступа в админку.
      А так похвально, я тоже использую свою CMS для создания Web сайтов.
        0
        Кинул в личку логин и пароль.
        0
        А в чем прикол показывать страницу логина?
        Я тоже могу такую запилить за полчаса…
        Демо-доступ в админку был бы интереснее.
        Открытый демо-доступ для желающих, к примеру по логину/паролю demo/demo
          0
          Я под запрос. А то хаос начнется))). Кинул в личку.
          0

          И мне плиз скиньте пароль от админки, гляну

            0
            Кинул.
            0
            1. Попытался залогиниться, ничего не вводя:


              Error code: 500 
              WELD-001304: More than one context active for scope type javax.enterprise.context.SessionScoped

            2. После этого всегда получаю "Internal server error", как у первого комментатора.


              0
              У меня также. Может хабраэффект?
                0
                Я сейчас хотфикс пробую сделать.
                0
                Можно попробовать.
                  0
                  Извините за занудство, но что вы хотели донести этим постом? На хабре, наверное, каждый пятый в свое время писал свою CMS. Кода нет, описания решения интересных технических проблем, возникших во время разработки тоже. Уверен, с опытом более 10 лет вы могли-бы написать что-то более интересное про эту разработку, а не просто заявить о том факте что у вас все благополучно получилось.
                    0
                    Впрочем в тексте в самом начале я писал про цель данного поста. Ничего страшного, я повторюсь. Смысл в том и есть почему до сих пор существует тенденция среди программистов написать свою CMS?

                    Потому-что бесплатных решений нет с функционалом который позволит собирать сайты как в конструкторе. Все мы знаем ущербность тех билдеров которые есть в Wordpress или Drupal. Плюс ко всему этому добавляется сложная концепция хранения данных, где объекты имеет жесткие структуры, и чтобы их менять нужно собирать новую версию продукта. Да и не особо user friendly управление данными в этих CMS.

                    Вторая сторона смысла, это развитие программиста как профессионала, она больше психологическая. Что делать когда понимаешь что хочешь сделать продукт от и до, и выдвинуть его на рынок.

                    Ну и по поводу написать что-то про разработку, я с вами согласен. Это мой первый пост, но есть огромное желание продолжить писать, тем более как вы отметили, мне есть что написать.

                    А про то что всё благополучно получилось, это вы ошибаетесь, я в тексте об этом не писал. Наоборот все только начинается. В конце есть итог чего я имею. Дальше только развитие и переработка.

                    +1
                    Свою первую «CMS», а точнее пару скриптов для инклюдов меню, футера, хедера и всего что только можно инклюдить сделал чуть ли не лет 20 назад, посмотрев на PHP-Nuke (и испытав неимоверное отвращение от его логики). И так как альтернатив ему либо ещё не существовало, либо они тоже не зашли. Решил доплыть на своём велосипеде. Так и «плыву». С джумлой, дле, вордпресс и прочим сдружиться у меня не получилось. Боюсь моей CMS всё же быть :(

                    Хотелось бы услышать советы как не про**** 3 года ещё одной жизни?
                    — Есть какие-нибудь качественные материалы по архитектуре CMS?
                    — Без каких фишек современная CMS не способна существовать? (авторизация через сторонние сервисы, 2FA, поддержка 128 символьных паролей из KeePass, встроенный модуль SEO, человеко-читаемые урлы и т.п и т.д). Мало того что я не знаю, что есть из того без чего жить нельзя. Так ещё и есть шансы всё не реализовать. Люди тратят годы… Что необходимо для этого самого Minimal Viable Product?

                    Я одиночка и за спиной нет команды… К сожалению даже намёков на то, как написать свою CMS в статье я не увидел :( И походу единственный вариант прочитать код существующих CMS. Вот только на это тоже три года уйдёт… А так как они все берут корни из PHP-Nuke, то и читать такое желания ноль.

                    P.s — Жду demo пароль :)
                      0
                      Кинул в личку пароль. Хорошие вопросы, но боюсь ответы на них получатся объемными и в комментарий все не уместить. Лучше я напишу ответы в следующем своем посте.

                      Кратко об MVP, по сути это тот функционал который отражает вашу ключевую идею, без как либо деталей в реализации.

                      По поводу «я одиночка», я в этом вижу проблему. Я один, вы один, и еще куча программистов как мы работают на своей задачей. У меня есть один из пунктов в статье, что я бы хотел сформировать сообщество таких как мы. Хаб людей энтузиастов программистов. Вариантов реализаций много, но по факту нет.
                        0
                        Если нет четкого понимая того, что вы хотите увидеть, может не стоит пока что свою CMS писать?
                        Рекомендую сначала присоединиться к разработке какой-нибудь open source разработке, изучить архитектуру. Когда вы будете писать код вы сами увидите где плюсы, а где минусы
                          0
                          Странное замечание. Но я как раз вижу проблему, и все подходы что я использовал в реализации своей CMS, я многое позаимствовал из других проектов с которыми приходилось работать. Именно выбирая то что мне казалось удобной реализацией.
                            0
                            @SubarYsn, мой ответ был не на ваше сообщение, а на сообщение OZR
                            0
                            Я немного про другое. Есть «модель Кано». Кано говорит, когда мы говорим об удовлетворении потребителя, мы должны дать себе отчет, что у потребителя есть желания (требования) трех уровней.

                            1 уровень – требования «по умолчанию», требования о которых потребитель никогда не говорит, но он это имеет в виду всегда. Если к вам пришел клиент и хочет купить автомобиль, он не обсуждает, что у автомобиля 4 колеса, руль, крыша, сиденье, тормоз и т.д. В его сознании все это само собой разумеющиеся, неотъемлемые части того, что он называет автомобилем. И если мы под этим словом понимаем что то другое, то горе нам, сделка не состоится. И конечно он не будет покупать автомобиль с 3-мя колесами, потому что в его сознании он всегда с 4-мя. Требования по умолчанию очень важные требования, т.к. производитель не всегда понимает эти требования, так же как потребитель. И одна из задач производителя – докопаться до этих требований, выудить их у потребителя, то что для него есть «само собой разумеющееся». Если мы не удовлетворяем требованиям «по умолчанию», ни о чем другом и речи быть не может. Это не интересная игра, потому что мы её всегда проиграем. И проблема в том, что клиент по доброй воле об этих требованиях никогда не говорит.

                            Начнём с самого начала. Наш пользователь или клиент ещё не знает о нашем существовании. Он заходит в условный Яндекс. Вводит какой-либо поисковый запрос. И если у нас нет (1) модуля под SEO и человеко-читаемых урлов. Мы проиграли. Они даже не зайдут на наш сайт. Без разработки этой функции писать CMS нет смысла. Допустим к нам всё же зашли и хотят попробовать наш продукт и (2) зарегистрироваться. Это второй критически важный пункт. Среди миллионов сайтов процесс регистрации наверное уже задолбал просто всех. Есть пользователи, которые пользуются централизованными учётными записями, аля гугл или вк. И если нет возможности входа через эти сервисы. Скорее всего они не войдут. И даже не попробуют. Другая часть пользователь решает эту проблему через базы данных паролей. Я например генерирую пароль через KeePassXC и обычно он выглядит как-то так — ``5òÝ´ûs§±Z¿á_ÁÍ÷*èóô×GÃý?Çe6CÓ4ñ¾QrýôwtÐeõ×Ë~ôG÷j-\Y{ècï)µ©ñüè¤Îk¨kd-@½?¶x-©ÎPïίÛbPñ±£Ê'±°9doÝPô-3vÈp$Ù2úÀp[C[«G6XgH;ÊÙÊ{TRÒcM — Если сайт скажет пароль слишком длинный или в нём неправильный символ. А скорее всего сайт вообще ничего не скажет. Это провал. Мы теряем пользователя. Он не зарегистриуется и просто уйдёт. На другой миллион сайтов.

                            И подобные детали имеют первичное значение. Без реализации которых писать собственную CMS не имеет смысла. Сколько ещё есть таких моментов? Я не знаю. Мы люди разные. Но ещё точно есть адаптивный дизайн для людей с мониторами 4к, либо мобильными планшетами. Обычно сюда же входит поиск по сайту. Это всё то, что обычный, средний человек без малейшего понимания в компьютерах и сайтостроении считает само собой разумеющимся. А под чётким пониманием обычно — это хочу здесь кнопочку, а вот тут раздел. И тут картинку. Возможно даже с ТЗ. А про техническую мишуру с паролями и регистрацией мало кто задумывается.

                            И вот именно здесь и начинается всё самое вкусное, интересное, сложное и непонятное. Какие проблемы были. И как они решались? Есть проблема. Есть несколько вариантов решений. У этого такие плюсы и минусы. У другого другие плюсы и минусы. Я выбрал реализацию из CMS N1356, т.к оно мне понравилось больше, чем в других.

                            Надо понимать, что мало кто действительно пишет свою CMS. Как и мало кто пишет свою операционную систему. Их может быть и пишут. Но в процессе учёбы, по-фану. И пару недель. А потом начинается ад. И как следствие выбирается WordPress.

                            И вот я хочу узнать с чем же действительно придётся столкнуться. Назовём это краткой теорией CMS. Что же на самом деле надо почитать про создание веб-сайта и его архитектуры, за исключением модель-вью-контроллер? Автор сделал акцент на стеке технологий. И вот мне совершенно не интересно, почему же такой странный выбор — Java. По большому счёту всё равно на Java/PHP/GoLang/NodeJS или используется на фронте Angular/Vue/React. Это изобилие технических инструментов. Страдания, что выбрать Go или Node. Vue или React. MongoDB или PostgreSQL. Это страдания выбора инструментов. В каждом из них будет чуть-чуть по-разному. Надо просто выбрать и сделать хоть на чём-нибудь. Всё равно выбор будет ошибочным и эти страдания продолжатся на всю дальнейшую жизнь продукта (а с учётом гиперраспространения языков программирования… Где всё разное. И пересечься сложно даже на выборе технологий).

                            По архитектуре ядра ос можно посоветовать хотя бы Таненбаума. А там уже и по линуксу чего только нет. А что с CMS? Материалы либо совсем детские. Либо старые. Либо вот как вот этот. Прочитать было интересно и воодушевляюще. Но бесполезно.

                            Когда-то давным давно у меня не было выбора. Есть html4 и php… Есть PHP-Nuke и свой велосипед. У меня не было знаний по сайтам и я просто сделал какое-то УГ, из головы, без теории и понимания каких-либо проблем. После чего я не программировал много лет, свои дела, другие области. А это полусамописное модульное убожество на инклюдах каким-то образом живёт до сих пор. И сайт живёт до сих пор. И им пользуются. Если бы я выбрал PHP-Nuke, сайт бы не выжил. Но это было тогда.

                            Сейчас. Автору респект. Писать свою CMS при наличии WordPress и прочих. Это как минимум смело. И цена этому годы…

                            И вот написал я всё это… И почти передумал писать CMS :( И WordPress не хочу… Ещё этот долбаный зоопарк с иллюзией выбора аля голанг или нода… Реакт или вью. У меня был долгий перерыв. И вновь сайтами я заинтересовался аж месяца 3 назад. И в текущей реальности у меня даже есть сомнения стоит ли вновь заниматься. В интернете все заказы под уже готовые CMS… Да большинство людей БОИТСЯ делать сайты не на WordPress или OpenCart. Это же как обслуживать их?

                            То что сделал автор — маленький подвиг. А я весь день вновь думаю про свою CMS.

                            И даже скажу почему. Все до единого проекты в которых я был, построенные на базовых решениях, придуманных кем-то. Рано или поздно входили в стадию, где невозможно выйти за рамки ограничений этого самого базового продукта. Не важно, в каком он месте. Он будет. И на этом моменте сайт начинает чахнуть и увядать. Разработчики ядра CMS или форума. Там они пилят ядро. И на клиентов обычно уже плевать. И их решения не оспариваются, ведь они так видят. И сторонних разработчиков на изменения уже не найти, ведь есть «идеологически верный путь». А если уйти в сторону. То начинается ещё один форк, который превращается в поддержке своего самописного поверх ядра. И тут опять замкнутый круг. Ядро обновляется, у тебя всё рушится. Так что своя CMS — это в каком-то плане выход.

                            — Я тут случайно «войну и мир» нафлудил. По факту вся суть поста в модели Кано первого уровня по отношению к CMS. Спасибо, кто дочитал и извиняюсь перед теми, кому это пришлось почему-то читать ))
                              0
                              Все прочитал, есть моменты с которыми не согласен (речь о деталях реализации для MVP, и 3-х колесном автомобиле), но в целом имеет место быть. В жизни всё так и есть. Спасибо за столь подробный коммент.

                              То что меня подтолкнуло написать свою CMS, это конечно «дубовые» реализации существующих CMS, хотелось уйти от этих рамок, своего рода соревнование с самим собой, смогу ли я сделать то, что я хотел бы использовать. Ту CMS мечты, с которой можно вздохнуть полной грудью.
                                0
                                ВордПресс платформа для которой есть 100500 плагинов, просто уберите всё что вам не надо и добавьте то что надо, если то что есть не совсем то что вам надо то всегда можно доработать чужой код своим напильником и очень редко придётся пилить что то своё с новья.
                                Вы же не обязаны пользоваться всем что ВордПресс предоставляет, ВордПресс загрузит любой ваш плагин, это всё что он умеет делать. Ещё он из коробки умеет посты добавлять, умеет картинки к посту цеплять, а всё остальное наносное, от всего остального можно отказаться, всем остальным можно не пользоваться, и это открытые исходники, вы всегда можете заменить реализацию на свою.
                                  0
                                  Согласен, но там нет того что я хотел бы видеть. К примеру реализация REST-интерфейсов, надо под каждый сервис писать PHP-класс. В Drupal хоть можно через Views все в админке сделать.

                                  Проблема номер 2, как создать каркас объекта из админки? Я говорю сейчас о объектах в базе данных.

                                  Проблема номер 3, как заверстать купленный HTML-шаблон на Envato в логику данных из админки Wordpress? Я имею ввиду чтобы натянуть дизайн страниц из шаблона на логику данных.

                                  Проблема номер 4, как сделать файловое хранилище через админку? Ну окей, это есть, но это на файловой системе, я использую mongodb для хранения картинок и файлов.
                            0
                            Я написал свою CMS, но вам ее не покажу.
                              0
                              В личке логин и пароль.
                                0
                                Спасибо. Зашел, не совсем понял что там можно делать. Побродил немного, вылезали постоянно ошибки. Пробовал зайти еще раз (не знаю зачем) — уже не пускает, «Wrong login or password».
                                  0
                                  Я часто сейчас его ребутаю и экспериментирую по хотфиксу на проблему SessionScope. Прощу прощения за неудобство.
                              0
                              тоже жду пароль)
                                0
                                Отправил.
                                0
                                Интересно посмотреть что внутри, можно данные для входа?
                                  0
                                  Скинул.
                                  0
                                  В тексте есть упомянание об изменениях в стеке, может расскажете к чему идете сейчас?
                                    0
                                    Пока в поисках. Я ожидал уже что нашел, но попробовал и понял что это не совсем то что хотел. Но все же я поделюсь своими опытами.

                                    1. На данный момент в приложении я использую MongoDB и слой работы с данными написан с использованием Weld CDI. Я бы хотел переписать все на Spring Data в интерграции с MongoDB. Тем самым выкинув все этот самописный код. Я думал что проблема которая возникает с SessionScope связана с моей имплементацией, но последние пару дней после эксперементов и фиксов, я понимаю что в этом плане там написано все замечательно. И все подозрения падают на работу этого AJAX-фреймворка ZK Framework. Далее пункт 2 о нем.

                                    2.ZK Framework этот фреймворк очень удобен в плане шаблонизации. Можно легко брать статично свёрстанный HTML и вставлять во view и уже подключать java-бины и спокойно связывая UI с работой бекэнда. Причем все управление данными на бекэнд и синхронизацию UI берет на себя этот фреймворк. Тем самым легко разделить зоны ответственности работы в приложении. Вообщем принцип похож на JSF. Но есть в этом подходе минус, то что генерация CSS и JS от фреймворка происходит каждый раз при запросе страницы. И время загрузки страницы увеличивается, что визуально раздражает, — страница не имеет сложной структуры, а приходиться ждать секуду задержки. Разработчики позиционируют использования фреймворка как onepage-дизайн. В таком подходе он работает быстро. Потом еще был грустный факт что в последней сборке от ZK Framework'a я нашел небольшой баг, не кретичный, но добавил желание этот фреймворк не использовать больше. Я вместо него сейчас исследую Vaadin Flow 14. В целом неплох, но разработка UI сложнее и дольше.

                                    3. У меня есть самописный слой на JAX-RS(REST API), хочу этот слой заменить на GraphQL. Тем самым упростив получение объектов разных структур лишь изменив параметры запроса.

                                    4. Напоследок нужно изменить приложение клиента которое через REST достает данные из MongoDB, собственно сам результат сборки страниц в CMS это и работа этого приложения. Оно также использует ZK Framework. Хотелось бы использовать только клиентскую технологию, что-то типа ReactJS. Но пока в этом не уверен что это решение лучше.

                                    Как-то так, буду рад услышать ваши размышления на этот счет.
                                      0
                                      Спасибо за ответ!
                                      Меня больше инетерсовал выбор для фронта, так как несколько лет назад я видел как ZK используется в одном продукте, и как-то не впечатлило (только внешне, как устроено внутри не видел). Поэтому мучаюсь выбором между Angular+Material (есть небольшой опыт) и Sencha (тут побольше опыта, но платно).

                                      Посмотрев ролик, стало интересно как устроен конструктор. Вы брали что-то за основу или это свое?
                                        0
                                        Конструктор полностью свой. Реализация очень простая. В приложении клиента есть view в котором подключен Java-класс который принимает на вход два параметра по GET, это id-сайта и id-страницы по REST я достаю из MongoDB список виджетов, по сути название файла который по include во view будет подключен. По аналогии CSS и JS также. Всё файлы храню в MongoDB. Сейчас есть задумка и на файловой системе хранить.
                                    0
                                    Перенес комментарий в ветку.

                                    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                    Самое читаемое