The WeChat Mini Program is a parallel Satori implementation built with TypeScript, WXML and WXSS.
Original collaboration repository: https://gitee.com/avan0/clock
The source in this GitHub repository is kept as a cleaned vendor copy. The upstream Gitee history is not imported directly because earlier commits contained client-side secret material. If we later need full history inside this repository, create a sanitized mirror first and import that mirror with git subtree.
satori_miniprogram/
├── miniprogram/
│ ├── pages/
│ │ ├── task/
│ │ ├── tomato/
│ │ ├── calendar/
│ │ ├── statistics/
│ │ └── setting/
│ ├── components/
│ ├── utils/
│ └── assets/
├── typings/
├── project.config.json
├── package.json
└── tsconfig.json
- Task list with task creation, filtering, searching and sorting.
- Pomodoro timer with work/rest cycles, incense visual, white noise and rest bell.
- Calendar check-in with quote modal.
- Statistics panel with local summary and trend chart.
- Settings for theme, default white noise, rest sound and rest duration.
The mini program stores data with wx.setStorageSync through utils/storage.ts.
Main keys:
incense_tasksincense_listsincense_focus_recordsincense_checkinsincense_settings
utils/ai.ts intentionally has no hardcoded API key. It returns a local fallback summary until a server proxy is configured.
Recommended production path:
Mini Program -> Cloud Function / API Server -> AI Provider
The provider key should live only on the server side.
- Statistics currently still contain some mock values and should be wired to
FocusRecordaggregation before release. - Some algorithm examples are intentionally educational and more complex than the product requires.
- Mini program assets need the same provenance audit as Flutter assets.
project.config.jsonusestouristappidfor public sharing; replace it locally for real development.