Привет, Сообщество! Хочу впервые поделиться тут своим опытом разработки сайта и рассказать про сам процесс разработки. Надеюсь, вам будет очень интересно почитать и поделиться своим мнением. Заранее скажу, что рекламировать и/или пиарить я ничего не хочу и не буду, поэтому если интересно, то пишите в личку. Итак, моя эпопея начнётся с предыстории. Я много лет работаю в одной компании в сфере недвижимости веб-разработчиком. Разрабатываю в ней 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-фреймворк (набор стилизованных элементов) с готовыми кнопками, полями, карточками и т.д. Дорогие риелторы. Мы программисты - всегда готовы идти на диалог с вами, и сотрудничая вместе с Вами - делать этот мир современнее, удобнее и лучше для Таких замечательных людей как я.. Гы :-) Как я и упомянул ранее, я не буду указывать ссылки на сайт или исходники которые получились в итоге, но Вы можете их получить БЕСПЛАТНО, при условии, что Вы напишите мне и расскажете какие проблемы вы испытываете в своём бизнесе, как он у вас устроен на данный момент - это нужно что бы я смог в будущем улучшать этот код.  Счастливого дня, Хабр! Веб разработчик