๐ต Namida Chart
April 9, 2026 ยท View on GitHub
English | ็ฎไฝไธญๆ
A beautiful, cross-platform desktop application built with Flutter to analyze and visualize your listening history from Namida. Import your backup file and get your personal annual listening report.
๐ Features
๐ Dashboard
- Key Metrics at a Glance: Total listening hours, companion days, daily average, total plays, unique tracks/artists/albums, and favorite genre โ all displayed in elegant color-coded cards.
- Year / All-Time Toggle: Switch between different years or all-time stats via the top dropdown.
๐ Interactive Charts
- Play Trend Line Chart: Smooth, animated line chart showing daily play counts over time.
- Scroll to Zoom: Mouse wheel zooms in/out on the timeline.
- Drag to Pan: Click and drag to navigate across different time periods.
- Hover Tooltips: Hover over any point to see the exact date and play count.
๐ Leaderboards
- Top 10 Tracks / Artists / Albums: Displayed on the home screen, tap any item to open its dedicated detail page.
- Full Rankings: Browse up to Top 500 tracks and Top 200 artists/albums.
- Monthly Top Song: Track your most-looped song for each month of the year.
- Seamless Artist / Album Drill-Down: From any artist or album detail page, tap a song in its top-10 list to jump directly to the track detail page.
โฐ Listening Habits
- Period Distribution: Bar charts for Night (0-6), Morning (6-12), Afternoon (12-18), and Evening (18-23).
- Weekly Patterns: Monday-to-Sunday play count visualization.
โญ Personalized Highlights
- Obsession Moment: The day you looped a single song the most times.
- Latest Night Song: The first track you listened to after midnight.
- Most Immersive Day: The day with the highest total play count.
๐ง Additional Capabilities
- Local Metadata Matching: Optionally configure a local music directory to auto-scan audio file metadata (supports MP3, FLAC, M4A, WAV, OGG, OPUS, AAC, WMA) and enrich the analysis.
- Lazy Track Detail Loading: The top 300 tracks are pre-computed for instant access; all remaining tracks are resolved on-demand when you tap them and cached for subsequent views โ no data is ever missing.
- Play in Namida: On any track detail page, a play button lets you instantly start playback in the Namida player (if its executable is configured) or fall back to the system default player.
- Bilingual UI: Built-in English and Chinese (ไธญๆ) interface, switchable in settings.
- Material Design 3: Deep purple themed, with automatic light/dark mode adaptation.
๐ ๏ธ Prerequisites
| Dependency | Version | Notes |
|---|---|---|
| Flutter SDK | โฅ 3.8.1 | Installation Guide |
๐ Getting Started
-
Clone the repository:
git clone https://github.com/DiWu17/namida_history_app cd namida_history_app -
Install Flutter dependencies:
flutter pub get -
Run the app:
flutter run -d windows # Or android / linux
๐ How to Use
- Launch the application.
- (Optional) Click the Settings (โ๏ธ) icon in the top right to:
- Select your local music directory for richer audio metadata.
- Set the Namida executable path (
namida.exe) to enable one-click playback from track detail pages.
- Click the Select Backup ZIP button and choose your exported Namida backup file (
.zip). - Wait for the analysis engine to process the data (usually takes a few seconds).
- Explore your personal listening report! Check out leaderboards, play trends, listening habits, and tap on any track/artist/album for detailed insights.
- On a track detail page, click the โถ Play button to open the song in Namida or your system default player.
๐ Project Structure
namida_history_app/
โโโ lib/ # Flutter frontend
โ โโโ main.dart # App entry point, theme & routing
โ โโโ l10n/ # Localization resource files
โ โโโ providers/ # State management (Provider)
โ โ โโโ locale_provider.dart # Language switching
โ โโโ screens/ # App screens
โ โ โโโ home_screen.dart # Main dashboard
โ โ โโโ track_detail_screen.dart # Track details + Namida playback
โ โ โโโ artist_detail_screen.dart # Artist details
โ โ โโโ album_detail_screen.dart # Album details
โ โ โโโ full_list_screen.dart # Full leaderboard
โ โโโ services/ # Business logic & utilities
โ โ โโโ analysis_service.dart # Analysis engine (Dart isolate)
โ โ โโโ config_service.dart # Persistent settings storage
โ โ โโโ track_detail_resolver.dart # Lazy track detail lookup & cache
โ โโโ widgets/ # Reusable components
โ โโโ interactive_line_chart.dart # Interactive line chart
โโโ pubspec.yaml # Flutter project configuration
๐๏ธ Tech Stack
| Layer | Technology |
|---|---|
| Frontend | Flutter (Dart) |
| Charting | fl_chart |
| State Management | Provider |
| Localization | intl + flutter_localizations |
| File Selection | file_picker |
| ZIP Processing | archive (Dart) |
| Audio Metadata | metadata_audio (Dart) |
| Persistent Config | shared_preferences |
๐ Data Flow
User selects Namida backup ZIP
โ
Dart Isolate: Extract ZIP โ Scan local music directory (optional) โ Parse history JSON โ Analyze
โ
Return structured data (grouped by year: "All Time", "2024", โฆ)
โ
Flutter renders dashboard โ User browses & interacts
โ
Tap any track โ resolveTrackDetail() checks top-300 cache,
falls back to on-demand compute โ TrackDetailScreen
โ
(Optional) Press โถ Play โ launch Namida or system default player
๐ Special Thanks
- @MSOB7YY โ Creator of Namida, for building such an original and inspiring project.
- Flutter Team โ For developing such an outstanding framework.
- All open-source package maintainers and contributors who made Namida Charts possible.
๐ค Contributing
Contributions, issues, and feature requests are welcome! Feel free to check the issues page.
๐ License
This project is open-source and available under the MIT License.