A flutter-based social app that provides a platform for community-driven discussions and content sharing.
EXPLORE ● THE DOCS
View Demo
·
Report Bug
·
Request Feature
Table of Contents
Feed Screen | Hub Screen | Post Screen | Share Screen |
---|---|---|---|
-
Dynamic Links for Posts:
- Users can create and share dynamic links for individual posts.
- Post links redirect users to the specific post when clicked.
-
Pagination in Feed Screen:
- Implemented pagination for posts in the Feed screen.
- Efficiently loads and displays a manageable number of posts at a time.
-
Native Splash and Logo Support:
- Enhanced app launch experience with native splash screen support.
- Integrated native logo support for brand visibility.
-
Guest Sign-In Method:
- Added a guest sign-in method for users to explore the app quickly without creating an account.
-
Karma System for Users:
- Implemented a karma system to reward and track user contributions.
-
Community Features:
- Created, joined, and managed communities.
- Added mod tools UI for community moderation.
-
User Profile Enhancements:
- Added user profile screen and edit profile functionality.
- Implemented light mode and dark mode functionality.
-
Post Functionalities:
- Added post-type screen.
- Enabled users to post images, links, or text descriptions.
-
Dynamic Text Input:
- Introduced
DetectableTextField
to detect and highlight mentions (@) and URLs in text input.
- Introduced
-
Animation and UI Improvements:
- Animated bottom navigation bar on click.
- Added animations during page switch through the bottom navigation bar.
-
Dark and Light mode support
-
Bug Fixes and Optimization:
- Fixed post-blur visibility issue during scrolling.
- Optimized code for improved responsiveness and efficiency.
lib
|-- core
| |-- common
| | |-- widgets
| | | |-- dialogix_cached_network_image.dart
| | |-- error_text.dart
| | |-- loader.dart
| | |-- post_card.dart
| | |-- sign_in_button.dart
| |-- constants
| | |-- constants.dart
| | |-- firebase_constants.dart
| | |-- font_constants.dart
| | |-- route_paths.dart
| |-- controller
| | |-- dynamic_link_controller.dart
| |-- enums
| |-- providers
| | |-- dynamic_link
| | | |-- dynamic_link_parameters_provider.dart
| | | |-- firebase_dynamic_link_repository_provider.dart
| | |-- firebase_providers.dart
| | |-- storage_repository_provider.dart
| |-- failure.dart
| |-- type_defs.dart
| |-- utils.dart
|-- features
| |-- auth
| | |-- controller
| | | |-- auth_controller.dart
| | |-- repository
| | | |-- auth_repository.dart
| | |-- screens
| | | |-- login_screen.dart
| |-- community
| | |-- controller
| | | |-- community_controller.dart
| | |-- repository
| | | |-- community_repository.dart
| | |-- screens
| | | |-- add_mods_screen.dart
| | | |-- community_screen.dart
| | | |-- create_community_screen.dart
| | | |-- edit_community_screen.dart
| | | |-- mod_tools_screen.dart
| |-- error
| | |-- screens
| | | |-- error_screen.dart
| |-- feed
| | |-- screens
| | | |-- feed_screen.dart
| | |-- widgets
| | | |-- category_tabs.dart
| |-- home
| | |-- delegates
| | | |-- search_community_delegate.dart
| | |-- drawers
| | | |-- community_list_drawer.dart
| | | |-- profile_drawer.dart
| | |-- screens
| | | |-- home_screen.dart
| |-- post
| | |-- controller
| | | |-- post_controller.dart
| | |-- repository
| | | |-- post_repository.dart
| | |-- screens
| | | |-- add_post_screen.dart
| | | |-- add_post_type_screen.dart
| | | |-- comments_screen.dart
| | |-- widgets
| | | |-- comment_card.dart
| |-- user_profile
| | |-- controller
| | | |-- user_profile_controller.dart
| | |-- repository
| | | |-- user_profile_repository.dart
| | |-- screens
| | | |-- edit_profile_screen.dart
| | | |-- user_profile_screen.dart
|-- generated
|-- models
| |-- comment_model.dart
| |-- community_model.dart
| |-- dynamic_link_query_model.dart
| |-- post_model.dart
| |-- user_model.dart
|-- responsive
| |-- responsive.dart
|-- theme
| |-- palette.dart
firebase_options.dart
main.dart
router.dart
Note
Dialogix adopts a Feature-Driven Structure, promoting modularity with self-contained features like auth, community, feed. The Controller-Repository Pattern is employed:
- Controllers: Manage business logic and state, facilitating feature-level interactions.
- Repositories: Abstract data access logic, interacting with external services or local storage.
The project also uses the Provider Pattern for state management, enhancing reactivity.
- Modularity: Features operate independently, fostering maintainability and scalability.
- Separation of Concerns: Controllers manage logic, while repositories handle data access, ensuring code clarity.
- Provider Pattern: Enables robust state management for reactive application behavior.
Name | Usage |
---|---|
cupertino_icons | Cupertino style icons for Flutter |
flutter_riverpod | State management library for Flutter applications using Provider |
riverpod_annotation | Annotations for Riverpod, a simple way to manage state in Flutter |
flutter_screenutil | A Flutter plugin for adapting screen and font size |
gap | A package to create padding and margin with multiples of 5 pixels |
google_fonts | Google Fonts for Flutter |
cached_network_image | Download, cache and show images in a Flutter app |
flutter_svg | SVG parsing, rendering, and widget library for Flutter |
dotted_border | A Flutter package to create dotted borders |
gallery_picker | Flutter package for displaying images and videos from gallery |
detectable_text_field | A customizable text field widget with built-in @ and URL detection |
animate_do | Beautiful animations inspired by Animate.css |
firebase_core | Firebase initialization for Flutter |
firebase_storage | Firebase Cloud Storage for Flutter |
cloud_firestore | Flutter plugin for Cloud Firestore, a cloud-hosted, noSQL database with live synchronization |
firebase_auth | Firebase Authentication for Flutter |
google_sign_in | Flutter plugin for Google Sign-In |
firebase_ui_firestore | Firebase UI for Flutter Firestore, simplifies the usage of Firebase UI features with Firestore |
firebase_dynamic_links | Flutter plugin for Firebase Dynamic Links |
freezed | Code generation for immutable classes in Dart |
freezed_annotation | Freezed annotations for Dart |
riverpod_generator | Code generator for Riverpod, a simple way to manage state in Flutter |
json_annotation | JSON serialization/deserialization library for Dart |
json_serializable | JSON serialization/deserialization built on top of Dart's json package |
fpdart | Functional programming constructs and utilities for Dart |
routemaster | Flutter package for simple and powerful routing |
uuid | Generate RFC4122 UUIDs for Flutter |
file_picker | A package that allows you to use a native file explorer to pick single or multiple absolute file paths, with extensions filtering support |
shared_preferences | Flutter plugin for reading and writing simple key-value pairs |
any_link_preview | Flutter package to extract links and preview data from any text content |
- Clone the repository:
git clone https://github.com/0xAdiyat/Dialogix.git
- Install dependencies:
cd dialogix flutter pub get
- Run the app:
flutter run
Important
If you wish to contribute a change to any of the existing features or add new to this repo, please feel free to contribute, and send a pull request. I welcome and encourage all pull requests. It usually takes me within 24-48 hours to respond to any issue or request.
@0xAdiyat