Фреймворк для создания бизнес web-приложений



Для создания систем, решающих узкие бизнес задачи, использовать 1С бывает нецелесообразно. Хочу представить альтернативу — web фреймворк katejs.
Будет интересно также тем, кто интересуется web разработкой на современном javascript.

Альтернатива

Не стоит сравнивать этот web-фреймворк и платформу 1С — это разные решения. Фреймворк также направлен на разработку бизнес приложений и также значительно экономит время, при сравнении с затратами создания таких приложений с нуля, но, разумеется, он в общем случае не может заменить платформу 1С. 

Идея

Приложения для бизнеса (CRM, PM, системы учета и т.п.) имеют похожую структуру, а при их разработке приходится выполнять множество однотипных задач (работа с СУБД, разработка интерфеса и т.п.).

Фреймворк разрабатывается для того, чтобы избавить разработчика от рутины, позволить заниматься реализацией только бизнес логики и тем самым ускорить и упростить процесс создания бизнес ПО.

Фреймворк берет на себя всю рутину web-разработки (никакой верстки, роутинга, работы с СУБД и т.п.), при этом не ограничивает в методах и подходах к написанию кода.

Демо

Общее впечатление об интерфейсе можно сложить посмотрев на скриншоты или вживую — Таск менеджер

Основа

Сервер использует koa в качестве http сервера и ORM Sequelize для работы с СУБД. Основной используемой базой данных является MySQL.

Интерфейс строится на React, используя стилизацию material-kit-react компонентов material-ui.

С чем придется иметь дело

Консоль

Так уж сложилось — современная web-разработка тесно связана с использованием командной строки. Бояться не стоит, в необходимый минимум входит довольно ограниченный набор команд.

Javascript.

Единый язык на клиенте и сервере (Node.js). Современный язык — с классами, наследованием, ожиданием асинхронных операций.

Клиент-серверная архитектура

Две части кода — серверная и клиентская, общение через http.

СУБД

MySQL в общем случае, SQLite для совсем скромных решений. Для простых приложений прямые SQL запросы не нужны — встроенная ORM поможет получать все необходимые данные.

Для чего и для кого

Фреймворк позволяет относительно быстро разрабатывать несложные бизнес приложения. Позволяет и сложные — просто уже не быстро.

Будет интересен тем, кто интересуется web разработкой.

В архитектуру заложена модульность: разработанное решение сразу является модулем — с небольшими усилиями его можно сделать доступным для общественности. С другой стороны — можно использовать стороннее решение и модифицировать его — как структуру так и формы, не изменяя его код (если аккуратно все делать — изменения не придется вносить заново при обновлении стороннего решения).

В процессе решения различных задач на фреймворке было разработано порядка 10 разных модулей. Все эти модули доступны к использованию (документация пока есть только на три, но я буду дополнять ее по мере возможности).

Фреймворк распространяется бесплатно. Код модулей открыт.

На сколько фреймворк готов к работе в боевых условиях.

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

Документация

Фреймворк достаточно полно документирован, документация доступна по ссылке https://docs.katejs.ru/ . Рекомендую читать первые три раздела подряд, а далее по потребности.

С чего начать

Для работы фреймворка потребуется

  1. GIT
  2. Node.js
  3. MySQL
  4. Редактор кода по вкусу (как вариант VS Code)

Все элементы нужно скачать, установить.

Для примера, опишу шаги для запуска демо приложения, разработка которого описывается в документации в разделе Руководство.

1. Создадим папку с приложением. Пусть это будет `C:projectskatejs-demo`.

2. Откроем консоль — Командную строку, зайдем в папку проекта

C:>cd c:projectskatejs-demo

c:projectskatejs-demo>

3. Получим код приложения из git репозитория (в конце точка, чтоб код распаковался в текущую папку)

c:projectskatejs-demo>git clone https://github.com/romannep/katejs-tutorial.git .
Cloning into '.'...
remote: Enumerating objects: 228, done.
remote: Counting objects: 100% (228/228), done.
Receiving objects: 100% (228/228), 651.23 KiB | 0 bytes/s, done. (210/228)
Resolving deltas: 100% (134/134), done.0)R
remote: Compressing objects: 100% (110/110), done.
remote: Total 228 (delta 134), reused 203 (delta 109), pack-reused 0

