A Flutter-based community platform developed for HackSlash Coding Club to enable collaboration, content sharing, real-time communication, and event management.
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.
- π 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
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.
- 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
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
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