8 учебных проектов
Предлагаем 8 вариантов проектов, которые можно сделать «по фану», дабы получить реальный опыт разработки.
Проект 1. Клон Trello
- Организация маршрутов обработки запросов (Routing).
- Drag and drop.
- Как создавать новые объекты (доски, списки, карточки).
- Обработка и проверка входных данных.
- Со стороны клиента: как использовать локальное хранилище, как сохранять данные в локальном хранилище, как читать данные из локального хранилища.
- Со стороны сервера: как использовать базы данных, как сохранять данных в базе, как читать данные из базы.
Проект 2. Панель админа
Простенькое CRUD приложение, идеально подходит для изучения основ. Научимся:
- Создать пользователей, управлять пользователями.
- Взаимодействовать с базой данных — создавать, читать, редактировать, удалять пользователей.
- Проверка ввода и работа с формами.
Проект 3. Трекер криптовалют (нативное мобильное приложение)
На чем угодно: Swift, Objective-C, React Native, Java, Kotlin.
- Как работают нативные приложения.
- Как извлекать данные из API.
- Как работают нативные макеты страниц.
- Как работать с мобильными симуляторами.
Если интересно, вот тут туториал.
Проект 4. Настроить собственный конфиг webpack с нуля

Технически, это не приложение, но очень полезная задача, чтобы понять как работает webpack изнутри. Теперь это будет не «черный ящик», а понятный инструмент.
- Компилировать es7 в es5 (основы).
- Компилировать jsx в js — или — .vue в .js (придется выучить загрузчики)
- Настроить webpack dev server и hot module reloading. (vue-cli and create-react-app use both)
- Использовать Heroku, now.sh или Github, научиться развертывать webpack проекты.
- Настроить свой любимый препроцессор, чтобы компилировать css — scss, less, stylus.
- Изучить как использовать изображения и svgs с webpack.
Проект 5. Клон Hackernews
Каждый джедай обязан сделать свой собственный Hackernews.
Что вы освоите по дороге:
- Как взаимодействовать с hackernews API.
- Как создать одностраничное приложение.
- Как реализовать такие фичи, как просмотр комментариев, отдельных комментариев, профилей.
- Организация маршрутов обработки запросов (Routing).
Проект 6. Тудушечка
Серьезно? Тудушка? Их же тысячи. Но поверьте, есть причина такой популярности.
Туду-приложение — это отличный способ удостовериться, что понимаешь основы. Попробуйте написать одно приложение на ванильном Javascript и одно на своем любимом фрэймворке.
- Создавать новые задачи.
- Проверять заполнение полей.
- Фильтровать задачи (завершена, активна, все). Используйте filter и reduce .
- Понимать основы Javascript.
Проект 7. Сортируемый drag and drop список
Очень полезно, чтобы понять drag and drop api.
- Drag and drop API
- Создавать rich UIs
Проект 8. Клон мессенджера (нативное приложение)

Вы будете понимать как работают и веб приложения и нативные приложения, что выделит вас из серой массы.
Идеи проектов для начинающих программистов. Часть 1
Перевод первой части статьи «Starter Project Ideas for Developers».
Image by mohamed Hassan from Pixabay
Представляем вам список проектов для начинающих разработчиков. Хотя конечно, этими проектами вполне могут заняться и опытные программисты, осваивающие новый для себя язык.
Каждая идея в нашем списке будет сопровождаться подробным описанием, примерами и советами. Отталкиваясь от всего этого, вы сможете создать свой собственный, уникальный проект.
Примеры в статье будут ориентированы больше на JavaScript-разработчиков, но сами идеи вполне пригодны для любого языка программирования.
Засучиваем рукава
Изучаем основы программирования с фокусом на создание, чтение, модификацию и удаление данных (CRUD).
Генератор имен
Image by Gerd Altmann from Pixabay
Придумывать имена сложно. Кажется, что в наше время все варианты username уже использованы. Почему бы не сделать так, чтобы вместо нас имена генерировал компьютер? Идея такого генератора очень проста. Вам потребуются лишь базовые знания языка программирования.
Для начала, следует определиться с тем, какого рода имена вы хотите генерировать (username, имена фантастических героев, персонажей книг или обычные имена). Также нужно придумать, из каких частей будут составляться эти имена.
После того как придумаете, что за имена будет генерировать ваша программа, нужно обдумать, как вы будете хранить данные (имена собственные, имена существительные и прилагательные, титулы и т. п.). Все это можно прописать жестко и хранить в файловой системе, используя CSV или текстовый файл. Можно извлекать из API. Можно хранить в базе данных. Если вы начинающий программист, изучите, какие структуры данных поддерживает ваш язык (объекты, списки, массивы, hashmap) и поэкспериментируйте с ними.
Финальный шаг — рандомный выбор ключевых слов из ваших данных, комбинирование их каким-то заранее прописанным образом и вывод результата. Причем выводить результат можно в консоли, в браузере, в графическом интерфейсе или вообще записывать в текстовый файл.
В чем смысл такого проекта
Это более продвинутый проект, чем hello world, но попроще или равный по сложности списку задач. То есть, это хороший проект для начинающих.
Занимаясь этим проектом, вы будете осваивать:
- основы языка программирования;
- простые структуры данных;
- чтение данных и рандомный выбор их частей;
- вывод данных.
Как можно усложнить проект
- Генерируйте выбранные случайным образом названия объектов и выводите на экран изображения этих объектов. Это может быть полезным инструментом для людей, связанных с искусством.
- Генерируйте имена персонажей игр или названия объектов с приложением их мини-историй.
- Генерируйте темы для писателей.
- Добавьте возможность ввода данных пользователем. Это может быть список слов, из которых будет делаться выборка, или имя пользователя, которое будет использоваться в качестве основы для производных имен.
Примеры:
-
— генерирует названия блюд, блогов, имена пользователей, просто имена людей и т. д.
- Fantasy Name Generator — фэнтезийные имена для игр и пр. — выводит изображения случайных объектов.
(От редакции. Как часто вам случалось в соцсетях читать комментарии типа «лучше бы ямы залатали», «лучше бы дороги отремонтировали», «лучше бы на детей внимание обратили»? Можно создать специальный «лучшебыгенератор», случайным образом выдающий «лучше бы» предложение. Реализация — веб-страница. Применение — отвечать советчикам в комментариях, давая ссылку на страницу. Пример можно посмотреть здесь).
Список кодов символов
Image by Sergei Tokmakov from Pixabay
Список эмодзи или других специальных символов для копипаста. Общую идею можно реализовать в совершенно разных приложениях. Например, это может быть справочник, а может — приложение, которое будет конвертировать в код введенный пользователем текст.
В чем смысл такого проекта
Этот проект — хорошая отправная точка, если вы хотите научиться принимать пользовательские данные, обрабатывать их и выводить результат.
Занимаясь этим проектом, вы будете осваивать:
- работу с текстом и кодами символов;
- пользовательский input;
- текстовый output.
Как можно усложнить проект
- Генерируйте рандомный список эмодзи.
- Реализуйте шифратор и конвертируйте с его помощью текст в эмодзи.
- Реализуйте эту идею в виде десктопного или веб-приложения.
Примеры:
-
— приложение-справочник по эмодзи.
- Text to ASCII — конвертирует текст в код ASCII.
Конвертер текста и чисел
Image by 272447 from Pixabay
Конвертирует числа в двоичную или любую другую систему счисления, а текст видоизменяет (шифрует, переворачивает и т. п.).
В чем смысл такого проекта
Вы не только создадите полезный инструмент, но и научитесь работать с числами и текстом.
Занимаясь этим проектом, вы будете осваивать:
- input, output;
- работу с текстом и числами.
Как можно усложнить проект
- Разрешите пользователю загружать или выбирать текстовый файл, который затем будет конвертироваться и выводиться в виде нового файла.
- Реализуйте собственный шифратор (не забудьте добавить методы для дешифровки!).
- Используйте GUI или веб-интерфейс с полем для ввода текста и полем, где будет показываться видоизмененный текст. Конвертируйте input по мере ввода.
Примеры:
- Шифр Цезаря — простая техника шифрования со сдвигом букв алфавита.
- Текст в двоичный код.
- Перевод десятичных чисел в шестнадцатеричные.
- Переворачивание текста
Список задач и альтернативные полнофункциональные приложения
Image by Greg Montani from Pixabay
Наконец, список задач — идея, за которой вы все сюда и пришли. Шутка:) Но список задач, пожалуй, действительно один из самых распространенных видов проектов, так что без него наша статья была бы неполной. Впрочем, мы все же постараемся добавить несколько интересных альтернатив.
В чем смысл такого проекта
Создание списка задач — отличный способ изучить работу с данными (CRUD), какой-то язык или фреймворк.
Например, вы изучаете JavaScript. Вы можете построить список задач для применения в браузере, используя DOM браузера и LocalStorage APIs. Затем вы создаете API списка задач в бэкенде, используя NodeJS, чтобы изучить, как работает REST API. Наконец, вы обращаетесь к десктопу и создаете еще один список задач, используя Electron — чтобы изучить работу десктопных приложений.
Еще один вариант прокачать свои навыки, связанные с CRUD, — использовать разные языки программирования. Вот вы создали все варианты списков задач на JavaScript. А теперь создайте какой-нибудь из них на C#, Java или Haskell и посмотрите, насколько будут отличаться процесс и результаты. Это поможет вам получить хорошее представление о языках.
Занимаясь этим проектом, вы:
- изучите создание, чтение, модификацию и удаление данных (а это основа любого приложения);
- получите хорошее представление о языке или каком-то инструменте.
Как можно усложнить проект
- Геймифицировать.
- Интегрировать с другими приложениями.
- Построить приложение на разных платформах (мобильное, десктопное, веб-приложение).
- Добавить напоминания в виде электронных писем или SMS.
Альтернативные варианты приложений для отработки навыков CRUD
- трекер упражнений;
- журнал;
- блог, форум (вроде Reddit);
- приложение для онлайн-банкинга (создание аккаунта, обновление счета и т. п.);
- текстовый редактор;
- приложение для планирования (календарь, kanban-доска);
- трекер привычек.
Примеры:
Секундомер и таймер
Image by Free-Photos from Pixabay
Таймер может быть как простым, так и довольно сложным и интересным.
В чем смысл такого проекта
Это полезное приложение, которое вы в конечном итоге сможете использовать (или заново реализовать) в каком-то другом проекте.
Занимаясь этим проектом, вы будете осваивать:
- работу с датами и временем;
- особенности написания кода для постановки приложения на паузу и возобновления его работы;
- отображение и постоянное обновление значений.
Как можно усложнить проект
- Создайте какой-то специфический таймер, например, для применения «приема помидора».
- Проигрывайте музыку или отсылайте уведомление при включении таймера.
- Сделайте так, чтобы ваш таймер работал на разных платформах (десктопная, мобильная и веб-версии).
- Интегрируйте таймер в другое приложение.
Примеры:
-
— Pomodoro-таймер — таймер для скоростного прохождения игры — приложение для отслеживания времени
В следующей части статьи мы рассмотрим идеи более сложных приложений. Больше никаких списков задач!
Подборка идей для программирования
Не секрет, что для хорошего программиста постоянно нужна практика. И лучше, если это будет разработка целостного проекта, а не простая бесполезная поделка. Но зачастую разработчикам сложно придумать, что бы такого реализовать, да ещё и с пользой для себя и для общества. В статье приведены идеи приложений, которые, конечно, не претендуют на уникальность, но помогут вам быстрее определиться с выбором софта, на котором можно потренироваться кодингу и поддержать себя в форме.
Список приложений разбит на группы:
Инструменты командной строки
- where-is – команда, помогающая находить путь к файлам. Вывод – список возможных локаций. Пример ввода: where-is grub config . Пример вывода: /boot/default/grub.d или /etc/grub.d .
- Улучшенная cd с поиском. При вводе cd Directory программа ищет каталог и переходит в него, если каталог с таким именем один. Если результатов несколько, предоставляет на выбор список.
- Утилита командной строки, которая выводит расширение файла. Пример команды: ext hello.jpg . Пример вывода: jpg .
- Утилита, которая генерирует случайную строку длины N. Пример команды: chars 10 . Пример вывода: gwrtp+5gl
Локальные, неинтерактивные инструменты
- Программа на USB-накопитель для автоматического перемещения файлов с флешки на ПК без предупреждений о «потенциальной угрозе».
- Обучение конфигурированию Apache из командной строки. По принципу работы должно быть похоже на githug.
- OCR (Optical Character Recognition) – инструмент для распознавания текста на изображении.
- Генератор глифов. Создает глиф для каждой буквы алфавита и сохраняет его в файле шрифта.
- Программа или скрипт на Bash, который ведет лог всех действий с отслеживаемыми файлами. Пример лога:
[23-02-2015] my/php/file.php [opened] - Программа для поиска в исходнике неиспользуемых функций. Примитивная попытка реализации.
- Программа, которая ищет захардкоженые элементы и предлагает им замену. К примеру, на использование строки «You can register by 30th of June» в HTML-шаблоне она должна давать предупреждение «You can register by REGISTRATION_DATE».
- Программа, которая конвертирует изображение в текстовый эквивалент. Пример: конвертация Image to ASCII.
- Программа, которая восстанавливает номер телефона по аудиофайлу его тонального набора. Подробности.
Настольные приложения
- Просмотр логов Apache — вывод в колонках, с поддержкой регулярных выражений. Утилиты вроде Graylog слишком перегружены для таких простых целей.
- Базовый редактор видео, который поддерживает полезный минимум функций, включая слияние двух видео.
- Кроссплатформенный менеджер подкастов (пример — gpodder). Функциональность:
- Добавлять / удалять подписки на подкасты.
- Теги для подписок (программирование, музыка, креатив и тому подобное).
- Поиск по тегу.
- Просмотр по тегу.
- Тамагочи.
- Что-то вроде игры в алхимию. Задача — выращивать в саду разные растения, нуждающиеся в определенных условиях. Когда растения вырастут, из них можно готовить разные зелья.
- Игра «Защити свой замок».
- «Ракетный ранец»: человечек должен добраться от одного края карты до другого на ракетном ранце, минуя препятствия.
Веб-сайты
- Онлайн-приложение для структурирования мыслей. Навигация по записям может быть в боковом меню:
- Todo: организованная структура списка дел.
- Notes: бессистемные идеи.
Сервисы
- Онлайн-бот, который следит за ценой товара на eBay/Amazon, и как только она достигает порогового значения, покупает его.
- Программа, которая мониторила бы на eBay/Amazon указанные продукты и уведомляла бы о падении цены или о том, что новый продавец добавил этот товар на витрину по меньшей цене. Альтернативный вариант — уведомление на почту, если цена товара достигла установленного значения.
- Генератор сайта по разметке Markdown, не требующий установки. Нужно просто отправить файл на сервер, и тот его отображает.
- Программа с открытым кодом для поиска и бронирования хостелов, похожая на на DormBooker, но бесплатная и более функциональная.
- Программное обеспечение с распознаванием голоса, контролируемое RaspberryPi, которое отслеживает количество произнесенных WTF (или других более родных слов) в минуту и выводит график продуктивности.

Только начали изучать программирование? Рекомендуем ознакомиться с нашим планом обучения Computer Science.