Skip to content

Repository files navigation

📖 Snote — 为学习打造的多媒体整理工具

minSdk Compose Kotlin Release
stars watchers

一款简约而不简单的学习笔记应用,集笔记管理、待办追踪、专注统计与倒数日于一体。支持文字、图片、视频、音频及文件等多元内容类型,提供章节分级管理与图片涂鸦编辑,以结构化电子书的形式呈现知识体系,为学习者打造沉浸、高效的阅读与记录体验。

主页仪表盘 阅读页


✨ 核心特点

📚 我的笔记 · 📖 沉浸阅读

  • 五种内容类型 — 文字 / 图片 / 视频 / 音频 / 文件(Word、PDF、Excel)
  • 多级章节 — 笔记本 → 章 → 节 → 小节,最多 6 层嵌套,像装订一本电子书
  • 图片涂鸦编辑 — 手绘涂鸦、文字标注、裁切旋转,支持撤销与重做
  • 应用内录音 — 麦克风录制音频,播放条实时显示进度
  • 文件导入与重命名 — Word / PDF / Excel 导入查看,音视频文件自定义命名
  • 侧滑目录 — 左侧抽屉式多级章节大纲,翻页找节不再滚动
  • 阅读记忆 — 再次打开自动跳转到上次阅读的位置
  • 图片预览 — 双指缩放与拖拽查看
  • 星标重点 — 标记章节与内容,目录里一键筛选

我的笔记 章节目录抽屉

🔍 全文搜索

  • 全文本搜索 — 标题匹配(笔记本名 / 章节名)、内容匹配(文字内容)、文件名匹配(视频 / 音频 / 文件名称)
  • 按类型筛选 — 三类匹配多选过滤,结果带上下文与所在路径
  • 点击即达 — 搜索结果直接跳进对应章节

全局搜索

✅ 待办中心

  • 双区管理 — 未完成 / 已完成分区,复选框完成确认与撤销,数据跨区迁移完整保留
  • 全类型待办 — 与笔记模块一致:文字、图片、视频、音频、文件都能挂上待办
  • 涂鸦不丢 — 与笔记模块相同的图片编辑体验,编辑历史在两个分区间自由切换不丢失

待办中心 待办内容

一条待办也能挂图片、录音、文件 —— 和笔记一样丰富

📊 专注统计

  • 自动计时 — 进入阅读页自动开始计时,切到后台自动暂停
  • 扇形图展示 — 当日学习时长按科目可视化,Top3 科目 + 其他分组
  • 日期切换 — 左右翻页查看任意一天的学习统计

专注统计

⏳ 倒数日

  • 两列网格 — 倒计时卡片一目了然
  • 动态配色 — 数字颜色按剩余天数自动变化,紧急程度一眼可见
  • 日期选择 — 点击 FAB 添加,日历选择目标日期
  • 编辑管理 — 点击卡片可修改名称 / 日期,内设删除按钮

倒数日

🎨 界面与体验

  • 全局统一动效 — 页面转场、弹窗、按压反馈全部采用一致的弹簧(非线性)动画:弹窗从触发的按钮放大进入,页面切换带方向感视差,点击处处有回弹
  • 三套主题配色 — 清砚静蓝 / 书卷桃粉 / 笺页雾紫,设置页随时切换、即时生效,完整适配深色模式
  • 首页仪表盘 — 四模块卡片入口 + 随机励志语录,离开首页时无感预换
  • 权限门控 — 未授予文件权限时显示引导页

设置


📱 存储与隐私

所有数据只存储在 Documents/Snote/ 目录这一个地方,无内置示例数据:

  • 极轻量 — App 体积不受内容数量影响;编辑产生的冗余伴生文件,启动时自动清理
  • 删了就是删了 — App 内数据与该文件夹严格同步:删除整个 Snote 文件夹(或其中的数据文件),App 内对应数据即清空;App 不在别处保留任何副本
  • 卸载不丢失 — 删除 App 后数据文件保留在公共文档目录,重新安装并授予权限后自动恢复。备份 / 迁移只需用文件管理器复制整个 Snote 文件夹
  • 隐私安全 — 无网络权限,所有数据全程存储于本地
  • 数据保护 — 强制权限校验,JSON 全部原子写入(先写临时文件再重命名),崩溃不会产生损坏的半截数据

系统会请求「所有文件访问」权限用于读写 Documents/Snote/ 目录,未授予将无法使用 App(最低支持 Android 11)。


🛠 技术栈

类别 技术
语言 Kotlin
UI Jetpack Compose + Material 3
架构 MVVM + Repository
依赖注入 Hilt(Dagger)
图片加载 Coil
JSON 解析 Gson
数据存储 JSON 文件(Documents/Snote/)+ SharedPreferences(设置项)

🚀 使用方式

直接下载安装(推荐)

前往 Releases 页面 下载最新 APK。

从源码构建

git clone https://github.com/XxuCyprus/Snote.git

需要 JDK 21 及以上版本。用 Android Studio 打开项目,等待 Gradle Sync 完成后 Run。

目前仅支持 Android 平台,暂无 iOS / HarmonyOS 适配计划。


📂 项目结构

Snote/
├── app/                          # 主应用模块
│   ├── build.gradle.kts
│   └── src/main/
│       ├── AndroidManifest.xml
│       ├── res/                   # 布局与资源文件
│       └── java/com/snote/app/
│           ├── data/              # 数据模型 & 仓库 & 文件管理
│           │   ├── model/          # 数据模型
│           │   ├── repository/     # 仓库层
│           │   └── storage/        # 文件存储
│           ├── di/                # Hilt 依赖注入
│           └── ui/                # Compose UI 层
│               ├── anim/          # 全局统一动效规范(弹簧参数/按压反馈)
│               ├── screen/main/   # 主页仪表盘(四模块入口)
│               ├── screen/home/   # 我的笔记(笔记本列表)
│               ├── screen/todo/   # 待办中心
│               ├── screen/stats/  # 专注统计
│               ├── screen/countdown/ # 倒数日
│               ├── screen/reader/ # 阅读页(章节 + 内容)
│               ├── screen/settings/ # 设置页
│               ├── screen/search/ # 搜索页
│               ├── screen/permission/ # 权限门控页
│               ├── navigation/    # 导航图
│               └── theme/         # Material 3 主题
├── image/                        # 图片编辑器独立模块
│   └── src/main/java/me/minetsh/imaging/
│       ├── core/                  # 核心编辑逻辑(涂鸦/贴纸/裁切/动画)
│       └── view/                  # 自定义 View 组件
├── assets/                       # 应用截图 / 赞赏码 / 社交预览图
├── .github/                      # Issue 模板 / 赞助配置
├── gradle/                       # Gradle Wrapper
├── build.gradle.kts
├── gradle.properties
├── LICENSE.md
├── SECURITY.md
└── settings.gradle.kts

🙏 致谢

  • imaging(minetsh)— 图片编辑模块(涂鸦 / 文字标注 / 裁切旋转)基于该项目改造,感谢原作者

📄 许可证

本项目采用 CC BY-NC-SA 4.0 许可证。使用本项目的代码须遵守署名、非商业性使用、相同方式共享的条款。


☕ 赞赏

如果觉得 Snote 对你有帮助,欢迎请我喝杯奶茶,谢谢 ✨

微信赞赏      支付宝赞赏


Made with ❤️ by Lnaaa

About

为学习者打造的极简笔记整理工具 — 支持文字、图片、视频、音频与文件等多种内容,以章节分级的方式编织成结构化的知识体系,内置待办追踪、专注统计与倒数日,让每一份笔记都有章可循

Topics

Resources

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages