Главное Свежее Вакансии Образование
Выбор редакции:
0 13 В избр. Сохранено
Авторизуйтесь
Вход с паролем

Сказ о том, что есть общего в разработке "уникальных" веб-сервисов и стартапов

Я всегда хотел создать свой стартап (уверен, что и Вы тоже). Но поскольку не мог (или не хотел) выбрать определённую нишу, я решил сделать "Инструмент для стартапов"...

Всё еще вступление (до сути осталось чуть-чуть)

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

Дополнительным мотивом создания своего проекта стало желание собирать свои (и чужие) наработки в сфере веб-разработки на единой платформе, что теоретически позволило бы запускать новые проекты быстрее, собирая их из блоков/модулей.

b_5587b72191d90.jpg

И чтобы сделать его максимально полезным "для всех" и решить - какие конкретно наработки следует собирать на платформе - мне нужно было задуматься над вопросом - Что общего у различных веб-сервисов?

* для тех, кто, возможно, не “в теме”, под терминов "веб-сервис” имеется ввиду веб-сайт, предоставляющий какие-то определённые полезные функции своим пользователям.

** далее по тексту термины веб-проект и веб-сервис имеют равное значение

А теперь ближе к сути

Стандартные функции, используемые в различных веб-сервисах, такие как Регистрация, Личный кабинет пользователя, Форма обратной связи, Создание различных страниц, Управление SEO-данными и многие другие, для первой версии приложения не имеет смысла писать с нуля (хотя многие продолжают этим заниматься). Поэтому, в качестве основы своего проекта, я использовал платформу Magento, изначально предназначенную для проектов в сфере электронной коммерции.

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

Но поскольку каждый новый веб-проект стремится быть уникальным, то вопрос встал еще острее - Как разработать общий функционал, позволяющий каждому проекту стать более уникальным?

Я сразу выделил четыре основных направления, функции, которые используются в большинстве проектов:

1) CRUD - Создание и редактирование, обновление, удаление данных.

b_5587b7d8d20eb.jpg

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

Платформа Magento позволяет легко использовать модель EAV для хранения данных https://en.wikipedia.org/wiki/Entity%96attribute%96value_model

Если говорить вкратце - вы можете создать шаблон объекта, дать ему название и присвоить ему атрибуты разных типов (текст, картинка, выпадающий список и т.д.), расположив их в нужном порядке. А потом на основе этого шаблона ваши пользователи смогут создавать свои данные (например как тут http://p.innl.co/)

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

2) Отображение данных пользователю.

b_5587c53e3bcb3.jpg

Создать данные еще не достаточно. Все веб-проекты (как ни странно) отображают что-то на экранах своих пользователей. (а экраны могут быть разными! =)

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

Поэтому наши Уникальные данные нужно уникально отобразить.

Для этого решено было использовать механизм Шаблонов, в которых можно создать свой дизайн, разбавив его динамическими данными, созданными пользователями сервиса (или его владельцем).

Чтобы позволить проекту стать еще уникальнее, нужно позволить вставлять динамические данные “куда угодно" и "как угодно”, а также обрамлять их различными стандартными функциями, блоками.

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

3) Связи между данными

Данные, создаваемые пользователями, назовём Объектами (собственно в программном коде моего проекта они таковыми и являются)

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

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

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

Самая простая связь - Родительский-Дочерний.

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

Поэтому и связи могут быть абсолютно любыми. У любого объекта, созданного на основе шаблона “А”, может быть сколько угодно родительских и дочерних элементов, созданных на основе других шаблонов. Два разных объекта могут быть одновременно и родительским и дочерними для друг друга (раз на то пошло), хотя ситуацию, когда такая логика может понадобится, представить сложно.

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

Например как тут - http://www.ewergy.com/ru/revyoume.html (сам проект еще в разработке) : основной объект - это Проект, его дочерние объекты - это Вакансии, Статьи, Задания и Вопросы. Как видно, каждый из них использует свой шаблон для отображения.

