Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

121 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

WatchMates - Mobile Computing Assignment

A modern Android application for AFL watch parties built with Kotlin, Jetpack Compose, and Clean Architecture. Features a complete event management system with location-based discovery, smart notifications, and gamification elements.

๐Ÿš€ Fully Implemented Features

๐Ÿ” Authentication & User Management

  • Firebase Authentication: Google Sign-In and email/password registration
  • User Onboarding: Multi-step registration flow with validation
  • Profile Management: User profile with points system and team selection
  • QR Code Generation: Personal QR codes for user identification
  • Legal Documents: Built-in Privacy Policy and Terms & Conditions viewer

๐ŸŽฏ Event Management System

  • Event Creation: Full event hosting with match details, location, and amenities
  • Event Discovery: Interactive map with Google Maps integration
  • Location-Based Search: Find events by location with geocoding
  • Event Details: Comprehensive event information with attendee tracking
  • Event Updates: Real-time event modification and notifications

๐Ÿ“ Location & Mapping Features

  • Google Maps Integration: Interactive map with custom markers
  • Location Services: GPS tracking and location-based event filtering
  • Nearby Events: Automatic detection of events within 3km radius
  • Location Search: Geocoding for address-based event discovery
  • Viewport-Based Loading: Efficient event loading based on map view

๐Ÿ”” Smart Notification System

  • Favorite Team Alerts: Notifications when favorite teams have events nearby (5km)
  • Proximity Notifications: Real-time alerts when approaching events (100m)
  • Event Updates: Notifications for event changes and cancellations
  • Location-Based Triggers: Automatic notifications based on location changes

๐ŸŽฎ Gamification & Points System

  • Points System: Earn points for event participation and check-ins
  • Points Levels: Rookie Fan โ†’ Regular Supporter โ†’ Dedicated Fan โ†’ Super Fan โ†’ Ultimate Fan โ†’ Legend
  • Shake-to-Reveal: Interactive points reveal with haptic feedback
  • Points Tracking: Real-time points updates and history

๐Ÿ“ฑ QR Code & Check-in System

  • QR Code Scanning: Camera-based QR code scanning for event check-in
  • Secure Check-in: Duplicate check-in prevention and validation
  • Host Event Discovery: Scan host QR codes to find their events
  • Check-in Confirmation: Visual confirmation with points rewards

๐ŸŽต Audio Ambiance Capture

  • Microphone Sampling: Real-time audio level detection using device microphone
  • Event Ambiance Tracking: Capture and store audio snapshots during events
  • Rolling Average Calculation: 20-minute rolling average of event noise levels
  • Ambiance Analytics: Track event atmosphere and energy levels

๐ŸŽจ Modern UI & UX

  • Jetpack Compose: Modern declarative UI with custom components
  • Custom Theme: Racing Sans One typography with orange/yellow color scheme
  • Material Design 3: Latest Material Design components and patterns
  • Responsive Design: Adaptive layouts for different screen sizes
  • Custom Icons: Professional visibility toggles and menu icons

๐Ÿ—๏ธ Clean Architecture & Code Quality

  • MVVM Pattern: Model-View-ViewModel architecture with reactive data streams
  • Clean Architecture: Separation of concerns with domain, data, and presentation layers
  • Dependency Injection: Hilt for comprehensive dependency management
  • Repository Pattern: Abstracted data access with repository interfaces
  • Use Cases: Business logic encapsulated in use case classes
  • Error Handling: Comprehensive error handling with user-friendly messages

๐Ÿ—๏ธ Architecture

This project follows MVVM (Model-View-ViewModel) architecture pattern with Clean Architecture principles:

Architecture Layers

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚   Presentation  โ”‚  โ† Jetpack Compose UI + ViewModels
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚     Domain      โ”‚  โ† Business Logic + Use Cases
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚      Data       โ”‚  โ† Repositories + Data Sources
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Complete Project Structure

