-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
0 parents
commit 94eb412
Showing
69 changed files
with
3,328 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
*.iml | ||
.gradle | ||
/local.properties | ||
/.idea/caches | ||
/.idea/libraries | ||
/.idea/modules.xml | ||
/.idea/workspace.xml | ||
/.idea/navEditor.xml | ||
/.idea/assetWizardSettings.xml | ||
.DS_Store | ||
/build | ||
/captures | ||
.externalNativeBuild | ||
.cxx | ||
local.properties | ||
/.idea/** |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,123 @@ | ||
[中文](README.md) | English | ||
|
||
# Simple Todo | ||
|
||
A to-do list management app developed using the latest Android technology stack. | ||
|
||
## Screenshots | ||
|
||
<img src="screenshots/screenshots1.png" width="50%"/><img src="screenshots/screenshots2.png" width="50%"/> | ||
<img src="screenshots/screenshots3.png" width="50%"/><img src="screenshots/screenshots4.png" width="50%"/> | ||
<img src="screenshots/screenshots5.png" width="50%"/><img src="screenshots/screenshots6.png" width="50%"/> | ||
|
||
<br></br> | ||
|
||
## Download Experience | ||
|
||
- Scan QR code to install:<br></br> | ||
<a href="https://www.pgyer.com/YrsgyKDL"><img src="simpletodo.png"/></a> | ||
|
||
- [Click to download simpletodo.apk][1] | ||
|
||
## Features | ||
|
||
- ✅ Basic Task Management | ||
- Add, edit, and delete tasks | ||
- Mark tasks as complete/incomplete | ||
- Task priority support (High, Medium, Low) | ||
- Task notes support | ||
- Bulk selection and deletion | ||
|
||
- 🏷️ Category Management | ||
- Custom task labels | ||
- Label color customization | ||
- Task filtering by labels | ||
|
||
- ⏰ Time Management | ||
- Set task due dates | ||
- Due date notifications | ||
- Automatic overdue task detection | ||
|
||
- 🔍 Search and Filter | ||
- Task search | ||
- Show/hide completed tasks | ||
- Multi-dimensional task filtering | ||
|
||
## Technical Architecture | ||
|
||
- **UI**: Jetpack Compose + Material 3 | ||
- **Architecture Pattern**: MVVM | ||
- **Dependency Injection**: Hilt | ||
- **Local Storage**: Room | ||
- **Background Tasks**: WorkManager | ||
- **Asynchronous Processing**: Kotlin Coroutines + Flow | ||
|
||
## Project Structure | ||
|
||
``` | ||
app/src/main/ | ||
├── java/com/example/simpletodo/ | ||
│ ├── data/ # Data layer | ||
│ │ ├── local/ # Room database | ||
│ │ ├── model/ # Data models | ||
│ │ └── repository/ # Data repositories | ||
│ ├── di/ # Dependency injection | ||
│ ├── ui/ # UI layer | ||
│ ├── worker/ # Background workers | ||
│ ├── MainActivity.kt # Main activity | ||
│ └── TodoApplication.kt # Application entry | ||
└── res/ # Resources | ||
``` | ||
|
||
## Development Environment | ||
|
||
- Android Studio Hedgehog | 2023.1.1 or higher | ||
- JDK 17 | ||
- Android SDK 34 | ||
- Kotlin 1.9.0 or higher | ||
|
||
## Build and Run | ||
|
||
1. Clone the project | ||
|
||
git clone https://github.com/VIPyinzhiwei/SimpleToDo.git | ||
|
||
2. Open the project in Android Studio | ||
|
||
3. Sync Gradle dependencies | ||
|
||
4. Run the application | ||
|
||
## Main Dependencies | ||
|
||
- Jetpack Compose: UI framework | ||
- Room: Local database | ||
- Hilt: Dependency injection | ||
- WorkManager: Background task scheduling | ||
- Material3: Material Design 3 components | ||
- Accompanist: System UI controller | ||
|
||
## License | ||
|
||
[Apache License 2.0][2] | ||
|
||
## Contributing | ||
|
||
Contributions via Issues and Pull Requests are welcome. | ||
|
||
1. Fork the project | ||
2. Create your feature branch | ||
3. Commit your changes | ||
4. Push to the branch | ||
5. Create a Pull Request | ||
|
||
## Contact | ||
|
||
For questions or suggestions, feel free to: | ||
|
||
- Create an Issue | ||
- Email: [email protected] | ||
- Blog: vipyinzhiwei.com | ||
|
||
[1]:https://github.com/VIPyinzhiwei/SimpleToDo/raw/main/simpletodo.apk | ||
[2]:http://www.apache.org/licenses/LICENSE-2.0 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,122 @@ | ||
中文 | [English](README-en.md) | ||
|
||
# 简单待办 | ||
|
||
一个使用最新 Android 技术栈开发的待办事项管理应用。 | ||
|
||
## 应用截图 | ||
|
||
<img src="screenshots/screenshots1.png" width="50%"/><img src="screenshots/screenshots2.png" width="50%"/> | ||
<img src="screenshots/screenshots3.png" width="50%"/><img src="screenshots/screenshots4.png" width="50%"/> | ||
<img src="screenshots/screenshots5.png" width="50%"/><img src="screenshots/screenshots6.png" width="50%"/> | ||
|
||
<br></br> | ||
|
||
## 下载体验 | ||
|
||
- 扫描二维码安装:<br></br> | ||
<a href="https://www.pgyer.com/YrsgyKDL"><img src="simpletodo.png"/></a> | ||
|
||
- [点击下载 simpletodo.apk][1] | ||
|
||
## 功能特点 | ||
|
||
- ✅ 基础任务管理 | ||
- 添加、编辑、删除任务 | ||
- 任务标记完成/未完成 | ||
- 支持任务优先级(高、中、低) | ||
- 支持添加任务备注 | ||
- 批量选择和删除 | ||
|
||
- 🏷️ 分类管理 | ||
- 自定义任务标签 | ||
- 标签颜色定制 | ||
- 按标签筛选任务 | ||
|
||
- ⏰ 时间管理 | ||
- 设置任务截止日期 | ||
- 到期提醒通知 | ||
- 自动识别过期任务 | ||
|
||
- 🔍 搜索与过滤 | ||
- 任务搜索 | ||
- 显示/隐藏已完成任务 | ||
- 多维度任务筛选 | ||
|
||
## 技术架构 | ||
|
||
- **UI**: Jetpack Compose + Material 3 | ||
- **架构模式**: MVVM | ||
- **依赖注入**: Hilt | ||
- **本地存储**: Room | ||
- **后台任务**: WorkManager | ||
- **异步处理**: Kotlin Coroutines + Flow | ||
|
||
## 项目结构 | ||
|
||
``` | ||
app/src/main/ | ||
├── java/com/example/simpletodo/ | ||
│ ├── data/ # 数据层 | ||
│ │ ├── local/ # Room 数据库 | ||
│ │ ├── model/ # 数据模型 | ||
│ │ └── repository/ # 数据仓库 | ||
│ ├── di/ # 依赖注入 | ||
│ ├── ui/ # 界面层 | ||
│ ├── worker/ # 后台任务 | ||
│ ├── MainActivity.kt # 主活动 | ||
│ └── TodoApplication.kt # 应用入口 | ||
└── res/ # 资源文件 | ||
``` | ||
|
||
## 开发环境要求 | ||
|
||
- Android Studio Hedgehog | 2023.1.1 或更高版本 | ||
- JDK 17 | ||
- Android SDK 34 | ||
- Kotlin 1.9.0 或更高版本 | ||
|
||
## 构建与运行 | ||
|
||
1. 克隆项目 | ||
|
||
git clone https://github.com/VIPyinzhiwei/SimpleToDo.git | ||
|
||
2. 使用 Android Studio 打开项目 | ||
|
||
3. 同步 Gradle 依赖 | ||
|
||
4. 运行应用 | ||
|
||
## 主要依赖库 | ||
|
||
- Jetpack Compose: UI 框架 | ||
- Room: 本地数据库 | ||
- Hilt: 依赖注入 | ||
- WorkManager: 后台任务调度 | ||
- Material3: Material Design 3 组件 | ||
- Accompanist: 系统 UI 控制 | ||
|
||
## 许可证 | ||
|
||
[Apache License 2.0][2] | ||
|
||
## 贡献指南 | ||
|
||
欢迎提交 Issue 和 Pull Request 来帮助改进项目。 | ||
|
||
1. Fork 项目 | ||
2. 创建特性分支 | ||
3. 提交变更 | ||
4. 推送到分支 | ||
5. 创建 Pull Request | ||
|
||
## 联系方式 | ||
|
||
如有任何问题或建议,欢迎提交 Issue 或通过以下方式联系: | ||
|
||
- Email: [email protected] | ||
- Blog: vipyinzhiwei.com | ||
|
||
[1]:https://github.com/VIPyinzhiwei/SimpleToDo/raw/main/simpletodo.apk | ||
[2]:http://www.apache.org/licenses/LICENSE-2.0 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
/build |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,106 @@ | ||
plugins { | ||
alias(libs.plugins.android.application) | ||
alias(libs.plugins.kotlin.android) | ||
alias(libs.plugins.kotlin.compose) | ||
kotlin("kapt") | ||
id("com.google.dagger.hilt.android") | ||
} | ||
|
||
android { | ||
namespace = "com.example.simpletodo" | ||
compileSdk = 35 | ||
|
||
defaultConfig { | ||
applicationId = "com.example.simpletodo" | ||
minSdk = 26 | ||
targetSdk = 34 | ||
versionCode = 1 | ||
versionName = "1.0" | ||
|
||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" | ||
vectorDrawables { | ||
useSupportLibrary = true | ||
} | ||
} | ||
|
||
buildTypes { | ||
release { | ||
isMinifyEnabled = false | ||
proguardFiles( | ||
getDefaultProguardFile("proguard-android-optimize.txt"), | ||
"proguard-rules.pro" | ||
) | ||
} | ||
} | ||
compileOptions { | ||
sourceCompatibility = JavaVersion.VERSION_17 | ||
targetCompatibility = JavaVersion.VERSION_17 | ||
} | ||
kotlinOptions { | ||
jvmTarget = "17" | ||
} | ||
buildFeatures { | ||
compose = true | ||
} | ||
composeOptions { | ||
kotlinCompilerExtensionVersion = "1.5.4" | ||
} | ||
packaging { | ||
resources { | ||
excludes += "/META-INF/{AL2.0,LGPL2.1}" | ||
} | ||
} | ||
} | ||
|
||
dependencies { | ||
// AndroidX Core | ||
implementation(libs.androidx.core.ktx) | ||
implementation(libs.androidx.lifecycle.runtime.ktx) | ||
implementation(libs.androidx.activity.compose) | ||
|
||
// Compose | ||
implementation(platform(libs.androidx.compose.bom)) | ||
implementation(libs.androidx.ui) | ||
implementation(libs.androidx.ui.graphics) | ||
implementation(libs.androidx.ui.tooling.preview) | ||
implementation(libs.androidx.material3) | ||
implementation("androidx.compose.material:material-icons-extended:1.5.4") | ||
|
||
// System UI Controller | ||
implementation("com.google.accompanist:accompanist-systemuicontroller:0.32.0") | ||
|
||
// Room | ||
val roomVersion = "2.6.1" | ||
implementation("androidx.room:room-runtime:$roomVersion") | ||
implementation("androidx.room:room-ktx:$roomVersion") | ||
kapt("androidx.room:room-compiler:$roomVersion") | ||
|
||
// Hilt | ||
implementation("com.google.dagger:hilt-android:2.48") | ||
kapt("com.google.dagger:hilt-android-compiler:2.48") | ||
implementation("androidx.hilt:hilt-navigation-compose:1.1.0") | ||
|
||
// Coroutines | ||
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3") | ||
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3") | ||
|
||
// ViewModel | ||
implementation("androidx.lifecycle:lifecycle-viewmodel-compose:2.6.2") | ||
implementation("androidx.lifecycle:lifecycle-runtime-compose:2.6.2") | ||
|
||
// Testing | ||
testImplementation(libs.junit) | ||
androidTestImplementation(libs.androidx.junit) | ||
androidTestImplementation(libs.androidx.espresso.core) | ||
androidTestImplementation(platform(libs.androidx.compose.bom)) | ||
androidTestImplementation(libs.androidx.ui.test.junit4) | ||
debugImplementation(libs.androidx.ui.tooling) | ||
debugImplementation(libs.androidx.ui.test.manifest) | ||
|
||
// WorkManager | ||
implementation("androidx.work:work-runtime-ktx:2.9.0") | ||
|
||
// Material3 日期时间选择器 | ||
implementation("androidx.compose.material3:material3:1.2.0") | ||
implementation("androidx.compose.material3:material3-window-size-class:1.2.0") | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
# Add project specific ProGuard rules here. | ||
# You can control the set of applied configuration files using the | ||
# proguardFiles setting in build.gradle. | ||
# | ||
# For more details, see | ||
# http://developer.android.com/guide/developing/tools/proguard.html | ||
|
||
# If your project uses WebView with JS, uncomment the following | ||
# and specify the fully qualified class name to the JavaScript interface | ||
# class: | ||
#-keepclassmembers class fqcn.of.javascript.interface.for.webview { | ||
# public *; | ||
#} | ||
|
||
# Uncomment this to preserve the line number information for | ||
# debugging stack traces. | ||
#-keepattributes SourceFile,LineNumberTable | ||
|
||
# If you keep the line number information, uncomment this to | ||
# hide the original source file name. | ||
#-renamesourcefileattribute SourceFile |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Oops, something went wrong.