Skip to content

Commit

Permalink
first commit
Browse files Browse the repository at this point in the history
  • Loading branch information
VIPyinzhiwei committed Dec 21, 2024
0 parents commit 94eb412
Show file tree
Hide file tree
Showing 69 changed files with 3,328 additions and 0 deletions.
16 changes: 16 additions & 0 deletions .gitignore
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/**
123 changes: 123 additions & 0 deletions README-en.md
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
122 changes: 122 additions & 0 deletions README.md
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
1 change: 1 addition & 0 deletions app/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
/build
106 changes: 106 additions & 0 deletions app/build.gradle.kts
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")
}
21 changes: 21 additions & 0 deletions app/proguard-rules.pro
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 added app/release/app-release.apk
Binary file not shown.
Binary file added app/release/baselineProfiles/0/app-release.dm
Binary file not shown.
Binary file added app/release/baselineProfiles/1/app-release.dm
Binary file not shown.
Loading

0 comments on commit 94eb412

Please sign in to comment.