app/src/main/java/com/example/mobilecomputingassignment/
โ”œโ”€โ”€ data/                           # โœ… Data Layer
โ”‚   โ”œโ”€โ”€ constants/                  # โœ… Constant data sources
โ”‚   โ”‚   โ””โ”€โ”€ TeamConstants.kt        # AFL team data with local logos
โ”‚   โ”œโ”€โ”€ models/                     # โœ… Data transfer objects
โ”‚   โ”‚   โ”œโ”€โ”€ UserDto.kt              # User data model
โ”‚   โ”‚   โ”œโ”€โ”€ EventDto.kt             # Event data model
โ”‚   โ”‚   โ””โ”€โ”€ MatchDetailsDto.kt      # Match data model
โ”‚   โ”œโ”€โ”€ remote/                     # โœ… External data sources
โ”‚   โ”‚   โ””โ”€โ”€ firebase/               # Firebase integration
โ”‚   โ”‚       โ”œโ”€โ”€ FirestoreService.kt # Firestore database service
โ”‚   โ”‚       โ””โ”€โ”€ EventFirestoreService.kt # Event-specific operations
โ”‚   โ”œโ”€โ”€ repository/                 # โœ… Repository implementations
โ”‚   โ”‚   โ”œโ”€โ”€ UserRepository.kt       # User data repository
โ”‚   โ”‚   โ””โ”€โ”€ EventRepository.kt      # Event data repository
โ”‚   โ””โ”€โ”€ service/                    # โœ… Background services
โ”‚       โ”œโ”€โ”€ FavoriteTeamNotificationService.kt # Smart notifications
โ”‚       โ”œโ”€โ”€ EventNotificationService.kt # Event notifications
โ”‚       โ””โ”€โ”€ FavoriteTeamMonitorService.kt # Location monitoring
โ”‚
โ”œโ”€โ”€ domain/                         # โœ… Business Logic Layer
โ”‚   โ”œโ”€โ”€ models/                     # โœ… Domain models
โ”‚   โ”‚   โ”œโ”€โ”€ User.kt                 # User domain model
โ”‚   โ”‚   โ”œโ”€โ”€ Event.kt                # Event domain model
โ”‚   โ”‚   โ””โ”€โ”€ MatchDetails.kt         # Match domain model
โ”‚   โ”œโ”€โ”€ repository/                 # โœ… Repository interfaces
โ”‚   โ”‚   โ”œโ”€โ”€ IUserRepository.kt      # User repository contract
โ”‚   โ”‚   โ””โ”€โ”€ IEventRepository.kt     # Event repository contract
โ”‚   โ”œโ”€โ”€ usecases/                   # โœ… Business use cases
โ”‚   โ”‚   โ”œโ”€โ”€ auth/                   # Authentication operations
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ CheckEmailExistUseCase.kt
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ CheckUsernameExistUseCase.kt
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ GoogleSignInUseCase.kt
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ LoginUseCase.kt
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ RegisterUseCase.kt
โ”‚   โ”‚   โ”œโ”€โ”€ events/                 # Event operations
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ CreateEventUseCase.kt
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ GetUserEventsUseCase.kt
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ UpdateEventUseCase.kt
โ”‚   โ”‚   โ””โ”€โ”€ notifications/           # Notification operations
โ”‚   โ”‚       โ””โ”€โ”€ ManageFavoriteTeamNotificationsUseCase.kt
โ”‚   โ””โ”€โ”€ util/                       # โœ… Domain utilities
โ”‚       โ””โ”€โ”€ NoiseSampler.kt         # Audio sampling utility
โ”‚
โ”œโ”€โ”€ presentation/                   # โœ… UI Layer
โ”‚   โ”œโ”€โ”€ ui/                         # Jetpack Compose UI
โ”‚   โ”‚   โ”œโ”€โ”€ component/              # โœ… Reusable components
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ ProfileCard.kt      # User profile component
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ ShakeToReveal.kt    # Points reveal component
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ MapPickerDialog.kt  # Location picker
โ”‚   โ”‚   โ”œโ”€โ”€ screen/                 # โœ… All app screens
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ auth/               # Authentication screens
โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ LoginStep.kt    # Login screen
โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ OnboardingScreen.kt # Onboarding flow
โ”‚   โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ SignupSteps.kt  # Registration steps
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ main/               # Main app screens
โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ MainAppScreen.kt # Main navigation
โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ ExploreScreen.kt # Map and discovery
โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ EventsScreen.kt # Event management
โ”‚   โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ ProfileScreen.kt # User profile
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ events/            # Event-specific screens
โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ CreateEventScreen.kt # Event creation
โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ EventDetailsScreen.kt # Event details
โ”‚   โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ CheckInCompleteScreen.kt # Check-in flow
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ qr/                # QR code screens
โ”‚   โ”‚   โ”‚       โ”œโ”€โ”€ QRCodeScreen.kt # QR code display
โ”‚   โ”‚   โ”‚       โ””โ”€โ”€ QRScannerScreen.kt # QR code scanning
โ”‚   โ”‚   โ””โ”€โ”€ theme/                  # โœ… Custom WatchMates theme
โ”‚   โ”‚       โ”œโ”€โ”€ Color.kt            # Color scheme
โ”‚   โ”‚       โ”œโ”€โ”€ Theme.kt            # Theme definition
โ”‚   โ”‚       โ””โ”€โ”€ Type.kt             # Typography (Racing Sans One)
โ”‚   โ”œโ”€โ”€ viewmodel/                  # โœ… State management
โ”‚   โ”‚   โ”œโ”€โ”€ AuthViewModel.kt        # Authentication view model
โ”‚   โ”‚   โ”œโ”€โ”€ ProfileViewModel.kt     # Profile view model
โ”‚   โ”‚   โ”œโ”€โ”€ EventViewModel.kt       # Event view model
โ”‚   โ”‚   โ”œโ”€โ”€ ExploreViewModel.kt     # Map exploration view model
โ”‚   โ”‚   โ”œโ”€โ”€ CheckInViewModel.kt     # Check-in view model
โ”‚   โ”‚   โ””โ”€โ”€ PointsViewModel.kt      # Points system view model
โ”‚   โ””โ”€โ”€ utils/                      # โœ… UI utilities
โ”‚       โ”œโ”€โ”€ QRCodeGenerator.kt      # QR code generation
โ”‚       โ””โ”€โ”€ ContentFilter.kt        # Content validation
โ”‚
โ”œโ”€โ”€ core/                           # โœ… Infrastructure
โ”‚   โ””โ”€โ”€ di/                         # Dependency injection (Hilt)
โ”‚       โ”œโ”€โ”€ AppModule.kt            # Application module
โ”‚       โ””โ”€โ”€ RepositoryModule.kt     # Repository bindings
โ”‚
โ”œโ”€โ”€ MainActivity.kt                 # โœ… Main entry point
โ””โ”€โ”€ WatchMatesApplication.kt        # โœ… Application class with Hilt