c:projectskatejs-demo>

4. Установим зависимости (займет некоторое время)

c:projectskatejs-demo>npm install

5. Создадим базу данных test в MySQL (можно использовать идущий в комплекте MySQL Workbench)

6. Отредактируем файл `env.local.json` — нужно указать данные для подключения к СУБД и название базы данных

{
"database": {
"host": "127.0.0.1",
"database": "test",
"username": "root",
"password": ""
},
"http": {
"port": 2002
},
"apiUrl": "http://localhost:2002/api"
}

7. Синхронизируем структуру БД

c:projectskatejs-demo>npm run dev-dbsync

8. Запустим сервер

c:projectskatejs-demo>npm run dev-server

9. Запустим клиентское приложение (нужна новая консоль)

C:>cd c:projectskatejs-demo

c:projectskatejs-demo>npm run dev-client

10. Оценим результат

Мы получили приложение для учета домашних финансов с возможностью создания доступа разного уровня для членов семьи (Без пользователей контроля доступа нет. Перед созданием пользователя нужно создать роль с полными правами, назначить ее пользователю и перезапустить сервер).

Вопросы

Отвечу на вопросы в комментариях. На предметные вопросы по работе с фреймворком могу ответить на форуме (киньте в личку ссылку на топик с вопросом).

22 Comments

  1. VmvLer

    опять 25

    1С Vs Js

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

    а во втором головастики, главная цель которых — выжить в грязи.

    (с) передача «В мире животных»

    Reply
  2. paulpit

    Неплохо было бы посмотреть кейс работы с календарем.

    Reply
  3. Evil Beaver

    Ну чо, отлично, только зачем это на инфостарте? Мы тут 1С-ники

    Reply
  4. Varies

    А на этом можно написать http/web сервис «прокладку» между 1С ?

    Чтобы заливать с бухгалтерии данные по оплате, а обработка в клиентских базах (УТ/УНФ/БП) обращалась для проверки этой оплаты.

    Reply
  5. Ibrogim

    (4)а зачем. тут что-нибудь фронтендное нужно делать. например систему учета задач, чтоб не надо было лицензии покупать

    Недавно бизнесовую задачу решал не на 1С. MySql+Datateble+phpExcel и пара недель работы ) зато никаких лицензий…

    На самом деле на 1С получилось бы дешевле наверно.

    Возможно сабж помог бы сделать ту же задачу за пару дней… но это не точно.

    В любом случае +

    Reply
  6. nep_i

    (3) Бывает иногда нужна альтернатива. Бывает просто интерес.

    Reply
  7. Steelvan

    После трех предложение в разделе «Основа» среднему 1Снику можно перестать читать 🙂

    Reply
  8. andreosh

    Хорошо бы видеоуроки по данной теме сделать. С видеоуроков проще начинать обучение.

    Reply
  9. nep_i

    (10) За пару часов на чистом React и koa не сделать хоть и простую, но законченную систему учета домашних финансов. Даже за пару дней не сделать. Фреймворк позволит уложиться в часы, а не дни.

    1С безусловно мощная платформа, однако любое решение, даже простой задачи вынуждает иметь в наличии саму платформу, чтобы воспользоваться этим решением. С друзьями, к примеру, системой учета домашних финансов на 1С не поделишься.

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

    Reply
  10. comol

    (12)

    однако любое решение, даже простой задачи вынуждает иметь в наличии саму платформу, чтобы воспользоваться этим решением. С друзьями, к примеру, системой учета домашних финансов на 1С не поделишься.

    эээ Web интерфейс 1С уже не в моде стал? Делитесь сколько влезет.

    а пару часов на чистом React и koa не сделать хоть и простую, но законченную систему учета домашних финансов. Даже за пару дней не сделать. Фреймворк позволит уложиться в часы, а не дни.

    Ваш хм… «фреймворк» помогает создавать системы учета домашних финансов? :))))

    Я только «за» альтернативные подходы и применение специализированных инструментов для решения специализированных задач при разработке сложных систем, но в данном случае вы для решения «типично 1С-ной» задачи предлагаете воспользоваться сторонними средствами, в которых в данном случае нет необходимости, при этом пишите «1С-нецелесообразно» в сообществе 1С… это как то хм… вызывает некоторое непонимание.

    Reply
  11. nep_i

    (11) Есть довольно развернутое Руководство. Плюс я готов ответить на вопросы.

    Видеоуроки тоже можно сделать, если будет спрос.

    Reply
  12. andreosh

    Сначала надо сделать хотя бы ознакомительный обзорный видеоурок, а потом и спрос появится. Я считаю, что вещь простая и очень полезная. Я так же занимаюсь упрощением программирования (снижаю порог вхождения), чтоб новичкам легче было начинать. https://www.youtube.com/watch?v=oO6hGMf38ok&list=PLo4sldcUomOrKAPb_0A5Kv-nILQG3I7Dd&index=28

    Reply
  13. for_sale

    (13)Непонимание, видимо, связано с тем, что вы всё ещё делите мир на 1С и не-1С. Как и прочие труЪ-программисты — «мой язык хороший, а всё остальное овно!» Когда вы начнёте думать о языках и платформах просто как об инструментах для решения задач, тогда, например, в данной статье вы увидите просто ещё один инструмент для решения определённого круга задач. Не хуже, не лучше, просто другой, ещё один, имеющий свою сферу применения.

    Reply
  14. comol

    (16) Это вы точно про меня? :))))))

    Статьи читали? В данном случае я просто говорю что пытаться костылить систему учета задач, и ещё фреймворк для её создания в то время когда таковая есть, на 1С сделать быстрее и выложить её на портале разработчиков 1С это выглядит как непонятное применение непонятного инструмента в непонятном месте. ИМХО конечно такие статьи не должны бы проходить модерацию и ранее их просто сразу заминусовывали и они убирались, а теперь так нельзя 🙁

    Reply
  15. for_sale

    (17)

    Статьи читали?

    Нет, но прочёл уже два ваших комментария. Один человек пишет хорошую статью об инструменте, который помогает решать какие-то задачи. Приходит другой (или толпа других) и начинают бороться за чистоту расы информации, потому что «есть труЪ-инструменты, а есть не-труЪ». Т.е. вы даже не пытаетесь оценить качество материала, применимость его к описанным задачам, вас интересует только факт, что это не-1С, и грустно сетуете на то, что раньше можно было рукописи сжечь, а автора забить камнями заминусовать, а теперь, сволочи, не разрешают!

    Если это не нужно вам, существует ли какая-то вероятность того:

    1. Что это нужно кому-то ещё

    2. Что вы не сталкиваетесь с задачами, где это применимо.

    3. Что вы и ваши верования — это не граница всего сущего

    ?

    Reply
  16. 1c-intelligence

    (18) глазам не верю… Вы написали такой комментарий? Это какое-то волшебное зеркало сработало?

    Вы, который за чистоту рядов и «одинэсность» Инфостарта?

    Прям, как я. Что выгодно, то и пишете. Эх…

    Reply
  17. for_sale

    (19)

    Я? За одинэсность?)) Иван, вы меня неправильно поняли, видимо)) Я за полезность Инфостарта. Как вы знаете, я не думаю, что ваше самовыражение и попытки побороть какие-то детские комплексы волшебными героями, наделёнными вожделенными вами качествами, могут повысить полезность Инфостарта. Я никогда не говорил, что неплохая статья по фреймворку на Джаваскрипте может понизить полезность Инфостарта. Неплохая попытка, но нет) Но по-прежнему восхищён вашей успеваемостью — и графоманить, и обидки в комментариях выражать)

    Reply
  18. 1c-intelligence

    (20) да какие обидки, о чем вы… Просто слежу за вашей активностью на ИС.

    Просто смотрите, что получается: хороший кусок вашего комментария прям так и просится в ответ на ваши комментарии, которые вы мне когда-то писали:

    Если это не нужно вам, существует ли какая-то вероятность того:

    1. Что это нужно кому-то ещё

    2. Что вы не сталкиваетесь с задачами, где это применимо.

    3. Что вы и ваши верования — это не граница всего сущего

    ?

    Согласны?

    Reply
  19. for_sale

    (21)

    Иван)) Я про обидки ведь делаю вывод не по тону, не по оскорблениям, не по ещё каким-то стандартным признакам (слава богу, с этим всё в порядке), а именно по вот этому вашему «слежению за активностью» и вашей попытке вывернуть мои слова с громким «АГАААА!! ПОПАЛСЯ!!!»))

    (21)

    хороший кусок вашего комментария

    Нет, этот кусок о другом. Я это вижу так: Инфостарт — это технический ресурс. Да, на нём большинство 1С-ников, но я не считаю его 1С-ным, думаю. что он вполне себе технический. Скорее, он больше про задачи автоматизации бизнеса и 1С — это только часть (большая, но часть) автоматизации бизнеса. Например, тут много про управление проектами, часто даже в отрыве от 1С и прочих инструментов. Но это не сайт для поэзии или фанфиков, например. Потому что они не решают здешние задачи. Я читаю на Инфостарте о том, как супер-программист Иван Алексей героически крутит незадачливыми директорами и собственниками, мудро и ловко вертит заводами, газетами и пароходами и не понимаю, как этот пучок кричащих комплексов автора может помочь автоматизации бизнеса. А читая про не-1с-ный жс-фреймворк, понимаю.

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

    Reply
  20. 1c-intelligence
    Reply
  21. for_sale

    (23)

    Я слежу за вашей активностью, потому что вы мне интересны.

    Это очень странно, потому что ещё недавно вы писали, что читатели моей статьи [недословно] какие-то неправильные (не соответствующие вашей системе ценностей). Про меня тоже что-то негативное писали, но не вспомню даже примерно. Опять же, про цели «слежки» сужу только по вашим комментариям, если цель и правда интерес — ну что ж, спасибо, это хорошо, что мотивы не саморазрушающие.

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

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

    (23)

    Теоретически, можно допустить мысль, что есть люди, которые понимают, как это может помочь автоматизации бизнеса?

    Можно. Поэтому, хоть и не изменил своего мнения, но перестал ставить вам минусы и комментировать ваши материалы) В конце концов я не доктор, не психоаналитик и не санитар леса.

    Reply
  22. neomatrix

    Статья полезная и актуальная, поставил + , пригодится тем кто интегрирует 1С с другими учетными системами. Такие кейсы встретились и в моей практике одинэсника.

    Нужно было сделать проект B2C, где B — производство здесь (платформа 1С) , а С — там, за бугром (клиенты). Веб интерфейс не подошел, так как кириллица, а клиенты англоязычные. Не разобрался, можно ли было сделать разный язык, но проблема появилась в другом, интерфейс Веб клиента не пере настраивается и заказчикам не понравилось его юзабилити.

    Задача решилась через разработку системы приема заказов на Bootsrap(HTML,CSS,JS) как frontend и Codeigniter3 в качестве backend REST API CRUD, для связи с базой сайта MySQL использовался «Внешний источник данных».

    Второй случай делал уже на Materialize(front) + FastAPI Python (back). До этого пробовал React, Angular, Vue.

    Vue мне понравился больше я даже более мене начал изучать его, но для моих не сложных задач, использование фреймворков на фронтэнде показалось несколько избыточным. Мое мировоззрение подкрепилось с прочтением Frameworkless Front-End Development, Francesco Strazzullo. К чему я это пишу, фреймворков в мире JS немало, для энтерпрайз разработки прожект менеджеры стараются использовать проверенные решения от именитых фирм, еще одному фреймворку пробиться будет ой как сложно, хотя если это частное решение, которое уже хорошо работает, тогда может в «замкнутом» мире 1С оно найдет своего поклонника.

    Все ИМХО.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *