NewsByte
Back to Projects
Live⭐ Featured

NewsByte

NewsByte is a modern, immersive news reading application tailored for the Bengali audience. Inspired by the engaging interactions of TikTok and the clean aesthetics of top-tier news apps, NewsByte delivers a seamless, vertical-swipe news experience.

About This Project

šŸš€ Key Features Immersive News Feed: TikTok-style vertical scrolling for browsing news articles effortlessly. Smart Gestures: Tuned swipe sensitivity (80px threshold) ensures deliberate navigation, preventing accidental skips while reading. Reliable Push Notifications: Subscribes to multiple topics (news, all, general) for guaranteed delivery. Robust background and terminated state handling. Deep linking support to open specific articles directly from notifications. Offline-Ready: Intelligent image caching ensures a smooth experience even with spotty internet. Bangla-First: Optimized typography and layout for Bengali content (using GoogleFonts.hindSiliguri). Interactivity: Like, Share, and "Read More" functionalities seamlessly integrated. šŸ›  Tech Stack Built with ā¤ļø using Flutter and Dart. State Management: flutter_riverpod (2.6.1) for robust and testable state. Navigation: go_router for declarative routing and deep link handling. Backend: Firebase Cloud Firestore: Real-time news data. Firebase Messaging (FCM): Push notifications. Local Storage: shared_preferences for user settings (e.g., tutorial completion, last read index). UI/UX: Custom PageView physics, Lottie animations, and Shimmer effects. šŸ“± Installation & Setup Prerequisites Flutter SDK (3.10.x or later) Dart SDK Android Studio / VS Code A Firebase project with google-services.json placed in android/app/. Steps Clone the repository: git clone https://github.com/morshedkoli/newsapp.git cd newsapp Install dependencies: flutter pub get Run the app: flutter run Build Release APK: flutter build apk --release --split-per-abi šŸ— Architecture The project follows a Feature-First Clean Architecture: lib/ ā”œā”€ā”€ core/ # Global utilities, services, constants, and theme │ ā”œā”€ā”€ services/ # FCM, Preferences, etc. │ └── utils/ # Router, Formatters ā”œā”€ā”€ features/ # Feature-based modules │ ā”œā”€ā”€ news/ # News feature (Data, Domain, Presentation) │ ā”œā”€ā”€ auth/ # Authentication feature │ └── notifications/ # Notification logic └── main.dart # Entry point šŸ”§ Key Implementation Details Robust Push Notifications We solved the common Android background notification issue by: Registering the onBackgroundMessage handler at the top-level in main.dart (before runApp). Ensuring topic subscriptions occur immediately upon app launch. Explicitly requesting POST_NOTIFICATIONS permissions for Android 13+. Swipe Physics To prevent accidental swipes while reading long articles, we disabled the default PageView gesture and implemented a custom OverscrollNotification listener. A page transition is only triggered after an accumulated drag distance of 80 logical pixels, providing a substantial and "heavy" feel. šŸ¤ Contributing Contributions are welcome! Please follow these steps: Fork the repo. Create a 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. šŸ“„ License This project is licensed under the MIT License - see the LICENSE file for details.

Typeandroid
CreatedJan 28, 2026
UpdatedMar 20, 2026