Так получилось, что сейчас мы ищем в команду младшего Android-разработчика. Я много общаюсь с ребятами, которые только начинают свой путь в Android, и внимательно изучаю их GitHub — особенно те репозитории, которые они указывают в резюме.
И, если честно, картина выглядит немного печально. Приходишь на GitHub к кандидату, а там в лучшем случае лежат недоделанные наброски или абсолютно одинаковые, шаблонные проекты с популярных курсов. Сами по себе курсы — это плюс, на мой взгляд, но приложение с курсов выглядит у всех одинаково, и дальше названия я, как правило, не ухожу.
На собеседовании хочется видеть свой личный пет-проект. Проект, в котором человек самостоятельно придумал идею, организовал код, спроектировал архитектуру и наступил на свои собственные грабли. Я по своему опыту знаю, что именно самостоятельная разработка — от локальной базы данных до UI — дает самый мощный буст в навыках (особенно, когда одно и то же приложение переписал 3 раза =) ).
Поэтому у меня появилось желание помочь начинающим разработчикам. В этой статье я собрал идеи для пет-проектов, которые лично я бы оценил =), а также подобрал актуальные инструменты и бесплатные API для их реализации.
1. Картографическое приложение
Я не мог обойти эту тему, так как я долгое время занимался картами, и мне в целом приятна эта тема. Карты очень красиво могут выглядеть на устройстве и сложность проекта может сильно отличаться: от подключил SDK и дергаешь методы и до своей системы перевода геокоординат в координаты пикселей на экране, динамического выбора провайдера тайлов, конструирования своих офлайн карт и много всякого интересного.
Я бы предложил выбрать отдельно провайдера тайлов и отдельно библиотеку для рендеринга, а дальше накручивать дополнительные фичи.
Какой функционал может быть у такого приложения:
навигация и прокладывание маршрутов (в том числе для походов);
конструктор офлайн-карт;
метки на карте (пользовательские и возможность делиться ими);
поиск мест на карте — с помощью геодвижков;
виртуальные путешествия — когда вы строите маршрут, но не для того, чтобы идти по нему, а скорее как в настольной игре продвигаетесь по какой-то другой логике и передвигаете свой указатель (например, пересчитываете свои шаги за день);
карты с тематическими местами — например, все места для красивых фотографий в вашем городе;
можно продолжать придумывать до бесконечности =).
Инструменты:
Рендеринг карты: векторные тайлы — MapLibre, растровые — мне нравится библиотека mapcompose. Обе библиотеки имеют версию для KMP, а значит можно писать проект сразу под Android + iOS.
Где брать тайлы бесплатно: OpenStreetMap, Яндекс (есть лимит), MapTiler, ThunderForest, Bing (устаревшие данные), ArcGIS.
Поиск мест и маршруты: Nominatim, OpenRouteService.
2. Приложение для локального хранения паролей
Безопасность — отличная тема, чтобы показать на собеседовании, что вы понимаете, как работать с чувствительными данными, шифрованием и системными API. Это проект, который не требует бэкенда, но при этом может быть технически очень глубоким.
Какой функционал может быть у такого приложения:
надежное локальное хранение учетных данных с мастер-паролем;
генератор сложных паролей (с настройкой длины, спецсимволов и регистров);
автозаполнение паролей в других приложениях и браузере (Autofill Service);
вход по биометрии (отпечаток пальца или Face ID);
категоризация записей (соцсети, банки, заметки) и поиск по ним;
безопасный импорт/экспорт зашифрованных бэкапов базы данных локально.
Инструменты:
Шифрование и хранение: библиотека Tink от Google для криптографии. База данных — SQLCipher в связке с Room. Для KMP — связка SQLDelight + SQLCipher и multiplatform-settings.
Системные фичи: Android Autofill Framework, AndroidX Biometric.
UI/Архитектура: Jetpack Compose и MVI/UDF подход для строгого контроля состояний (заблокировано/разблокировано).
3. Приложение для прослушивания локальной музыки
Придётся разобраться с тем, как система работает в фоне =).
Какой функционал может быть у такого приложения:
сканирование устройства на наличие аудиофайлов;
воспроизведение музыки в фоне (Foreground Service);
управление плеером из шторки уведомлений и с экрана блокировки;
поддержка плейлистов, очереди воспроизведения и режимов (shuffle/repeat);
подтягивание обложек альбомов из метаданных трека;
таймер сна и эквалайзер.
Инструменты:
Воспроизведение и сессии: Media3 (ExoPlayer) — актуальный стандарт. Работа с
MediaSessionдля шторки.Работа с данными:
MediaStoreAPI для поиска локальных файлов,MediaMetadataRetrieverдля картинок и тегов.Фон: Foreground Services и корутины для передачи прогресса трека в UI.
4. Приложение для просмотра локальных видео
Проект с акцентом на сложный UI, обработку жестов и тонкую работу с конфигурацией экрана.
Какой функционал может быть у такого приложения:
плавное воспроизведение тяжелых локальных видеофайлов;
режим Picture-in-Picture (PiP, картинка-в-картинке);
управление жестами (свайпы по краям экрана для яркости и громкости, дабл-тапы для перемотки);
поддержка внешних субтитров (.srt) и переключение аудиодорожек;
блокировка экрана от случайных нажатий.
Инструменты:
Воспроизведение: Media3 (ExoPlayer) — поддержка субтитров и аппаратного ускорения.
UI/UX: Обработка жестов
pointerInput/detectDragGesturesв Compose.Системные фичи: Picture-in-Picture API, перехват смены ориентации (
onConfigurationChanged),WindowCompatдля Edge-to-Edge.
5. Приложение-мессенджер для работы с LoRa (на примере Meshtastic)
Для любителей "железок" и нестандартных протоколов (Meshtastic). Один из минусов - придётся купить 1-2 устройства, но они недорогие, как правило (год назад стоили 1,5-2 круб.). Из плюсов у Meshtastic есть открытый код на гитхаб. У меня был опыт написания модуля для подключения, настройки и передачи информации по этим девайсам и поверьте - если вы разберетесь в их проекте на гитхаб - это сильно прокачает ваши навыки чтения и понимания кода.
Какой функционал может быть у такого приложения:
подключение к LoRa-ноде (Heltec, LilyGO) по Bluetooth LE;
отправка и получение текстовых сообщений без интернета;
карта сети: отображение других узлов на карте с GPS-координатами;
просмотр телеметрии устройства (уровень заряда, SNR/RSSI);
настройка параметров радиомодуля.
Инструменты:
Связь (Bluetooth): Нативный BLE или реактивные обертки вроде RxBluetooth. Для KMP — библиотека Kable. Я бы рекомендовал писать без библиотек, т.к. там все достаточно просто (когда разберешься =)).
Парсинг данных: Protocol Buffers (Protobuf) через плагин для Kotlin/Java.
Карты: Интеграция с MapLibre для офлайн-карт с метками узлов сети.
Последний совет - выбирайте интересный вам проект, потому что даже идеальный проект не гарантирует вам трудоустройства в текущих реалиях рынка, я не понаслышке знаю об этом, т.к. сам сейчас нахожусь в поиске. И хотя мои проекты на гитхаб закрыты (хотя я ими лично пользуюсь и они доступны в сторах), я думаю, что для людей без опыта они могут сильно помочь в поиске работы. А могут и не помочь, поэтому хотя бы кайфанёте при разработке и узнаете что-то новое =).
MarkDoroshko
Здравствуйте!
Идея с приложением для хранения паролей мне понравилась, возьму на заметку)
Спасибо за статью!