Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!
Привет, Сообщество! Хочу впервые поделиться тут своим опытом разработки сайта и рассказать про сам процесс разработки. Надеюсь, вам будет очень интересно почитать и поделиться своим мнением. Заранее скажу, что рекламировать и/или пиарить я ничего не хочу и не буду, поэтому если интересно, то пишите в личку.
Итак, моя эпопея начнётся с предыстории.
Пред история
Я много лет работаю в одной компании в сфере недвижимости веб-разработчиком.
Разрабатываю в ней CRM-систему, сайт, мобильный сайт, приложения, парсеры и в общем занимаюсь очень многим и за одно познаю разные технологии и применяю их там, где это будет максимально удобно, быстро.
В прошлом году я переехал жить в солнечную Грузию, и тут всё не так уж и развито в плане сайтов для недвижимости (по крайней мере сейчас), как мне хотелось бы. Помню, что когда искал где именно искать недвижимость я наткнулся на один популярный в Грузии сайт. Но взаимодействие с ним было достаточно болезненным для меня по ряду причин:
Во первых языковой барьер (местные «маклеры» знают русский плохо либо не знают совсем)
Много «фейковых» объявлений которые либо уже заняты, проданы .. или не существуют
Цена отличается от той что написано в объявлении
и т.д. и т.п.
Выходом из ситуации - стал телеграмм, и русскоязычные каналы по аренде недвижимости.
Именно там я и нашел множество актуальных вариантов из которых я выбрал для себя место, где я живу сейчас и пишу для вас эту статью.
Подбор недвижимости в каналах тоже не лишён недостатков:
Дублирующиеся объявления при перелистывании экрана
Ожидание (как на картинке) и реальность может отличаться (иногда значительно)
Нет возможности фильтрации объявлений (это делает маклер в своей голове), т. е. возможно подходящий вариант может быть упущен или не взят во внимание.
У маклера нет сайта. Либо в качестве сайта - он имеет ввиду страничку в инстаграме или свой телеграмм-канал.
Именно тогда я и задумался о том, что было бы неплохо вложить свою лепту и помочь моему новому дому (жителям солнечной Грузии) и маклерам обрести другое понимание сайта и то, что это может быть очень удобно для них самих и для их клиентов. В этот момент и родилась идея в моей голове.
Моя идея
И так возникла идея - создать исходник web-сайта. Который может использовать любой риелтор - совершенно бесплатно! При помощи своего программиста или через меня или (в другой статье расскажу как пошагово) этот исходник можно было бы загрузить на хостинг и предоставить своим пользователям каталог с фильтрами подбора весь арсенал имеющиеся базы у агента.
Представьте как было бы удобно для клиента - открыть сайт, выбрать свои предпочтения в фильтрах. Например цену, кол-во комнат, площадь, этаж и выбрать несколько подходящих ему вариантов и проехаться посмотреть эти варианты с риелтором и принять решение о съёме или покупке. Риелтор при этом экономит колоссальное кол-во времени на бензин, поиск жилья по требованиям и при этом приносит элемент заботы от себя лично! Его клиент вернётся к нему, потому что с этим риелтором работать удобно и просто.
Я забыл сказать, что я очень люблю «начинающие проекты». Для этих проектов очень важно, что бы затраты на их обслуживание были очень небольшими и они были очень простыми в доработке. Поэтому перед тем как нестись и «писакодить» я как всегда решил с начало подумать над архитектурой и заложить изначальные требования
Изначальные требования
Прежде всего, я хочу что бы вы понимали. У меня нет цели пиариться или как то отличиться познаниями в высоких технологиях. Поэтому я применяю только те технологии, которые на мой взгляд - удобно быстро адаптировать под постоянный меняющиеся бизнес. В моём понимании бизнес - это не что то идеальное и отлаженное, а то что постоянно адаптируется под своего клиента. Где нужно здесь и сейчас что то поменять на сайте и загрузить. Сделать это очень быстро! Где нужно потратить минимум времени и финансов и при этом предоставить клиенту то, что ему необходимо.
#0 - Итак какие имеем вводные данные:
1. Компания молодая ~100-500 посещений в день
2. Минимальные затраты на хостинг
3. Хостинг - это картинки объектов, База данных и сам Сайт
4. Хостинг - это место где хотелось бы оплачивать и домен
5. Картинки, Базу и сайт можно было бы разнести на отдельные серверы что бы увеличить проходимость посетителей
6. Возможность очень быстро переехать на другой хостинг при минимуме проблем
7. Программист с небольшим набором знаний мог с этим помочь (наличие широкого выбора программистов которые смогу помочь с переездом, доработкой и т. д.)
8. Возможность интеграции с имеющиеся ЦРМ и любыми сервисами API
#1 - Требования к Веб-сайту:
1. Наличие каталога с фильтрами
2. Наличие странички объекта для просмотра информации об объекте, фотографий, видео и форм обратной связи
3. Поисковые роботы должны без проблем индексировать все страницы
#2 - Требования к Базе объектов:
1. База предоставляет список объектов для сайта
2. База может работать не "только с сайтом", а предоставлять данные приложениям или принимать участие в меж агентских базах (конечно же с учетом приватной информации)
3. Для базы нужен отдельное ПО для того что бы с ней взаимодействовать и защищать её (далее буду называть это API)
#3 - Требование к Базе файлов:
Отдельное ПО. Которое предполагает наличие большого кол-ва памяти для хранения фотографий видео и документов. Но и не только, вот требования:
1. Хранить файлы и документы (Запись, Удаление, Чтение)
2. Хранить изображения (Запись, Удаление, Чтение), и при этом способность отдавать изображения в различных разрешениях и накладывать водяной знак или логотип при необходимости.
3. Минимум волокиты при переезде
Вот таким образом поразмыслив - я пришёл вот к такой схеме:
Это возможно прозвучит необычно, но исходя из этой схемы, нужно сделать не один, а несколько сайтов:
Сайт - который будет общаться с базой данных (API) ~ api.website.com
Сайт - который будет общаться с хранилищем файлов (STORAGE) ~ files.website.com
Сайт -каталог, который будет общаться с двумя предыдущими сайтами.~ website.com
заметить,
! Держу в уме, что эти сайты желательно располагать в пределах одного сервера (Физического). Иначе скорость загрузки будет проседать.
Определившись с архитектурой, я перешёл к вопросу выбора технологий:
Для API сайта, я решил использовать PHP. Почему не NODEjs, FastAPI, Flask? - Смотрим пункт номер 0.3, 0.6, 0.7 ). Версия php - 7.4. У меня есть собственная разработка API, которая работает по моему мнению не хуже существующих решений и в некоторых случаях лучше! (Чуть позже расскажу Хабру про неё).
Для STORAGE, я тоже решил использовать PHP. Почему я не рассмотрел возможность сервисов для хранения файлов (объектного хранилища)? Напомню, я тут строю бюджетную систему и пытаюсь максимально сэкономить! А ещё есть пункты: 3.3/ 0.2/ 0.3/ 0.6 )
Для основного вебсайта, я тоже решил использовать PHP. Почему я не стал использовать Nuxt/Next/Flask - Смотрите пункт 0.6/ 0.1/ 0.7/ 0.8. Причем в самом сайте я намеренно не стал использовать SCSS и другие предпроцессоры. Шаблонизатор - TWIG
Для базы данных я взял старый/добрый MySQL
В итоге
Разработка всех таблиц для базы данных у меня заняло 5 часов:
Список объектов
Список городов
Список районов
Справочник (для источников, статусов, и других ~50 подобных списков)
Менеджеры и система доступов
Лиды, Параметры и куча других страниц...
Почему так долго? Потому что рассматривалась возможность трансляция объектов на популярные сайты - агрегаторы по недвижимости. У них есть документация и свои требования к фидам. И мне нужно было это тоже учесть и заложить эту возможность. Согласитесь, что было бы здорово - если бы агент не ручками (тратя кучу времени) забивал объявления на таких сайтах, а за него это делал бы сайт!
Разработка API сервера, у меня заняло 2.5 часа. Работа заключалась в клонировании файлов и вписыванию названия таблиц в строки, иногда я прописывал модули для проникновения в структуру таблиц.
Разработка сайта у меня заняло несколько дней (2 - 3). Очень помогло то, что я нашёл css-фреймворк (набор стилизованных элементов) с готовыми кнопками, полями, карточками и т.д.
Выводы
Дорогие риелторы. Мы программисты - всегда готовы идти на диалог с вами, и сотрудничая вместе с Вами - делать этот мир современнее, удобнее и лучше для Таких замечательных людей как я.. Гы :-)
Как я и упомянул ранее, я не буду указывать ссылки на сайт или исходники которые получились в итоге, но Вы можете их получить БЕСПЛАТНО, при условии, что Вы напишите мне и расскажете какие проблемы вы испытываете в своём бизнесе, как он у вас устроен на данный момент - это нужно что бы я смог в будущем улучшать этот код.
Счастливого дня, Хабр!