All-in-One Personal Data Recording Software
NoteDock is a comprehensive personal data management application that automatically organizes your daily records through AI analysis, generating smart schedules, memos, and memory summaries.
This is a monorepo project using pnpm workspaces for cross-platform code sharing.
notedock/
├── apps/
│ ├── mobile/ # React Native + Expo (iOS/Android)
│ ├── desktop/ # Electron + React (Windows/Mac/Linux)
│ └── server/ # Node.js + Express + SQLite (NAS)
├── packages/
│ ├── ui/ # Shared UI components & theme
│ ├── components/ # Business components (cards, etc.)
│ ├── hooks/ # React hooks & Zustand stores
│ ├── utils/ # Utility functions
│ └── types/ # TypeScript type definitions
└── pnpm-workspace.yaml
| Layer | Technology |
|---|---|
| Mobile | React Native + Expo |
| Desktop | Electron + React + Vite |
| Server | Node.js + Express + SQLite |
| State | Zustand |
| Navigation | React Navigation (mobile) / React Router (desktop) |
| Sync | MQTT |
| AI | Hybrid (Cloud API → Ollama local) |
| Voice | Whisper (端侧优先) |
- Style: Neumorphism + Card-based
- Background:
#F8F8F8 - Primary:
#1A1A1A - Accent:
#FFC107
- 登录页 (Login) - Email + Password authentication
- NAS绑定页 (NAS Binding) - Connect to personal NAS server
- 记录页 (Record) - Create and browse records (text/image/voice/location/link)
- 智能分析页 (Smart) - AI-generated schedules, memos, memories
- 我的页 (Profile) - User settings, NAS status, PRO subscription
TypeScript interfaces for User, Record, Schedule, Memo, Memory, NAS, Auth types.
Theme configuration (colors, spacing, shadows), neumorphic design utilities.
MemoCard- Memo display cardRecordCard- Record display cardScheduleCard- Schedule display cardPROCard- PRO membership cardNASStatusCard- NAS connection status
useAuth()- Authentication stateuseNAS()- NAS connection stateuseRecords()- Records managementuseSync()- Sync stateuseHydration()- Store hydrationuseAsync()- Async operation hookuseDebounce()- Debounce utilityuseFormValidation()- Form validation
storage- AsyncStorage wrappervalidation- Email, password validatorsdate- Date formatting utilities
- Node.js >= 18.0.0
- pnpm >= 8.0.0
pnpm install# Mobile (Expo)
pnpm dev:mobile
# Desktop (Electron)
pnpm dev:desktop
# Server (NAS)
pnpm dev:serverpnpm build:mobile
pnpm build:desktop
pnpm build:serverpnpm typecheck
pnpm lintmobile/
├── src/
│ ├── App.tsx # Entry point
│ ├── navigation/
│ │ ├── RootNavigator.tsx # Auth/Main flow
│ │ ├── AuthNavigator.tsx # Login/Register
│ │ └── MainNavigator.tsx # Tab navigator
│ └── screens/
│ ├── LoginScreen.tsx
│ ├── RegisterScreen.tsx
│ ├── NASBindingScreen.tsx
│ ├── RecordScreen.tsx
│ ├── SmartScreen.tsx
│ └── ProfileScreen.tsx
└── app.json
desktop/
├── src/
│ ├── main/
│ │ ├── main.ts # Electron main process
│ │ └── preload.ts # Preload script
│ └── renderer/
│ ├── App.tsx # React entry
│ ├── components/
│ │ └── Layout.tsx # Sidebar layout
│ └── screens/
│ ├── LoginPage.tsx
│ ├── NASBindingPage.tsx
│ ├── RecordPage.tsx
│ ├── SmartPage.tsx
│ └── ProfilePage.tsx
└── vite.config.ts
server/
├── src/
│ ├── index.ts # Express app entry
│ ├── db/
│ │ └── database.ts # SQLite setup
│ ├── middleware/
│ │ ├── auth.ts # JWT auth middleware
│ │ └── errorHandler.ts # Error handling
│ ├── routes/
│ │ ├── auth.ts # Auth endpoints
│ │ ├── nas.ts # NAS config endpoints
│ │ ├── records.ts # Records CRUD
│ │ └── ai.ts # AI analysis endpoints
│ └── services/
│ └── mqtt.ts # MQTT sync service
└── package.json
Private - All rights reserved