Quantcast
Channel: Найцікавіше на DOU
Viewing all articles
Browse latest Browse all 8115

DOU Проектор: GeekInformer — современный новостной агрегатор для гиков

$
0
0

В рубрике DOU Проекторвсе желающие могут презентовать свой продукт (как стартап, так и ламповый pet-проект). Если вам есть о чем рассказать — приглашаем поучаствовать. Если нет — возможно, серия вдохновит на создание собственного made in Ukraine продукта. Вопросы и заявки на участие присылайте на editors@dou.ua.

Идея

Меня зовут Тимофей Лавренюк, работаю в компании Provectus, занимаюсь front-end разработкой.

Первые попытки.Желание сделать что-то свое посещало меня и раньше. Еще во времена обучения я принимал участие во всеукраинском IT-чемпионате «Золотой Байт» с приложением для туристических фирм. С ребятами мы сделали приложение, где жители города или туристические фирмы создают маршруты для туристов. Реализовали дополненную реальность — снимаешь камерой и метки показывают, куда идти. Выиграли тогда номинацию «стартапы», где главным призом была поездка в Кремниевую долину на одну неделю. После общения со многими стартаперами мы поняли, что приложение не взлетит.

Но вдохновившись поездкой, мы решили создать Muzarium — приложение, которое делает посещение музеев более увлекательным и интересным. Мы включили в него вопросы, элементы квеста, договорились с десятком музеев, ездили по выставкам. В итоге все потухли, проект до сих пор делается, неизвестно когда выпустится и запустится ли вообще. Наши основные ошибки на тот момент заключались в том, что мы не смогли сделать стабильный проект и делали его очень долго. Но на будущее все учли и стали двигаться дальше.

Новая идея.Год назад у меня появилась идея создать новостной агрегатор. Смысл достаточно прост — если вы хотите узнать последние новости из мира технологий и не тратить время на поиск новостных ресурсов с хорошим контентом, вам будет интересен проект, который позволит читать новости, смотреть видео и слушать подкасты с лучших ресурсов в одном приложении.

Много лет я пользовался RSS читалками, но этого всегда было недостаточно. В сети публикуют много интересных видеообзоров, иногда хочется послушать подкасты, но нет нормального места, где бы они все были собраны вместе.

Также хотелось, чтобы в одном месте можно было собрать весь контент о конкретном тренде. Например, когда Google анонсировал Google Pixel, через несколько дней хотелось бы почитать новости о нем, посмотреть обзоры, прослушать подкасты.

С целью решить эти проблемы и создавался проект GeekInformer.

Проект рассчитан на узкую аудиторию, а именно на людей, которые интересуются технологиями и хотят потратить минимум времени, чтобы узнать максимум новостей. Также узкая тематика позволит уделить больше времени мелочам.

Реализация

Вначале я решил не делать back-end и нативное Android приложение, минимизировав затраты времени на разработку. Я сделал Cordova приложение под Android (по сути портированный сайт), написал минимальный back-end с помощью облачной базы Parse (от Facebook). Дизайн также пришлось сделать самому. Чтобы с ним особо не возиться, решил использовать Material Design. Старался много времени уделить UX и проработке мелочей. Первую версию получилось написать всего за 3 месяца.

Затем зарелизил проект и выложил его обзор на youtube канале, где мы несколько лет с другом снимали и выкладывали обзоры устройств и гаджетов. И далее без раскрутки стали появляться пользователи, некоторые блогеры даже написали обзоры. Стало понятно, что смысл в проекте есть. В дальнейшем Facebook закрыл Parse, и это стало отличным поводом начать разработку полностью новой версии — свой back-end и база, обновление front-end, изменение дизайна и нативное Android приложение.

Контент.Новостные ресурсы в базу я добавлял самостоятельно. Смотрел, что каждый из себя представляет. Это как популярные новостные ресурсы стран СНГ, так и блогеры с хорошим контентом, со многими из них я списывался лично. Блогерам очень понравилась идея проекта, так как он позволял показывать их новости тем людям, которые о них никогда не слышали. Например, если пользователь читал новости о Google Pixel, там показывались новости и от именитых новостных ресурсов, и от малоизвестных блогеров. Все были равны, объединяло лишь то, что у них был контент о Google Pixel.