Также платформа Magento позволяет связывать Объекты в коллекции по абсолютно любым параметрам. Пример такой коллекции можно увидеть на странице http://p.innl.co/ru/

В добавок ко всему - объекты можно и нужно привязывать к пользователям. Это можно использовать чтобы обозначить Владельца объекта (и позволить пользователю просматривать свои объекты) или реализовать более сложную функциональность (например - Личные сообщения, где к одному объекту (“Сообщение”) будут привязаны два или более пользователей)

4) Взаимодействие со сторонними сервисами

b_5587c2b477c30.jpg

Лирическое отступление:

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

В одних случаях - они просто не уделяют достаточно времени поиску аналогов (или вообще не ищут на западном рынке, например).

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

Но, если смотреть с философской точки зрения, каждая идея уникальна, потому что уникален её автор.

Даже люди, прямым текстом говорящие “Хочу создать новый facebook”, могут это сделать, вложив в идею свою индивидуальность.

Но при технической реализации любого проекта этот проект разбивается на части (модули, функции).

И если рассмотреть каждую функцию в отдельности - в 99% случаев ничего уникального в ней нет.

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

И таких функций/проектов на самом деле ооочень много - https://www.publicapis.com/

Через тот же механизм API можно создавать данные на вашем проекте или отправлять уже созданные данные на сторонний сервис.

Моя задумка в том, чтобы позволить синхронизировать любой Объект или Коллекцию объектов с любым сторонним API. А также предоставить свой внутренний API для любых объектов.

И что интереснее всего - несколько разных API можно свести в одной точке - применить их на Объекте или Коллекции.

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

Если вы знакомы с IFTTT (http://ifttt.com), то тут можно сделать почти то же самое, только все ваши данные (или данные ваших пользователей) будут не кочевать из одного сервиса в другой, а концентрироваться на вашем сайте, где вы сможете настроить их удобное отображение, а также создать связи между ними. Например связать двух друзей из разных соц сетей, или прикрепить закладку/ссылку из одного сервиса к заметке/статье из другого сервиса.

И Ваш сайт будет работать за Вас!

Дальше - больше

Описанное выше - это лишь моё видение. На данный момент на платформе параллельно разрабатываются несколько абсолютно разноплановых проектов, авторы которых имеют разное представление о веб-сервисах и, естественно, разные цели.

При реализации этих проектов я ищу новые общие моменты, общий функционал, необходимый Разным веб-проектам (такой функционал, который каждый проект может использовать по-разному). Но об этих изысканиях я расскажу уже в следующих статьях…

PS Спасибо что дочитали до конца!

Что бы Вы не создавали, помните - чтобы сделать проект уникальным, за ним должны стоять действительно уникальные люди!

b_5587c40424cf9.jpg

Комментарии
DevKalion 19438
На самом деле, ещё стоит обезопасить себя от кражи. Работу надо на уровне сертификатов работать — как минимум. Если проекты серьёзные.
Ответить
Paul Ivanov
Спасибо за комментарий. Сертификаты действительно нужны, особо для интернет магазинов. Платформа их поддерживает по умолчанию (для страниц регистрации, логина, всех страниц зарегистрированного пользователя и оформления заказа), просто не хочется раскошеливаться на сертификат, пока не запущены первые реальные проекты
Ответить
DevKalion 19438
Это хорошо что понимаете. Так как основа в защите — не стоит этим пренебрегать, а то уже читал несколько весёлых кейсов людей :)
Ответить
Strela.guru
Разработка и продвижение проектов
Дмитрий Девкалион
Профиль который Devkalion. Это мой. Не с того прошёл авторизацию случайно.
1)Так же как в дополнении к защите, изначально стоит сделать менеджер задач в рамках вашего проекта. И радует что вы взяли magento за основу, а не начали придумывать свой велосипед.
2)И жалетельно — что бы были аккаунты для корпоративного использования, так и для предоставление гостевого доступа.
3) Так же стоит вопрос, будет ли возможность ваш продукт предоставлять под white Label(https://ru.wikipedia.org/wiki/White_Label) ?
Ответить
Paul Ivanov
) несколько профилей — оригинально =)

1) менеджер задач — для себя? давно уже перекидываю задачи из одного в другой. то в джире, то в todoist, сейчас пока остановился на джире. но много задумок всё еще в голове. всё равно работаю один.

2) гостевой доступ есть тут http://demo.innl.co/backend/ ( для просмотра возможностей)
а "Корпоративное использование" — что значит?

3) Абсолютный whitelabel можно сделать без проблем (за монетку), оставив проект на том же сервере. С выносом проекта на сервер заказчика — сложнее, нужно будет много думать над безопасностью кода.
Ответить
Strela.guru
Разработка и продвижение проектов
Дмитрий Девкалион
Да, когда регался, не увидел что можно авторизацию через вк. А пароли в моззиле сохранил и моззила после перезагрузки решила авторизоваться с другого профиля :)
Да, задачи как для себя так и для людей. Что и имелось ввиду коопортивные. Выдавать задачи — и видеть их выполнение.

whitelabel — это хорошо. Что можно.

Такой ещё вопрос, формирование отчётов у вас же есть ?
Ответить
Paul Ivanov
задачи пока выдавать некому, хотя со временем буду что-то выдавать тут http://www.ewergy.com/ru/jobs (как доделаем этот подпроект)

Какие именно отчёты?
Magento собирает данные о посещаемости + встроен гугл-аналитикс (может быть свой на каждом подпроекте)
+ куча стандартных отчётов для интернет-магазинов (из ядра Magento), но на них пока не заостряется внимание
Ответить
LanguageBoost
Онлайн сервис для изучающих иностранный язык
Tihiro 17917
Ой!
У вас же вроде другой проект был, или название сменилось?
Идея вроде неплоха, но есть одно "но"... вы пишете "И чтобы сделать его максимально полезным "для всех" ..." а на самом деле, надо ли делать его полезным для "всех"? Ведь чуть ниже вы сами говорите, что каждый проект уникален, и, хотя далее вы развенчиваете миф об уникальности, тем не менее первая мысль кажется мне более верной. Хотя, возможно, вы просто говорите о тех проектах, которые не имеют внутри никакой уникальной логики, это просто справочники, или средства коммуникации, что-то такое, что можно привести к одному знаменателю. Все же я бы несколько сузила сферу деятельности —
1) чисто по Стивену Бланку (не надо делать продукт для всех)
2) чтобы не распыляться
3) чтобы в итоге не получилась стопицотая CMS
Удачи!
ЗЫ Мне понравилось про уникальность любого продукта (веб-сервиса в вашем случае). Это на самом деле то, что позволяет не бояться клонеров и воров — вы можете украсть или склонировать мою идею, но вы никогда не украдете и не склонируете мои мысли, мой продукт все равно останется уникальным.
Ответить
Paul Ivanov
Название вернулось к оригинальному. до этого было название айНаНэ (ради антуражу =))
да, сужение сферы бесспорно нужно, спасибо за напоминание и за понимание основной мысли!
Ответить
Vasilisa 4894
Картинки стоит добавлять в любую статью. Во-первых, так гораздо проще и приятнее читать. Во-вторых, при расшаривании в соцсети картинки подтягиваются.
Ответить
Paul Ivanov
спасибо, сейчас исправим
Ответить
AgriChain
AgriChain - комплексная онлайн система IT-решений для управления агробизнесом
Панченко Андрей
Прикольно написано.
Ответить
Paul Ivanov
Thanks a ton!
на самом деле никогда не считал что у меня есть к писательству способность, но всегда её хотел.
попробую её развить...
Ответить
Выбрать файл
Блог проекта
Расскажите историю о создании или развитии проекта, поиске команды, проблемах и решениях
Написать
Личный блог
Продвигайте свои услуги или личный бренд через интересные кейсы и статьи
Написать

Spark использует cookie-файлы. С их помощью мы улучшаем работу нашего сайта и ваше взаимодействие с ним.