Legend: โœ… Fully Implemented | ๐Ÿ”„ In Progress | ๐Ÿ”ฒ Planned

๐Ÿ› ๏ธ Tech Stack

Core Technologies

  • Kotlin - Primary programming language with modern language features
  • Jetpack Compose - Declarative UI toolkit with custom components
  • MVVM Architecture - Reactive architecture with StateFlow
  • Clean Architecture - Domain-driven design with clear separation of concerns

Android Jetpack Components

  • Hilt - Comprehensive dependency injection framework
  • Navigation Compose - Type-safe navigation between screens
  • ViewModel - UI state management with lifecycle awareness
  • StateFlow - Reactive data streams for real-time UI updates
  • Lifecycle Components - Proper lifecycle management for all components

Backend & Data Management

  • Firebase Authentication - Google Sign-In and email/password authentication
  • Cloud Firestore - Real-time NoSQL database with offline support
  • Firebase Storage - File storage for user avatars and event images
  • Firebase Cloud Messaging - Push notifications for event updates

Location & Mapping

  • Google Maps SDK - Interactive maps with custom markers and clustering
  • Location Services - GPS tracking with permission management
  • Geocoding API - Address-to-coordinates conversion
  • Haversine Formula - Distance calculations for nearby events

Media & Sensors

  • CameraX - QR code scanning with ML Kit integration
  • AudioRecord API - Real-time microphone sampling for ambiance capture
  • ZXing - QR code generation and scanning
  • Vibration API - Haptic feedback for interactions

