ua-hosting.company: серверы в Нидерландах / E5-2650v4 / 10GB DDR4 / 240GB SSD / 1Gbps — $29 / месяц
×Закрыть

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

В рубрике 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 разработчиков, которые также, как и я, интересуются технологиями и готовы уделять свое время этому проекту. Также буду рад поддержке опытного инициативного дизайнера.

  • Популярное

32 комментария

Подписаться на комментарииОтписаться от комментариев Комментарии могут оставлять только пользователи с подтвержденными аккаунтами.

Не помню, чтобы еще какой-то проект так тепло принимал местный народ :)

Хороший проект!
Из пожеланий — сделать разный режим отображений, как в feedly. Одни новости удобно смотреть списком, другие плитками и т.п.

Это будет уже в следующей версии )

удачи с проектом :)

Небольшой оффтопик, но почему с вебом на React+Redux, мобильные приложения не на ReactNative? оО

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

Мне не очень понравилось что надо подписаться именно на 5 ресурсов. Я не хочу подписываться на конкретные ресурсы, но хотел бы подписаться на 5 тем и видеть новости именно по этим темам и не ввжно с какого ресурса.
Далее я могу отмечать наиболее интересные статьи и тем самым со временем проранжировать ресурсы и видеть новости в первую очередь с наиболее интересных для меня.
А в целом идея и проект неплохой, спасибо :-)

Спасибо за мнение, учту. Как писалось выше ресурс пока узкоспециализированный, буду стараться его расширять на большую аудиторию. Темы в планах, физически не успел еще реализовать. Как и ранжирование. Пока в проекте 2 человека активно только работает, быстро новые фичи внедрить не получается :)

У захваті від проекту! А плани на персоналізацію треба реалізовувати однозначно, інакше все рівно доводиться продивлятися забагато новин.
Був би радий бачити таку фічу як «кількість переглядів» чи щось схоже, жаль не всі сайти таке надають; або можна щось придумати як виміряти наскільки стаття «гаряча», щоб візуально виділяти користувачу якісніший контент.

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

Отличный проект!
Получается что для каждого сайта вы индивидуально пишите парсер, чтоб отобразить контент у себя?

К счастью нет. Всем один парсер знимается. Я только нормализатор написал чтобы некоторые новости в порядок привести так как у всех сайтов RSS по разному работает, у некоторых он вообще запущен сильно.

Отличный сайт и приложение! Давно слежу за сервисом))) Продолжайте дальше!

Благодарю, будем продолжать. Есть еще много функций которые не успел реализовать.

Я тут вспомнил, был как-то видео отчет на YouTube о поездке в Сан Франциско (вроде) или о хакатоне в Днепре. Есть может еще что-то? Я бы посмотрел.

Подобное давно не снимал, так что пока ничего интересного нет. Спасибо что смотрел :)

Отличная идея! Я точно вхожу в целевую аудиторию. Кроме ИТ ничем другим не интересуюсь и очень хотел бы иметь специализированный агрегатор. Из тех, что я читаю, не хватает только thg.ru
Буду тестировать :)

Спасибо за отзыв и за сайт. В ближайшее время обязательно добавлю.

Еще очень не хватает возможности отложить статью для прочтения позже, иначе завтра уже ее не отыскать среди вороха новых статей. Классно также было бы скрывать прочитанные статьи, это также облегчит удобство использования ресурса. Думаю, технически это можно реализовать с помощью тех же меток: отложенные, прочитанные, избранные. А еще, хорошо бы для простых смертных где-то показать весь список доступных сайтов или каналов, чтобы можно было просто пройтись, почитать-посмотреть каждый и уже выбрать нужные. Например, при первом входе я нажал «Хочу стать гиком» и меня подписали на половину незнакомых сайтов. Я очень даже непротив и на большее количество незнакомых подписаться, знать бы как

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

В чем отличие от geektimes.ru? У них все это уже есть + редакторы на ЗП.

GeekInformer агрегирует 3 типа контента, а также есть возможность читать новости о трендах. Скоро будет проходить CES 2017 и можно будет увидеть все новости, видео и подкасты о том что представили на этой выставке.

Имхо, но в рунете с гик-агрегаторами все ок. А вот в англоязычной среде похуже ситуация. Я сколько не искал — ничего годного не нашел. Самое близкое приближение это реддит, но он ну просто мега уродский.

Насчет англоязычных согласен. А с рунета я решил пока начать, но на нем не останавливаться.

Еще вопрос — зачем пишете нативные клиенты, а не вебверсию под мобайл? У вас как раз такой проект в котором эффективней будет вебку делать.

Уже была веб, натив более стабилет и быстр + есть фичи которые только натив хорошо умеет. Особенно это касается анимаций в интерфейсе. Дольше делается но как я убедился результат стоит того.

feedly.com хорошо работает

ага, тоже такая мысль мелькнула, тем более после того как гуугл закрыл их рсс ридер, это было самое лучшее из того что было на тот момент. и этот агрегатор ооч. похож на фидли.

Только фидли только новости показывает, для большинства это ок для техногика одних новостей мало

Есть всякие Nuzzel и Flipboard, помогают собрать подписку «под себя». У меня правда другая проблема, как читать меньше, а не больше. ;-)

Есть, сам такими подобными пользовался пока не появилась проблема — чтобы насытиться новостями приходилось заходить в RSS читалку, YouTube и кногда Twitter или подкаст-плеер. Поэтому решил попробовать это реализоватьв одном приложении. И также хочется иногда почитать новости или посмотреть обзоры о конкретном устройстве, но подобных сервисов не находил.

Подписаться на комментарии