Доска объявлений
Аналог avito.ru. Сервис, на котором можно размещать объявления и выполнять поиск по существующим. Включает в себя процессы публикации и управлении объявлениями, продвинутый поиск и многое другое.
Цель
Третий проект – полноценный веб-сайт на базе фреймворка Ruby On Rails. Здесь отрабатываются навыки работы с формами, загрузка файлов, валидация, управление доступами. Для описания процесса используются конечные автоматы.
Мощь фреймворка Ruby On Rails и выразительность Ruby позволяют в сжатые сроки создавать полноценные веб-приложения. Не зря RoR называют фреймворком стартапов.
Ruby On Rails является отличным фреймворком для стартапов и быстрой проверки гипотез. Благодаря концепции "соглашения по конфигурации" программисты могут писать код меньше думая. Большинство вещей за них делает фреймворк и предоставляет удобное дефолтное поведение. Также это позволяет новым разработчикам с легкостью участвовать в проекте.
Помимо удобных инструментов, необходимо еще правильно спроектировать приложение. В этом помогает архитектура REST-приложений, которая позволяет создавать масштабируемые приложения в простой форме. Благодаря этой концепции мы можем наше приложение модифицировать и расширять не теряя гибкости.
С появлением новых разделов на сайте (личный кабинет, админка) появляется необходимость в разделении прав пользователей и авторизации действий. Гем Pundit позволяет это достичь, создав простую систему авторизации для различных ресурсов. Это позволяет разным ролям дать различные права.
Зачастую с ростом проекта растёт и его сложность. Особенно там, где возникает работа с состоянием или процессом, например, публикация контента. К примеру в блоге в простейшем случае статья может быть или не быть опубликованной. Но при появлении нового состояния, возникает сложность и количество переходов. Статья может создаваться в статусе черновика, далее проходить премодерацию и публиковаться. Из одного состояния например можно перейти (опубликованная статья отправляется в архив), а из другого нет. Если решать такую задачу в лоб, то приходится учитывать все эти состояния и условия. Для упрощения сложности и работы с состояниями используют конечные автоматы. В Ruby On Rails для этого есть гем AASM, который позволяет описать в декларативной форме состояние и переходы.
В конечном счете любое приложение, большое или маленькое, сложное или простое, нужно доставить до конечно пользователя. И хорошо при этом быть уверенным в том, что оно будет рабочим и проверенным. В этом помогают автоматизированные тесты CI на Github Actions и хостинг на Heroku, куда приложение, подключенное к реальной базе, будет выкладываться автоматически по коммиту разработчика.
Описание
Bulletin Board – Сервис-аналогAvito, в котором пользователи могут размещать объявления и откликаться на них и связываться с продавцом. Каждое объявление проходит премодерацию администраторами сервиса. Администраторы могут вернуть объявление на доработку, опубликовать или отправить в архив.
Наставники




Проекты входят в стоимость обучения на любом плане: самостоятельном, групповом и индивидуальном. Дополнительно платить не нужно.
Проекты дают опыт разработки в реальной среде. Проходите каждый проект сразу после изучения курсов, которые стоят в учебном плане перед ним, — это отличный способ глубже разобраться в материале.
Проекты — портфолио программиста. Их код останется в вашем аккаунте на GitHub и будет преимуществом при поиске работы.
Чтобы узнать о том, что такое проекты и в чём их польза, прочитайте нашу статью «Анатомия проектов Хекслета».
Задавайте вопросы в разделе «Обсуждение» на странице шага, на котором возникли трудности, или вашему наставнику. Изучите вопросы других студентов в «Обсуждениях»: там собрана большая база знаний, ей можно и нужно пользоваться. Попросите о помощи в нашем Slack-чате в канале #hexlet-projects.
Автоматизированные тесты и линтер. В групповом и индивидуальном форматах наставник дополнительно проверит то, что тестами проверить невозможно (архитектуру проекта, правильность именования, удачность решений), и проведёт код-ревью, чтобы сделать проект ещё качественнее.
Нажмите на виджет в правом нижнем углу экрана и поищите ответ в нашей справке. Или сразу пишите на support@hexlet.io — вам ответит живой человек из команды Хекслета.