$ account maotoumao
MusicFree is a plugin-driven, cross-platform mobile music player built with React Native and Expo. In production it provides audio playback, playlist management, lyric display and fetching, music searching, downloading, local music scanning, theme customization, and backup/restore. The app is not a data pipeline or research project; its only persistent data is user config, playlists, cache metadata, and music history. The architecture is a React Native application with a custom plugin runtime: external CommonJS JS plugins define music-source capabilities such as search, getMediaSource, getLyric, and getMusicSheetInfo, and the app dynamically loads those plugins through a sandboxed require. Core services include a track player wrapper, plugin manager, music sheet manager, downloader, lyric manager, theme manager, and i18n system, all coordinated through Jotai atoms, event emitters, and singleton stores. Entry points are index.js (app registration and TrackPlayer initialization), src/entry/index.tsx (main app shell), and src/entry/bootstrap/bootstrap.ts (startup initialization). External dependencies include react-native-track-player, MMKV, AsyncStorage, react-native-fs, expo modules, WebDAV, react-native-reanimated, and react-native-gesture-handler.
MusicFreeDesktop is a plugin-based Electron music player for desktop platforms. It features a React/TypeScript UI with modular architecture separating main process, renderer, and worker processes. Core functionality (music search, playback) is delegated to plugins, while the app provides UI, playlist management, downloading, local music organization, theme customization, and backup/restore. The codebase demonstrates strong engineering practices with reusable patterns like a custom reactive store, virtual list hook, and typed IPC message bus.