A beautiful, customizable desktop clock with random anime backgrounds, multilingual UI, and rich settings.
Table of Contents
MoeMoe is a desktop-style clock inspired by the Windows lock screen. It displays a large, elegant clock over stunning anime/waifu imagery from multiple sources, with smooth transitions, multilingual support, and robust customization. Settings persist locally and the app runs entirely client‑side.
- Real-time clock with flexible format
- 12/24‑hour toggle, optional seconds
- AM/PM visibility, style (locale words or AM/PM), and position (before/after)
- Multiple image sources with randomization and graceful fallback
- Progressive image loading (Thumbhash preview → full image)
- Artist and source attribution where available
- Theme system: Dark, Light, Auto
- Settings panel with persistence (localStorage)
- Keyboard shortcuts (R/Space refresh, F fullscreen, S settings)
- Responsive layout with refined overlays and readability
- Optional server time sync with network-delay compensation
- React 19, TypeScript 5.9, Vite 7
- i18next (multilingual UI), Thumbhash (image placeholders)
- Modern CSS with variables and responsive design
- Node.js 18+
- npm (or yarn/pnpm)
# Clone
git clone https://github.com/your-username/moemoe.git
cd moemoe
# Install deps
npm install
# Start dev server
npm run dev
# Build production
npm run build
# Preview production build
npm run previewCopy .env.sample to .env and adjust as needed:
VITE_FIX_CORS_API_URL=https://test.com/?url=
VITE_SERVER_TIME_API_URL=https://test.com/?tz=
- CORS proxy is optional; when set, image URLs are proxied automatically.
- Server time API: the app appends your IANA timezone (e.g.,
Asia/Seoul) totz=, then computes offset using round‑trip midpoint to compensate for delay.
- Press
Sto open Settings - Press
RorSpaceto refresh the background - Press
Fto toggle fullscreen
Artist/source links are shown when available; click to open in a new tab.
Appearance
- Language: auto‑initialized from browser (ko/ja/en; falls back to en)
- Theme: Dark / Light / Auto
- Clock: 12/24‑hour, seconds on/off, AM/PM style (locale or AM/PM) and position
Images
- Sources: multi‑select with Select All / Deselect All; at least one is required (defaults to all selected)
- Fit mode: Cover / Contain
- Letterbox fill: Blur / Edge‑Color / Custom / Solid
- Auto refresh interval (seconds)
- Allow NSFW (where supported)
Time
- Use server time (optional)
- Update interval for server sync (10/30/60/300 seconds)
Integrated
- Nekos.best — rich categories, artist/anime metadata
- Waifu.pics — simple, reliable SFW/NSFW endpoints
- Nekosia — curated catgirl images
- Waifu.im — curated images with artist/source info
- Nekos.moe — random image id → direct file URL
- Donmai.us (Danbooru) — random posts (respecting SFW/NSFW setting)
Planned/Requested
- Waifu.it, Pic.re, Neoksapi.com
Supported languages
- Korean (한국어)
- English
- Japanese (日本語)
All strings live under src/locales/{ko,en,ja}/translation.json.
src/
├─ components/
│ ├─ Clock/
│ ├─ ImageBackground/
│ ├─ RefreshButton/
│ ├─ DownloadButton/
│ ├─ SettingsButton/
│ └─ SettingsModal/
├─ contexts/ # AppContext (settings/state)
├─ i18n/ # i18next config
├─ locales/ # translations
├─ services/ # imageApi (sources, proxy)
├─ types/ # image/settings types
├─ App.tsx, App.css
├─ index.css
└─ main.tsx
npm run dev— start dev servernpm run build— type‑check + buildnpm run preview— preview production buildnpm run lint— run ESLint
- Additional sources (Waifu.it, Pic.re, Neoksapi.com)
- Advanced widgets (Weather, Quotes, Custom text)
- Favorites/history, export/import settings
We welcome contributions of all kinds:
- Open an issue for bugs or feature requests
- Submit a pull request with your changes
- Donate to support development (GitHub Sponsors/BuyMeACoffee — add your link here)
Please follow common GitHub practices (small, focused PRs; clear descriptions). Thank you!
MIT License — see LICENSE in the repository.
- Fonts: RIDIBatang by Ridi Corporation
- APIs: Nekos.best, Waifu.pics, Nekosia, Waifu.im, Nekos.moe, Danbooru