一个基于 Next.js 14 和 Redux Toolkit 构建的 Apple Notes 克隆应用,完美复刻了 Apple Notes 的界面和功能。
- 📝 笔记管理:创建、编辑、删除笔记
- 📁 文件夹组织:创建文件夹层次结构来组织笔记
- 🔍 搜索功能:快速搜索笔记内容
- 📌 置顶功能:重要笔记可置顶显示
- 🏷️ 标签系统:为笔记添加标签进行分类
- 🌓 深色模式:支持深色/浅色主题切换
- 📱 响应式设计:适配各种屏幕尺寸
- 前端框架:Next.js 14.1.0
- 状态管理:Redux Toolkit
- UI 组件:React 18 + Lucide React Icons
- 样式:Tailwind CSS + 自定义 Apple 风格主题
- 类型检查:TypeScript
- 日期处理:date-fns
- 开发工具:ESLint, Prettier
- Node.js 16.x 或更高版本
- npm 或 yarn
npm installnpm run dev访问 http://localhost:3000 查看应用。
npm run build
npm run startnpm run dev- 启动开发服务器npm run build- 构建生产版本npm run start- 启动生产服务器npm run lint- 运行 ESLint 检查npm run typecheck- 运行 TypeScript 类型检查npm run format- 格式化代码npm run validate- 运行所有检查(lint + typecheck + format)npm run analyze- 分析构建包大小
applenotes/
├── src/
│ ├── app/ # Next.js 14 App Router
│ ├── components/ # React 组件
│ │ ├── Sidebar/ # 侧边栏组件
│ │ ├── NotesList/ # 笔记列表组件
│ │ ├── NoteEditor/ # 笔记编辑器组件
│ │ └── Toolbar/ # 工具栏组件
│ ├── store/ # Redux store 配置
│ │ ├── slices/ # Redux slices
│ │ └── hooks.ts # 类型化的 Redux hooks
│ └── types/ # TypeScript 类型定义
├── public/ # 静态资源
└── CLAUDE.md # 项目开发指南
应用使用 Redux Toolkit 管理状态,包含三个主要 slice:
- notesSlice:管理笔记的 CRUD 操作
- foldersSlice:管理文件夹层次结构
- uiSlice:控制 UI 偏好设置
{
id: string
title: string
content: string
folderId: string | null
createdAt: string
updatedAt: string
isPinned: boolean
tags: string[]
}{
id: string
name: string
icon?: string
parentId: string | null
createdAt: string
}- 在相应的 slice 中添加新的 Redux 状态
- 更新
store/store.ts包含新的 reducer - 使用
useAppSelector和useAppDispatchhooks - 遵循现有的组件模式(客户端渲染、类型化 props、Redux 集成)
- 使用 Tailwind CSS 类
- 自定义 Apple 主题色彩定义在
tailwind.config.js - 支持深色模式通过
dark:前缀
项目可以部署到任何支持 Next.js 的平台:
- Fork 本仓库
- 创建特性分支 (
git checkout -b feature/amazing-feature) - 提交更改 (
git commit -m '添加一些新功能') - 推送到分支 (
git push origin feature/amazing-feature) - 开启 Pull Request
本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情。
- 感谢 Apple Inc. 提供的设计灵感
- 感谢 Next.js 和 Redux 团队的优秀工具
- 感谢所有贡献者的支持