Skip to content

Latest commit

Β 

History

History
128 lines (104 loc) Β· 5.27 KB

File metadata and controls

128 lines (104 loc) Β· 5.27 KB

Community App

A Flutter-based community platform developed for HackSlash Coding Club to enable collaboration, content sharing, real-time communication, and event management.


πŸ“Œ About the Project

The Community App was built to provide a centralized digital platform for students and developers to collaborate, communicate, and participate in community-driven activities.
The application focuses on scalability, real-time interaction, and clean architecture using modern Flutter development practices.


✨ Key Features

  • πŸ” Secure user authentication using Firebase Auth
  • 🏠 Community feed for announcements and content sharing
  • πŸ’¬ Real-time chat using Firebase Realtime Database
  • πŸŽ₯ Video meetings integration using Agora API
  • πŸ“š Learning and resource-sharing module
  • πŸ‘€ User profile management
  • πŸ“… Event management system
  • πŸ’Ύ Local storage using Hive
  • ⚑ Reactive UI with GetX state management

πŸš€ Working Prototype

https://drive.google.com/file/d/141LoPm9ikwKmZ_Mpwb64nAC-5g16jBJV/view?usp=drivesdk

A fully functional working prototype has been developed demonstrating:

  • Authentication flow
  • Real-time chat
  • Video meeting functionality
  • Community feed
  • Profile and learning modules

The prototype validates the core system architecture and feature feasibility.


πŸ› οΈ Tech Stack

  • Frontend: Flutter
  • State Management: GetX
  • Backend Services: Firebase
  • Authentication: Firebase Auth
  • Database: Firebase Realtime Database
  • Video Calling: Agora API
  • Local Storage: Hive
  • Media Storage: Cloudinary

🧱 App Architecture

The application follows a modular MVC-based architecture using GetX:

  • Controllers handle state and business logic
  • Views manage UI components
  • Services encapsulate API and backend interactions
  • Models represent structured application data

This architecture ensures:

  • Scalability
  • Maintainability
  • Clear separation of concerns

πŸ“ Folder Structure

lib/
β”‚
β”œβ”€β”€ controllers/               # Contains all the controllers for state management (using GetX)
β”‚   β”œβ”€β”€ auth_controller.dart        # Handles authentication logic
β”‚   β”œβ”€β”€ home_controller.dart        # Handles home screen state and logic
β”‚   β”œβ”€β”€ chat_controller.dart        # Handles chat logic and real-time data
β”‚   β”œβ”€β”€ learning_controller.dart   # Handles learning content logic
β”‚   β”œβ”€β”€ profile_controller.dart    # Handles user profile data and updates
β”‚
β”œβ”€β”€ models/                    # Contains the data models for the app
β”‚   β”œβ”€β”€ user_model.dart             # Model for user data
β”‚   β”œβ”€β”€ message_model.dart          # Model for chat messages
β”‚   β”œβ”€β”€ course_model.dart           # Model for learning content or courses
β”‚   β”œβ”€β”€ profile_model.dart          # Model for profile data
β”‚
β”œβ”€β”€ services/                  # Contains services for API calls and business logic
β”‚   β”œβ”€β”€ auth_service.dart           # Auth-related logic (e.g., login, register, token management)
β”‚   β”œβ”€β”€ chat_service.dart           # Chat service (e.g., message sending, receiving)
β”‚   β”œβ”€β”€ learning_service.dart      # Service to fetch learning content or courses
β”‚   β”œβ”€β”€ profile_service.dart       # Service to handle user profile data
β”‚
β”œβ”€β”€ utils/                      # Contains utility functions and constants
β”‚   β”œβ”€β”€ constants.dart              # App-wide constants (e.g., URLs, keys)
β”‚   β”œβ”€β”€ validators.dart             # Validation functions (e.g., email, password validation)
β”‚   β”œβ”€β”€ network_util.dart           # Helper functions for making API calls
β”‚   β”œβ”€β”€ storage_util.dart           # Utility functions for handling local storage
β”‚
β”œβ”€β”€ views/                      # Contains all views (UI screens) for the app
β”‚   β”œβ”€β”€ auth/
β”‚   β”‚   β”œβ”€β”€ login_view.dart         # Login screen view
β”‚   β”‚   β”œβ”€β”€ register_view.dart      # Registration screen view
β”‚   β”œβ”€β”€ home/
β”‚   β”‚   └── home_view.dart          # Home screen view
β”‚   β”œβ”€β”€ chat/
β”‚   β”‚   └── chat_view.dart          # Chat screen view
β”‚   β”œβ”€β”€ learning/
β”‚   β”‚   └── learning_view.dart     # Learning content screen view
β”‚   β”œβ”€β”€ profile/
β”‚   β”‚   └── profile_view.dart      # Profile screen view
β”‚
β”œβ”€β”€ widgets/                    # Reusable UI components
β”‚   β”œβ”€β”€ bottom_nav_bar.dart        # Bottom navigation bar widget
β”‚   └── custom_widgets.dart        # Any other reusable UI components
β”‚
β”œβ”€β”€ routes/                      # Contains routing logic for the app
β”‚   └── app_routes.dart            # Handles routing logic
β”‚
β”œβ”€β”€ res/                         # Contains assets like fonts and colors
β”‚   β”œβ”€β”€ fonts/                     # Folder for custom fonts
β”‚   β”‚   └── OpenSans-Regular.ttf    # Example custom font
β”‚   β”œβ”€β”€ colors.dart                # File for defining color constants
β”‚
└── main.dart                      # Main app entry point, where GetX bindings are set up