В базе сейчас находится 150 ресурсов. От них все время собираются новости, видео и подкасты, затем очищаются от мусора, нормализуются и добавляются в базу и кэш.

Пользователь может прямо на сайте открыть новость, посмотреть видео и послушать подкаст.

Когда человек регистрируется, его просят подписаться минимум на 5 ресурсов. То есть ему дают список самых популярных и читаемых сайтов. Пользователь выбирает самые релевантные для себя, и у него формируется своя новостная лента. В дальнейшем он пополняет список своих новостных источников из базы на свое усмотрение.

Также он может подписываться на различные тренды. Это может быть гаджет, устройство, сервис, ОС и т.п.

Технологии. Back-end у нас на NodeJS. База — MongoDB. Для кэша использую Redis, для поиска — Elastic Search. Все хостится на Azure. Сайт работает по протоколу HTTP2 с TSL шифрованием.

Front-end — на React(ES7) + Redux. Сайт рендерится на сервере. Сборка — WebPack 2. Также используется Service Worker для кэширования новостей и работы сайта Offline.

Android приложение пока на Java 7 + Retrolambda. Используется RxJava, Retrofit 2, Realm и EventBus. Думаем перейти на Kotlin.

Думаю, для подробного описания каждого из этапов разработки есть смысл сделать отдельную статью, так как за год произошло много чего интересного, да и статья будет слишком большая. Но за время разработки проекта я сделал для себя важное открытие. Перед разработкой проекта я был простым front-end разработчиком, который хотел поработать со связкой React+Redux, а после уже пришлось освоить разработку на NodeJS, настройку Ubuntu и Nginx для размещения проекта, деплой и настройку Redis с Elastic Search. Также пришлось освоить Java и разработку под Android, чтобы помогать стажерам и вовремя делать рефактор кода и добавлять различные мелочи. Все это показало, что можно не зацикливаться на чем-то одном и стирать грани между различными языками и технологиями. Не везде это будет полезно, но когда создаешь стартап и у тебя минимум разработчиков — must have.

Команда.Так совпало, что в Provectus, компании, где я работаю, есть внутрикорпоративные курсы для PM-ов, называются Формула 1. В рамках курса после прослушанных лекций мы берем стажеров и запускаем с ними тестовые проекты. Для нас это опыт управления, для них — первые шаги в IT.

Одним из таких проектов в рамках последней стажировки и стала версия 2.0 проекта GeekInformer. Стажировка началась с 9 человек: 2 front-end разработчика, 2 тестировщика и 5 Android разработчиков. Позже присоединился один дизайнер, и я был как PM + Dev.

До конца со мной дошел один Android разработчик (Владимир Захаров), который несмотря на то, что работает, продолжает помогать мне и сейчас. Эта тема ему очень интересна. Весьма инициативный парень, предлагает свои идеи, сам находит и исправляет баги.

Результаты

Сейчас в Play Marketу приложения уже около 5000 скачиваний и 400 отзывов. Сам сайт в среднем посещает 100-200 пользователей.Ресурс запустили, и останавливаться не хочу. Все уже работает, но мы исправляем мелкие ошибки, повышаем стабильность.

Сейчас в тренде искусственный интеллект и машинное обучение. Хочется сделать рекомендательную систему на основе поведения пользователя — персонализированную новостную ленту. Также хочется расширить тематику. Например, сейчас тематика — «технологии», в будущем я хочу обязательно ввести «игры» и «разработку». Будет удобно в одном месте читать контент о конкретной игре или о каком-то фреймворке. Каждая тематика рассчитана на конкретную аудиторию.

Уже начал создавать версию под iOS на Swift 3. Также мне помогают с разработкой нативного приложения под Windows 10.

Ищу опытных iOS разработчиков, которые также, как и я, интересуются технологиями и готовы уделять свое время этому проекту. Также буду рад поддержке опытного инициативного дизайнера.


Viewing all articles
Browse latest Browse all 8115

Trending Articles