Releases: flutter-news-app-full-source-code/flutter-news-app-web-dashboard-full-source-code
26-09-2025
Unified Content Management, Drafting System & UI Overhaul
This is a major architectural release for the dashboard, introducing a comprehensive content drafting system and a ground-up refactoring of the content and local ad management sections. The changes centralize state management, introduce powerful filtering capabilities, and significantly improve the overall user experience and UI consistency.

📝 Content Drafting & Unified Management
A full drafting system has been implemented for headlines, topics, and sources. The entire content management architecture has been consolidated to support this new workflow and streamline state.
- Drafting System: Users can now save content as a draft before publishing. Dedicated pages have been added to manage, edit, publish, or delete drafts. [#80]
- Consolidated Content BLoC: The separate BLoCs for draft, archived, and active content have been removed and their logic consolidated into a single, robust
ContentManagementBloc
. [#91] - Dedicated Filter BLoCs: New, dedicated BLoCs (
HeadlinesFilterBloc
,TopicsFilterBloc
, etc.) now manage the state of filtering criteria, decoupling filter logic from the main content BLoC. [#91] - Advanced Filter Dialog: A new
FilterDialog
has been implemented, providing a comprehensive interface for users to filter content by search query, status, sources, topics, and more. [#91] - Centralized Undo/Deletion: The
PendingDeletionsService
has been integrated directly into the central BLoCs for content and local ads, providing a consistent and robust optimistic "undo" experience for all deletions. [#79, #87]
📢 Local Ads Management Overhaul
The local ads management section has been completely redesigned for a more organized, scalable, and feature-rich user experience.
- Modular Ad Type Pages: The previous single table has been replaced with dedicated pages for Native, Banner, Interstitial, and Video ad types, providing a more organized interface. [#93]
- Save as Draft for Ads: The ad creation workflow now supports saving ads as a draft or publishing them directly. [#93]
- Ad Filtering: A new
FilterLocalAdsBloc
and a dedicated filter dialog have been introduced, allowing users to search and filter local ads by title/URL and status. [#93] - Simplified Ad Status: The ability for users to manually set a
contentStatus
during ad creation/update has been removed. New ads are now alwaysactive
by default, simplifying the UI and BLoC logic. [#88]
🎨 UI/UX & Ad Configuration Refinements
Significant changes have been made to improve the application's UI consistency, navigation, and the flexibility of ad configuration.
- AppShell Refactor: The main app shell was refactored to remove the
AppBar
and integrate navigation actions (Settings, Sign Out) directly into theAdaptiveScaffold
's navigation rail for a more modern UI. [#92] - New
AboutIcon
Widget: A new reusable widget has been introduced to display contextual information about a page or section in a dialog, improving user guidance. [#92] - Role-Based Ad Configuration: Ad settings are now explicitly configurable per user role (Guest, Standard, Premium). The previously hardcoded ad-free experience for premium users has been removed, making their ad settings fully configurable. [#85]
- Streamlined Tables: The redundant "status" column has been removed from all main content management tables, and action buttons in archive views have been consolidated into a
PopupMenuButton
to prevent UI overflow. [#89, #90]
🛠️ Project Health & Maintenance
- Dependency Pinning: All git-based dependencies in
pubspec.yaml
have been pinned to specific commit hashes to ensure consistent and reproducible builds. [#86] - README Overhaul: The main
README.md
file was completely restructured with collapsible sections to better organize and showcase the dashboard's features. [#78]
08-09-2025
📢 Local Ad Management, Config UI Overhaul & Performance Optimizations
This is a major release for the web dashboard, introducing a comprehensive system for managing local ads, a ground-up refactoring of the application configuration UI for better modularity, and significant architectural changes to improve user experience and performance.
📢 Local Ad Management System
A complete system for managing self-hosted advertisements has been integrated into the dashboard. This allows administrators to directly control and deploy various types of ads without relying on external ad networks.
- Added a full suite of UI pages and forms for creating, editing, archiving, and restoring local ads, supporting native, banner, interstitial, and video ad types. [#74]
- Integrated new data clients and repositories for
LocalAd
entities to ensure seamless data handling. [#74] - Expanded localization with numerous new strings for local ad management and generalized existing ad-related terminology. [#74, #76]
⚙️ App Configuration & Content Management Refactor
The core sections for managing application settings and content have been significantly re-architected to improve usability, maintainability, and user experience.
- Modular Configuration UI: The monolithic App Configuration page has been broken down into dedicated, tab-based components (
Feed
,Advertisements
,General
), making the settings easier to navigate and manage. [#72, #73] - Centralized Selection Component: Replaced disparate dropdowns across content management forms with a new, generic
SearchableSelectionInput
widget, providing a consistent UI with search and pagination for selecting items like topics, sources, and countries. [#69] - Decoupled BLoC Logic: Refactored the Create/Edit BLoCs to be leaner by decoupling them from the responsibility of fetching and managing lists of related entities, which is now handled by the new generic selection components. [#69]
- Reactive Data Updates: The
ContentManagementBloc
now listens toentityUpdated
streams from data repositories for more automatic and efficient UI updates, removing the need for explicit event dispatches. [#69] - Optimized Data Fetching: Added conditional checks to prevent redundant API calls for headlines, topics, and sources when switching tabs if the data is already loaded. [#71]
- Granular Ad Settings: The ad configuration UI was further refactored to introduce a global ad enable/disable switch and provide more granular control, such as selecting a specific
BannerAdShape
for article ads. [#75, #77]
🎨 UI/UX & Theming Improvements
Several changes were made to improve visual consistency and clarity throughout the dashboard.
- "Dashboard" to "Overview" Renaming: Systematically renamed the "dashboard" feature to "overview" across UI elements, localization files, BLoCs, and file structures for better clarity. [#66]
- Consistent Web Theming: Wrapped the main router content in a
Scaffold
to apply a consistent, theme-adaptive background color outside of the central content area, improving the visual presentation on wider screens. [#67] - Localization Refinements: Updated UI text to be more concise and accurate, such as clarifying that content management pertains to the "mobile application". [#68, #70]
12-08-2025
🚀 Configuration UI Overhaul & Core Model Updates
This release focuses on significantly improving the usability of the dashboard's configuration and settings pages. We've introduced a major UI overhaul to reduce clutter and fix common workflow annoyances. Additionally, we've updated core data models and logic to make the system more robust and flexible for future enhancements.
✨ A Modernized Configuration Experience
The App Configuration and Settings pages have been redesigned to be more intuitive and less overwhelming, especially for complex setups.
Our Goal: To improve navigation and reduce visual clutter, allowing administrators to focus on one section at a time without getting lost on a long page.
- Collapsible Sections: All major configuration areas are now wrapped in collapsible
ExpansionTile
widgets. You can now expand only the section you need to edit, keeping the rest of the page tidy. - Intuitive Text Editing: We've fixed a common Flutter UI issue where the cursor would jump to the beginning of a text field during an update. The cursor now correctly stays at the end of the text, providing a much smoother editing experience.
- Dynamic Decorator Management: The "Feed Decorators" section is now more intelligent. It dynamically displays all available decorator types, even if they aren't configured yet, making it easier to manage all options from a single place.
🛠️ Foundational Upgrades & Refactoring
We've made several important changes under the hood to align with recent API updates and improve maintainability.
- Introducing "Feed Decorators": The old "Account Actions" system has been refactored into a more flexible "Feed Decorators" system. This provides a clearer and more powerful way to configure how content is presented in the user's feed.
- New
Language
Model: The dashboard no longer treats language as a simple text string. It now utilizes a properLanguage
object, ensuring more robust and consistent handling of language-specific settings. - Centralized App Constants: Common values, like the maximum app width, have been moved into a central
AppConstants
class. This improves code organization and ensures consistency across the application.
🐛 Other Fixes & Improvements
- Remote Config Fix: Corrected a bug where timestamps (
createdAt
andupdatedAt
) were not being handled properly when updating a remote configuration. - Expanded Localization: Added new translation keys to support the new "Feed Decorators" system and to provide localized names for user roles and enums.
- Dependency Updates: Several packages have been updated to their latest versions, including
go_router
, to ensure the project remains secure and up-to-date.
03-08-2025
🚀 Release: Archiving, Data Loading, and UI Enhancements
This release introduces significant backend and data handling improvements to the dashboard. The changes focus on ensuring data integrity through a new archiving system, intelligently working around UI component limitations for data loading, and refining the overall user experience.
🗑️ Content Archiving for Data Integrity
We've implemented a content archiving workflow to act as a soft-delete mechanism. This was a necessary architectural change driven by how our document-based backend operates.
Technical Rationale: Directly deleting a document (like a 'source') could break data integrity, as other documents (like 'headlines') might still reference it. Archiving preserves these essential links while effectively removing the content from active use.
- New Workflow: Instead of being deleted, content items are now moved to an 'archived' state. New pages have been added to view and manage this archived content.
- Controlled Deletion: To maintain data integrity, only the primary container item—a headline—can be permanently deleted, and only from within the archive page itself.
- Undo Safety Net: A 5-second "Undo" option now appears after a headline is permanently deleted from the archive, providing a buffer to prevent accidental data loss.
⚡ Refactoring Data Loading for UI Consistency
This release changes how we load data into dropdown menus (e.g., country and language lists). This was a deliberate engineering tradeoff to maintain a consistent UI across the app.
- The Challenge: The standard
DropdownButtonFormField
widget we use for UI consistency does not support scroll detection, making it impossible to load more data as a user scrolls (on-demand pagination). - Our Solution: We now pre-fetch the required data. When a form is opened, a
ThrottledFetchingService
intelligently loads the complete list of items in the background. This process is designed to be efficient and not block the UI. - The User Experience: While the data is being loaded, the dropdown is temporarily disabled and shows a "Loading full list..." message. Once the fetch is complete, the dropdown becomes active with the full list of options.
🛠️ Other Notable Improvements
- Authentication Polish:
- A 60-second cooldown has been added to the "Send Code" button to prevent abuse.
- The verification code entry now uses a cleaner
Pinput
widget for a better visual experience.
- Reactive Dashboard: The main dashboard summary now listens for content changes and updates its statistics automatically, eliminating the need for manual refreshes.
- Consistent Data Sorting: Fixed a bug to ensure all content lists are now correctly sorted by their
updatedAt
timestamp, always showing the most recently modified items first. - Active Content Filtering: Data fetches for content management now correctly filter out archived items, ensuring only active content is shown in lists and forms.
23-07-2025
🚀 Foundational Refactoring & Rebranding
This release introduces a breaking, project-wide refactoring to standardize our internal package structure and update the project's public-facing brand. The ht_
prefix has been removed from all internal packages to improve clarity and maintainability.
This is a comprehensive change that touches nearly every file, re-establishing the project's identity and creating a cleaner, more conventional codebase for future development.
✨ Key Changes & Enhancements
Package Renaming & Standardization
- Internal Packages Renamed: All internal packages, previously prefixed with
ht_
(e.g.,ht_auth_repository
), have been renamed to remove the prefix (e.g.,auth_repository
). This required a complete update of allimport
statements and class references. - Standardized Error Handling: As part of this effort, the custom
HtHttpException
has been replaced with the more standardHttpException
type across the application.
Branding & Documentation Updates
- Project Rebranded: The project's public-facing brand has been officially updated from "Headlines Toolkit" to "Flutter News App Dashboard".
- Documentation & Metadata Updated: This new branding is reflected across the
README.md
, the web pagetitle
, and themanifest.json
application name.
🔧 Tooling & Maintenance
- Dependabot Configuration: The Dependabot configuration has been updated to explicitly list the newly renamed internal packages, ensuring our dependency management tools continue to work correctly.
21-07-2025
🚀 Architectural Refactor: Adopting the Shared UI Kit
This release marks a substantial architectural refactoring of the dashboard application, focused on centralizing our user interface components and standardizing the look and feel.
We have migrated all common UI widgets, themes, and utilities from the local lib/shared
directory into our new, shared ht_ui_kit
package. This change significantly reduces code duplication, ensures a consistent visual experience across our suite of apps, and improves the long-term maintainability of the codebase.
✨ Key Changes & Enhancements
- Shared UI Kit Integration: All common UI components, including spacing definitions, themes, and shared widgets like
FailureStateWidget
andLoadingStateWidget
, have been moved into theht_ui_kit
package. - Centralized Localization Access: The method for accessing localized strings has been standardized. The application now uses the
AppLocalizationsX(context).l10n
extension provided by the UI kit, ensuring consistency. - Simplified Project Structure: The local
lib/shared
directory and its contents have been removed, resulting in a cleaner, more streamlined project structure with less redundant code to maintain locally. - Dependency & Code Cleanup: Dependencies have been updated to align with the new shared packages. Obsolete logic, such as local
timeago
messages and thekIsWeb
parameter for the HTTP client, has been removed as this is now handled by the shared libraries.
14-07-2025
✨ UI Overhaul & Foundational Refinements
This release introduces a complete overhaul of the App Configuration screen, making it significantly more organized and user-friendly. Alongside this visible change, we've executed a major refactoring of our error handling and localization systems, resulting in a more robust, maintainable, and stable application.
🎨 UI Overhaul: Tab-Based App Configuration
The App Configuration page has been completely redesigned, moving from a single long list to a clean, tab-based interface. This makes it much easier and faster for administrators to find and manage specific settings.
- Categorized Settings: Configurations are now logically grouped under new 'Feed', 'Advertisements', and 'General' tabs.
- Improved Modularity: The previous 'Operational Status' section has been split into more focused 'Maintenance Mode' and 'Force App Update' sections for better clarity.
🛡️ Robust Error Handling & Stability
The application's error handling system has been fundamentally refactored to be more structured, informative, and user-friendly.
- Exception-Driven Errors: We've replaced simple string-based error messages with a structured, exception-driven approach (
HtHttpException
). This provides richer information for both debugging and user feedback. - Localized, User-Friendly Messages: All user-facing error messages are now context-aware and localized, providing clear, helpful feedback instead of generic error text. A central
FailureStateWidget
ensures this experience is consistent across the entire app.
🌍 Enhanced Localization & Code Maintainability
A major effort was undertaken to improve our internationalization infrastructure and overall code quality.
- Centralized UI Text: Numerous hardcoded UI strings (labels, descriptions, prompts) have been migrated into our localization files, making the app easier to translate and maintain.
- Dynamic Localization: The system now supports dynamic localization, allowing UI text to adapt based on user context, such as their role (Guest, Standard, etc.).
- Improved Maintainability: To reduce errors and improve readability, hardcoded repository IDs have been replaced with named constants, and redundant code comments have been removed.
13-07-2025
🚀 Major Architectural Refactor & Content Management Overhaul
This release introduces a significant architectural refactor of the application, aligning the data models and state management with recent backend updates. We have renamed core data models (Category
-> Topic
), overhauled the AuthenticationBloc
for better consistency, and introduced dedicated UIs for managing content types.
These changes establish a more robust, maintainable, and consistent foundation for the application, while also enhancing content management capabilities.
✨ Key Features & Enhancements
Architectural & Core Model Updates
- Core Model Renaming: The
Category
data model has been renamed toTopic
throughout the entire application, including repositories, BLoCs, and UI components. Similarly,AppConfig
is nowRemoteConfig
to better reflect its purpose. - Centralized App Configuration: Application status and update settings are now cohesively managed within the
RemoteConfig
model, providing a more streamlined approach to configuration.
Enhanced Content Management
- Dedicated Topic Management: The app now features dedicated pages and business logic (BLoCs) for creating and editing
Topic
entities, providing a structured UI for managing content categories. - Richer Headline Data: The
Headline
model has been enhanced with new fields, includingexcerpt
(which replaces the previousdescription
field) andeventCountry
.
🔧 State Management & Technical Refinements
- Refactored Authentication State: The
AuthenticationBloc
has been significantly refactored. Its numerous states have been consolidated into a singleAuthenticationState
class, managed by anAuthenticationStatus
enum, which simplifies state transitions and improves code maintainability. - Updated Role Management: The
AppBloc
has been updated to align with the newDashboardUserRole
andAppUserRole
enums from the backend, ensuring user permissions are handled correctly. - Structured Logging: The
logging
package has been integrated across key BLoCs, replacingprint
statements with structured and more informative logging. - Improved Data Querying: Data fetching operations now consistently use
PaginationOptions
andSortOption
objects for clearer and more flexible API queries. - Dependency Updates: Several internal
ht-*
package dependencies have been updated, and new packages likelogging
anduuid
have been added to support new features.
05-07-2025
🛡️ Authentication Overhaul & UX Refinements
This release introduces a major overhaul of the application's authentication system to align with recent backend updates. We've also focused on enhancing the user experience with full localization of the sign-in flow, a more helpful demo mode, and polished UI refinements on the dashboard.
🔐 Authentication System Enhancements
- New Role-Based Authentication: The core authentication logic has been refactored to support a new multi-role system. The app now validates users based on an array of roles (e.g.,
admin
,publisher
), making our permission handling more flexible and robust. - Fully Localized Sign-In Flow: All hardcoded text has been removed from the authentication and code verification pages. UI text like headlines, subheadlines, and hints are now sourced directly from localization files, improving maintainability and ensuring a consistent experience in all supported languages.
- Improved Demo Experience: To make testing easier, the login and verification pages now display helpful hints with demo credentials, but only when the app is running in the demo environment.
- Enhanced Error Handling: The sign-in process is now more robust, with more granular error handling for specific issues like
Unauthorized
,Forbidden
, orNotFound
exceptions from the API.
✨ Dashboard & UX Improvements
- Improved Visual Hierarchy: The "Quick Actions" card on the dashboard has been refined. The 'Create Category' and 'Create Source' actions are now styled as
OutlinedButton
s, visually de-emphasizing them to establish 'Create Headline' as the clear primary action.
🔧 Technical Refinements
- Dependency Updates: Core authentication and shared utility libraries (
ht-auth-*
,ht-shared
) have been updated to their latest versions. - Code Refactoring: The management of the application's environment state within the
AppBloc
has been streamlined for better clarity.
04-07-2025
🚀 New Dashboard Overview Page
This release introduces a new Dashboard Overview page, which now serves as the central landing hub for the application. This new page provides administrators with an at-a-glance summary of key application metrics, a feed of recent content activity, and quick access to the most common management tasks.
The overview page is designed from the ground up to be fully responsive, ensuring a seamless and adaptive experience across all screen sizes. This provides a more powerful and intuitive starting point for all administrative workflows.
✨ Key Features
- Central Hub: The new overview page acts as a central home for the app, displaying a comprehensive summary of statistics (total headlines, categories, sources) and recent activity.
- Streamlined Quick Actions: A refined "Quick Actions" card offers convenient shortcuts to
Create Category
andCreate Source
, making common tasks faster. - Robust State Management: A dedicated
DashboardBloc
has been integrated to efficiently manage data fetching and state for the overview page, ensuring a reliable and responsive experience. - Full Internationalization: All new UI elements on the overview page, including titles, stats, and actions, come with full localization support.
🎨 Responsive Design & UI Enhancements
- Adaptive Layout: The new Dashboard Overview page is fully responsive. Summary cards and the main content area intelligently rearrange themselves to provide an optimal viewing experience on both wide and narrow screens.
- Polished UI: The "Quick Actions" card has been refined using
ElevatedButton.icon
for a consistent and visually appealing design that improves usability.