- Kotlin 100%
| app | ||
| common | ||
| feed | ||
| finance | ||
| gradle | ||
| promo | ||
| stories | ||
| tickers | ||
| .gitignore | ||
| ADR.md | ||
| build.gradle.kts | ||
| gradle.properties | ||
| gradlew | ||
| gradlew.bat | ||
| README.md | ||
| settings.gradle.kts | ||
SuperFinancer
🔗 Быстрые ссылки
✨ Образ приложения
SuperFinancer - удобное и быстрое приложение для занятых людей. Элегантный дизайн и понятный интерфейс отлично подойдут Т-Боссу, чьё время нельзя тратить попусту. Большая часть функционала доступна оффлайн.
🔧 Базовые требования
Все фичи, вкладки и сценарии реализованы. Ниже немного текста, больше скриншоты. Если лень смотреть, можете промотать сразу к доп. фичам
BFR 1/2 – ✅
Весь функционал реализован. Дизайн система - Material3 с кастомной темой. Шрифтовая пара - PT Serif / Inter.
BFR 3/4 – ✅
Чтобы зарегистрировать модуль поиска достаточно имплементировать интерфейс SearchAdapter и указать его в списке адаптеров.
WebView реализован и доступен везде, где есть ссылка на статью.
BFR 5 – ✅
Весь функционал реализован: создание и закрытие финансовых целей, отслеживание транзакций и статистики.
BFR 6 – ✅
Лента реализована: есть свёртка поста, фото, тэги. Модуль зависит только от модуля статей (что логично).
Избранное живёт отдельно и открывается по паролю.
🚀 Дополнительные фичи
- Отдельный экран просмотра тикера с интересной статистикой
- Красивый и унифицированный Pull to Refresh на главной
- Кэширование статей и секкций, доступ к ленте и фильтрам оффлайн + пагинация + инвалидация кэша
- Вебсокеты для тикеров, обновление в реальном времени (да, они работают, просто из-за часового пояса биржа часто закрыта)
- Легко расширяемый поиск (не завязан на внутреннюю архитектуру модуля)
- Детальная статистика в финансовом планировщике
📝 Документация
Architectural Decision Record
Установка
- Добавьте переменные NYT_TOKEN, FINNHUB_TOKEN в
./secrets.properties
Собрать приложение в режиме отладки (не рекомендуется):
./gradlew assembleDebug
Собрать приложение в режиме релиза:
- Создайте
./app/superfinancer.jks - Добавьте переменные KEYSTORE_PASSWORD, KEY_ALIAS, KEY_PASSWORD в
./secrets.properties
./gradlew assembleRelease
Структура проекта (модули и интеграция)
app - само приложние, включает навигацию, тему и специфичные для Android решения
common - компоненты, которые используются во всех модулях
tickers - тикеры (акции)
finance - финансовый планировщик
stories - статьи с NYT
feed - лента постов (заделка под соцсеть), зависит от stories
Все модули выстроены так, чтобы как можно меньше зависеть друг от друга, чтобы сделать приложение более масштабируемым и тестируемым. Все публичные API модулей находятся в их корне. Всё остальное же расположено по слоям Clean Architecture (data, domain, ui) и помечено internal.