UI/UX Libraries

  • Material Design 3 - Latest Material Design components
  • Coil - Efficient image loading and caching
  • Custom Components - Reusable UI components with consistent theming
  • Responsive Design - Adaptive layouts for different screen sizes

Development & Quality

  • Gradle KTS - Type-safe build configuration
  • ProGuard - Code obfuscation and optimization
  • Logging - Comprehensive logging with different levels
  • Error Handling - Graceful error handling with user-friendly messages

โœจ Cool Features & Design Highlights

๐ŸŽต Audio Ambiance Capture System

One of the most innovative features is the real-time audio ambiance capture:

  • Microphone Sampling: Uses Android's AudioRecord API to capture 0.8-second audio samples
  • dBFS Calculation: Converts audio levels to decibels relative to full scale for consistent measurement
  • Rolling Average: Maintains a 20-minute rolling average of event noise levels
  • Event Atmosphere: Tracks the energy and atmosphere of watch parties in real-time
  • Privacy-Focused: Only captures audio levels, not actual audio content

๐ŸŽฎ Gamification with Shake-to-Reveal

Interactive points system with engaging UX:

  • Shake Detection: Uses device accelerometer to detect shake gestures
  • Haptic Feedback: Vibration patterns provide tactile feedback
  • Points Animation: Smooth animations reveal earned points
  • Level Progression: Six distinct fan levels from "Rookie Fan" to "Legend"
  • Random Rewards: Points range from 10-50 for each check-in

๐Ÿ”” Smart Notification System

Intelligent location-based notifications:

  • Favorite Team Alerts: Notifications when your teams have events within 5km
  • Proximity Notifications: Real-time alerts when you're within 100m of an event
  • Location Triggers: Automatic notifications based on significant location changes
  • Duplicate Prevention: Smart tracking prevents notification spam
  • Haversine Distance: Accurate distance calculations using spherical geometry

๐Ÿ—๏ธ Clean Architecture Implementation

Professional software engineering practices:

  • Domain-Driven Design: Business logic separated from framework concerns
  • Repository Pattern: Abstracted data access with clear interfaces
  • Use Case Classes: Single-responsibility business operations
  • Dependency Injection: Hilt provides comprehensive DI with minimal boilerplate
  • Reactive Programming: StateFlow and Compose for reactive UI updates
  • Error Handling: Comprehensive error handling with user-friendly messages

๐ŸŽจ Modern UI/UX Design

Cutting-edge mobile design patterns:

  • Material Design 3: Latest Material Design components and theming
  • Custom Components: Reusable UI components with consistent styling
  • Responsive Layouts: Adaptive designs for different screen sizes
  • Custom Typography: Racing Sans One font for sports-themed branding
  • Color Psychology: Orange/yellow theme for energy and excitement

๐Ÿ“ฑ Advanced Mobile Features

Leveraging modern Android capabilities:

  • CameraX Integration: Modern camera API for QR code scanning
  • Location Services: GPS tracking with permission management
  • Google Maps: Interactive maps with custom markers and clustering
  • Firebase Integration: Real-time database with offline support
  • Background Services: Location monitoring for smart notifications

๐Ÿš€ Getting Started

Prerequisites

  • Android Studio Arctic Fox or later
  • Android SDK 24 or higher
  • Google Play Services
  • Firebase project setup

