Ecodomen.ru — волонтерский проект с открытым исходным кодом, документацией, планами.
Цель — создание продукта, агрегатора регистраторов доменных имен в зоне ru для того, чтобы пользователи сервиса могли легко находить наиболее выгодного регистратора.
Полагаю, что аудитории Хабра не нужно объяснять, кто такие эти регистраторы, но на всякий случай оставлю ссылку на Википедии.
Больше о задаче решаемой продуктом на vc.ru:
https://vc.ru/u/366794-aleksey-rezvov/1173879-kak-ecodomen-ru-pomogaet-ekonomit-na-domenah
Как это устроено
Продукт состоит из двух основных частей:
Веб-приложение для отображения сведений о регистраторах с возможностями фильтрации и сортировки по наиболее востребованным параметрам.
Парсер ценовых предложений с сайтов регистраторов доменных имен.
Весь проект сейчас лежит в одном репозитории, так было проще начать:
https://github.com/ecodomen/nsreg-watcher
Веб-приложение разработано на базе Django, причем для рендеринга HTML используется Django template language.
СУБД — PostgreSQL, немного Celery для фоновых задач.
Парсеры разработаны на базе Scrapy.
Работа по сбору ценовых предложений начинается с запуска парсера страницы аккредитованных регистраторов доменных имен:
https://cctld.ru/domains/reg/
Сейчас в ecodomen собран 131 регистратор доменных имен.
Затем для каждого полученного регистратора запускается персональный парсер, который забирает стоимости регистрации, продления и трансфера с сайта регистратора.
Для многих сайтов регистраторов используются обобщенные (aka базовые) парсеры, 7 таких парсеров закрывают 80% сайтов, остальные приходится обрабатывать вручную.
Сейчас и парсеры и приложение Django смотрят в одну и ту же БД PostgerSQL. За создание схемы БД отвечает Django, а парсеры уже опираются на нее.
Из инфраструктуры, развернуто сейчас все на небольшом VPS с Ubuntu 22.04. Одно время у нас работал простой CI/CD, который развертывал дев и прод окружения при пуше в ветки dev и main, но прямо сейчас там что-то сломано.
Еще у нас есть телеграм бот, который сообщает нам в группу об успешности или неуспешности запуска парсеров. Прямо сейчас он сыплет довольно много сообщений об ошибках при парсинге, которые нам некогда поправить, хороший повод присоединиться к проекту?
Можно сразу взять в работу что-нибудь из issues в колонке TODO с текстом “Spider Error”:
https://github.com/orgs/ecodomen/projects/1
В команде есть гипотеза, что поломался какой-то из базовых парсеров и починка одного вылечит большинство ошибок в других.
Наши планы
Для продукта в целом сейчас важно подтвердить востребованность у пользователей, после этого уже можно будет заняться развитием фич, а идей под них хватает с избытком.
Пока же мы хотим поиграть с технологиями и архитектурой:
Разделить разработку бекенда (Django REST Framework или FastAPI) и фронтэнда (React.js или Vue.js).
Разработать бекенд с микросервисным подходом на базе FastAPI. Понимаем, что для проекта такая сложность скорее всего не оправдана, зато будет весело.
Перенести базу данных с PosgreSQL на YDB в качестве эксперимента. В процессе решения задачи нужно будет разработать адаптеры YDB для Django ORM и SQLAlchemy. Есть шанс, что уже что-то сделано, но мы не нашли. Кстати, ребята из команды разработки самого YDB анонсировали поддержку в этой задаче, так что — хороший повод присоединиться кому-то поопытнее.
Разработать unit-тесты, тесты API, E2E-тесты, наладить нагрузочное тестирование.
О планах продукта можно узнать в статье на VC:
https://vc.ru/u/366794-aleksey-rezvov/1173879-kak-ecodomen-ru-pomogaet-ekonomit-na-domenah
Таким образом, мы приглашаем участвовать всех, кому интересны эти задачи.
Кроме того, мы будем рады видеть, вас:
Технические писатели, аналитики. У нас много всего неописанного, незадокументированного, а надо бы это сделать. Нужно писать статьи, обучающие материалы.
DevOps-инженеры. Явно есть куда развивать мониторинг, систему развертывания и другие аспекты инфраструктуры.
А на Хабре больше всего ждем опытных разработчиков, которые помогут покритиковать имеющийся код, спроектировать новые версии, поддержать советом новичков при разработке.
Если проект вас заинтересовал, присоединяйтесь:
https://forms.gle/xxuYPCR7AvLj2z7J7
Ссылки
Сервис: https://ecodomen.ru
Ваш фидбек: https://forms.gle/SKXX2XffoAYZbGxW9
История проекта: https://youtu.be/hV8Bj291A60
Заявка на участие: https://forms.gle/xxuYPCR7AvLj2z7J7
Репозиторий с исходным кодом проекта: https://github.com/ecodomen/nsreg-watcher
Доска с задачами: https://github.com/orgs/ecodomen/projects/1
Ecodomen.ru, продукт: https://vc.ru/u/366794-aleksey-rezvov/1173879-kak-ecodomen-ru-pomogaet-ekonomit-na-domenah
Ecodomen.ru, реализация: https://habr.com/ru/articles/814305/
P.S. Предвижу, что будут мнения в стиле “код очень плох, архитектурные решения крайне неудачные, организация работ никудышная”.
Это тот случай, когда ваше мнение действительно важно, только, пожалуйста, изложите его конструктивно, например через системное ревью:
https://habr.com/ru/articles/490608/
А еще лучше, присоединяйтесь к команде и покажите примером!