๐ŸŽต 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

DependencyVersionNotes
Flutter SDKโ‰ฅ 3.8.1Installation Guide

๐Ÿš€ Getting Started

  1. Clone the repository:

    git clone https://github.com/DiWu17/namida_history_app
    cd namida_history_app
    
  2. Install Flutter dependencies:

    flutter pub get
    
  3. Run the app:

    flutter run -d windows  # Or android / linux
    

๐Ÿ“ How to Use

  1. Launch the application.
  2. (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.
  3. Click the Select Backup ZIP button and choose your exported Namida backup file (.zip).
  4. Wait for the analysis engine to process the data (usually takes a few seconds).
  5. Explore your personal listening report! Check out leaderboards, play trends, listening habits, and tap on any track/artist/album for detailed insights.
  6. 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

LayerTechnology
FrontendFlutter (Dart)
Chartingfl_chart
State ManagementProvider
Localizationintl + flutter_localizations
File Selectionfile_picker
ZIP Processingarchive (Dart)
Audio Metadatametadata_audio (Dart)
Persistent Configshared_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.