- PVSM.RU - https://www.pvsm.ru -

Не убивайте свою мотивацию: осваивайте Ruby on Rails на интересных примерах

Все же помнят, как это бывает: учишься ты чему-то новому, но вдруг раз и приуныл. А все почему? Потому что разработка типовых приложений при обучении скучна до зубовного скрежета.

Подобные задания становятся УБИЙЦАМИ мотивации №1.

Лично я не хочу, чтобы мои ученики теряли мотивацию и сдавались на полпути. Поэтому я создал этот километровый список из 27 забавных идей для приложений, которые вы можете создать, пока обучаетесь использовать React на пару с Ruby on Rails.

Не убивайте свою мотивацию: осваивайте Ruby on Rails на интересных примерах - 1

Этот перечень предполагает, что вы уже достаточно комфортно чувтсвуете себя при работе с Ruby on Rails (или с каким-нибудь другим фреймворком для web-разработки). Поэтому часть, относящаяся к бэкенду, может показаться новичкам довольно сложной, но вот фронтенд не должен вызвать серьезных трудностей.

Не убивайте свою мотивацию: осваивайте Ruby on Rails на интересных примерах - 2

Проект #1 – Календарь-планировщик (типа Google календаря)

Не убивайте свою мотивацию: осваивайте Ruby on Rails на интересных примерах - 3

Вы можете начать этот проект как самое простое приложение, которое постепенно будете улучшать, добавляя больше функций и улучшая UX.

Это поможет вам практиковаться в работе со вложенными компонентами (такими, как компонент дня, помещенный в компонент недели, который в свою очередь расположен в компоненте месяца).

Я использую подобное приложение в качестве примера в своем бесплатном курсе для Rails-разработчиков [1].

Вы можете посмотреть полную пошаговую версию кода здесь [2].

Проект #2 — Поисковик интересных репозиториев кода на Github

Не убивайте свою мотивацию: осваивайте Ruby on Rails на интересных примерах - 4

Можно сделать так, чтобы поиск осуществлялся на стороне клиента, но намного занятней будет, если хранить поисковые запросы в базе при помощи Rails и отображать самые популярные из них.

Подобный проект — хорошая практика в использовании внешних API и работе с JSON ответами. Также можете поэкспериментировать с пре-рендерингом компонента на сервере.

Посмотрите вот этот плагин [3] от Algolia [4], чтобы разжиться свежими идеями.

Проект №3 — Приложение для заметок

Не убивайте свою мотивацию: осваивайте Ruby on Rails на интересных примерах - 5

Вы сможете в полной мере оценить возможности React при работе с многочисленными изменениями состояния — скажем, если подключите автосохранение. Поизучайте Simplenote [5], если вам нужен пример простого, но мощного приложения для заметок.

Если вам кажется, что для первого проекта это сложновато, можете сначала потренироваться со внешним компонентом редактирования текста [6], чтобы понять, как это все работает, а потом уже внедрить свой собственный.

Проект №4 — Добавьте на свой сайт Slack-чат

Не убивайте свою мотивацию: осваивайте Ruby on Rails на интересных примерах - 6

Используйте компонент react-slack-chat [7], чтобы добавить виджет чата на существующий сайт, написанный на Rails. Компонент сделает большую часть работы за вас, но зато можно развлечься, создав собственного бота на Rails или поиграв с настройками виджета на React.

Код компонента доступен на Github [8].

Проект #5 — Генератор мемасиков

Не убивайте свою мотивацию: осваивайте Ruby on Rails на интересных примерах - 7

Rails позволяет поддерживать хранение и обслуживание библиотеки картинок и прикольных мемов. Используйте React для рендеринга и управления формой для создания мема.

Вы можете создавать мем на сервере при помощи ImageMagick или в браузере, используя canvas. Ознакомьтесь с этим репозиторием [9] от Hung Tran [10].

Проект №6 — Приложение для поиска бесплатных картинок в реальном времени

Не убивайте свою мотивацию: осваивайте Ruby on Rails на интересных примерах - 8

Воспользуйтесь API [11] от Unsplash [12] как источником бесплатных картинок отличного качества.

Добавляйте классные анимации при помощи React Animation Add-Ons [13].

Предоставьте пользователям возможность заносить понравившиеся изображения в избранное. Можно поэкспериментировать: сделать простой бэкенд для API приложения на Rails, а для фронтенда создать отдельное приложение на React.

Проект №7 — Клуб читателей

Не убивайте свою мотивацию: осваивайте Ruby on Rails на интересных примерах - 9

Незамысловатое приложение, в котором можно обсуждать любимые книги и делиться ими с друзьями (что-то наподобие Goodreads [14]). Бэкенд можно выполнить как простое приложение Rails CRUD, а фронтенд — как приложение-одностраничник на React, заодно поигравшись с Router и Redux.

Проект №8 — Веб-клиент для управления несколькими аккаунтами на Twitter (в духе Tweetdeck)

Не убивайте свою мотивацию: осваивайте Ruby on Rails на интересных примерах - 10

Веб-клиент для Twitter, который можно связать с несколькими аккаунтами (при помощи OAuth), а затем добавить в его интерфейс множество колонок для отображения разных экранов — ленты, оповещений, поиска, переписки.

Советуем воспользоваться этим незаменимым Twitter gem от Erik Michaels-Ober [15].

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

Вы можете также ввести автоматическую подгрузку новых твитов и оповещений, как в Tweetdeck, применив polling или Action Cable.

Здесь тоже хватает вложенных компонентов и есть возможность попробовать реализовать простенькие анимации на React.

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

Проект №9 — OpenStreetMap с кастомным UI

Не убивайте свою мотивацию: осваивайте Ruby on Rails на интересных примерах - 11

Знали ли вы, что вебсайт OpenStreetMap [16] — это приложение, написанное на Rails?

По ссылке [17] вы можете найти репозиторий, установить [18] его на свой девайс и поработать с фротендом при помощи React!

Проект №10 — Русская рулетка с обедами для всей команды

Не убивайте свою мотивацию: осваивайте Ruby on Rails на интересных примерах - 12

Вебсайт, который поможет команде определиться, куда сегодня отправиться в обеденный перерыв. В плане бэкенда достаточно CRUD-приложения, которое дает вашим коллегам возможность предлагать различные заведения. Для функций поиска и автозаполнения можно использовать API от Foursquare [19]. А React позволяет добавить прикольные анимации!

Если идея с обедами вас не привлекает, организуйте таким образом кофе-брейк, или поход в бар после работы, или еще что-нибудь поинтереснее.

Проект №11 — Мастер прокрастинации

Не убивайте свою мотивацию: осваивайте Ruby on Rails на интересных примерах - 13

Все, что нужно, чтобы отлынивать от работы — на одном вебсайте. Читайте посты с Reddit, Hacker News, Product Hunt, Medium, Slashbot и так далее не переключаясь.

Используйте бэкенд на Rails, чтобы сохранять пользовательские аккаунты и предпочтения, а также чтобы устанавливать связь с разными API. Другой вариант — получать данные от API напрямую со стороны клиента.

Проект №12 — Чат с Action Cable

Не убивайте свою мотивацию: осваивайте Ruby on Rails на интересных примерах - 14

Это не только повод подучить Rails, но и отличная возможность опробовать Action Cable [20] — занятную функцию из Rails 5, которая обеспечивает поддержку WebSocket на Rails. Для начала можете ознакомиться с этими примерами [21].

Проект №13 — Клон Medium [22]

Не убивайте свою мотивацию: осваивайте Ruby on Rails на интересных примерах - 15

Почитайте серию постов [23] из блога Andrea Mazzini [24], в которых он подробно рассказывает о процессе создания клона Medium при помощи Rails API приложения, React и Flux.

Можно обойтись из без Flux, но, если хотите немного усложнить себе задачу, имеет смысл его подключить.

Проект №14 — Face tagger

