💀 🔑

Вот ты снова. Вдохновение приходит. Что, если я построил это таким образом? Я мог бы структурировать данные так. Модель пользователя, модель данных. Да, и тогда я мог бы даже добавить эту классную маленькую функцию. О, это было бы так здорово. Единственный судьбоносный приговор врезается в ваш мозг и обрекает вас на недели проектирования и разработки.

«Я могу построить это», — говорит ваш мозг.

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

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

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

И все рушится. Аутентификация пользователя. Внешний интерфейс. Бэкэнд. Сброс пароля? Администрация? Как насчет Oauth с Facebook и Github? Твиттер? Модели данных. Раскрутить базу данных. Может быть, нам стоит использовать какой-нибудь CSS-фреймворк, чтобы ускорить разработку? Но, в конце концов, это просто изучение чего-то нового, что на самом деле замедлит его, верно?

Сколько времени обычно требуется для выполнения операций CRUD в базе данных? Я бы сказал, что по крайней мере стек технологий, который я использую, React/Node.js, требует немного времени. Я не нашел подходящего легкого шаблона или настройки проекта, который позволил бы это сделать быстрее.

Есть некоторые вдохновляющие вещи, такие как хакатон-стартер Саата, но он не использует React. А React — это половина удовольствия от разработки программного обеспечения.

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

Так что я его строю. И он будет называться «Ключ от скелета». Я был безумно занят в последнее время, поэтому я не добился большого прогресса. Тем не менее, последние несколько проектов, которые я создал, были долгосрочными. Вещи, которые отнимали огромные куски моего времени, не освобождая их. 🤷 ‍это то, что я делаю. Тем не менее, я многому научился, строя их. Переход от нулевого знания программного обеспечения к двум приложениям с полным стеком — чертовски хорошая практика. Но я не собираюсь тратить столько времени на Skeleton Key между релизами.

Моя цель — значительно ускорить мое (и ваше!) время разработки. Я ненавижу ту начальную часть, где вы решаете, как реализовать пользователей, как настроить вход и начальный стиль. Раскрутить БД и получить что-то обновленное в базе данных. Это все то, что необходимо сделать в большинстве крупных программных проектов. И они всегда выполняются в одном и том же порядке. И они всегда заноза в заднице.

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

Это глупо.

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

Первый — это простой интерфейс Next.js. В нем настроены стилизованные компоненты с уже установленными базовыми стилями, панелью навигации и местом для пустых страниц. Для меня это голые кости приложения, с которым сталкивается пользователь. Возможно, вам нужно взаимодействовать с определенным API для отдыха, или, может быть, ему не нужно ни с чем взаимодействовать, и вам не нужно хранить/перемещать данные на стороне сервера. Вот где вы начинаете. Я выбрал Next.js в основном по причинам, которые они перечисляют на своей первой странице. Это чертовски просто. Маршрутизация — это просто. Статические активы обслуживаются легко. Я не включил библиотеку управления состоянием, потому что она предназначена для облегчения задач. Хотя может что-то в будущем?

Второй — это Express API. Вот и все. Бум. Бэкэнд. Нет БД, просто то, что принимает запросы или отправляет запросы. В своих путешествиях я обнаружил, что иногда это все, что вам нужно, чтобы начать. Я не совсем уверен, насколько хорошо это вписывается в проект. Может быть, я никогда не буду использовать его. Но я думаю, что в любом случае это ценный инструмент в моем наборе инструментов, и вы будете удивлены, какие манипуляции с данными вы можете выполнять, используя только Node. Потенциал для веб-сокетов здесь и другие интересные вещи.

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

Первый — это тесно связанные интерфейс и серверная часть. Для этого мы будем использовать Next.js, Apollo Client, GraphQL Yoga и Prisma. Вы останетесь с пустой базой данных и компонентами, настроенными различными способами, чтобы упростить выборку данных и управление локальным состоянием. Отсюда вы можете добавить любой тип модели данных в свою серверную часть и перейти к разработке беспользовательских приложений. Это урезанная облегченная версия третьей части.

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

v3 включает поддержку команд. Приглашение в команду, управление, разрешения и, возможно, общение.

И последнее, но не менее важное, а может быть, и самое важное, это платежи. При желании вы сможете включить поддержку одиночных платежей Stripe, платежей в стиле электронной коммерции или подписок.

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

Ну и последнее: я намерен создать обширную письменную и видео документацию. Несколько видеороликов о первоначальной настройке приложения и некоторых основных операциях с данными. Как добавить данные в модели БД, как получить доступ к этим данным из внешнего интерфейса и как их обновить. Письменные документы о том, как определенные компоненты структурированы и используются.

Бум. Безумный, я знаю. Я когда-нибудь закончу? Боже, я на это надеюсь. Пожелай мне удачи.

Да, если это вас интересует, если это круто, если это модно, я буду очень рад, если вы поделитесь этим, похлопаете, прокомментируете это и так далее. Ретвит проходит долгий путь, позвольте мне сказать вам, что. Тем более, что я напрямую связываю свою самооценку с количеством просмотров, которые я получаю. Ха-ха-ха. Вздох.

Люблю вас всехСделайте что-нибудь великое.