Skip to content

MaplumeX/Milesto

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

135 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Milesto

An open-source, local-first desktop task manager inspired by Things 3.

简体中文 | English

Milesto is a cross-platform desktop app for personal task management, covering the full GTD workflow: collect, organize, execute, and review. All data stays on your machine in a local SQLite database — no account or cloud service required.

Milesto - Inbox View Milesto - Project View Milesto - Area View

Features

  • Inbox — Quick capture for new tasks with minimal friction
  • Today — Plan your day with drag-and-drop ordering
  • Upcoming / Anytime / Someday — Organize tasks by time horizon
  • Projects & Sections — Group related tasks, with support for sections within projects
  • Areas — Organize projects under broader areas of responsibility
  • Tags — Flexible labeling for cross-cutting categorization
  • Checklists — Sub-items within tasks for step-by-step tracking
  • Full-text Search — FTS5-powered search across task titles and notes (< 200ms at 10k tasks)
  • Data Import / Export — Full JSON backup and restore with transactional safety
  • Logbook & Trash — Review completed tasks and recover deleted ones
  • Themes — Light, Dark, and System modes
  • i18n — English and Simplified Chinese

Tech Stack

Layer Technology
Framework Electron 30
UI React 18 + TypeScript 5
Bundler Vite 5 + vite-plugin-electron
Database SQLite via better-sqlite3 (in worker_threads)
Styling Tailwind CSS + shadcn/ui
Animation Framer Motion
Drag & Drop @dnd-kit
Virtual Scrolling @tanstack/react-virtual
Validation Zod
i18n i18next
Testing Vitest + Testing Library

Getting Started

Prerequisites

  • Node.js >= 18
  • npm (ships with Node.js)

Install & Run

# Install dependencies npm ci # Start in development mode npm run dev

Build

# Typecheck + bundle + package npm run build

Output artifacts are written to release/<version>/:

Platform Format Filename
macOS DMG Milesto-Mac-<version>-Installer.dmg
Windows NSIS Milesto-Windows-<version>-Setup.exe
Linux AppImage Milesto-Linux-<version>.AppImage

Lint & Test

npm run lint # ESLint (zero warnings policy) npm run test # Unit + component tests npm run test:db # DB Worker action tests

Architecture

Milesto follows a strict four-layer Electron architecture with hard isolation boundaries:

┌─────────────────────────────────────────────┐ │ Renderer (React) │ │ Only calls window.api.* │ ├─────────────────────────────────────────────┤ │ Preload (contextBridge) │ │ Exposes business-level APIs only │ ├─────────────────────────────────────────────┤ │ Main Process │ │ Window lifecycle, IPC gateway │ ├─────────────────────────────────────────────┤ │ DB Worker (worker_threads) │ │ Sole SQLite access, serialized requests │ └─────────────────────────────────────────────┘ 

Key constraints:

  • contextIsolation: true, nodeIntegration: false
  • No raw ipcRenderer or arbitrary SQL exposed to Renderer
  • All IPC payloads validated with Zod schemas
  • All DB writes are transactional

Project Structure

electron/ main.ts # Main process entry preload.ts # Preload script workers/db/ db-worker.ts # DB Worker entry actions/ # Business logic (task, project, area, tag, etc.) src/ App.tsx # Root component app/ AppRouter.tsx # Route definitions AppShell.tsx # Sidebar + content layout pages/ # Route pages (Today, Inbox, Upcoming, ...) features/ # Domain features (tasks, projects, settings, ...) components/ # Shared UI components i18n/ # i18next configuration shared/ window-api.ts # window.api type contract schemas/ # Zod schemas (source of truth for data models) result.ts # Result<T> type app-error.ts # Structured error type 

Contributing

  1. Read the docs in docs/ before making significant changes:
    • redlines.md — Hard constraints (highest priority)
    • standards.md — Engineering standards
    • ui.md — UI/UX rules
    • tech-framework.md — Architecture decisions
  2. Follow the existing code style (TypeScript strict, 2-space indent, single quotes).
  3. Run npm run lint and ensure zero warnings before submitting changes.

License

This project is licensed under the MIT License.

About

A project-driven GTD software

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors