Skip to content

Navigation Menu

Sign in
Sign up

Repository files navigation

NoteDock

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.

🏗️ Architecture

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

🛠️ Tech Stack

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 (端侧优先)

🎨 Design System

  • Style: Neumorphism + Card-based
  • Background: #F8F8F8
  • Primary: #1A1A1A
  • Accent: #FFC107

Pages

  1. 登录页 (Login) - Email + Password authentication
  2. NAS绑定页 (NAS Binding) - Connect to personal NAS server
  3. 记录页 (Record) - Create and browse records (text/image/voice/location/link)
  4. 智能分析页 (Smart) - AI-generated schedules, memos, memories
  5. 我的页 (Profile) - User settings, NAS status, PRO subscription

📦 Shared Packages

@notedock/types

TypeScript interfaces for User, Record, Schedule, Memo, Memory, NAS, Auth types.

@notedock/ui

Theme configuration (colors, spacing, shadows), neumorphic design utilities.

@notedock/components

  • MemoCard - Memo display card
  • RecordCard - Record display card
  • ScheduleCard - Schedule display card
  • PROCard - PRO membership card
  • NASStatusCard - NAS connection status

@notedock/hooks

  • useAuth() - Authentication state
  • useNAS() - NAS connection state
  • useRecords() - Records management
  • useSync() - Sync state
  • useHydration() - Store hydration
  • useAsync() - Async operation hook
  • useDebounce() - Debounce utility
  • useFormValidation() - Form validation

@notedock/utils

  • storage - AsyncStorage wrapper
  • validation - Email, password validators
  • date - Date formatting utilities

🚀 Getting Started

Prerequisites

  • Node.js >= 18.0.0
  • pnpm >= 8.0.0

Install Dependencies

pnpm install

Development

# Mobile (Expo)
pnpm dev:mobile
# Desktop (Electron)
pnpm dev:desktop
# Server (NAS)
pnpm dev:server

Build

pnpm build:mobile
pnpm build:desktop
pnpm build:server

Type Check & Lint

pnpm typecheck
pnpm lint

📁 Project Structure Details

Mobile App (apps/mobile)

mobile/
├── 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 App (apps/desktop)

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 (apps/server)

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

📄 License

Private - All rights reserved

About

All in one 笔记平台

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

AltStyle によって変換されたページ (->オリジナル) /