Не убивайте свою мотивацию: осваивайте Ruby on Rails на интересных примерах - 16

Приложение, которое позволяет загружать фотографии и отмечать на них пользователей (как на Facebook). Для автоматического распознавания лиц используйте OpenCV Ruby gem [25] по ссылке.

Проект №15 — ActiveAdmin на стероидах

Не убивайте свою мотивацию: осваивайте Ruby on Rails на интересных примерах - 17

Вы наверняка пользовались ActiveAdmin [26], чтобы отслеживать процесс работы над приложением. Но интерфейс у него, честно говоря, так себе. Вы можете это исправить, превращая один экран за другим в стилизованные компоненты React.

Поизучать код ActiveAdmin можно здесь [27].

Проект №16 — Магазин Brexit

Не убивайте свою мотивацию: осваивайте Ruby on Rails на интересных примерах - 18

React на Rails предлагает посетителям джем, пиво, английские флаги, карри и многое другое. Если не хотите реализовывать функции, необходимые для магазина, на Rails, используйте Spree [28], а сами сосредоточьтесь на применении компонентов React при работе над фронтендом.

Проект №17 — Просто почта и никаких шимпанзе

Не убивайте свою мотивацию: осваивайте Ruby on Rails на интересных примерах - 19

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

API от Mailchimp [29] вам, тем не менее, сгодится. Либо можете в качестве альтернативы обратиться к Sendgrid [30]. Если вам доводилось работать с Mailchimp, то сами знаете, что функций, которые можно попытаться внедрить, масса — просмотр, фильтры, управление подписчиками, создание форм и кампаний и так далее.

Выберите что-то одно и постарайтесь реализовать. Большая часть функций подразумевает наличие некоторой формы, так что это ваш шанс попрактиковаться в разделении интерфейса на компоненты React, которые отображают изменения состояния, и функциональные компоненты, с состоянием не связанные.

Проект №18 — Gmail на Rails

Не убивайте свою мотивацию: осваивайте Ruby on Rails на интересных примерах - 20

У Gmail интерфейс весьма сложный, однако можно для начала ограничиться созданием UI для вывода списка писем и чтения. Или, может быть, для поиска, если вам так интереснее?

Воспользуйтесь этим API gem для Gmail [31], а также туториалом и репозиторием кода [32] от Mark Brown [33], чтобы проще было начать.

Проект №19 — DJ Spotify

Не убивайте свою мотивацию: осваивайте Ruby on Rails на интересных примерах - 21

DJ приложение на основе Spotify [34]. Получайте рекомендации, создавайте и миксуйте плейлисты и даже позвольте другим добавлять песни в ваши плейлисты.

Используйте Ruby wrapper [35] gem для получения API Spotify.

Я как-то раз сделал приложение-малютку [36] с его помощью, и работать с ним было довольно просто. Spotify позволяет проигрывать музыку только через собственное приложение, так что придется запускать его параллельно с вашим.

Проект №20 — Панель Heroku

Не убивайте свою мотивацию: осваивайте Ruby on Rails на интересных примерах - 22

Как Rails-разработчик, вы скорее всего отлично знакомы с Heroku [37]. Это прекрасный сервис для быстрого развертывания и хостинга [38] Rails приложений – особенно хорошо он подходит для тех случаев, когда вы работаете над множеством небольших проектов, просто чтобы набить руку.

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

Используйте этот gem [39], чтобы получить доступ к API Heroku.

Проект №21 — AWS S3 клиент

Не убивайте свою мотивацию: осваивайте Ruby on Rails на интересных примерах - 23

Сделайте хороший современный интерфейс для управления своим аккаунтом AWS S3
Используйте Ruby gem по ссылке [40] и начните с создания простого компонента управления файлами. Затем добавьте компонент формы для загрузки файлов.

Проект №22 — Панель аналитики Stripe

Не убивайте свою мотивацию: осваивайте Ruby on Rails на интересных примерах - 24

