Не хочется говорить о высоких материях, Nocode, ML - системах, нейросетях или чем-то подобном, хочется порассуждать вот о чем: у каждого человека, увлекающегося программированием, есть N+ пет-проектов, и их количество растет. Часть из них - это проба пера, новых технологий, алгоритмов, но часть - это попытки быстро решить задачу бизнеса и найти некий business-value, реализовав MVP и попробовать сделать проект на миллион!

Получается, что для подобных задач я и каждый из нас делает плюс-минус одни и те же действия для получения 50% результата, и сами проекты между собой отличаются на вот эти 50% их сути!

О чем это я?

Чтобы попробовать реализовать MVP, допустим, сайта по онлайн-бронированию пёселей ????, мне нужно сделать следующие шаги:

  1. Выбрать язык и фреймворк для бекенда;

  2. Поднять где-то любимую БД - облако, локальный Docker-контейнет или хз где еще;

  3. Подключить ORM для работы с БД;

  4. Написать модели данных, их связи, индексы и т.п.;

  5. Написать банальный CRUD для данных;

  6. Выбрать фреймворк для фронтенда - Vue.js, второй или третий?, React - ну хз..., Angular? или мб взять что-то типа Svelte?, или...

  7. Написать базовую структуру приложения (aka Nuxt, Next и т.д.), раскидать модели, утилиты, хранилища, ассеты и т.п., настроить пайпы для сборки;

  8. Связать каким-то образом бек + фронт, научить их общаться на одном языке;

  9. Поднять каналы - онлайн общения: Websocket, Server-Sent events, Polling и т.д.;

  10. Начать писать бизнес-логику на беке, параллельно приклеивая фронт;

  11. Подключить 100500 сторонних сервисов для эффективной работы - кеширование, распределение, CI/CD, мониторинги, аналитики, онлайн-сервисы, такс-трекинг, автоматизация разработки и т.п.

Почему бы не сделать софт, который бы пропускал шаги 1 - 8 и высвобождал кучу времени для реализации самого важного, ради чего MVP и задумывалось.

Что я имею ввиду?

Представьте некую "Fullstack CLI", которая задавая вопросы сама собирает приложение, пишет конфиги, модели, docker-файлы, собирает CRUD API, фронтенд, линтинги, настраивает деплой, выход в продакшн и т.п. и в конце выдает готовое приложение для запуска и деплоя...

...Но!

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

...И

Лишь в исключительных случаях, когда мне потребуется писать бизнес логику или что-то специфичное мне бы потребовалось открывать любимую IDE и писать код, используя понятный и доступный API, который выдала мне CLI. Я бы тут же в Swagger посмотрел весь CRUD API, в каком-нить Docs-generation почитал о приложении, которое для меня собрала CLI

Зачем?

Таким образом мы решаем проблему "Серийных программистов", которые создают задачи, на решение которых требуется 5 минут. Но если 100500 программистов потратят дополнительно по 5 минут, то при средней цене разработчика в ~$20 в час мы получаем экономию $167 500 за 5 минут. А это бюджет неплохого стартапа, который в очередной раз перевернет мир.

И кто-то скажет: "Зачем, если уже есть...". Возможно, что-то подобное и есть, я о нем не знаю просто. Существуют CLI для индивидуальной технологии. Допустим, для бекенда есть Nest CLI, для фронта есть Vue (React, Nuxt, etc.) CLI, но нет CLI, которые выдают в результате готовое рабочее приложение, которое покрывало бы потребности 99% MVP для no-name проекта, без необходимости тратить часы и дни на его базовую наладку и конфигурацию.

Что дальше?

Я начинаю писать подобную CLI и буду с радостью делиться успехами с вами. Проект будет находиться в Open-source и каждый сможет привнести свой вклад в проект)

Считаю, что такой проект нужен всем нам! :-)

Буду рад предложениям и критике!

Комментарии (10)


  1. boopiz
    02.01.2023 15:52
    +3

    для примера mvp статьи давно придумали cms. ничего думать не надо.


    1. janvarev
      02.01.2023 16:04
      +4

      CMS - это ужасно немодно, немолодежно и небезопасно! Как же вы реализуете уникальный дизайн с анимацией, если все CMS темы заточены под функциональность и похожи друг на друга? А polling через сокеты для быстрой доставки никому не нужных оповещений в браузер? А как же упаковка в Докер для эффективного развертывания в Кубере на 100500 пользователей? /sarcasm


      1. pfffffffffffff
        02.01.2023 16:28

        Headless cms


  1. Conung_ViC
    02.01.2023 16:10
    +1

    https://www.jhipster.tech/ - поглядите


    1. roboter
      02.01.2023 17:54

      и ещё есть и для .NET https://github.com/jhipster/jhipster-dotnetcore


  1. SergeiMinaev
    02.01.2023 18:05

    В компаниях, штампующих однотипные проекты, давно есть свои заготовки. Для себя я тоже как-то сделал заготовку пустого проекта с django+vue.

    Если пилить прям полноценную CLI, боюсь, вы утонете в требованиях сообщества.


  1. Ravy Автор
    02.01.2023 18:43

    Кажется, что именно для этого и нужен Habr - делится мнениями и отрезвлять воспаленные умы)
    Про *hipster не слышал, почему-то не попадался на глаза, но в целом, это ровно то, о чем я подумал в ночь 1 Января)

    Всем спасибо, думаю, тема закрыта раньше времени)


    1. NiPh
      03.01.2023 10:32

      Посмотрите ещё на boilerplate + ваша_основная_технология, почти наверняка на github найдется репозитарий который содержит стандартный преднастроенный фреймфорк с окружением, в котором останется только начать писать код.

      Разверну мысль - по сути для меня такой бойлерплейт например по ключевым словам symfony+mariadb+react и будет нужной конфигурацией, которую я возьму и буду пользовать. Или то же самое но с redis. Или то же самое но с vue. Boilerplate найдется почти под любые запросы.


  1. evoq
    03.01.2023 01:37
    +1

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


  1. evoq
    03.01.2023 01:40

    Причём есть из 9 и 11 - готовые каналы и встроенная inmemory key-value бд