An innovative Flutter application dedicated to supporting the Palestinian cause.
Built with Flutter, empowering users with tools for product scanning, local data management, and accessing vital information to make conscious consumer choices.
Motivation • About • Features • Architecture • Technologies • Getting Started • Roadmap • Contributing • License
In a world where consumer choices have a global impact, the Tadamon App (Tadamon means "Solidarity" in Arabic) was created to empower individuals who wish to support the Palestinian cause through ethical consumption. The app provides a transparent and easy-to-use tool to identify products and understand their origins, helping users make informed decisions that align with their values.
Our goal is to foster a community of conscious consumers and provide a reliable resource for those who want to stand in solidarity with Palestine.
Tadamon App is a comprehensive Flutter application designed for Android. It serves as a digital assistant for ethical shopping, offering robust product scanning capabilities, offline data access, and seamless cloud synchronization.
The app's core mission is to provide users with the information they need to support their chosen causes. With a clean, intuitive interface and a rich feature set, Tadamon is more than just a utility—it's a tool for making a difference.
- Barcode Scanning: Utilizes Google ML Kit for fast and accurate barcode scanning to instantly retrieve product information.
- Offline First: Powered by a local Objectbox database, ensuring the app is fully functional even without an internet connection.
- Cloud Sync: Seamlessly synchronizes the local database with Firebase Firestore to keep product information up-to-date.
- PDF Export: Generate and export detailed reports of scanned products in PDF format for personal records or sharing.
- User-driven Reporting: An integrated system for users to report new products or suggest corrections, helping to keep the database accurate and community-driven.
- Dynamic Theming: A beautiful and responsive UI with full support for light and dark modes, as well as following the system theme.
- Localization: Full support for multiple languages (starting with Arabic) to cater to a global user base.
The app is built using a feature-driven architecture, promoting a clean separation of concerns and scalability.
- BLoC Pattern: State management is handled predictably and efficiently using the BLoC (Business Logic Component) pattern.
- Repository Pattern: Abstracts data sources (local database and cloud services), making the app more modular and testable.
- Dependency Injection: Core services like database access are provided throughout the app, ensuring loose coupling and maintainability.
lib/
├── core/ # Shared components: routing, theming, widgets, services
├── features/ # Individual feature modules (e.g., product_scanner, home_page)
├── generated/ # Auto-generated files for localization (l10n)
├── l10n/ # Localization files
├── main.dart # Main application entry point
└── objectbox.g.dart # Objectbox auto-generated binding files
This project leverages a modern and robust tech stack for high-quality mobile development:
| Technology | Description |
|---|---|
| 🐦 Flutter & Dart | The core framework and language for building beautiful, natively compiled applications. |
| 🗃️ Objectbox | A high-performance NoSQL database for local, offline-first data storage. |
| 🔥 Firebase Firestore | A flexible, scalable NoSQL cloud database for data synchronization. |
| 🧱 flutter_bloc | A predictable state management library that helps implement the BLoC pattern. |
| 📄 pdf & open_file | Libraries for creating, exporting, and opening PDF files. |
| 📸 google_mlkit_barcode_scanning | For fast and reliable barcode scanning via Google's ML Kit. |
| 🌐 dio & connectivity_plus | For handling network requests and monitoring network state. |
| 🎨 flutter_screenutil | For creating a responsive UI that adapts to different screen sizes. |
You can get the Tadamon App up and running in two ways: by downloading a pre-built release or by building it from the source code.
For most users, the easiest way to install the app is by downloading the latest APK from the GitHub Releases page.
- Go to the Releases page of this repository.
- Under the latest release, find the
app-release.apkfile in the Assets section. - Download the APK file to your Android device and install it. You may need to enable "Install from unknown sources" in your device's settings.
If you are a developer and want to build the app from the source code, follow these steps.
- Flutter SDK (version 3.10.1 or higher)
- Android Studio or VS Code with the Flutter extension.
- Clone the repository:
git clone https://github.com/MostafaSensei106/Tadamon.git
- Navigate to the project directory:
cd Tadamon - Install dependencies:
flutter pub get
- Run the code generator for Objectbox and other dependencies:
dart run build_runner build --delete-conflicting-outputs
- Run the app on your connected Android device or emulator:
flutter run
Coming Soon! This section will be updated with screenshots of the app's main features.
| Home Screen | Scanning |
|---|---|
| (screenshot) | (screenshot) |
| Log Page | App Drawer |
| (screenshot) | (screenshot) |
Contributions are what make the open-source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request
Please read our (soon-to-be-added) Contributing Guidelines for more details.
Distributed under the GPL-3.0 License. See the LICENSE file for more information.
Made with ❤️ by MostafaSensei106