0xAdiyat / Dialogix

Dialogix: Where conversations shape communities and ideas resonate

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Dialogix


Dialogix Logo

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


Dialogix Thumbnail

Table of Contents
  1. Dialogix

Important

Platform Support

  • Android
  • iOS
  • Web
  • Mac
  • Windows
  • Linux

Screenshots

Feed Screen Hub Screen Post Screen Share Screen
Feed Screen Hub Screen Post Screen Share Screen

Features

  • 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.
  • 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.

Folder Structure

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

Architecture: Feature-Driven and Controller-Repository Pattern

Overview

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.

Benefits

  • 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.

Packages

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

Getting Started

  1. Clone the repository:
    git clone https://github.com/0xAdiyat/Dialogix.git
  2. Install dependencies:
    cd dialogix
    flutter pub get
  3. 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.

Author

@0xAdiyat


back to top

About

Dialogix: Where conversations shape communities and ideas resonate


Languages

Language:Dart 81.9%Language:C++ 8.6%Language:CMake 6.7%Language:HTML 1.2%Language:Swift 1.1%Language:C 0.5%Language:Java 0.0%Language:Objective-C 0.0%