NixNews - News aggregator mobile app
Project Overview: I had to build a project for something called a “pre-soutenance” in my school. We were asked to build a project before the real “soutenances”. So, I decided to create something simple and useful. I had built something similar in the past but decided to do it again, this time better. In this article, I will show you what a news aggregator mobile app is and how I built it.
Objectives
The main objectives of this application are to:
- Create a visually stunning and user-friendly mobile application that displays top-headline news.
- Implement an integrated webview (an in-app web browser) to read the entire content of these news articles on the source website.
- Implement a bookmarking system so that users have a “read later” option.
Technically, implementing all this involves many other features that I will try to enumerate and discuss.
Features
Core Features
- Display Articles: The app displays articles with titles, descriptions, sources, images, and publication dates.
- Bookmarks: Users can add articles to a bookmarks list for later reading.
- Integrated WebView: An in-app browser allows users to read full articles with navigation buttons.
- Lazy Loading: Pagination system for efficient loading of articles.
- Authentication: OTP (One Time Password) by email for user authentication.
- Synchronization: Bookmarks are synchronized with the authenticated user.
User Experience Enhancements
- Multilingual Support: The app supports multiple languages and offers both dark and light modes.
- JavaScript Disabling: Users can disable JavaScript to block ads and other interactive events on certain sites.
- Category Aggregation: Articles are aggregated by over six different categories.
- Keyword Search: Users can search for top articles using keywords.
- Filter Search Results: Search results can be filtered by relevance, publication date, popularity, and language (supporting over 12 languages).
- Image Caching: For better performance, images are cached.
- Cache Clearing: Users can clear the application cache for continuous optimization.
- Material 3 Design: The app integrates Material 3 design for a modern user experience.
- Connectivity Management: The app manages the internet connectivity state.
Additional Possibilities
- Free App Analytics: Potential to add free analytics to track user engagement and usage.
- Premium Option: Currently, there are no specific premium features, but this is a possibility for future updates.
Technology Stack
The application is mainly developed in Dart (Flutter) and uses PostgreSQL for user data storage. Here’s a breakdown of the tech stack:
- Dart (Flutter): Dart is a general-purpose programming language developed by Google. Flutter is an open-source mobile app development framework created by Google, which allows developers to build high-quality, visually stunning, and user-friendly mobile applications.
- Supabase: Supabase is a Backend As A Service (BaaS) tool that I use to handle authentication and persistance (postgresql).
- PostgreSQL: PostgreSQL is a powerful, open-source relational database management system (RDBMS) that is widely used for web applications and mobile apps.
- Material 3: Material 3 is a design system developed by Google that provides a modern and consistent user experience across different platforms and devices.
- NewsAPI.org: NewsAPI.org is a popular news aggregator that provides access to millions of articles and headlines from various online sources.
Currently, the app leverages data from NewsAPI.org to locate and aggregate articles and headlines from various online sources. However, the application’s data source and all other features may be reassessed or entirely restructured based on their final utility, especially if the application is acquired by a third party.
Platform Availability
The app is currently available only on Android but will soon be available on iOS.
License
This project is licensed under the Creative Commons Legal Code - see the LICENSE file for details.
Try it out
If you want to try out the app, you can download it from here. (Adnroid only)
Source Code
The source code for this project is available on GitHub.
Screenshots
|
|
|
|
|
|
|
|
|
|
|
|
|
|