- PVSM.RU - https://www.pvsm.ru -
Все же помнят, как это бывает: учишься ты чему-то новому, но вдруг раз и приуныл. А все почему? Потому что разработка типовых приложений при обучении скучна до зубовного скрежета.
Подобные задания становятся УБИЙЦАМИ мотивации №1.
Лично я не хочу, чтобы мои ученики теряли мотивацию и сдавались на полпути. Поэтому я создал этот километровый список из 27 забавных идей для приложений, которые вы можете создать, пока обучаетесь использовать React на пару с Ruby on Rails.
Этот перечень предполагает, что вы уже достаточно комфортно чувтсвуете себя при работе с Ruby on Rails (или с каким-нибудь другим фреймворком для web-разработки). Поэтому часть, относящаяся к бэкенду, может показаться новичкам довольно сложной, но вот фронтенд не должен вызвать серьезных трудностей.
Проект #1 – Календарь-планировщик (типа Google календаря)
Вы можете начать этот проект как самое простое приложение, которое постепенно будете улучшать, добавляя больше функций и улучшая UX.
Это поможет вам практиковаться в работе со вложенными компонентами (такими, как компонент дня, помещенный в компонент недели, который в свою очередь расположен в компоненте месяца).
Я использую подобное приложение в качестве примера в своем бесплатном курсе для Rails-разработчиков [1].
Вы можете посмотреть полную пошаговую версию кода здесь [2].
Проект #2 — Поисковик интересных репозиториев кода на Github
Можно сделать так, чтобы поиск осуществлялся на стороне клиента, но намного занятней будет, если хранить поисковые запросы в базе при помощи Rails и отображать самые популярные из них.
Подобный проект — хорошая практика в использовании внешних API и работе с JSON ответами. Также можете поэкспериментировать с пре-рендерингом компонента на сервере.
Посмотрите вот этот плагин [3] от Algolia [4], чтобы разжиться свежими идеями.
Проект №3 — Приложение для заметок
Вы сможете в полной мере оценить возможности React при работе с многочисленными изменениями состояния — скажем, если подключите автосохранение. Поизучайте Simplenote [5], если вам нужен пример простого, но мощного приложения для заметок.
Если вам кажется, что для первого проекта это сложновато, можете сначала потренироваться со внешним компонентом редактирования текста [6], чтобы понять, как это все работает, а потом уже внедрить свой собственный.
Проект №4 — Добавьте на свой сайт Slack-чат
Используйте компонент react-slack-chat [7], чтобы добавить виджет чата на существующий сайт, написанный на Rails. Компонент сделает большую часть работы за вас, но зато можно развлечься, создав собственного бота на Rails или поиграв с настройками виджета на React.
Код компонента доступен на Github [8].
Проект #5 — Генератор мемасиков
Rails позволяет поддерживать хранение и обслуживание библиотеки картинок и прикольных мемов. Используйте React для рендеринга и управления формой для создания мема.
Вы можете создавать мем на сервере при помощи ImageMagick или в браузере, используя canvas. Ознакомьтесь с этим репозиторием [9] от Hung Tran [10].
Проект №6 — Приложение для поиска бесплатных картинок в реальном времени
Воспользуйтесь API [11] от Unsplash [12] как источником бесплатных картинок отличного качества.
Добавляйте классные анимации при помощи React Animation Add-Ons [13].
Предоставьте пользователям возможность заносить понравившиеся изображения в избранное. Можно поэкспериментировать: сделать простой бэкенд для API приложения на Rails, а для фронтенда создать отдельное приложение на React.
Проект №7 — Клуб читателей
Незамысловатое приложение, в котором можно обсуждать любимые книги и делиться ими с друзьями (что-то наподобие Goodreads [14]). Бэкенд можно выполнить как простое приложение Rails CRUD, а фронтенд — как приложение-одностраничник на React, заодно поигравшись с Router и Redux.
Проект №8 — Веб-клиент для управления несколькими аккаунтами на Twitter (в духе Tweetdeck)
Веб-клиент для Twitter, который можно связать с несколькими аккаунтами (при помощи OAuth), а затем добавить в его интерфейс множество колонок для отображения разных экранов — ленты, оповещений, поиска, переписки.
Советуем воспользоваться этим незаменимым Twitter gem от Erik Michaels-Ober [15].
С ним вы познаете ни с чем не сравнимое удовольствие, которое приносят разработчику смехотворные ограничения скорости запросов API от самой лояльной компании в мире.
Вы можете также ввести автоматическую подгрузку новых твитов и оповещений, как в Tweetdeck, применив polling или Action Cable.
Здесь тоже хватает вложенных компонентов и есть возможность попробовать реализовать простенькие анимации на React.
Возможно, лучше всего для начала ограничиться функцией чтения. Когда разберетесь с ней, можно подключать и другие возможности — постинг, лайки, ретвиты.
Проект №9 — OpenStreetMap с кастомным UI
Знали ли вы, что вебсайт OpenStreetMap [16] — это приложение, написанное на Rails?
По ссылке [17] вы можете найти репозиторий, установить [18] его на свой девайс и поработать с фротендом при помощи React!
Проект №10 — Русская рулетка с обедами для всей команды
Вебсайт, который поможет команде определиться, куда сегодня отправиться в обеденный перерыв. В плане бэкенда достаточно CRUD-приложения, которое дает вашим коллегам возможность предлагать различные заведения. Для функций поиска и автозаполнения можно использовать API от Foursquare [19]. А React позволяет добавить прикольные анимации!
Если идея с обедами вас не привлекает, организуйте таким образом кофе-брейк, или поход в бар после работы, или еще что-нибудь поинтереснее.
Проект №11 — Мастер прокрастинации
Все, что нужно, чтобы отлынивать от работы — на одном вебсайте. Читайте посты с Reddit, Hacker News, Product Hunt, Medium, Slashbot и так далее не переключаясь.
Используйте бэкенд на Rails, чтобы сохранять пользовательские аккаунты и предпочтения, а также чтобы устанавливать связь с разными API. Другой вариант — получать данные от API напрямую со стороны клиента.
Проект №12 — Чат с Action Cable
Это не только повод подучить Rails, но и отличная возможность опробовать Action Cable [20] — занятную функцию из Rails 5, которая обеспечивает поддержку WebSocket на Rails. Для начала можете ознакомиться с этими примерами [21].
Проект №13 — Клон Medium [22]
Почитайте серию постов [23] из блога Andrea Mazzini [24], в которых он подробно рассказывает о процессе создания клона Medium при помощи Rails API приложения, React и Flux.
Можно обойтись из без Flux, но, если хотите немного усложнить себе задачу, имеет смысл его подключить.
Проект №14 — Face tagger
Приложение, которое позволяет загружать фотографии и отмечать на них пользователей (как на Facebook). Для автоматического распознавания лиц используйте OpenCV Ruby gem [25] по ссылке.
Проект №15 — ActiveAdmin на стероидах
Вы наверняка пользовались ActiveAdmin [26], чтобы отслеживать процесс работы над приложением. Но интерфейс у него, честно говоря, так себе. Вы можете это исправить, превращая один экран за другим в стилизованные компоненты React.
Поизучать код ActiveAdmin можно здесь [27].
Проект №16 — Магазин Brexit
React на Rails предлагает посетителям джем, пиво, английские флаги, карри и многое другое. Если не хотите реализовывать функции, необходимые для магазина, на Rails, используйте Spree [28], а сами сосредоточьтесь на применении компонентов React при работе над фронтендом.
Проект №17 — Просто почта и никаких шимпанзе
Почтовый клиент с хорошим интерфейсом, от которого пользователю не захочется рвать на себе волосы. И без всяких там глупостей вроде миленьких мартышек.
API от Mailchimp [29] вам, тем не менее, сгодится. Либо можете в качестве альтернативы обратиться к Sendgrid [30]. Если вам доводилось работать с Mailchimp, то сами знаете, что функций, которые можно попытаться внедрить, масса — просмотр, фильтры, управление подписчиками, создание форм и кампаний и так далее.
Выберите что-то одно и постарайтесь реализовать. Большая часть функций подразумевает наличие некоторой формы, так что это ваш шанс попрактиковаться в разделении интерфейса на компоненты React, которые отображают изменения состояния, и функциональные компоненты, с состоянием не связанные.
Проект №18 — Gmail на Rails
У Gmail интерфейс весьма сложный, однако можно для начала ограничиться созданием UI для вывода списка писем и чтения. Или, может быть, для поиска, если вам так интереснее?
Воспользуйтесь этим API gem для Gmail [31], а также туториалом и репозиторием кода [32] от Mark Brown [33], чтобы проще было начать.
Проект №19 — DJ Spotify
DJ приложение на основе Spotify [34]. Получайте рекомендации, создавайте и миксуйте плейлисты и даже позвольте другим добавлять песни в ваши плейлисты.
Используйте Ruby wrapper [35] gem для получения API Spotify.
Я как-то раз сделал приложение-малютку [36] с его помощью, и работать с ним было довольно просто. Spotify позволяет проигрывать музыку только через собственное приложение, так что придется запускать его параллельно с вашим.
Проект №20 — Панель Heroku
Как Rails-разработчик, вы скорее всего отлично знакомы с Heroku [37]. Это прекрасный сервис для быстрого развертывания и
Создайте простую панель, которая сгруппирует ваши приложения в список и позволит вам быстро выводить ключевую информацию о каждом из них. Следующим шагом может стать добавление функции редактирования.
Используйте этот gem [39], чтобы получить доступ к API Heroku.
Проект №21 — AWS S3 клиент
Сделайте хороший современный интерфейс для управления своим аккаунтом AWS S3
Используйте Ruby gem по ссылке [40] и начните с создания простого компонента управления файлами. Затем добавьте компонент формы для загрузки файлов.
Проект №22 — Панель аналитики Stripe
Панель, которая показывает статистику и графики, созданные на основании данных Striple [41]. У этого API отлично обстоят дела с документацией [42], и вдобавок у вас будет возможность попробовать использовать D3 с React (посмотрите тут [43] и тут [44]).
Проект №23 — Панель Google analytics
В своем исходном виде веб-панель Google аналитики слишком перегружена и трудна для восприятия. Вы можете сделать версию попроще, на которой будет отображаться только самая важная информация.
Еще одна возможность опробовать D3. Или же обратитесь к другой библиотеке [45]. Вы можете получить API Google analytics с помощью этого gem-а [46].
Проект №24 — Приложение для отслеживания привычек
Разработайте приложение для отслеживания своих ежедневных и еженедельных дел – утренние сборы, посещения тренажерного зала, пробежки, готовка, медитация, игра на гитаре, чайные церемонии. Источником вдохновения вам могут послужить Loop Habit Tracker [47] или Coach [48].
Адаптируйте свое приложение для мобильных устройств, чтобы можно было использовать его на ходу. Когда подружитесь с React, можно даже сделать мобильное приложение, используя React Native.
Проект №25 — Фитнес-панель
Создайте панель со своими персональными фитнес-данными, которая собирает информацию из разных приложений и выводит полезную статистику на симпатичный интерфейс.
Можно без проблем получать данные из самых разных API, в зависимости от того, какими сервисами пользуетесь вы и ваши близкие — Fitbit [49], Google Fit [50], Moves [51], Runkeeper [52], Strava [53], Withings [54] и так далее.
Вы можете даже позволить пользователю вручную вводить какую-нибудь несложную информацию типа изменений в весе или режима упражнений.
Начать лучше просто с вывода отчетов, а дальше уже улучшать панель, добавляя новые функции, например, возможность делать заметки или делиться результатами.
Проект №26 — Угадай, что я нарисовал (игра)
Создайте приложение-рисовалку, в котором нужно рисовать с помощью мышки, чтобы ваш друг угадывал, что за каляки-маляки вы изобразили. Для рисования вы можете использовать canvas. Посмотрите пример [55] от Michal Svrček [56], чтобы понять, с чего можно начать.
Используйте Rails, чтобы загрузить и сохранить рисунки, а затем показывать их кому-нибудь на другом девайсе. Или еще веселее: подключите машинное обучение [57] — и пусть угадывает ваш компьютер. ;)
Проект #27 — Вы пишете, как...
Сделайте приложение для классификации текстов, которое сравнит ваш стиль со стилем какого-нибудь известного автора – прямо как приложение 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
Нажмите здесь для печати.