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

Итак, моя эпопея начнётся с предыстории.

Пред история

Я много лет работаю в одной компании в сфере недвижимости веб-разработчиком.

Разрабатываю в ней 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-фреймворк (набор стилизованных элементов) с готовыми кнопками, полями, карточками и т.д.

Выводы

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

Как я и упомянул ранее, я не буду указывать ссылки на сайт или исходники которые получились в итоге, но Вы можете их получить БЕСПЛАТНО, при условии, что Вы напишите мне и расскажете какие проблемы вы испытываете в своём бизнесе, как он у вас устроен на данный момент - это нужно что бы я смог в будущем улучшать этот код.

Счастливого дня, Хабр!

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