Привет сообщество! Впервые хочу поделиться здесь своим опытом разработки сайта и рассказать о самом процессе разработки. Надеюсь, вам понравится читать и вы поделитесь своим мнением. Заранее скажу, что никакой рекламы и/или пиара делать не хочу и не буду, так что если интересно, пишите в личные сообщения.
Итак, моя эпопея начнется с предыстории.
до истории
Я много лет работал веб-разработчиком в компании по недвижимости.
Разрабатываю CRM систему, сайт, мобильный сайт, приложения, анализаторы и вообще много делаю и при этом изучаю разные технологии и применяю их там где это будет наиболее практично, быстро.
В прошлом году я переехал жить в солнечную Грузию, и в плане объектов недвижимости (по крайней мере сейчас) все не так развито, как хотелось бы. Я помню, когда я искал Или Именно в поисках недвижимости я наткнулся на очень популярный в Грузии сайт. Но общение с ним было для меня довольно болезненным по нескольким причинам:
-
В первую очередь языковой барьер (местные “брокеры” плохо или совсем не знают русский язык)
-
Множество “поддельных” объявлений, которые уже заняты, проданы… или не существуют
-
Цена отличается от того, что написано в объявлении
-
и т. д. И так далее.

Выходом из ситуации стали телеграммы и каналы на русском языке по аренде недвижимости.
Здесь я нашел много подходящих вариантов, из которых выбрал то, где живу сейчас, и написал для вас эту статью.
Подбор недвижимости в каналах также не лишен недостатков:
-
Дублирование рекламы при пролистывании экрана
-
Ожидания (как на фото) и реальность могут отличаться (иногда значительно)
-
Нет возможности фильтровать объявления (это делает брокер в своей голове), т.е. возможно подходящий вариант может быть упущен или не учтен.
-
У брокера нет веб-сайта. Или как сайт — это страница в инстаграме или его телеграм-канал.
Именно тогда я подумал, что было бы здорово внести свой вклад и помочь моему новому дому (жителям солнечной Джорджии) и брокерам получить другое представление о сайте, и это может быть очень удобно для них самих и их клиентов. В этот момент мне в голову пришла идея.

Моя идея
Так и родилась идея – создать исходник сайта. Который может использовать любой агент по недвижимости – совершенно бесплатно! С помощью вашего программиста, или через меня, или (пошагово объясню в другой статье) этот источник можно залить на хост и предоставить вашим пользователям каталог с фильтрами выбора, всем арсеналом агентских баз.
Представьте, как удобно было бы покупателю открыть сайт, выбрать свои предпочтения в фильтрах. Например, цену, количество комнат, площадь, этаж и выбрать несколько вариантов, которые ему подходят, и совершить экскурсию, чтобы посмотреть эти варианты с агентом по недвижимости и принять решение об аренде или покупке. При этом риэлтор экономит много времени на бензине, ищет жилье по потребности и при этом приносит элемент заботы лично от себя! Его клиент вернется к нему, потому что с этим агентом по недвижимости легко и удобно работать.
Забыл сказать, что мне очень нравятся “стартовые проекты”. Для этих проектов очень важно, чтобы затраты на их обслуживание были очень низкими и чтобы их было очень легко модифицировать. Поэтому, прежде чем метаться и “ссать” я, как всегда, решил подумать об архитектуре с самого начала и определить исходные требования
Начальные требования
Прежде всего, я хочу, чтобы вы поняли. У меня нет цели по связям с общественностью или как-то отличиться своими знаниями в области высоких технологий. Поэтому я использую только те технологии, которые, по моему мнению, практичны для быстрой адаптации к постоянно меняющемуся бизнесу. В моем понимании бизнес — это не что-то идеальное и отлаженное, а то, что постоянно подстраивается под своего клиента. Где нужно что-то изменить здесь и сейчас на сайте и загрузить. Сделай это очень быстро! Где нужно потратить минимум времени и денег и при этом предоставить заказчику то, что ему нужно.
#0 – Итак, что у нас есть входные данные:
-
1. Молодая компания ~100-500 посещений в день
-
2. Минимальные затраты на хостинг
-
3. Хостинг состоит из изображений объектов, базы данных и самого сайта
-
4. Хостинг — это место, где вы хотите заплатить за домен
-
5. Изображения, базу данных и сайт можно разместить на отдельных серверах, чтобы увеличить посещаемость.
-
6. Возможность очень быстро перейти на другой хостинг с минимальными хлопотами
-
7. С этим мог бы помочь программист с небольшим набором знаний (наличие широкого выбора программистов, которые могут помочь с переездом, доработкой и т.д.)
-
8. Возможность интеграции с существующими CRM и всеми сервисами API
#1 – Требования к Веб-сайт:
-
1. Наличие каталога с фильтрами
-
2. Наличие страницы товара для отображения информации о товаре, фотографий, видео и форм обратной связи
-
3. Поисковые боты должны без проблем индексировать все страницы
#2 – Требования к База данных объектов:
-
1. В базе данных представлен список объектов для сайта
-
2. База может работать не “только с сайтом”, а предоставлять данные приложениям или участвовать в межведомственных базах (разумеется, с учетом приватной информации)
-
3. База нуждается в отдельном ПО для взаимодействия с ней и ее защиты (далее буду называть ее API)
№ 3 – Требование к Файлы базы данных:
Отдельный софт. Это предполагает наличие большого объема памяти для хранения фото, видео и документов. Но не только, вот требования:
-
1. Хранить файлы и документы (записывать, удалять, читать)
-
2. Хранение изображений (запись, удаление, чтение) и при этом возможность рендеринга изображений в разных разрешениях и нанесение водяного знака или логотипа при необходимости.
-
3. Минимум документов при переезде
Подумав об этом таким образом, я нашел эту схему:
Это может показаться необычным, но на основе этой схемы нужно создать не один, а несколько сайтов:
-
Веб-сайт – который будет общаться с базой данных (API) ~ api.website.com
-
Сайт – который будет общаться с файловым хранилищем (STORAGE) ~ files.website.com
-
Сайт-каталог, который будет взаимодействовать с двумя предыдущими сайтами.~ веб-сайт.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 фреймворк (набор стилизованных элементов) с кнопками, полями, карточками и т.д. готов использовать.
выводы
Уважаемые агенты по недвижимости. Мы программисты – мы всегда готовы к диалогу с вами и сотрудничеству с вами – чтобы сделать этот мир современнее, удобнее и лучше для таких замечательных людей, как я. Гы 🙂
Как я уже упоминал ранее, я не буду давать ссылки на сайт или источники, которые я наконец получил, но вы можете получить их БЕСПЛАТНО, если вы напишите мне и расскажете, какие проблемы у вас есть в вашей компании, как это работает для вам прямо сейчас – это необходимо, чтобы я мог улучшить этот код в будущем.
Доброго времени суток, Хабр!