neom_home 1.4.0-dev copy "neom_home: ^1.4.0-dev" to clipboard
neom_home: ^1.4.0-dev copied to clipboard

Home for Open Neom.

neom_home #

Purpose & Overview #

neom_home serves as the foundational user interface and navigation hub for the entire Open Neom application. It provides the primary Scaffold where all core functionalities converge, orchestrating the user's journey through various modules like the timeline, profile, and other feature pages. This module is the direct manifestation of Open Neom's commitment to a seamless, integrated, and user-centric experience, allowing for fluid navigation and interaction within the ecosystem.

Designed with Open Neom's core architectural principles in mind, neom_home is a highly decoupled module that leverages shared components from neom_commons and interacts with core services defined in neom_core. It represents the "home base" where users actively engage with the platform's features for conscious well-being, neuroscientific insights, and digital harmony.

🌟 Features & Responsibilities neom_home is central to the user experience, providing critical UI and navigation features:

β€’ Core Application Shell: Implements the main Scaffold structure, including the AppBar, Drawer (for global navigation), FloatingActionButton (for primary actions), and BottomAppBar (for contextual navigation). β€’ Centralized Navigation Orchestration: Manages the PageView controller and BottomAppBar logic, enabling smooth transitions between different primary content pages (e.g., timeline, secondary tabs). β€’ Dynamic UI Adaptation: Features conditional rendering of UI elements (like the AppBar visibility) and dynamic population of BottomAppBar items based on the availability of feature modules, allowing for adaptable app flavors. β€’ User Profile Integration: Displays the user's profile image and handles interactions related to the current user's profile directly within the AppBar. β€’ Common Action Modals: Provides a modalBottomSheetMenu for quick access to common actions such (e.g., creating posts, organizing events), enhancing user efficiency. β€’ Global State Management Integration: Utilizes GetX's HomeController to manage UI-related state (like current page index, loading states) and orchestrate interactions with essential services (LoginService, UserService, TimelineService). β€’ Platform and App Flavor Adaptability: Incorporates logic that adapts the UI and navigation flow based on the AppInUse configuration, supporting different versions or uses of the Open Neom application. β€’ Initial App Loading & User Session Management: Handles initial loading states and checks for active user sessions, redirecting to login/logout flows as necessary.

Technical Highlights / Why it Matters (for developers) #

For developers looking to understand advanced Flutter patterns, neom_home offers a rich learning ground:

β€’ GetX in Practice: Demonstrates practical application of GetX for reactive state management (.obs, Obx, GetBuilder), dependency injection (Get.find, Get.put), and route management (Get.toNamed). β€’ Complex Widget Composition: Showcases how to compose multiple Flutter widgets (Scaffold, PageView, BottomAppBar, AppBar, Drawer, FloatingActionButton) to build a cohesive and functional application shell. β€’ Service Integration: Illustrates how a UI module interacts with abstract services (e.g., TimelineService, UserService) defined in neom_core, maintaining a clean separation of concerns. β€’ Conditional UI Logic: Provides examples of building dynamic UIs that adapt based on data, user state, or application configuration. β€’ Modular Application Structure: As the central integration point, it exemplifies how different, independently developed modules (neom_timeline, neom_posts, neom_audio_player) can be seamlessly plugged into the main application.

How it Supports the Open Neom Initiative #

As the primary user interface, neom_home is pivotal to Open Neom's vision and the Tecnozenism philosophy:

β€’ Unified User Experience: It provides the overarching framework that unifies all modular functionalities, delivering a cohesive and intuitive experience for users engaging with conscious well-being practices and neuroscientific tools. β€’ Embodiment of Modularity: By integrating content from various feature modules, it visually represents the "Plug-and-Play" nature of Open Neom's architecture, demonstrating the power of a decoupled system. β€’ Facilitating Conscious Engagement: The thoughtful design of the home screen, navigation, and quick actions aims to create a mindful digital environment, aligning directly with the Tecnozenism principle of balanced interaction with technology. β€’ Foundation for Expansion: Its flexible structure allows for easy addition of new feature modules and adaptation to different app flavors, ensuring Open Neom's scalability and future growth towards decentralization and open research.

πŸš€ Usage

This module is intended to be the main application entry point, wrapping and orchestrating other feature modules (firstPage, secondPage, etc.) which are passed to the HomePage widget. It serves as the top-level container for the user's primary interaction flow.

πŸ› οΈ Dependencies neom_home relies heavily on neom_core for core services, models, and routing constants, and on neom_commons for reusable UI components, themes, and utility functions.

🀝 Contributing

We encourage contributions to the neom_home module! As the main application interface, improvements here directly enhance the user's primary experience. Whether you're interested in UI/UX refinements, navigation logic, or integrating new global actions, your contribution can have a significant impact.

To understand the broader architectural context of Open Neom and how neom_home fits into the overall vision of Tecnozenism, please refer to the main project's MANIFEST.md.

For guidance on how to contribute to Open Neom and to understand the various levels of learning and engagement possible within the project, consult our comprehensive guide: Learning Flutter Through Open Neom: A Comprehensive Path.

πŸ“„ License This project is licensed under the Apache License, Version 2.0, January 2004. See the LICENSE file for details.