mybrary's Issues
本をアーカイブする前にダイアログを表示する
DeepLink の対応
- MyBookDetail(Public の場合のみ)
- その人のメモ
- MyBookDetail に🔗アイコンを設置
- BookDetail
- その本のメモ
- メモの詳細画面?
- ユーザープロフィール?
MyBook を長押ししたときの処理を実装する
- 何をできるようにする?
- ピン留め
- お気に入り
- アーカイブ
- 可視性変更
- どう表示する?
- Option Menu
- TopAppBar
データベースをRealm -> Roomに移行する
URL を sealed class でモデル化する
FCM でプッシュ通知を送信する
データベースの操作をRepositoryで定義する
Widget でピン留めしている本の Memo を書けるようにする
ColorScheme, Typography, Shapes をカスタムで定義する
MaterialTheme を使用せず、MybraryTheme で provide する
- Space も Spaces にする?
- UI デザイン的に、Typography を見直す
- shapes のサイズを sm, md, lg のような省略形で選択できるようにする
:core:domain モジュールを Java or Kotlin Library にする
他にも Android Library である必要がないモジュールは Java or Kotlin Library にする
Android View の不要な依存を削除する
本の検索でページング処理を実装する
通知チャンネルに対応した通知を実装する
参考
Mybrary DB を作る
Spring で API を作る
Firestore は NoSQL でキャッシュとして利用する Room と形式が異なるので、使用したくない
DB は MySQL を使用したい
本を追加する前にダイアログを表示する
メモを長押しして削除できるようにする
- 削除ではなく公開にするのアリ?
- 削除をどう入れ込むか検討
edgeToEdge の見直し
- Scaffold の中身をどうするか
Composable の命名見直し
- グリッド表示用の Item:Cell
- リスト表示用の Item:Row
ドメインオブジェクトの整理
MyBook と Book のままか、Book と ExternalBook か?
MyBook
@Serializable
data class MyBook(
val id: MyBookId,
val externalId: BookId,
val title: String,
val imageUrl: Url.Image,
val isbn10: String,
val isbn13: String,
val pageCount: Int, // 必要?
val authors: List<Author>, // 必要?
val isPinned: Boolean,
val isFavorite: Boolean,
val isArchived: Boolean,
)
Book
@Serializable
data class Book(
val id: BookId,
val title: String,
val imageUrl: Url.Image,
val isbn10: String,
val isbn13: String,
val pageCount: Int, // 必要?
val authors: List<Author>, // 必要?
)
Author
@Serializable
data class Author(
val name: String,
)
Note
@Serializable
data class Note(
val id: NoteId,
val myBookId: MyBookId, // 必要?
val content: String,
val fromPage: Int?,
val toPage: Int?,
@Serializable(with = LocalDateTimeSerializer::class)
val createdAt: LocalDateTime,
@Serializable(with = LocalDateTimeSerializer::class)
val editedAt: LocalDateTime?,
@Serializable(with = LocalDateTimeSerializer::class)
val postedAt: LocalDateTime?,
val likeCount: Int?,
)
DraftNote
@Serializable
data class DraftNote(
val myBookId: MyBookId, // 必要?
val content: String,
val fromPage: Int?,
val toPage: Int?,
)
User
buildVariants の整理
やること
- 開発環境の切り替えを productFlavor で行う
- dev, prod, mock
- Debug, Release
- applicationIdSuffix の追加
- isMinifyEnabled の見直し
- applicationId の接尾辞の設定
- アイコンを環境ごとに変える
参考
String Resources の整理
- 日本語
- 英語
匿名ログインの実装
書籍登録画面で本の写真を撮れるようにする
Repository をどの層に置くか調査し、修正する
現状
- Repository を data パッケージに置いている
- Impl が、 model で定義した変換メソッドを参照しているので、 data が domain に依存している
- 具体が抽象に依存すれば良いので、これで問題なさそう?
理想
- interfaces を domain に置き、 impl を data に置くべき?
- data が model に依存しないようにしたい
- domain で usecase を使用して、 usecase で変換すれば良い?
Snackbar の共通化
- 親の Scaffold で Snackbar をホストしたい
メモに対するいいね機能の実装
必要かどうかから検討
マルチモジュールにする
アプリの規模が小さいので、シンプルな構成に留めたい
現状の案としては、ui --> domain <-- data となる3モジュールでの構成
Now in Android のように、core, feature で構成
TODO
- 各クラスを internal にする
- 依存関係のバージョン管理
参考
MainActivityの処理をListFragmentに移行する
MainActivityにはBottomNavigationのみを置くようにしたい。
Supabase で DB を作成する
Dependency Dashboard
This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.
Open
These updates have all been created already. Click a checkbox below to force a retry/rebase of any.
- chore(deps): update all dependencies (
gradle
,io.github.jan-tennert.supabase:postgrest-kt
,io.github.jan-tennert.supabase:bom
,org.jetbrains.kotlinx:kotlinx-serialization-json
,com.google.devtools.ksp
,org.jetbrains.kotlin.plugin.serialization
,org.jetbrains.kotlin.plugin.parcelize
,org.jetbrains.kotlin.android
,org.jetbrains.kotlin.jvm
,com.google.dagger.hilt.android
,com.google.dagger:hilt-core
,com.google.dagger:hilt-android-compiler
,com.google.dagger:hilt-android
,io.coil-kt:coil-compose
,androidx.test.ext:junit-ktx
,androidx.lifecycle:lifecycle-runtime-compose
,androidx.test.espresso:espresso-core
,com.android.library
,com.android.application
)
Detected dependencies
bundler
Gemfile
github-actions
.github/workflows/gpt-review.yml
actions/checkout v4
actions/setup-python v5
.github/workflows/review-assign.yml
hkusu/review-assign-action v1.4.0
.github/workflows/run-lint.yml
actions/checkout v4
ruby/setup-ruby v1
actions/setup-java v4
actions/cache v4
.github/workflows/run-test.yml
actions/checkout v4
ruby/setup-ruby v1
actions/setup-java v4
actions/cache v4
gradle
gradle.properties
settings.gradle.kts
build.gradle.kts
app/build.gradle.kts
core/api/build.gradle.kts
core/common/build.gradle.kts
core/config/build.gradle.kts
core/data/build.gradle.kts
core/database/build.gradle.kts
core/design-system/build.gradle.kts
core/domain/build.gradle.kts
core/supabase/build.gradle.kts
core/ui/build.gradle.kts
feature/login/build.gradle.kts
feature/my-book-detail/build.gradle.kts
feature/my-book-list/build.gradle.kts
feature/search-books/build.gradle.kts
feature/verify-otp/build.gradle.kts
gradle/libs.versions.toml
androidx.compose:compose-bom 2024.06.00
androidx.hilt:hilt-navigation-compose 1.2.0
androidx.lifecycle:lifecycle-runtime-compose 2.8.2
androidx.navigation:navigation-compose 2.7.7
androidx.test.espresso:espresso-core 3.6.0
androidx.test.ext:junit-ktx 1.2.0
io.coil-kt:coil-compose 2.6.0
com.google.dagger:hilt-android 2.51.1
com.google.dagger:hilt-android-compiler 2.51.1
com.google.dagger:hilt-core 2.51.1
junit:junit 4.13.2
org.jetbrains.kotlinx:kotlinx-coroutines-core 1.8.1
io.ktor:ktor-client-android 2.3.12
com.google.android.material:material 1.12.0
com.squareup.okhttp3:okhttp 4.12.0
com.squareup.okhttp3:logging-interceptor 4.12.0
com.squareup.retrofit2:retrofit 2.11.0
com.squareup.retrofit2:converter-kotlinx-serialization 2.11.0
androidx.room:room-compiler 2.6.1
androidx.room:room-ktx 2.6.1
androidx.room:room-runtime 2.6.1
org.jetbrains.kotlinx:kotlinx-serialization-json 1.6.3
io.github.jan-tennert.supabase:bom 2.5.1
io.github.jan-tennert.supabase:postgrest-kt 2.5.1
com.android.application 8.5.0
com.android.library 8.5.0
com.google.dagger.hilt.android 2.51.1
org.jetbrains.kotlin.jvm 1.9.24
org.jetbrains.kotlin.android 1.9.24
com.google.devtools.ksp 1.9.24-1.0.20
org.jetbrains.kotlin.plugin.parcelize 1.9.24
org.jetbrains.kotlin.plugin.serialization 1.9.24
gradle-wrapper
gradle/wrapper/gradle-wrapper.properties
gradle 8.8
- Check this box to trigger a request for Renovate to run again on this repository
MyBook の可視性を変更できるようにする
- MyBookDetail の BottomAppBar にアイコンを追加
- 可視性を変更したときに Snackbar を表示
メモの fromPage, toPage の設計見直し
kapt から ksp に移行する
ログイン画面で AGSL を使用してみる
ktlint, Android Lint の CI を入れる
- ktlint
- Android Lint
ユーザー画面の作成
- Profile タブ
- ヘッダーに自分のプロフィール
- 自分のメモのリスト
NavHost の見直し
- 画面遷移時のアニメーション
- BottomSheet, Dialog を composable に含められないか
- Snackbar を各画面で持つか
database モジュールの整理
- :core:database:local を作成
- database モジュールから domain の依存を削除する
SafeArgs の導入
applicationId を修正
- kaito_dogi を kaito.dogi にする
GPT による自動 PR レビュー
UI デザインを Figma で作成する
TODO
- 既存の UI を Figma に書き起こす
-
Figma のリンクを README に貼る
ListViewModelの実装
パッケージ分けをする
設定画面の作成
- 機能
- アーカイブされた本の確認
- みんなのメモ機能をオフにする
- ログアウト
- 本の表示サイズ(優先度低)
- どのような導線にするか…
- BottomNavigation?
- Mybrary(Mybrary)
- Notes, Shared, Shared Notes(みんなのメモ)
- Profile(プロフィール)
- TopAppBar?
- BottomNavigation?
Retrofit の使い方を良い感じにする
Retrofit のインスタンスの DI を上手く書けるはずなので、修正する
README を編集する
ある程度リファクタが完了したら README をちゃんと書きたい
項目の案
- Mybrary
- アプリの概要
- Features
- 機能の説明
- スクショ(表で表示)
- 箇条書き(各スクショの説明)
- Design / デザイン
- Figma のリンク
- 機能の説明
- Architecture / アーキテクチャ
- アーキテクチャの説明
- Package Configuration / パッケージ構成
- Tech Stacks / 使用技術
- 使用技術の説明
- Project Rules / プロジェクトのルール
- Branch Rules / ブランチ戦略
- Commit Rulesコミット規則
- Coding Conventions / コード規約
参考
- Features, Dev Environment, Architecture
- Tech Stacks
- コード規約
長押ししたときに Haptics を振動させる
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.