A beautiful, open-source Windows desktop app to monitor your laptop battery health.
---| Feature | Description |
|---|---|
| π¨ New UI | A beautiful, modern user interface with smooth animations and intuitive navigation. |
| π Real-time Monitoring | Live battery level, charging state, and health percentage |
| π Health Analysis | Design vs. full-charge capacity comparison with color-coded status |
| π Smart Alerts | Configurable low/high battery notifications via Windows toast |
| π₯οΈ System Tray | Minimize to tray to keep monitoring in the background |
| π Start with Windows | Auto-launch at login via the Windows Registry |
| π Multi-language | English, Arabic, and Spanish |
| π¨ Themes | Light, dark, and system-follow modes |
| π Auto-update Check | Checks GitHub Releases for new versions on startup |
The project follows a clean architecture pattern with clear separation of concerns:
lib/
βββ core/ # Shared utilities, themes, services, constants
β βββ constants/ # App-wide colors (AppColors) and constants
β βββ l10n/ # Localization strings (EN, AR, ES)
β βββ services/ # Tray, notification, startup, and update services
β βββ theme/ # Light/dark theme definitions & ThemeProvider
β βββ utils/ # Battery utility helpers
β βββ widgets/ # Reusable widgets (GlassCard, AppErrorWidget)
βββ data/ # Data layer
β βββ datasources/ # Windows battery data source (powercfg parser)
β βββ repositories/ # Repository implementations (Battery, Settings)
βββ domain/ # Domain layer
β βββ entities/ # BatteryInfo entity
β βββ repositories/ # Abstract repository interfaces
βββ presentation/ # UI layer
β βββ pages/ # Screens (Battery, Alerts, Settings)
β βββ providers/ # ChangeNotifier state (Battery, Alerts, Update)
β βββ widgets/ # UI components (WaveBatteryIndicator, DonateMenu, etc.)
βββ main.dart # App entry point and window setup
- State Management: Built-in Flutter
ChangeNotifier+ListenableBuilderβ no third-party state packages. - Battery Data: Uses
powercfg /batteryreportto generate an HTML report, then parses it with thehtmlpackage to extract health data. - Design System: All colors are centralized in
app_colors.dartfor easy theming. - Typography: Uses bundled Noto Sans Arabic fonts for multi-script support (Latin + Arabic) without runtime network requests.
- Update Checking: Queries the GitHub Releases API on startup and notifies the user if a newer version is available.
- Window Management: Dynamic window height (70% of screen height, clamped to 600 px) adapts to different displays and DPI scaling.
- Background Optimization: Animations are paused via
TickerModewhen the window is minimized or hidden to reduce CPU usage.
- Flutter SDK
3.41+(stable channel) - Dart SDK
3.11+ - Windows 10/11 with a laptop battery
- Git for cloning the repository
# 1. Clone the repository
git clone https://github.com/LotfiBoukhemerra/Battery-Health-Checker-App.git
cd Battery-Health-Checker-App
# 2. Install dependencies
flutter pub get
# 3. Run in debug mode
flutter run -d windows
# 4. Build a release executable
flutter build windows --releaseThe release build will be located at:
build/windows/x64/runner/Release/
If you manage multiple Flutter versions with FVM:
# 1. Install FVM (if not already installed)
dart pub global activate fvm
# 2. Clone and enter the project
git clone https://github.com/LotfiBoukhemerra/Battery-Health-Checker-App.git
cd Battery-Health-Checker-App
# 3. Install the required Flutter version
fvm install 3.41.7
fvm use 3.41.7
# 4. Install dependencies and run
fvm flutter pub get
fvm flutter run -d windowsPuro is a blazing-fast Flutter version manager:
# 1. Install Puro
dart pub global activate puro
# 2. Create an environment with the required Flutter version
puro create battery_checker stable
# 3. Clone and enter the project
git clone https://github.com/LotfiBoukhemerra/Battery-Health-Checker-App.git
cd Battery-Health-Checker-App
# 4. Use the Puro environment
puro use battery_checker
# 5. Install dependencies and run
flutter pub get
flutter run -d windowsflutter test| Package | Purpose |
|---|---|
battery_plus |
Real-time battery level and charging state |
window_manager |
Window size, minimize/close behavior |
system_tray |
System tray icon and context menu |
local_notifier |
Windows toast notifications |
shared_preferences |
Persistent user settings |
hugeicons |
Modern icon set |
html |
Parsing powercfg battery report HTML |
url_launcher |
Opening external links |
http |
GitHub Releases API for update checking |
intl |
Internationalization utilities |
Contributions are welcome! Here's how to get started:
- Fork the repository
- Create a feature branch:
git checkout -b feature/my-feature - Commit your changes:
git commit -m "Add my feature" - Push to your fork:
git push origin feature/my-feature - Open a Pull Request
- Follow the existing code style and architecture patterns
- All colors must be defined in
app_colors.dart - Add documentation comments to all public APIs
- Run
flutter analyzebefore submitting
If this app helps you, consider supporting its development:
| Platform | Link |
|---|---|
| π³ PayPal | paypal.me/LotfiBoukhemerra |
| β Ko-fi | ko-fi.com/lotfibkmr |
Every contribution β no matter how small β helps keep this project alive and growing. Thank you! π
Battery Health Checker - Check your battery health Copyright (c) 2025 Lotfi Boukhemerra
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 3 of the License.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program. If not, see https://www.gnu.org/licenses/.
Lotfi Boukhemerra
- Website: batterychecker.org
- GitHub: @LotfiBoukhemerra
Made with β€οΈ using Flutter

