Прокачал себе процесс проектирования баз данных, и поделился инструментом с миром
В этом кейсе я расскажу, как я из идеи об инструменте которого мне не хватало в моих рабочих процессах, с чистого листа создал в одиночку стартап, проведя его через все этапы от проектирования до запуска, своими руками (и мозгами) делая всю работу. Какой получился результат, принёс проект пользу лично мне, и оказался ли полезен людям. Погнали!
Содержание:
Нихао, я Андрей Рик, fullstack-разработчик!
Тему программирования и в целом полный цикл создания ИТ-продуктов я с интересом изучаю с 9 лет, и по сей день.
Благодаря немалому пройденному на текущий момент пути в 10+ лет интенсивного коммерческого опыта разработки, я приобрёл целый спектр навыков - проектировал информационные системы, архитектуру, базы данных, структуру ИТ-проектов различной сложности, рисовал для них дизайн, осуществлял front-end и back-end разработку, и настраивал серверное окружение.
Одна из моих основных супер-способностей...
Делать рабочие процессы внутри разных бизнесов проще и удобнее за счёт проектирования и разработки уникального программного решения (например вроде такого).
Я заявляю, что могу это сделать для своих клиентов, и осознанный читатель мог бы сказать - а почему бы мне не начать с себя, и не усовершенствовать свои рабочие процессы, если это одна из моих основных специализаций?
Я разработал себе инструмент для проектирования баз данных, чтобы усовершенствовать свой рабочий процесс, и сделать ощущения от него более приятными.
Я считаю, что достигать больших результатов можно только если участие в ежедневных процессах на этом пути вдохновляет, и приносит удовольствие. В этом немалую часть играет окружающая атмосфера - визуальная (наблюдаемая зрительно) составляющая. К ней относится в том числе интерфейс программ, в которых мы работаем.
У программистов в основном не принято уделять в собственных инструментах разработки внимание тому, как они выглядят, будто достаточно реализовать функционал.
Да, с точки зрения функционала можно будет выполнить рабочие задачи, однако возможно ли получить удовольствие от работы в отталкивающем и непривлекательном интерфейсе? Скорее нет, или совсем чуть-чуть.
Так и сложилось, что я в просторах программного обеспечения не нашёл инструмента, удовлетворяющего всем моим потребностям (в том числе визуальным), для процесса проектирования баз данных.
Я уж не говорю о том, чтобы рисовать схемы на листе бумаги (ну камон, я же ИТ-специалист), или чтобы описывать БД в Гугл-доке и таблицах.
Тогда я и решил — раз подходящего для меня инструмента нет, я же могу его разработать, и проектировать в нём базы данных!
Я же всё таки fullstack-разработчик, и UX/UI дизайном увлекался. Сказано — сделано, так и появился Database-Design.ru.
Больше я люблю красиво делать, чем красиво говорить, поэтому я покажу результат, и расскажу о нём и процессе его создания ещё подробнее.
Первая материализация моего видения инструмента по проектированию баз данных произошла в Figma: я набросал дизайн, какой бы мог быть этот проект:
Интерфейс проекта подразумевает очень специфический нестандартный функционал: нужно иметь возможность отдалять и приближать рабочую область, чтобы увидеть как всю схему базы данных со всеми связями как на ладони, так и рассмотреть таблицы по отдельности, отрисовывать стрелки связей между полей таблиц, обеспечить возможность легкого добавления столбцов (атрибутов) к таблицам (сущностям), а также их лёгкого редактирования, удаления, и смены очерёдности.
Мне стало даже самому это интересно, меня охватил некий воодушевляющий азарт: а смогу ли я вообще разработать нечто подобное? И я без сомнений принялся за дело.
В качестве стека был выбран React, время исчисляющееся днями и неделями пролетело незаметно, и я реализовал frontend-часть.
Интерфейс, достаточный для того, чтобы я, запустив проект локально (на своём компьютере), мог проектировать схемы баз данных.
Не прошло и недели, как я взялся за коммерческий заказ по проектированию базы данных.
Это была отличная возможность проверить инструмент в бою! И вот я проектирую базу данных реального заказа в инструменте, который самостоятельно реализовал специально для этого процесса. Я испытал удовольствие, несравнимое с каким либо из моих предыдущих опытов проектирования баз данных!
База была спроектирована сравнительно быстро, и то, как выглядела схема, насколько она была наглядна, вызывала у меня две основные мысли:
Первая мысль — желание довести проект до релиза, чтобы поделиться с другими разработчиками и аналитиками этим инструментом. Сделать всё по красоте: множественные аккаунты, приветственный сайт, подключить платёжную систему (ну не просто так же старался, душу вкладывал) с тарифами, доступными широкому кругу ИТ-сообщества, возможность делиться схемами БД, и вот это вот всё.
Вторая — проект был относительно крупный, и насчитывал немалое количество таблиц (скажем более 30). В каждой таблице было 4 и более столбцов. Но визуальная схема представляет собой по сути лишь наглядную картинку. Для того, чтобы получилась реальная база данных, нужно описывать каждый столбец в каждой таблице SQL-запросами. Это объёмное количество кода, и существенные временные затраты. А что если была бы возможность нажатием одной кнопки "экспорт" скачать SQL-дамп, содержащий всю необходимую последовательность команд для воссоздания реальной базы данных из спроектированной визуальной схемы?
Обе мысли вдохновили меня ещё сильнее, и подарили мне энергию на реализацию задуманного. Это было как очередной вызов самому себе, и я начал продвигаться по плану.
Для проектирования базы данных, необходимой для функционирования данного инструмента, при учёте, что у него может быть неограниченное количество пользователей, каждый из которых будет создавать любое количество схем баз данных, состоящих из таблиц, их полей, и связей между полями, а также тарифами, учётом платёжной системы, и так далее, я использовал угадайте что? Уже реализованную frontend-часть проекта, очень символично и в меру забавно.
У меня в голове был рождён чёткий план, который я декомпозировал на спринты (группы задач), и планомерно продвигался по нему.
Так был реализован backend на Node: регистрация и авторизация, сохранение и выдача схем БД и их составляющих, хранение информации о настройках пользователей и их тарифах.
Также был сделан дизайн недостающих основных страниц приложения:
Чтобы люди регистрировались, и вообще у них появлялось это желание, необходимо было сделать посадочную страницу — сайт, который кратко и понятно передал бы суть проекта, рассказал о его возможностях, и плавно перевёл к регистрации.
Я принялся за творчество, заодно поставив себе цель в очередной раз превзойти самого себя в дизайне.
Я придумал простую и эффективную структуру для сайта:
В качестве стека для реализации сайта я выбрал Next.js, так как заранее закладывал в него перспективы развития в многостраничный сайт, для лучшей индексации страниц поисковыми системами за счёт применения технологии серверного рендеринга (SSR - Server Side Rendering), предоставляющейся Next.js "из коробки".
После чего посадочная страница была свёрстана, остальные экраны приложения тоже, и был прикручен backend. Я разместил всё это на моём личном физическом сервере, а также подал заявку в платёжную систему, для чего потребовалось разместить на сайте ещё и юридические документы.
Благо весь процесс подключения платёжных систем мне хорошо знаком, он прошёл быстро, и без проблем. На момент одобрения моей заявки я уже реализовал функционал оплат, их подтверждений, автоматическую фискализацию чеков с отправкой в налоговую, и прочие сопутствующие фишки. Мне осталось только перевести магазин с тестового на production-режим, что я и сделал.
Реализация экспорта коллекции данных о таблицах схемы, их полей и связей в последовательность SQL-команд, было тоже интересной задачей, которую было увлекательно решать.
В результате — на процесс разработки базы данных по схеме раньше могли уходить часы и даже дни, если не недели, а сейчас вне зависимости от количества таблиц, в один клик за секунду можно получить весь необходимый для создания реальной базы данных код. Фантастика!
Когда я впервые ощутил на себе это преимущество, создав реальную БД из 70 таблиц за два клика (экспорт в database-design.ru и импорт файла уже в СУБД), моим позитивным впечатлением не было предела! 🤩
Правда в тот момент не обошлось без парочки синтаксических ошибок в коде (в основном связанных с символами в полях "комментарий к таблице", способных разрушить SQL-запрос), что в моменте я пофиксил поиском с автозаменой, а в дальнейшем - правилами в алгоритме экспорта.
Финальной частью перед выпуском MVP данного проекта я посчитал обеспечение возможности пользователям связаться со мной в режиме реального времени.
Ведь проект не тестировался отдельной командой тестировщиков, и был собран на одном лишь энтузиазме, можно сказать "на коленке".
А значит не исключено, что пользователи могут столкнуться с проблемами. И куда им с этими проблемами идти? Или пользователь может попасть в ступорную ситуацию.
Если не будет возможности задать мне уточняющий вопрос, сообщить о проблеме, или рассказать о своём пожелании, пользователь может утратить желание использовать проект, а я даже не узнаю о проблеме!
Также я добавил простую инструкцию по использованию проекта: при нажатии на знак вопроса в шапке, открывается изображение, на котором отражены все подсказки по функционалу:
🏆 Отлично, теперь это не просто фантазия "о как круто было бы, если бы", втиснувшаяся между потока ежедневного круговорота мыслей, а реализованный и функционирующий рабочий инструмент, с сайтом, презентующим его функционал, платёжной системой, инструмент способный в потенциале генерировать доход уже без моего дополнительного участия.
И главное — это инструмент, который нужен в первую очередь самому же мне в моей работе! ✨
Дальше часть свободного времени я посвящал игре в маркетолога, примерял на себя роли как директолога так и SEO-специалиста, но это уже тема для отдельной статьи в разделе “маркетинг". Пишите в комментах, если хотите почитать и про это.
А сейчас мы в треде "разработка", о разработке и поговорим.
С момента запуска проект не стоит на месте:
Не смотря на мою основную вовлечённость в коммерческие проекты, я периодически нахожу время развивать своё детище (не в ущерб основной деятельности), и делать его ещё удобнее, ещё функциональнее.
Я прислушиваюсь к обратной связи от пользователей, и реализую необходимые им и себе новые фишки!
Так например появилась светлая тема:
Я сам сторонник ночной темы, в том числе до буквального: люблю писать код в темноте, когда яркие только дисплей и клавиатура, засиживаться до утра, увлечённый эффективностью фокусировки в тишине и спокойствии ночи, но среди моих пользователей оказался человек, который не рассматривал бы для себя использование функционала проекта без светлой темы, аргументируя это тем, что ТЗ написано в гугл-доках на белом листе, и при переключении экранов происходит резкая разница в яркости цвета.
💡 Это стало для меня озарением, и подтверждением того, что я не зря тратил дополнительные усилия, чтобы обеспечить возможность связаться со мной в чате с любой страницы проекта: ведь могло быть, что огромная часть аудитории просто уходила бы из проекта, не обнаружив для себя такой важной и нужной светлой темы!
💫 Для скорости я даже не заходил в Figma — дизайнерский глаз-алмаз позволил прямо в инструментах разработчика (Chrome Dev Tools) подобрать цвета для светлой темы, после чего внести их напрямую в код.
Также эволюционировал и интерфейс в целом — например раньше тип данных поля можно было выбрать используя выпадающий список, но я вижу раскрытие сути UX/UI в нестандартных интерфейсах, которые являются максимально простыми, удобными, и наиболее подходящими для ситуации.
Стратегия запуска через MVP позволила относительно быстро разработать и уже запустить проект, и уже когда он работает, итеративно улучшать его.
На сайте проекта я разместил в бесплатном доступе статьи про основы проектирования баз данных.
Стоит отметить, что я пробовал писать статьи при помощи ChatGPT, а также даже нанял один раз копирайтера, но качество материала меня абсолютно не устроило, и я решил написать эти статьи сам — руководствуясь внутренним видением эталонного обучения: кратко, доступно, по делу, без воды, с примерами.
Я самостоятельно написал материалы, которыми остался доволен.
🔍 Наблюдая статистику переходов на страницы сайта из поисковиков, мне очень приятно наблюдать, что на текущий момент существует довольно немалое количество людей, которые в поисках ответа на свой вопрос в процессе обучения базам данных, нашли информацию на сайте моего проекта!
Получается, что постаравшись и потратив время один раз, я вношу вклад в обучение множества даже незнакомых лично мне людей, не прикладывая для этого дополнительных усилий. Это приятное ощущение!
🛠 Как инструмент помогает лично мне:
👁 Благодаря возможности окинуть взором всю визуальную схему, мне проще её придумывать и продумывать, а также видеть слабые места, и заранее их переосмысливать.
С момента запуска проекта, который произошёл в ноябре 2022 года, базы данных для всех проектов я проектирую исключительно в нём. И это невероятное ощущение - работать в созданном собственноручно кайфовом инструменте!
Сам являясь своей главной целевой аудиторией, я сделал то, что удобно на практике, не выдумывая проблему, а исходя из понимания настоящих проблем и пожеланий.
👨🏻💻 Когда возвращаюсь к проектам, над которыми не работал от месяца и более, немного выпадаешь из контекста, и наглядная схема помогает быстро вспомнить как устроена база данных:
💬 Также благодаря возможности писать комментарии, визуальная схема базы данных превращается в настоящую документацию с инструкциями и подсказками!
📖 Этот инструмент позволяет мне создавать ещё более качественную документацию по БД:
Подробное и наглядное описание происходящего в базе данных.
Просто посмотрите — я делаю скриншоты в светлой теме Database-Design.ru, дальше переношу их в Figma, оставляю только нужные части скриншота, добавляю текст, и ву-а-ля - видали такие доки?
Это позволяет мне дополнительно подчеркнуть качество работ, и выгодно выделяться на фоне конкурентов перед заказчиками, причём не только среди фрилансеров, но и среди всех представителей ИТ-услуг, включая ИТ-студии и компании.
👨👩👧👦 Пользователи и их реакции 👍
На текущий момент проект насчитывает более 5к регистраций, люди платят, и продлевают использование функционала снова и снова, некоторые более 5 раз.
Это меня очень радует, так как говорит о том, что я создал действительно нужный инструмент, причём нужный не только мне (хоть и этого в целом было бы достаточно), а пригождающийся вновь и вновь людям! 🤗
Для обеспечения непрерывной доступности проекта для пользователей я перенёс его на облачный сервер, т.к. проблемы то с интернетом то с выключением света были хоть и редкими, но регулярными.
Люди благодарят в чате за созданный инструмент:
Респектуют за как за функционал так �� за приятный интерфейс, пишут идеи по функционалу. Всегда приятно читать такие сообщения!
🤬 Без треша тоже не обходилось
Были и те, кто решили вспомнить все известные матерные слова и оскорбления, чтобы описать меня как человека который после разработки всего вышеописанного имел непозволительную наглость и дерзость ещё и деньги за использование всего этого просить с пользователей (причём сумму, доступную даже студенту).
Но положительных реакций существенно больше 👍
🤔 Релиз MVP успешно произошёл, что будет с проектом дальше?
В моих планах дальше развивать проект, на сайте есть раздел "новости", где я публикую статьи о том, что добавилось в очередном обновлении.
Скоро нас ждёт очередное усовершенствование функционала, и я сам вдохновляюсь от того, как я сделал уже и так работающий готовый процесс ещё удобнее, продуманнее, и функциональнее.
🚀 Я открыт и готов обсуждать предложения по инвестициям в развитие проекта
Чтобы совершить квантовый скачок в приносимой им пользе, и количеству людей, которым он эту пользу будет приносить на регулярной основе.
У меня есть план необходимых действий и их последовательности для выхода на новый уровень, однако в силу того, что всё таки "кормит" меня моя основная деятельность - оказывание коммерческих ИТ-услуг любой сложности, проект "на энтузиазме" развивается существенно медленнее, чем мог бы, и даже при этом показывает хорошие результаты, на фоне моего обширного опыта запуска различных ИТ-стартапов.
🔗 Ссылка на проект:
Уважаемые пользователи, если вы столкнулись с ошибкой в работе какой либо части функционала, у вас всегда есть возможность связаться со мной напрямую через чат на сайте, помочь подсветить мне проблему, и я её устраню в самое ближайшее время.
🎥 Моя видео-визитка:
Длится всего 5 минут - познакомимся получше?
За всё время работы нет ни одного отрицательного отзыва о работе со мной! Беру на себя ответственность за все этапы от «чистого листа» до релиза. Веду трезвый образ жизни, в рабочее время на связи, не пропадаю. На все свои работы даю пожизненную гарантию.
WhatsApp: +7 9953 666 777 (сначала напишите, прежде чем звонить)
Мой сайт: (здесь максимум информации обо мне)
#разработкапо #стартап #стартапдня #стартаперы #стартапер #проект #базыданных #стартапобзор #разработка #разработкасайтов #программист #fullstack #fullstackразработчик #fullstackdev #fullstackdeveloper #диджитал #разработкаприложений #инструментыдляпрофессионалов #ит #итрешения #самореализация #вебразработка #вебразработчик #хакатон #итспециалисты #петпроект #субд #системнаяаналитика #стартапы