中文 | English
A calm flip-clock for desk, bedside, and focus. Ships as a React web app and a native Kotlin/Compose Android app — same modes, same themes, local-first persistence.
- Web: Node.js ≥ 18
- Android: Android Studio (or JDK 17 + Gradle)
- Desktop launcher: Go ≥ 1.23
| Requirement | Value |
|---|---|
| minSdk | 26 (Android 8.0 Oreo) |
| Target SDK | 35 (Android 15) |
| Language | Kotlin + Jetpack Compose |
Web — open in your browser in 30 seconds:
cd web
npm install
npm run devThen open http://localhost:5173 — the flip clock is ready.
Android — build and install the debug APK:
gradle :app:assembleDebug
# APK at app/build/outputs/apk/debug/app-debug.apkOr open the project in Android Studio, sync Gradle, and click Run.
Desktop — single-file Windows launcher:
cd desktop
build.bat
# flipclock-desktop.exe → copy anywhere- Full-screen flip clock with realistic mechanical animation (3D rotation, shadows, overshoot)
- 12/24-hour display, optional seconds, AM/PM indicator
- Timer, stopwatch, countdown, and Pomodoro focus modes
- Editable timer — tap or swipe to adjust hours, minutes, seconds before starting
- Countdown with preset targets (New Year, Christmas, etc.) and custom entries
- Delete any countdown target (presets or custom) with confirmation
- Three theme presets: Paper Desk, Classic Black, Pure Black
- 10 interface languages: 中文, English, 日本語, 한국어, Français, Deutsch, Español, Português, Русский, العربية
- Manual time-zone override for the main clock
- Language-aware default signature
- Completion chime for timer, countdown, and Pomodoro
- Local persistence: browser localStorage (Web) / DataStore Preferences (Android)
Web
cd web
npm install
npm run dev # start dev server
npm run test # Vitest
npm run build # production build → web/distBuilt with React 19, TypeScript, Vite, and Vitest. Deploys to Cloudflare Pages on every push to the main branch.
Android
gradle :app:testDebugUnitTest
gradle :app:assembleDebugBuilt with Kotlin and Jetpack Compose (minSdk 26). Open in Android Studio or run Gradle directly. The APK is generated at app/build/outputs/apk/debug/app-debug.apk.
Desktop Launcher
cd desktop
build.batThe Windows desktop launcher embeds the built web app into a single .exe. It starts a local 127.0.0.1 server and opens FlipClock in an Edge/Chrome app-style window when available, falling back to the default browser. The generated .exe can be copied and run by itself.
Push a v* tag to trigger the release workflow. Each release publishes:
flipclock-web-<tag>.zipflipclock-android-<tag>.apkflipclock-desktop-<tag>.exe— single-file offline desktop launcher for Windows
.
|-- app/ Android app source
|-- web/ React/Vite web app
|-- desktop/ Go launcher — embeds web into a single .exe
|-- docs/assets/ Public README preview assets
|-- gradle/ Gradle version catalog and wrapper metadata
|-- .github/workflows/ Release and deployment automation
|-- README.md English public overview
`-- README-zh.md Chinese public overview