Панель, которая показывает статистику и графики, созданные на основании данных Striple [41]. У этого API отлично обстоят дела с документацией [42], и вдобавок у вас будет возможность попробовать использовать D3 с React (посмотрите тут [43] и тут [44]).

Проект №23 — Панель Google analytics

Не убивайте свою мотивацию: осваивайте Ruby on Rails на интересных примерах - 25

В своем исходном виде веб-панель Google аналитики слишком перегружена и трудна для восприятия. Вы можете сделать версию попроще, на которой будет отображаться только самая важная информация.

Еще одна возможность опробовать D3. Или же обратитесь к другой библиотеке [45]. Вы можете получить API Google analytics с помощью этого gem-а [46].

Проект №24 — Приложение для отслеживания привычек

Не убивайте свою мотивацию: осваивайте Ruby on Rails на интересных примерах - 26

Разработайте приложение для отслеживания своих ежедневных и еженедельных дел – утренние сборы, посещения тренажерного зала, пробежки, готовка, медитация, игра на гитаре, чайные церемонии. Источником вдохновения вам могут послужить Loop Habit Tracker [47] или Coach [48].

Адаптируйте свое приложение для мобильных устройств, чтобы можно было использовать его на ходу. Когда подружитесь с React, можно даже сделать мобильное приложение, используя React Native.

Проект №25 — Фитнес-панель

Не убивайте свою мотивацию: осваивайте Ruby on Rails на интересных примерах - 27

Создайте панель со своими персональными фитнес-данными, которая собирает информацию из разных приложений и выводит полезную статистику на симпатичный интерфейс.

Можно без проблем получать данные из самых разных API, в зависимости от того, какими сервисами пользуетесь вы и ваши близкие —  Fitbit [49]Google Fit [50]Moves [51]Runkeeper [52], Strava [53]Withings [54] и так далее.

Вы можете даже позволить пользователю вручную вводить какую-нибудь несложную информацию типа изменений в весе или режима упражнений.

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

Проект №26 — Угадай, что я нарисовал (игра)

Не убивайте свою мотивацию: осваивайте Ruby on Rails на интересных примерах - 28

Создайте приложение-рисовалку, в котором нужно рисовать с помощью мышки, чтобы ваш друг угадывал, что за каляки-маляки вы изобразили. Для рисования вы можете использовать canvas. Посмотрите пример [55] от Michal Svrček [56], чтобы понять, с чего можно начать.

Используйте Rails, чтобы загрузить и сохранить рисунки, а затем показывать их кому-нибудь на другом девайсе. Или еще веселее: подключите машинное обучение [57] — и пусть угадывает ваш компьютер. ;)

Проект #27 — Вы пишете, как...

Не убивайте свою мотивацию: осваивайте Ruby on Rails на интересных примерах - 29

Сделайте приложение для классификации текстов, которое сравнит ваш стиль со стилем какого-нибудь известного автора – прямо как приложение I Write Like [58] (созданное Дмитрием Честных [59]).

Используйте classifier-reborn [60] для классификации и React для работы с формой. Основная сложность здесь заключается в бэкенде, поэтому экспериментируйте с разными UI-анимациями [13]. Посмотрите этот репозиторий [61], чтобы почерпнуть какие-нибудь крутые идеи.

Теперь у вас есть целый список интересных идей, чтобы прокачать свои навыки в React, в процессе освоения Rails!

Автор: Everyday Tools

Источник [62]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/ruby/241156

Ссылки в тексте:

[1] бесплатном курсе для Rails-разработчиков: https://learnetto.com/users/hrishio/courses/the-free-react-on-rails-5-course?utm_source=fcc_medium&utm_campaign=blog_post_ideas_for_react_rails_apps&utm_medium=blog_post_ideas_for_react_rails_apps

[2] здесь: https://github.com/learnetto/calreact

[3] вот этот плагин: https://github.com/algolia/github-awesome-autocomplete

[4] Algolia: https://medium.com/@algolia

[5] Simplenote: https://simplenote.com/

[6] внешним компонентом редактирования текста: https://facebook.github.io/draft-js/

[7] react-slack-chat: https://www.npmjs.com/package/react-slack-chat

[8] Github: https://github.com/5punk/react-slack-chat

[9] репозиторием: https://github.com/tranhungt/meme-maker

[10] Hung Tran: https://medium.com/@tranhungt

[11] API: https://unsplash.com/developers

[12] Unsplash: https://medium.com/@unsplash

[13] React Animation Add-Ons: https://facebook.github.io/react/docs/animation.html

[14] Goodreads: https://www.goodreads.com/

[15] Erik Michaels-Ober: https://medium.com/@sferik

[16] OpenStreetMap: http://www.openstreetmap.org/

[17] По ссылке: https://github.com/openstreetmap/openstreetmap-website/

[18] установить: https://github.com/openstreetmap/openstreetmap-website/blob/master/INSTALL.md

[19] API от Foursquare: https://medium.com/@FoursquareAPI

[20] Action Cable: http://guides.rubyonrails.org/action_cable_overview.html

[21] с этими примерами: https://github.com/rails/actioncable-examples

[22] Medium: https://medium.com/@Medium

[23] серию постов: http://fancypixel.github.io/blog/2015/01/28/react-plus-flux-backed-by-rails-api/

[24] Andrea Mazzini: https://medium.com/@theandreamazz

[25] OpenCV Ruby gem: https://github.com/ruby-opencv/ruby-opencv

[26] ActiveAdmin: http://activeadmin.info/

[27] здесь: https://github.com/activeadmin/activeadmin

[28] Spree: https://spreecommerce.com/

[29] API от Mailchimp: https://developer.mailchimp.com/

[30] Sendgrid: https://sendgrid.com/

[31] API gem для Gmail: https://developers.google.com/gmail/api/quickstart/ruby

[32] туториалом и репозиторием кода: https://github.com/markbrown4/gmail-react

[33] Mark Brown: https://medium.com/@markbrown4

[34] Spotify: https://medium.com/@Spotify

[35] Ruby wrapper: https://github.com/guilhermesad/rspotify

[36] приложение-малютку: http://songshaker.herokuapp.com/

[37] Heroku: https://heroku.com/

[38] хостинга: https://www.reg.ru/?rlink=reflink-717

[39] этот gem: https://github.com/heroku/platform-api

[40] Ruby gem по ссылке: https://github.com/aws/aws-sdk-ruby

[41] Striple: https://medium.com/@stripe

[42] отлично обстоят дела с документацией: https://stripe.com/docs/api/ruby

[43] тут: http://www.reactd3.org/

[44] тут: https://github.com/QubitProducts/d3-react-sparkline

[45] другой библиотеке: https://github.com/reactjs/react-chartjs

[46] этого gem-а: https://developers.google.com/api-client-library/ruby/apis/analytics/v3

[47] Loop Habit Tracker: https://github.com/iSoron/uhabits

[48] Coach: https://www.coach.me/habit-tracker

[49] Fitbit: https://github.com/whazzmaster/fitgem

[50] Google Fit: https://developers.google.com/api-client-library/ruby/apis/fitness/v1

[51] Moves: https://dev.moves-app.com/docs/guide

[52] Runkeeper: https://runkeeper.com/developer/healthgraph/overview

[53] Strava: https://github.com/jaredholdcroft/strava-api-v3

[54] Withings: http://oauth.withings.com/api

[55] пример: https://github.com/svrcekmichal/react-sketchpad

[56] Michal Svrček: https://medium.com/@svrcekmichal

[57] машинное обучение: https://gist.github.com/gbuesing/865b814d312f46775cda

[58] I Write Like: https://iwl.me/

[59] Дмитрием Честных: https://medium.com/@dchest

[60] classifier-reborn: https://github.com/jekyll/classifier-reborn

[61] этот репозиторий: https://github.com/FormidableLabs/react-animations

[62] Источник: https://habrahabr.ru/post/321316/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best