ごみの収集日をカレンダー形式で表示、通知するアプリです。
Alexaスキルとアカウントリンクして、Alexaからゴミ出し日を確認できます。
モジュラモノリス+レイヤードアーキテクチャを意識して以下のようなプロジェクト構成にしています。
application: Androidプラットフォーム依存のモジュール。DI設定や起動時の初期処理を実装。module: アプリの主要機能を提供するモジュール群。機能をモジュールとして捉えて、モジュールごとに以下のパッケージで構成する。dto: ユースーケースが管理するDTO。usecaseに入れても良いのだが、serviceでも利用するため切り出した。entity: ドメインモデル。infra: データアクセスのためのrepositoryやAPIクライアントの実装。data: インフラ実装内で扱うデータモデル。usecaseやserviceには公開しない。model: 主にAPIクライアントで扱うリクエスト・レスポンスモデル。
presentation: ユーザインターフェースのためのViewModelやView。view: ActivityやComposableの実装。view_model: ViewModel。
service: モジュールの境界を超えて別のモジュールから利用するサービスの実装。原則として入出力はDTOを利用する。usecase: ユースケースの実装。presentationとの入出力にはDTOを利用する。
ui: Material Designのコンポーネントやカラースキームを提供するモジュール。