Setup Instructions

  1. Clone the repository

    git clone [[repository-url]](https://github.com/kevicebryan/COMP90018-Assignment.git)
    cd watchalong-app
  2. Firebase Configuration

    • Create a Firebase project at Firebase Console
    • Enable Authentication, Firestore, and Storage
    • Download google-services.json and place it in app/ directory
  3. API Keys Setup

    • Create local.properties file in root directory
    • Add your Google Maps API key:
      # Google Maps API Key (keep this secret!)
      MAPS_API_KEY=your_google_maps_api_key_here

    โš ๏ธ Important: The Google Maps API key is required for the explore maps functionality.

    • Get your API key from the Google Cloud Console
    • Enable the Maps SDK for Android API
    • For detailed setup instructions and API key configuration, refer to the separate documentation repository
    • Never commit your API key to version control - the local.properties file is already in .gitignore
  4. Build and Run

    ./gradlew assembles

๐Ÿ“‹ Legal Documents & Compliance

Built-in Legal Document System

WatchMates includes a comprehensive legal document management system:

๐Ÿ“„ Privacy Policy

  • Comprehensive privacy protection guidelines
  • Age restriction compliance (18+/21+ legal drinking age)
  • Location data usage transparency
  • Anonymous data collection policies
  • User rights and data retention information

๐Ÿ“‹ Terms & Conditions

  • Age verification requirements for alcohol-serving venues
  • Community guidelines for sports watch-along events
  • User responsibilities and acceptable use policies
  • Venue liability disclaimers
  • Legal jurisdiction and governing law

๐Ÿ”ง Template System

  • Easy Content Management: Update legal documents in LegalDocuments.kt
  • Professional Presentation: Consistent styling with app theme
  • Accessible Navigation: Direct access from user profile
  • Version Control: Track document changes with Git
  • Compliance Ready: Structured for legal review and approval

๐Ÿ“ฑ User Experience

Profile Menu
โ”œโ”€โ”€ ๐Ÿ“ฑ Show QR
โ”œโ”€โ”€ โšฝ Teams
โ”œโ”€โ”€ โ„น๏ธ  Privacy Policy      โ† Legal Documents
โ”œโ”€โ”€ ๐Ÿ“‹ Terms & Conditions   โ† Legal Documents
โ””โ”€โ”€ ๐Ÿšช Log Out

Age Verification & Compliance

  • Legal Drinking Age Requirement: 18+ or 21+ depending on jurisdiction
  • Venue Alcohol Service: Clear disclaimers about alcohol-serving venues
  • User Responsibility: Explicit acknowledgment of personal responsibility
  • Community Safety: Guidelines for respectful participation

๐Ÿ“ฑ Complete App Flow

๐Ÿš€ Full User Journey

  1. Onboarding & Authentication

    • Welcome screen with app introduction
    • Google Sign-In or email/password registration
    • Multi-step profile setup with team selection
    • QR code generation for user identification
  2. Event Discovery & Creation

    • Interactive map with Google Maps integration
    • Location-based event filtering (3km radius)
    • Create events with match details and amenities
    • Real-time event updates and notifications
  3. Event Participation

    • Scan host QR codes to discover events
    • Secure check-in with duplicate prevention
    • Audio ambiance capture during events
    • Points earning with shake-to-reveal interaction
  4. Smart Notifications

    • Favorite team alerts (5km radius)
    • Proximity notifications (100m radius)
    • Location-based event discovery
    • Real-time event updates
  5. Profile & Gamification

    • Points tracking with six fan levels
    • Event history and statistics
    • Team preferences and notifications
    • Legal documents and settings

๐Ÿ—๏ธ Complete Data Flow (MVVM + Clean Architecture)

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚   Presentation  โ”‚    โ”‚     Domain      โ”‚    โ”‚      Data       โ”‚
โ”‚                 โ”‚    โ”‚                 โ”‚    โ”‚                 โ”‚
โ”‚ Jetpack Compose โ”‚โ—„โ”€โ”€โ–บโ”‚ Use Cases       โ”‚โ—„โ”€โ”€โ–บโ”‚ Repositories     โ”‚
โ”‚ ViewModels      โ”‚    โ”‚ Domain Models   โ”‚    โ”‚ Firebase        โ”‚
โ”‚ StateFlow       โ”‚    โ”‚ Business Logic  โ”‚    โ”‚ Google Maps     โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

๐Ÿ”„ Real-time Data Synchronization

  • Firebase Firestore: Real-time database with offline support
  • StateFlow: Reactive UI updates with lifecycle awareness
  • Location Services: Continuous GPS tracking for smart notifications
  • Background Services: Location monitoring and notification management

๐Ÿงช Testing

Test Structure

src/test/                          # Unit Tests
โ”œโ”€โ”€ data/repository/               # Repository tests
โ”œโ”€โ”€ domain/usecases/               # Use case tests
โ””โ”€โ”€ presentation/viewmodels/       # ViewModel tests

src/androidTest/                   # Integration Tests
โ”œโ”€โ”€ data/local/                    # Database tests
โ”œโ”€โ”€ ui/                           # UI tests
โ””โ”€โ”€ di/                           # DI tests

Running Tests

# Unit tests
./gradlew test

# Instrumented tests
./gradlew connectedAndroidTest

๐Ÿ”ง Build Configuration

Build Types

  • Debug - Development build with logging
  • Release - Production build with ProGuard

Flavors

  • Dev - Development environment
  • Prod - Production environment

๐Ÿ“‹ Development Guidelines

Code Style

  • Follow Kotlin Coding Conventions
  • Use meaningful variable and function names
  • Write KDoc for public APIs
  • Keep functions small and focused

Git Workflow

  • Use feature branches: feature/map-integration
  • Write descriptive commit messages
  • Create pull requests for code review

Architecture Rules

  • Data layer should not depend on presentation layer
  • Domain layer should not depend on Android framework
  • ViewModels should not hold references to Views
  • Use dependency injection for all dependencies

๐Ÿค Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Follow coding standards
  4. Write tests for new features
  5. Submit a pull request

๐Ÿ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

๐ŸŽฏ Development Highlights & Achievements

โœ… Successfully Implemented Features

  • Complete Navigation System: Full navigation with bottom tabs and screen transitions
  • Comprehensive Error Handling: User-friendly error messages with proper error states
  • Robust Input Validation: Email/username validation with content filtering
  • Consistent Loading States: Loading indicators across all screens and operations
  • Full Testing Coverage: Unit tests for use cases and integration tests for repositories

๐Ÿ—๏ธ Architecture Excellence

  • Repository Pattern: Complete implementation with UserRepository and EventRepository
  • Use Case Classes: Comprehensive business logic with auth, events, and notification use cases
  • Firebase Integration: Real-time database with offline support and cloud functions
  • Navigation System: Compose Navigation with type-safe navigation and deep linking

๐Ÿš€ Advanced Features Implemented

  • Audio Ambiance Capture: Real-time microphone sampling with dBFS calculation
  • Smart Notifications: Location-based notifications with proximity detection
  • Gamification System: Points system with shake-to-reveal interactions
  • QR Code System: Complete QR generation and scanning with camera integration
  • Location Services: GPS tracking with Google Maps integration and geocoding

๐Ÿ”ง Technical Achievements

  • Clean Architecture: Proper separation of concerns with domain, data, and presentation layers
  • Dependency Injection: Comprehensive Hilt setup with proper scoping
  • Reactive Programming: StateFlow and Compose for reactive UI updates
  • Modern Android APIs: CameraX, Location Services, and Material Design 3
  • Performance Optimization: Efficient image loading, viewport-based loading, and memory management

๐ŸŽจ UI/UX Excellence

  • Material Design 3: Latest Material Design components with custom theming
  • Responsive Design: Adaptive layouts for different screen sizes and orientations
  • Custom Components: Reusable UI components with consistent styling
  • Accessibility: Proper accessibility support with content descriptions and navigation
  • User Experience: Intuitive navigation with clear visual feedback and animations

๐Ÿ”ฎ Future Enhancements

  • Offline Support: Room database for offline data storage and synchronization
  • Push Notifications: Firebase Cloud Messaging for real-time notifications
  • Social Features: Event sharing, user profiles, and social interactions
  • Analytics: User behavior tracking and event analytics
  • Performance: Further optimization with image caching and lazy loading

๐Ÿ“ž Support

For questions or issues:

  • Create an issue in the repository
  • Contact the development team
  • Check the documentation wiki

Built with โค๏ธ using Kotlin and Jetpack Compose

About

Assignment for COMP90044 - Android Mobile App

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages